glOrtho参数对应的是什么?

时间:2014-04-15 19:18:51

标签: java opengl lwjgl orthographic

我最近开始使用LWJGL,并注意到glOrtho方法采用左,右,底,顶的参数,无法弄清楚这些参数对应的内容。

当我注意到

时,我很困惑
glOrtho(1, 1, 1, 1, 1, -1); 

相同
glOrtho(-1, 1, -1, 1, 1, -1);

我是否正确地说这些代码片段是相同的,如果是这样,为什么?

2 个答案:

答案 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)。为什么?正交投影定义为

enter image description here

请注意由right == lefttop == bottom引起的0错误除法。

第二个示例(glOrtho(-1,1,-1,1,1,-1))只创建一个identity matrix

Chapter 3 - OpenGL Programming Guide - Projection Transforms

ScratchPixel - Orthographic Projection Tutorial