在LWJGL中替换glOrtho?

时间:2013-11-29 22:17:52

标签: java opengl lwjgl

我正在从传统的OpenGL转向现代的OpenGL,但我需要替换glOrtho,因为它现在被删除了。由于导入的差异,我似乎无法弄清楚如何在Java中用C ++完成一些事情。

相关代码:GL11.glOrtho(0, Display.getWidth(), 0, Display.getWidth(), 100, -100); 这是我使用的当前正交函数,以及现在未使用的旧glEnable

2 个答案:

答案 0 :(得分:4)

好消息是glOrtho (...)实现起来很简单,你甚至不需要像透视投影矩阵那样的任何三角函数。

您需要按如下方式构建LWJGL Matrix4f

http://i.msdn.microsoft.com/dynimg/IC534299.png,给定:http://i.msdn.microsoft.com/dynimg/IC534300.png

请记住,此矩阵是列专业的,因此您可以像这样填充它:

Matrix4f.m00 = 2.0f/(right-left);
Matrix4f.m01 = 0.0f;
Matrix4f.m02 = 0.0f;
Matrix4f.m03 = 0.0f;

Matrix4f.m10 = 0.0f;
Matrix4f.m11 = 2.0f/(top-bottom);
Matrix4f.m12 = 0.0f;
Matrix4f.m13 = 0.0f;

Matrix4f.m20 = 0.0f;
Matrix4f.m21 = 0.0f;
Matrix4f.m22 = -2.0f/(far-near);
Matrix4f.m23 = 0.0f;

Matrix4f.m30 = -(right+left)/(right-left);
Matrix4f.m31 = -(top+bottom)/(top-bottom);
Matrix4f.m32 =   -(far+near)/(far-near);
Matrix4f.m33 = 1.0f;

答案 1 :(得分:-3)

如果你想在Java中使用OpenGL,我会推荐JOGL而不是LWJGL。因为LWJGL应该更像是一个“游戏引擎”。下面是一些示例代码。

    final GL2 gl = drawable.getGL().getGL2();
    gl.glOrtho(left, right, bottom, top, near_val, far_val);
    gl.glEnable(cap);

http://jogamp.org/jogl/www/