4

在 opengl 中使用 glBegin() 和 glEnd() 时,您可以设置和更改每个 glVertex3f() 之间的颜色。使用顶点数组和 glDrawArrays() 时如何重新创建此行为。这是常规的opengl。

for(angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI/8.0f))
    {
    // Calculate x and y position of the next vertex
    x = 50.0f*sin(angle);
    y = 50.0f*cos(angle);

    // Alternate color between red and green
    if((iPivot %2) == 0)
        glColor3f(0.0f, 1.0f, 0.0f);
    else
        glColor3f(1.0f, 0.0f, 0.0f);

    // Increment pivot to change color next time
    iPivot++;

    // Specify the next vertex for the triangle fan
    glVertex2f(x, y);
    }
4

1 回答 1

6

使用 glDrawArrays 你必须启用 glVertexPointer 来设置顶点数据。

以同样的方式,您还可以为颜色设置客户端内存指针。

它归结为这些调用:

  glEnableClientState (GL_VERTEX_ARRAY);
  glEnableClientState (GL_COLOR_ARRAY); // enables the color-array.

  glVertexPointer (...  // set your vertex-coordinates here..
  glColorPointer (...   // set your color-coorinates here..

  glDrawArrays (... // draw your triangles

顺便说一句 - 纹理坐标以相同的方式处理。只需为此使用 GL_TEXCOORD_ARRAY 和 glTexCoordPointer 。

于 2009-05-07T17:17:42.937 回答