正射投影矩阵详细解释(转载)
创建一个正方体
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
for (i = 0; i < 16; i++) {
r[i] = 0.0;
}
r[0] = 1;
r[1] = 0;
r[2] = 0;
r[3] = 0;
r[4] = 0;
r[5] = 1;
r[6] = 0;
r[7] = 0;
r[8] = 0;
r[9] = 0;
r[10] = -2;
r[11] = 0;
r[12] = 0;
r[13] = 0;
r[14] = -2;
r[15] = 1;
//glOrtho(-1, 1, 1, -1, -0.5, -1.5);
glMultMatrixf(r);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
for (i = 0; i < 16; i++) {
r[i] = 0.0;
}
r[0] = 1;
r[1] = 0;
r[2] = 0;
r[3] = 0;
r[4] = 0;
r[5] = 1;
r[6] = 0;
r[7] = 0;
r[8] = 0;
r[9] = 0;
r[10] = -2;
r[11] = 0;
r[12] = 0;
r[13] = 0;
r[14] = -2;
r[15] = 1;
//glOrtho(-1, 1, 1, -1, -0.5, -1.5);
glMultMatrixf(r);
glMatrixMode(GL_MODELVIEW);
near = 0.5
far = 1.5
上面两个是等价的
之前我们在《深入探索透视投影变换》以及《深入探索透视投影变换(续)》中研究了OpenGL、D3D以及M3G的透视投影变换的原理以及生成方法。这些方法在当前的主流图形API中得到了普遍使用。但关于投影应用,还有一类经常使用的投影方式需要我们深入理解——正交投影,我们在本篇文章里面研究它(这里假设读者已经看过前两篇文章,并理解了绝大多数的理论,因为正交投影比透视投影的推导关系简单得多,因此我们的推导会非常得快,如果读者有任何的不解,请参考前两篇文章或者通过email联系我)。