2013-05-22 149 views
0

我有一個精靈10x10像素。我如何使用着色器程序實時更改顏色。 精靈上的所有藍色都變爲綠色。 精靈上的所有綠色都變成了白色。 ETC ...OpenGL着色器生成顏色

Example of Sprite 10x10

這是例如測試着色器灰效果:

#ifdef GL_ES 
precision mediump float; 
#endif 

varying vec2 v_texCoord; 
uniform sampler2D u_texture; 

void main() 
{ 
    vec4 normalColor = texture2D(u_texture, v_texCoord); 
    float gray = 0.299*normalColor.r + 0.587*normalColor.g + 0.114*normalColor.b; 
    gl_FragColor = vec4(gray, gray, gray, normalColor.a); 
} 

所以,用這個shader我們會做的精靈灰...

用代碼幫助我。

回答

0

您可以創建一個作爲顏色轉換器工作的3D紋理。您基本上使用原始顏色值作爲3D紋理查找中的紋理座標。我之前用9^3和16^3紋理完成了這個簡單的顏色轉換。您必須仔細評估特定情況下的3D紋理大小。

這可能不是最簡單的解決方案,但至少它很靈活,並且不涉及片段着色器中的硬編碼檢查。

你可能會得到更簡單的東西,但是這個問題的信息太少。