【发布时间】:2019-07-21 06:59:58
【问题描述】:
我正在尝试将几何着色器阶段添加到我的管道中,但是当我添加几何着色器功能时,即使是顶点着色器编译也会由于某种原因出现错误(顶点、像素和几何着色器在同一个文件中)。 几何着色器中的代码似乎是导致问题的原因,因为我一删除它,顶点着色器就编译成功了。
我从未在任何 API 中处理过几何着色器,但在我看来,设置几何着色器应该和其他的一样简单,互联网上有一些适用于 DX11 的几何着色器示例,但没有许多。至少我能找到的所有那些都只显示了 hlsl 方面。
cbuffer TickConstantBuffer : register(b0)
{
matrix World;
matrix View;
}
cbuffer OnEvent : register(b1)
{
matrix Projection;
}
float4 VS( float4 Pos : POSITION ) : SV_POSITION
{
float4 OutPos;
OutPos = mul(Pos, View);
OutPos = mul(OutPos, Projection);
return Pos;
}
[maxvertexcount(4)]
void GS( point float4 input[1], inout TriangleStream<float4> OutputStream )
{
float4 v;
OutputStream.Append(float4(input[0].x + 0.5, input[0].y + 0.5, input[0].z, input[0].w));
OutputStream.Append(float4(input[0].x - 0.5, input[0].y + 0.5, input[0].z, input[0].w));
OutputStream.Append(float4(input[0].x - 0.5, input[0].y - 0.5, input[0].z, input[0].w));
OutputStream.Append(float4(input[0].x + 0.5, input[0].y - 0.5, input[0].z, input[0].w));
}
float4 PS( float4 Pos : SV_POSITION ) : SV_Target
{
return float4( 1.0f, 1.0f, 0.0f, 1.0f );
}
【问题讨论】:
-
可能是顶点着色器的输出格式和几何着色器的输入格式不匹配。
-
VS 输出浮点数,GS 输入浮点数...
-
能否添加编译器的错误输出?
-
谁能帮我解决这个问题stackoverflow.com/questions/62947257/…>
标签: directx-11 hlsl