我们为Android开发游戏,一切都在许多设备上运行良好。但是昨天我们在三星Galaxy Tab P1000上测试了这款游戏并遇到了问题。
glGenTextures函数返回无效的ID,例如: 100271, 315638026, 534244737, 1505553220, -1563003837
很奇怪。我们尝试在onSurfaceCreated和onDrawFrame函数中创建纹理,并且具有相同的结果。如果我们用我们自己的基于计数器的实现替换glGenTextures函数,一切正常!
有谁知道发生了什么事?
如何解决这个问题?
答案 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来实现自己的纹理计数器,并在每次创建纹理时增加它。