[英]open gles 2 shader performance
我在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)
有谁知道是否存在执行此操作的成本较低的操作。
谢谢。
不必使用2个分别具有3个和1个通道的纹理,而只需制作一个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;
}"
第一次加载精灵时,是否可以只更改一次精灵,然后使用之前使用的任何机制? 如果失败,则至少将两个纹理组合为一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.