繁体   English   中英

Open Gles 2 Shader性能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM