2014-01-02 3 views
-1

Я пытаюсь нарисовать одну строку с ar []. Он содержит точечные шнуры. Я также пытаюсь использовать цвет, описанный в clr []. Может ли кто-нибудь сказать мне, что не так с моей функцией ver. Когда я запускаю его, появляется только белый экран.Рисование массива

void ver(void) 
{ 

glClear(GL_DEPTH_BUFFER_BIT); 

glPushMatrix(); 


GLfloat ar [] = {0.25, 0.25, 
       0.5, 0.25, 

          };  
GLfloat clr [] = {1.0, 0.0,0.0 

}; 



glEnableClientState(GL_COLOR_ARRAY);       
glEnableClientState(GL_VERTEX_ARRAY); 
glVertexPointer(2,GL_FLOAT, 0, ar); 
glColorPointer(3,GL_FLOAT,0,clr); 
glDrawElements(GL_LINES, 2, GL_FLOAT, ar); 
glDrawElements(GL_LINES, 3, GL_FLOAT, clr); 
    glPopMatrix(); 
glutSwapBuffers(); 
} 

ответ

1

Ваш звонок glDrawElements() неправ. Вам нужно передать массив индексов, и вам нужно только позвонить ему один раз. Так что вам нужно что-то вроде этого:

GLuint indices[] = { 0, 1, 2, 3 }; 
glDrawElements (GL_LINES, 2, GL_UNSIGNED_INT, indices); 

Кроме того, я думаю, что вам нужно расширить массив цветов, чтобы иметь один цвет на каждую вершину, поэтому она должна выглядеть как:

GLfloat clr [] = { 1.0, 0.0, 0.0, 
        1.0, 0.0, 0.0 }; 
Смежные вопросы