[英]Creating a Reflection Opengl
我试图将一个旋转的立方体反射到XZ平面上(所以最终这是3D到2D的投影)。 但是,将我的立方体投影到XZ平面上的点是重叠的,这是预期的,这是由于立方体是3D且存在具有相同X值但y值不同的点(将2个点投影到同一点上) )。
我的问题是,我如何只投影立方体上要投影到的平面可见的点?
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
glCullFace(GL_BACK);
glTranslatef(0.0f, 0.0f, -5.0f);
GLfloat matrix[16] = {1.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0};
glPushMatrix();
glRotatef(angle, 1.0f, 1.0f, 1.0f);
glBegin(GL_TRIANGLES);
DrawCube();
glEnd();
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, -1.0f, 0.0f);
glMultMatrixf(matrix);
glRotatef(angle, 1.0f, 1.0f, 1.0f);
glBegin(GL_TRIANGLES);
DrawCube();
glEnd();
glPopMatrix();
将旋转的立方体反射到XZ平面上(因此最终这是3D到2D的投影)。
反射不是奇异的投影(您将3D称为2D)。 反射的缩放比例为-1,在您需要的情况下,缩放比例为glScalef(1, -1, 1)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.