我最近开始使用LWJGL,并注意到glOrtho
方法采用左,右,底,顶的参数,无法弄清楚这些参数对应的内容。
当我注意到
时,我很困惑glOrtho(1, 1, 1, 1, 1, -1);
与
相同glOrtho(-1, 1, -1, 1, 1, -1);
我是否正确地说这些代码片段是相同的,如果是这样,为什么?
答案 0 :(得分:4)
不,他们不一样:
glOrtho(1, 1, 1, 1, 1, -1);
只会产生GL_INVALID_OPERATION
错误,而且推荐没有进一步的效果。当左==右或顶= =底或近= =远时,会发生错误。 (如果没有检查该条件,则会发生除零)。
glOrtho(-1, 1, -1, 1, 1, -1);
实际上什么都不做,因为它会将当前矩阵乘以单位矩阵。
看起来好像这些命令具有相同的结果,但实际发生的情况却完全不同。
答案 1 :(得分:4)
正交投影是长方体(也称为盒子)。 glOrtho
调用的参数定义了此框的剪裁平面或边。任何位于投影框外的东西都不会被渲染。
关于您的示例调用,第一个调用(glOrtho(1,1,1,1,1,-1)
)无效并生成GL_INVALID_OPERATION
)。为什么?正交投影定义为
请注意由right == left
和top == bottom
引起的0错误除法。
第二个示例(glOrtho(-1,1,-1,1,1,-1)
)只创建一个identity matrix。
Chapter 3 - OpenGL Programming Guide - Projection Transforms