OpenGL to OpenGL-ES - Изменение цвета треугольников в полосе - PullRequest
4 голосов
/ 07 мая 2009

При использовании glBegin () и glEnd () в opengl вы можете устанавливать и изменять цвет между 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);
    }

1 Ответ

6 голосов
/ 07 мая 2009

С помощью 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...