如何绘制渐变矩形(实际上是一种色调光谱),如下所示:
我想过逐像素地绘制它,但需要花费很多时间(内存)。 我想用顶点缓冲区绘制4个不同的渐变效果,它应该是好的,但还有另一种方法吗?
答案 0 :(得分:1)
对于每种不同的颜色,添加一个包含颜色作为顶点数据的顶点对。在顶点着色器中,将该颜色转发到像素着色器,然后让像素着色器简单地输出它。由于属性将从顶点着色器插值 - >像素着色器你可以免费获得渐变。
答案 1 :(得分:0)
这种色彩效果在像素着色器程序中非常容易实现。
这是我的GLSL着色器中的代码,用于HLSL(将vec3重命名为float3并将其钳制为饱和等)。请注意,它尚未经过HLSL测试。
struct PSInput
{
float2 texcoord;
};
float3 HueToRGB(in float h)
{
float3 rgb = 0.0f;
rgb.r = abs(h * 6.0f - 3.0f) - 1.0f;
rgb.g = 2.0f - abs(h * 6.0f - 2.0f);
rgb.b = 2.0f - abs(h * 6.0f - 4.0f);
rgb = saturate(rgb);
return rgb;
}
void main() : SV_Target
{
float3 colorRGB = HueToRGB(in.texcoord.x);
return float4(colorRGB, 1.0f);
}
要更好地控制颜色,您可以:
快乐的编码!