1

您好,我收到“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 也将为空。为什么?

4

1 回答 1

2

发生这种情况是因为您正在调用 OpenGL 函数,而 OpenGL 上下文没有在线程中成为当前的。您的“主”线程具有 OpenGL 上下文,因此 GL 调用没有问题,但您的“其他”线程没有 GL 上下文,并且 GL 调用失败。

于 2011-03-12T22:34:55.273 回答