gpt4 book ai didi

variables - HLSL 像素着色器 - 全局变量?

转载 作者:行者123 更新时间:2023-12-04 19:13:13 25 4
gpt4 key购买 nike

我是 HLSL 和着色器的新手。我似乎无法替换我检索到的颜色。它用于 2D 文本,即字幕。问题是如果我在 main() 之外设置 osd_color 它不会显示任何内容。我正在使用 Shazzam Shader Editor 1.4 来快速查看效果,但是在程序中发生了同样的事情。

sampler2D texture0 : register(s0);

float4 osd_color = float4(0,0,0,1);
struct PixelShaderInput
{
float2 uv0: TEXCOORD0;
float4 color: COLOR;
};

float4 main(PixelShaderInput input): COLOR {
float4 color = tex2D(texture0, input.uv0) * osd_color;
return color;
}

希望你能帮忙。

编辑:

当我在做的时候,如果我想添加一个阴影/轮廓并返回它的颜色,我该怎么做?假设每个变量都有效。 osd_color 为白色,float4 轮廓为黑色。我试过了:
float4 outline = tex2D(texture0, (input.uv0 * 1.1) ) * outline_color;
return color + outline;

有了这个,我得到的是白色(osd_color)。

最佳答案

您必须自己管理非静态变量的内存。一个静态变量将拯救你的一天:

static float4 osd_color = float4(0,0,0,1);

使用静态时,一切都按预期工作,因为编译器关心为颜色值保留一些内存。如果静态不存在,您必须自己管理内存 - 或您的应用程序 - 这意味着您必须检索变量的默认值并手动将其复制到常量缓冲区。

关于variables - HLSL 像素着色器 - 全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com