Android glGenTextures返回无效ID

时间:2012-06-01 08:46:22

标签: android opengl-es textures

我们为Android开发游戏,一切都在许多设备上运行良好。但是昨天我们在三星Galaxy Tab P1000上测试了这款游戏并遇到了问题。

glGenTextures函数返回无效的ID,例如: 100271, 315638026, 534244737, 1505553220, -1563003837

很奇怪。我们尝试在onSurfaceCreated和onDrawFrame函数中创建纹理,并且具有相同的结果。如果我们用我们自己的基于计数器的实现替换glGenTextures函数,一切正常!

有谁知道发生了什么事?

如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

为什么你认为那些是无效的ID?

纹理ID是GLuint,即无符号,所以你肯定没有负数。并且OpenGL纹理ID不需要单调且密集。

答案 1 :(得分:0)

这就是我解决问题的方法:

IntBuffer t = IntBuffer.allocate(1);
gl.glGenTextures(1, t);
int texture_id = t.get(0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture_id);

或者,您可以通过创建静态int来实现自己的纹理计数器,并在每次创建纹理时增加它。