林做一個遊戲在安卓但顏色太亮了,我不能改變的精靈,所以我決定執行着色器:開放GLES 2着色性能
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)
沒有人知道是否存在一個較便宜的操作來做到這一點。
謝謝。
我們使用的是ETC紋理格式,這種格式只支持RGB通道,所以我們認爲我們需要額外的紋理來保存Alpha通道並創建矢量RGBA,如着色器所示。 – elios264 2012-07-31 21:03:18
ETC2支持RGBA,看看你能否得到這個工作。否則,你可以嘗試一些技巧,比如alpha值的頂點屬性,或者不要使用ETC壓縮。如果你的內存擁擠,請在需要使用時降低紋理或流紋理的大小。 – 2012-07-31 22:09:38
你好!你能詳細闡述一下「alpha值的頂點屬性」嗎?這是否意味着在頂點着色器中使用sampler2D,並以某種方式將結果寫入變化中以稍後在片段着色器中使用? – dimsuz 2013-01-27 15:29:16