2010-09-27 3 views
0

Привет Я пытаюсь нарисовать куб размером 5 * 5 * 5 с шестью разными цветами лица. Как бы то ни было, я не вижу, чтобы все лица были разного цвета, все, что я вижу, - это куб с непонятным цветом. Некоторые лица хорошо видны, а верхняя грань, параллельная плоскости zx, не видна.Cube рисунок opengl, но нарисовано путаное изображение куба

Заранее спасибо

void init(void) 
{ 
glClearColor(0,0,0,0); 
glShadeModel(GL_FLAT); 
} 

void DrawCube(void) 
{ 
glLoadIdentity(); 
gluLookAt(10, 10, 10, 0, 0, 0, 0, 1, 0); 
glBegin(GL_QUADS); 

//face in xy plane 
glColor3f(0.82, 0.41, 0.12);//this the color with which complete cube is drawn. 
glVertex3f(0,0 ,0); 
glVertex3f(5, 0, 0); 
glVertex3f(5, 5, 0); 
glVertex3f(0, 5, 0); 

//face in yz plane 
glColor3f(1, 0, 0); 
glVertex3f(0, 0, 0); 
glVertex3f(0, 0, 5); 
glVertex3f(0, 5, 0); 
glVertex3f(0, 5, 5); 

//face in zx plance 
glColor3f(0, 1, 0); 
glVertex3f(0, 0, 0 ); 
glVertex3f(0, 0, 5); 
glVertex3f(5, 0, 5); 
glVertex3f(5, 0, 0); 

//|| to xy plane. 
glColor3f(0, 0, 1); 
glVertex3f(0, 0, 5); 
glVertex3f(5, 0, 5); 
glVertex3f(5, 5, 5); 
glVertex3f(0, 5, 5); 

//|| to yz plane 
glColor3f(0.73, 0.58, 0.58); 
glVertex3f(0,0 ,5); 
glVertex3f(5, 0, 5); 
glVertex3f(5, 5, 5); 
glVertex3f(0, 5, 5); 

//|| to zx plane //this face is not visible. I am not understanding why. 
glVertex3f(0.58, 0, 0.82); 
glVertex3f(0, 5, 0 ); 
glVertex3f(0, 5, 5); 
glVertex3f(5, 5, 5); 
glVertex3f(5, 5, 0); 
glEnd(); 
glFlush(); 
} 


void reshape(int w,int h){ 

glViewport(0, 0, (GLsizei)w, (GLsizei)h); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glFrustum(-1, 1, -1, 1, 1.5, 20); 
glMatrixMode(GL_MODELVIEW); 
} 

int main(int argc, char** argv){ 

glutInit(&argc, argv);//we initizlilze the glut. functions 
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 
glutInitWindowPosition(100, 100); 
glutCreateWindow(argv[0]); 
init(); 
glutDisplayFunc(DrawCube); 
glutReshapeFunc(reshape); 
glutMainLoop(); 
return 0; 
} 
+0

Проводка - скриншот полезен. – Justicle

ответ

1
//|| to zx plane //this face is not visible. I am not understanding why. 
glVertex3f(0.58, 0, 0.82); 

Вы хотите glColor3f. Я предполагаю, что это опечатка.

Две несвязанные вещи:

  • Ваше || к квадрату плоскости xy - это то же самое, что и ваш || к квадрату плоскости yz.
  • Вы не очищаете цветной буфер перед рисованием. Вероятно, вы хотите glClear(GL_COLOR_BUFFER_BIT) в начале DrawCube
Смежные вопросы