[英]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.