我的像素着色器不工作。我在这方面很糟糕,所以我无法解决这个问题。下面是像素着色器代码:
cbuffer CBuf
{
float4 face_colors[6];
};
float4 main(uint tid : SV_PrimitiveID) : SV_Target
{
return face_colors[tid / 2];
}
这里有几个错误,我根本不知道如何解决。错误如下:
X4583 语义“ps_4_0_level_9_3 上不支持 SV_PrimitiveID”
ps_4_0_level_9_3 不支持 X4568 整数输入
在这里我会写一些额外的信息,如果我没有告诉你任何事情,我很抱歉 我使用的是DirectX11,着色器是用hlsl格式制作的,两个错误都发送到代码的第6行,即:
float4 main(uint tid : SV_PrimitiveID) : SV_Target
如果您还需要什么,请帮忙告诉我。祝你好运
我只尝试了两件事,即从程序集中排除着色器(显然它不起作用)并在配置>常规>着色器类型>像素着色器(/ps)中指定。
SV_PrimitiveID
(您正在使用它,因为您收到错误:
... unsupported on ps_4_0_level_9_3
)
您需要至少编译 Direct3D 10 才能使用
SV_PrimitiveID
,如文档中所述
系统值语义是 Direct3D 10 中的新增内容。所有系统值均以 SV_ 前缀开头 [...] 这些语义已添加到 Direct3D 10 中;它们在 Direct3D 9 中不可用。
在 Microsoft 的 Documentation 中,您可以看到如何指定正确的目标。