Android GLES20大纹理四核非常慢(在Nexus One上)

时间:2011-03-15 15:02:05

标签: android opengl-es-2.0 frame-rate

我仅使用GLES20上下文渲染覆盖整个表面的2个三角形。现在的问题是,这种方式只绘制一个纹理似乎是非常慢的。帧速率从58fps降至21fps。

  • 问题实际上似乎是所有四边形的整体像素区域
  • 在加载时将位图大小调整为pow2
  • 位图加载了正确的内部GL格式
  • 使用8888或565位图不会改变任何内容
  • 顶点和片段着色器代码绝对是最小的
  • 启用/禁用混合不会改变任何内容
  • 在一个图块或多个图块中绘制整个位图无济于事
  • glDrawTexiOES似乎不适用于GLES20(GL枚举错误)

我在这里不知所措;我认为在GL中单击一个图像应该至少和使用Canvas一样快,但似乎并非如此。

有人可以提供有关此性能影响的提示或解释吗?

更新

我刚刚调整了渲染线程以支持画布而不是EGL 背景和我做的完全一样;显示fps文本和blitting 背景纹理。 猜猜看:只显示文字我得到58fps,添加背景 我得到了... 57fps!

现在我正式而且非常认真地生气。我希望我是 只是不够聪明,不能很好地使用GLES20,否则似乎如果 你想blit 2D图形 - 你采取Canvas;如果,只有你 想要3D中的许多三角形,然后你采用OpenGL。

OpenGL不应该始终至少与提供的2D API一样快 画布?

2 个答案:

答案 0 :(得分:1)

这可能是由大纹理大小和没有mipmap造成的(因为那时内存访问不能很好地优化),或者纹理不是2的幂(因为那时地址计算更难 - 需要使用乘法而不是换班。)

希望这会有所帮助......

答案 1 :(得分:0)

没有冒犯,但对于全屏纹理从58到57 fps也不算太糟糕。无论是2d还是3d,手机或平板电脑cpu / gpu总是有限的。