Вы отображаете неинициализированные данные в обоих случаях. В случае static
все выглядит так, как надо.
Третий параметр glDrawArrays
- это число вершин (в вашем случае это должно быть 3
, потому что вы пытаетесь нарисовать один треугольник).
Вы уже сказали GL, что указали 3 GLfloat
для каждой вершины (первый параметр glVertexPointer
). Таким образом, GL может вычислить общее число ожидаемых GLfloat
.
Это должно работать:
GLfloat vertices[3][3] =
{
{0.0, 1.0, 0.0},
{1.0, 0.0, 0.0},
{-1.0, 0.0, 0.0}
};
glColor4ub(255, 0, 0, 255);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_VERTEX_ARRAY);