【问题标题】:Modern method of transforming modelview matrix in OpenGL?在OpenGL中转换模型视图矩阵的现代方法?
【发布时间】:2014-05-02 22:05:01
【问题描述】:

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

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

如果完全相关,我正在使用带有 Java 的 LWJGL 进行渲染。

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

【问题讨论】:

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

标签: java performance opengl matrix lwjgl


【解决方案1】:

对于现代 OpenGL,您想编写一个顶点着色器并将每个顶点乘以其中的适当变换矩阵。您需要传入所需的矩阵(可能是模型、视图和投影)。您可以根据需要在每个渲染通道上计算 CPU 上的这些矩阵。这意味着您不需要 gluPerspective。您可能只需要调用 glViewport 一次,除非您尝试划分窗口并在每个部分中绘制不同的内容。但我不认为它会导致任何性能问题。您可以随时配置文件来确定。

【讨论】:

    猜你喜欢
    • 2014-06-12
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多