首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shader.hlsl文件导致错误?

shader.hlsl文件导致错误?
EN

Stack Overflow用户
提问于 2011-10-30 14:18:56
回答 1查看 1.2K关注 0票数 0

我正在努力让这个DirectX11 proj在屏幕上加载一个三角形,该三角形使用一个shader.hlsl文件根据三角形内的位置给三角形着色(它是一个混合在一起的多色三角形)。这一次我也没有得到正常的输出错误。不知道如何接近/处理这个问题。

调用shaders.hlsl文件的//函数

代码语言:javascript
复制
void InitPipeline()

{

代码语言:javascript
复制
// load and compile the two shaders

ID3D10Blob *VS, *PS;
D3DX11CompileFromFile("shaders.hlsl", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile("shaders.hlsl", 0, 0, "PShader", "ps_5_0", 0, 0, 0, &PS, 0, 0);

// encapsulate both shaders into shader objects
dev->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &pVS);
dev->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &pPS);

// set the shader objects
devcon->VSSetShader(pVS, 0, 0);
devcon->PSSetShader(pPS, 0, 0);

// create the input layout object
D3D11_INPUT_ELEMENT_DESC ied[] =
{
    {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
    {"COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},
};

dev->CreateInputLayout(ied, 2, VS->GetBufferPointer(), VS->GetBufferSize(), &pLayout);
devcon->IASetInputLayout(pLayout);

}

代码语言:javascript
复制
struct VOut { 
    float4 position : SV_POSITION; 
    float4 color : COLOR; 
}; 

VOut VShader(float4 position : POSITION, float4 color : COLOR) { 
    VOut output; 
    output.position = position; 
    output.color = color; 
    return output; 
} 

float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET {
    return color; 
} 
EN

回答 1

Stack Overflow用户

发布于 2011-11-29 20:51:35

您在使用吗?右键单击shaders.hlsl,查找完整路径,并将D3DX11CompileFromFile函数中的shaders.hlsl替换为绝对路径。确保将\字符替换为\\以使其正确转义。

Visual将shaders.hlsl与源代码放在同一个位置,这意味着您的程序找不到它。蓝色的窗口还在显示吗?这就是我遇到的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7945418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档