我在android上制作游戏,但是颜色太亮了,我不能改变精灵,所以我决定实现一个着色器:
const char* fETCShader = "\
uniform mediump sampler2D sTexture
uniform mediump sampler2D sTexture_alpha
\
varying mediump vec4 vColor
varying mediump vec2 vTexCoord
uniform lowp mat4 cCorrection
\
void main()\
{\
lowp vec4 color = vec4(texture2D(sTexture, vTexCoord).rgb, texture2D(sTexture_alpha, vTexCoord).r) * vColor
gl_FragColor = cCorrection * color
}"
但是fps急剧下降(例如20)
有谁知道是否存在执行此操作的成本较低的操作。
谢谢。
最佳答案
无需使用分别具有3个和1个通道的2个纹理,只需制作一个4通道RGBA纹理,这样您就只需要进行1个纹理提取即可。
手机上的片段着色器很快成为瓶颈。始终尽量减少碎片着色器要做的工作量。
您的着色器将如下所示:
const char* fETCShader = "\
uniform mediump sampler2D sTexture
uniform mediump sampler2D sTexture_alpha
\
varying mediump vec4 vColor
varying mediump vec2 vTexCoord
uniform lowp mat4 cCorrection
\
void main()\
{\
gl_FragColor = cCorrection * texture2D(sTexture, vTexCoord) * vColor;
}"