0

我们为安卓开发了一款游戏,一切都在许多设备上运行良好。但昨天我们在三星 Galaxy Tab P1000 上测试了游戏,但出现了问题。

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

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

有谁知道发生了什么?

如何解决这个问题呢?

4

2 回答 2

4

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

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

于 2012-06-01T09:41:33.217 回答
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 来实现自己的纹理计数器,并在每次创建纹理时递增它。

于 2013-02-14T10:24:26.427 回答