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