OpenGL ES VBO glgeterror 4242512 - что это? - PullRequest
1 голос
/ 13 марта 2011

Здравствуйте, я получаю "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);
    }

edit: если я вызову это на: onSurfaceCreated тогда все будет хорошо,я получаю glgeterror 0, это прекрасно.

Если я начну этот вызов из потока, я получу этот номер "4242512", и textureBufferIndex также будет нулевым.Почему?

1 Ответ

2 голосов
/ 13 марта 2011

Это происходит потому, что вы вызываете функции OpenGL без контекста OpenGL, сделанного текущим в потоке. Ваш «основной» поток имеет контекст OpenGL, и, следовательно, вызовы GL работают без проблем, но ваш «другой» поток не имеет контекста GL, и вызовы GL терпят неудачу.

...