我有以下片段着色器。OpenGl碎片着色器纹理速度
varying highp vec2 tCoord;
void main() {
vec4 hc = texture2D(hair, tCoord);
gl_FragColor = hc;
}
在我的程序中,我在屏幕上绘制了15个图像(只有2D,没有3D操作)。我允许用手指移动所有的图像。因此,当图像在屏幕上时,我可以获得40 fps,但是当我将它们移出屏幕(用手指)时,我可以获得60 fps。 (这消除了程序或顶点着色器中的瓶颈)。我对Galaxy Tab的7" 运行此。
由于这是一个非常简单的着色器,我希望60 fps的所有的时间。有什么理由,这是慢?
要排除纹理瓶颈,试着绘制1x1纹理(“图像”然后是单色矩形,但是谁在乎)。绘制1x1纹理意味着数据是最小的,并且需要获取的任何内容都会从缓存中提取出来。如果该修改使帧速率跳转到60,那么您将受到纹理限制。如果它没有改变,那很可能是一个填充率问题。 – Damon
我会如何去“绘制1x1纹理”?改变我正在绘制的纹理?另外,如果它们是1x1,它们将不会填满整个屏幕(因为它们现在就是这样),所以它会因为片段着色器运行次数减少而提高帧率。 –
为了让它们填满屏幕,请使用纹理四边形替代glDrawTexOES – datenwolf