C++ OpenGL自定义四边形有照明缺陷
我正试图找出如何编写自己的原语,比如gluSolidCube() 在下面的代码中,我画了两个四边形。一个是通过这个方法(红色的),另一个是我自己通过glBegin()/glEnd()的帮助(蓝色的) 因此,正如您在下面的屏幕截图中所看到的,红色四边形上的灯光与蓝色的灯光不同,是正确的。如何解决这个问题C++ OpenGL自定义四边形有照明缺陷,c++,opengl,C++,Opengl,我正试图找出如何编写自己的原语,比如gluSolidCube() 在下面的代码中,我画了两个四边形。一个是通过这个方法(红色的),另一个是我自己通过glBegin()/glEnd()的帮助(蓝色的) 因此,正如您在下面的屏幕截图中所看到的,红色四边形上的灯光与蓝色的灯光不同,是正确的。如何解决这个问题 如果没有,OpenGL固定功能照明将无法正常工作 您需要提供,可能是通过glNormal()对于您提供的最小代码,您需要normals:@Amadeus此链接没有为我提供解决方案。我试图在每
如果没有,OpenGL固定功能照明将无法正常工作
您需要提供,可能是通过
glNormal()
对于您提供的最小代码,您需要normals:@Amadeus此链接没有为我提供解决方案。我试图在每个glVertex()之前添加一个glNormal(0,0,1),但没有用……好吧,我明白了,我需要做更多的数学。对于每个平面,我需要得到一个法向量?这有什么方程式吗?谷歌搜索。。。
glPushMatrix();
glRotatef(-angleX, 0, 0, 1);
glRotatef(angleY, 0, 1, 0);
glColor3f(1, 0, 0);
glTranslatef(0.6, 0, 0);
glutSolidCube(1);
glColor3f(0, 0, 1);
glTranslatef(-1.2, 0, 0);
glPolygonMode(GL_FRONT, GL_FILL);
glShadeModel(GL_SMOOTH);
glBegin(GL_QUADS);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, -0.5, 0.5);
glEnd();
glPopMatrix();