三星Galaxy S2 OpenGl ES 2.0问题

时间:2012-03-05 16:18:00

标签: android opengl-es-2.0 textures galaxy

这是我的第一个问题。 我是Android开发的新手,我现在建立一个动态壁纸(LiveSpace) 我已经上传了精简版,你可以在这里找到它。 https://market.android.com/details?id=thedavincode.alienland&feature=search_result#?t=W251bGwsMSwyLDEsInRoZWRhdmluY29kZS5hbGllbmxhbmQiXQ ..

我用Xperia手机和Lg P990进行了测试,看起来效果很好,但是Galaxy S2存在一个奇怪的问题。 (2.3.4.android) 我的应用程序有11个对象(类),每个对象都有一个纹理,每个对象都有自己的程序和着色器。 galaxy不会渲染超过8种纹理。它从id 0到7,然后休息对象apear black。无论我尝试什么都没有变化。  香港专业教育学院读到,每个着色器有8个纹理的限制,而不是总数。 任何帮助都是有价值的。谢谢。

1 个答案:

答案 0 :(得分:1)

SGS2(Mali400MP)有一个最大限制。 8个纹理单位。如果在着色器中仅使用单个纹理,则只能使用一个单位。例如:

  1. 当您使用着色器进行一些设置时,然后将纹理均匀绑定到第一个纹理单元(0),如:glUniform1i(uTexture, 0); - 为所有对象执行此操作
  2. 在渲染每个对象之前绑定属于它的纹理:glBindTexture(GL_TEXTURE_2D , m_texture); - 您将纹理绑定到活动纹理单元。
  3. 在这种情况下,只使用一个纹理单元,您可以省略glActiveTexture调用,因为默认情况下第一个纹理单元已激活(GL_TEXTURE0
  4. 如果可能,您应始终保持规格限制,以便与大多数设备兼容。

    每个对象/纹理使用一个纹理单元不是一种方法。