未绘制顶点数组

时间:2012-12-21 13:42:41

标签: c opengl

我有一个顶点数组有8个顶点,每个顶点用两个坐标表示。 我使用glVertexPointer函数在使用glDrawArray函数的绘图中使用此数组。

void datasource()
{
    GLfloat vertex1[]={ -1.000000, 0.500000, -0.700000, 0.500000, -1.000000, 0.800000, -0.700000, 0.800000, -0.400000, 0.500000, -0.100000, 0.500000, -0.400000, 0.800000, -0.100000, 0.800000 };

    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(2, GL_FLOAT, 0, vertex1);
}

void display()
{
    frame++;

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glDrawArrays(GL_LINES, 0, 2);

    glutSwapBuffers();
    glutPostRedisplay();
}

当我尝试使用前两个顶点绘制线条时,我看不到任何东西,但它应该显示为水平线。我做错了什么?

2 个答案:

答案 0 :(得分:4)

  

我做错了什么?

您的数据位于函数堆栈中,您可能会调用设置数组指针。不幸的是,一旦函数返回,它的堆栈帧就会被解除分配并且指针变为无效。

因此,要么首先使用VBO将数据复制到持久性OpenGL对象。或者将该内存分配给堆或作为全局变量。

此外,您应该在相应的glEnableClientState函数调用之前调用glVertexPointerglDraw…

答案 1 :(得分:0)

每次拨打glVertexPointer功能

时,都应使用display功能