这是我的第一个问题。 我是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个纹理的限制,而不是总数。 任何帮助都是有价值的。谢谢。
答案 0 :(得分:1)
SGS2(Mali400MP)有一个最大限制。 8个纹理单位。如果在着色器中仅使用单个纹理,则只能使用一个单位。例如:
glUniform1i(uTexture, 0);
- 为所有对象执行此操作glBindTexture(GL_TEXTURE_2D , m_texture);
- 您将纹理绑定到活动纹理单元。glActiveTexture
调用,因为默认情况下第一个纹理单元已激活(GL_TEXTURE0
)如果可能,您应始终保持规格限制,以便与大多数设备兼容。
每个对象/纹理使用一个纹理单元不是一种方法。