您好,我收到“ 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调用失败。

10-06 09:32