您好,我收到“ glgeterror 4242512”,我的代码是:
if (bUseVBO) {
//gl11
GL11 gl11 = (GL11)gl;
int[] buffer = new int[1];
gl11.glGenBuffers(1, buffer, 0);
textureBufferIndex = buffer[0];
Log.e("error", buffer+" "+(gl11==null)+" ERR "+gl.glGetError());
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, textureBufferIndex);
gl11.glBufferData(GL11.GL_ARRAY_BUFFER, texCoords.length * 4, mTexBuffer, GL11.GL_STATIC_DRAW);
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, 0);
}
编辑:如果我在onSurfaceCreated上调用它,那么一切都会很好,我得到glgeterror 0,那是完美的。
如果我从一个线程开始此调用,那么我会得到这个数字“ 4242512”,textureBufferIndex也将为null。为什么?
最佳答案
发生这种情况是因为您正在调用OpenGL函数,而没有将OpenGL上下文设为当前线程。您的“主”线程具有OpenGL上下文,因此GL调用可以正常工作,但是您的“其他”线程没有GL上下文,并且GL调用失败。