1

我有以下片段着色器。

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。为什么这很慢?

4

2 回答 2

2

highp可能没有在嵌入式硬件(例如大多数 android 设备)上加速。使用默认精度是否有帮助?为什么你认为在低分辨率屏幕上需要如此精确的纹理坐标?

于 2011-06-21T21:56:57.210 回答
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);
}
于 2012-06-14T12:33:34.683 回答