c++ - shader.hlsl 文件导致错误?

标签 c++ hlsl shader directx-11

我正在尝试让这个 DirectX11 项目在屏幕上加载一个三角形,该三角形使用 shader.hlsl 文件根据三角形内的位置为三角形着色(它是一个混合在一起的多色三角形) .这次我也没有收到正常的输出错误。不确定如何处理/处理这个问题。

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

void InitPipeline()

{

// 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);

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; 
} 

最佳答案

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

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

关于c++ - shader.hlsl 文件导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945418/

相关文章:

java - 如何在 OpenGL 中绘制镜像镜像?

OpenGL:如何暂停着色器工作

c++ - MSVC2015 中 SFINAE 成员检测的错误输出

directx - HLSL float 组打包在常量缓冲区中?

directx - HLSL 中的纹理采样器不进行插值

ios - Cocos2d v3 在子节点上应用着色器

c++ - std::remove 指定元素的 vector

c++ - 我如何理解 std::make_shared 的工作原理?

c++ - gcc:带有 Wextra 和成员初始化的 weffc++

c# - 二维瓷砖照明