像素着色器中的两个问题

问题描述 投票:0回答:1

我的像素着色器不工作。我在这方面很糟糕,所以我无法解决这个问题。下面是像素着色器代码:

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)中指定。

c++ visual-studio-2022 fragment-shader
1个回答
1
投票
Direct3D 9 不支持

SV_PrimitiveID
(您正在使用它,因为您收到错误:

... unsupported on ps_4_0_level_9_3

您需要至少编译 Direct3D 10 才能使用

SV_PrimitiveID
,如文档

中所述

系统值语义是 Direct3D 10 中的新增内容。所有系统值均以 SV_ 前缀开头 [...] 这些语义已添加到 Direct3D 10 中;它们在 Direct3D 9 中不可用。

在 Microsoft 的 Documentation 中,您可以看到如何指定正确的目标。

© www.soinside.com 2019 - 2024. All rights reserved.