|
|
“下例通过将立方体投影到平面 y=o,生成一个从光源(xl,yl,zl)到立方体的投影”
按书中例子编程:
所用投影矩阵 m 如下
1 0 0 0
0 1 0 0
0 0 1 0
0 -1/yl 0 0
void display()
{
glEnable(GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(1.1, 1.1, 1.1, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
cube();
//cube为原点中心,边长 2 的六面体,以下为投影代码,xl,yl,zl 设为 3.0
glPushMatrix();
glPushAttrib(GL_CURRENT_BIT);
glTranslatef(xl, yl, zl);
glMultMatrixf(m);
glTranslatef(-xl, -yl, -zl);
//draw shadow in black
glColor3f(0.0, 0.0 ,0.0);
cube();
glPopMatrix();
glPopAttrib();
glutSwapBuffers();
}
void reshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-4.0, 4.0, -4.0, 4.0, -4.0, 4.0);
}
运行得到下边怪图,不知哪里有错误,求教,谢谢 [em4] |
|