Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es GLD阵列问题_Opengl Es - Fatal编程技术网

Opengl es GLD阵列问题

Opengl es GLD阵列问题,opengl-es,Opengl Es,我有一个完整的绘图例程,如下所示: glEnable(GL_TEXTURE_2D); glMatrixMode(GL_MODELVIEW); { glBindTexture(GL_TEXTURE_2D, [texture name]); GLsizei stride = sizeof(quads[0].tl); glBindBuffer(GL_ARRAY_BUFFER, buffers[0]); glBufferData(GL_ARRAY_BUFFER, si

我有一个完整的绘图例程,如下所示:

glEnable(GL_TEXTURE_2D);
glMatrixMode(GL_MODELVIEW);
{
    glBindTexture(GL_TEXTURE_2D, [texture name]);
    GLsizei stride = sizeof(quads[0].tl);

    glBindBuffer(GL_ARRAY_BUFFER, buffers[0]);

    glBufferData(GL_ARRAY_BUFFER, sizeof(TQuad2D), quads, GL_STATIC_DRAW);
    glVertexPointer(2, GL_FLOAT, stride, (void *)offsetof(TVertex2D, pos));
    glEnableClientState(GL_VERTEX_ARRAY);
    glTexCoordPointer(2, GL_FLOAT, stride, (void *)offsetof(TVertex2D, tex));
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);


    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}

glBindTexture(GL_TEXTURE_2D, 0);
glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
在上面或之前,我想画一条简单的线,比如下面的线。这本身工作正常,但如果我将其与上面的例程结合使用,则会出现506错误,即
GL\u INVALID\u FRAMEBUFFER\u操作

GLfloat verts[4];
verts[0] = 0;
verts[1] = 0;
verts[2] = 600;
verts[3] = 600;

glColor4f(0.0f,1.0f,0.0f,1.0f);
glVertexPointer(2, GL_FLOAT, 0, &verts);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays(GL_LINES, 0, 2);
glDisableClientState(GL_VERTEX_ARRAY);
GLErrCheck(@"err");

我可能忘记重置某些GL状态,但我无法理解。您关于忘记重置某些状态的假设是正确的。只要缓冲区绑定到GL_ARRAY_buffer,glvertexinter和类似函数的最后一个参数就会被解释为该缓冲区的偏移量,而不是像
&verts
那样的常规指针。您可以通过调用

glBindBuffer(GL_ARRAY_BUFFER, 0)

在第一段代码的末尾。

谢谢您的解释。这正是发生的事情!