Java 在OpenGL中转换modelview矩阵的现代方法?

Java 在OpenGL中转换modelview矩阵的现代方法?,java,performance,opengl,matrix,lwjgl,Java,Performance,Opengl,Matrix,Lwjgl,我最近开始学习OpenGL,从即时模式、glPush/PopMatrix和glTranslate/Rotate/Scale函数开始。我已经切换到顶点缓冲区对象来存储几何体,但我仍然使用push/pop矩阵和变换函数。是否有更新、更有效的方法来执行这些操作 我听说过glMultMatrix,但一些消息来源说这效率较低 如果相关的话,我使用LWJGL和Java进行渲染 编辑:有人知道调用glViewport和glupperspective以及其他标准初始化函数对性能的影响吗?有人告诉我,每次更新时调

我最近开始学习OpenGL,从即时模式、glPush/PopMatrix和glTranslate/Rotate/Scale函数开始。我已经切换到顶点缓冲区对象来存储几何体,但我仍然使用push/pop矩阵和变换函数。是否有更新、更有效的方法来执行这些操作

我听说过glMultMatrix,但一些消息来源说这效率较低

如果相关的话,我使用LWJGL和Java进行渲染


编辑:有人知道调用glViewport和glupperspective以及其他标准初始化函数对性能的影响吗?有人告诉我,每次更新时调用这些init函数以及渲染代码通常是一种很好的做法。

对于现代OpenGL,您需要编写一个顶点着色器,并将每个顶点与其中的相应变换矩阵相乘。您需要传入所需的矩阵(可能是模型、视图和投影)。可以根据需要在每次渲染过程中在CPU上计算这些矩阵。这意味着您不需要透视图。您可能只需要调用glViewport一次,除非您试图分割窗口并在每个部分中绘制不同的内容。但我不希望它会导致任何性能问题。您可以随时查看个人资料以确定

调用
glViewport(…)
不会影响性能。所做的只是更改绘制几何图形投影到的窗口的矩形。这是一个简单的坐标变换,它不会调整任何资源(如帧缓冲区或任何东西)的大小。您可能希望将矩阵作为统一体传递给顶点着色器。这是一个很长的解释,所以你最好在谷歌上搜索opengl 3.3教程。我强烈建议从一开始就找到一个好的方法,以确保您不会将固定函数与现代opengl混合使用