DX11顶点着色器被忽略

时间:2014-05-15 11:59:20

标签: hlsl vertex-shader

我们正在将dx9代码移植到dx11并且已经遵循教程,只要在屏幕上获得三角形即可。但是,对顶点着色器的任何更改似乎都会被忽略,因此它总是通过输入位置和颜色。

即使我们做了疯狂的事情,比如将输入颜色复制到位置并将输出颜色设置为紫色(下图),我们仍然会在屏幕中间获得原始三角形,就像顶点着色器刚刚通过投入。更改像素着色器中的值可以正常工作。

它与语义有关吗?或者有人知道我可能忘记的一件简单的事情。着色器肯定会编译并加载正常,如果我在其中输入错误,他们就不会编译。我使用fxc.exe编译它们。着色器在......下面。

由于

肖恩

struct VertexInputType
{
    float4 position : POSITION;
    float4 color : COLOR;
};

struct PixelInputType
{
    float4 position : SV_POSITION;
    float4 color : COLOR;
};


PixelInputType VShader(VertexInputType input) 
{
    PixelInputType output;


    // Change the position vector to be 4 units for proper matrix calculations.
    input.position.w = 1.0f;

    // Calculate the position of the vertex against the world, view, and projection matrices.

    output.position = input.color;     

    output.color.x=1;
    output.color.y=0;
    output.color.z=1;
    output.color.w=1;

    return output;
}

float4 PShader(PixelInputType input) : SV_TARGET
{
    float4 outcol;
    outcol.x=0;     //input.color.x;
    outcol.y=input.color.y;
    outcol.z=input.color.z;
    outcol.w=input.color.w;
    return outcol;
}

1 个答案:

答案 0 :(得分:0)

哎呀。最初我找不到D3DCompilefromFile函数,因为我没有包含正确的lib,而且Microsoft告诉你最好离线编译,这就是我做的 - 使用fxc.exe。好吧,无论出于何种原因,我的顶点着色器在使用fxc.exe脱机编译时都不起作用 - 它只是通过输入传递给它的输出。我必须找出原因,但我现在正在使用CompileFromFile,一切都按预期工作!