我仅使用 GLES20 上下文渲染了 2 个覆盖整个表面的三角形。现在的问题是,以这种方式仅绘制一个纹理似乎异常缓慢。帧率从 58fps 下降到 21fps。
- 问题确实似乎是所有四边形一起绘制的整体像素区域
- 位图在加载时调整为 pow2
- 位图以正确的内部 GL 格式加载
- 使用 8888 或 565 位图不会改变任何东西
- 顶点和片段着色器代码绝对是最少的
- 启用/禁用混合不会改变任何东西
- 在一个图块或多个图块中绘制整个位图没有帮助
- glDrawTexiOES 似乎不适用于 GLES20(GL 枚举错误)
我在这里不知所措;我认为在 GL 中对单个图像进行 blitting 至少应该与使用 Canvas 一样快,但似乎并非如此。
有人可以提供有关此性能影响的提示或解释吗?
更新:
我刚刚调整了我的渲染线程以支持画布而不是 EGL 上下文,我做的完全一样;显示 fps 文本和 blitting 背景纹理。猜猜看:只显示文本我得到 58fps,添加背景图片我得到...... 57fps!
现在我正式并且非常生气。我希望我只是不够聪明,不能很好地使用 GLES20,否则似乎如果你想对 2D 图形进行 blit - 你就拿 Canvas;并且当且仅当您想要许多 3D 三角形时,您才可以使用 OpenGL。
OpenGL 不应该总是至少与 Canvas 提供的 2D API 一样快吗?