我有以下片段着色器。
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。有什么理由这么慢?
答案 0 :(得分:2)
highp
可能不会在大多数Android设备等嵌入式硬件上加速。完全使用默认精度有帮助吗?为什么你认为在低分辨率屏幕上需要如此精确的纹理坐标?
答案 1 :(得分:0)
我使用android 3.2.1和opengl es 2.0在tegra平台上工作。
如果您可以在不需要变量的情况下生活,请尝试直接分配。我经历了变量创建和分配,成本高达3-5 fps。 texture2d也会在fps中花费该范围内的某些东西。
varying highp vec2 tCoord;
void main() {
gl_FragColor = texture2D(hair, tCoord);
}