0
我想在我的openGL程序中启用照明,我已经为GLUT绘制的对象工作。 但是当我画我的cuuboid照明平面(openGL)
glBegin(5);
glVertex3f((x_+(b/2)),y_,(z_-(l/2)));
glVertex3f((x_+(b/2)),y_,(z_+(l/2)));
glVertex3f((x_-(b/2)),y_,(z_-(l/2)));
glVertex3f((x_-(b/2)),y_,(z_+(l/2)));
glVertex3f((x_+(b/2)),y_t,(z_-(l/2)));
glVertex3f((x_+(b/2)),y_t,(z_+(l/2)));
glVertex3f((x_-(b/2)),y_t,(z_-(l/2)));
glVertex3f((x_-(b/2)),y_t,(z_+(l/2)));
glVertex3f((x_+(b/2)),y_,(z_-(l/2)));
glVertex3f((x_+(b/2)),y_t,(z_-(l/2)));
glVertex3f((x_+(b/2)),y_,(z_+(l/2)));
glVertex3f((x_+(b/2)),y_t,(z_+(l/2)));
glVertex3f((x_-(b/2)),y_,(z_-(l/2)));
glVertex3f((x_-(b/2)),y_t,(z_-(l/2)));
glVertex3f((x_-(b/2)),y_,(z_+(l/2)));
glVertex3f((x_-(b/2)),y_t,(z_+(l/2)));
glVertex3f((x_-(b/2)),y_,(z_-(l/2)));
glVertex3f((x_-(b/2)),y_t,(z_-(l/2)));
glVertex3f((x_+(b/2)),y_,(z_-(l/2)));
glVertex3f((x_+(b/2)),y_t,(z_-(l/2)));
glVertex3f((x_-(b/2)),y_,(z_+(l/2)));
glVertex3f((x_-(b/2)),y_t,(z_+(l/2)));
glVertex3f((x_+(b/2)),y_,(z_+(l/2)));
glVertex3f((x_+(b/2)),y_t,(z_+(l/2)));
glEnd();
与
glColor3f(6,0,0);
闪电不会应用在其表面上。 (长方体绘制正确)
我lighning设置是这样的:
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 1.0, 1.0f };
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
没有人知道我的缺陷做?
所以我用glNormal3f在我画的每架飞机前,像这样: 'glNormal3f(0,1,0); glVertex3f((x_ +(b/2)),y_,(z_-(1/2))); glVertex3f((x_ +(b/2)),y_,(z_ +(1/2))); glVertex3f((x_-(b/2)),y_,(z_-(1/2))); glVertex3f((x_-(b/2)),y _,(z_ +(l/2)));' –
但它没有改变任何东西 –
@AndiFaust:不同的边有不同的法线。 –