繪製怎樣繪製漸變矩形(一個色調光譜實際上)是這樣的: 多梯度的DirectX
我想通過像素繪製它的像素,但它需要大量的時間(內存)。 我想用頂點緩衝區繪製4個不同的梯度矩陣,它應該是好的,但有沒有另一種方法來做到這一點?
繪製怎樣繪製漸變矩形(一個色調光譜實際上)是這樣的: 多梯度的DirectX
我想通過像素繪製它的像素,但它需要大量的時間(內存)。 我想用頂點緩衝區繪製4個不同的梯度矩陣,它應該是好的,但有沒有另一種方法來做到這一點?
這樣的顏色效果在程序上很容易在像素着色器中實現。
這裏是我的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);
}
在過去的顏色更多的控制,您可以:
快樂編碼!
對於每種不同的顏色,添加一個包含該顏色作爲頂點數據的頂點對。在頂點着色器中,將該顏色轉發給像素着色器,並讓像素着色器將其簡單地輸出。由於屬性將從頂點着色器 - >像素着色器進行插值,因此您將獲得免費的漸變。
你能給我一個示例代碼? – caccolona
您可以嘗試使用1維紋理,包含您的漸變,然後將顏色與頂點一起傳遞,將紋理座標傳遞給此漸變紋理。然後你可以用一個矩形繪製它。 – user1837009
如果您使用Direct2D,那簡直就是小菜一碟。 – zdd