【发布时间】:2021-03-02 17:58:18
【问题描述】:
我在几何着色器中有这个
cbuffer cbFixed
{
float2 TexC[4] =
{
float2(0.0f, 1.0f),
float2(0.0f, 0.0f),
float2(1.0f, 1.0f),
float2(1.0f, 0.0f)
};
};
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float4 PosWorld : POSITION;
float4 Norm : NORMAL;
float2 Tex : TEXCOORD;
uint PrimID: SV_PrimitiveID;
};
以后……
PS_INPUT gout;
for (int i = 0; i < 4; i++)
{
// other stuff
gout.Tex = TexC[i];
// other stuff
}
但是,由于某种原因,这不能按预期工作,我的意思是未应用纹理,而这样做:
for (int i = 0; i < 4; i++)
{
if (i == 0) gout.Tex = float2(0.0f, 1.0f);
if (i == 1) gout.Tex = float2(0.0f, 0.0f);
if (i == 2) gout.Tex = float2(1.0f, 1.0f);
if (i == 3) gout.Tex = float2(1.0f, 0.0f);
}
知道为什么吗?我不想把这篇文章写得太长,所以尽量减少细节。
【问题讨论】:
标签: arrays geometry shader assign hlsl