【问题标题】:How to optimize my JOGL app?如何优化我的 JOGL 应用程序?
【发布时间】:2010-09-27 20:12:08
【问题描述】:

我将 OpenGL 与 JOGL 一起使用。我的项目有点慢。我是 OpenGL 的新手。优化它的最佳方法是什么?有什么好的分析工具? (我正在使用 Eclipse。)

我最近从对一大堆模型使用一个静态纹理对象转换为每个模型都有自己的纹理对象。这似乎减慢了速度。

其他优化思路:

  • 避免在更新调用中使用 trig 来模拟月球轨道
  • 在显示列表中使用更多
  • 按纹理对模型进行排序以减少纹理切换
  • 按旋转对模型进行排序以避免旋转矩阵
  • 按 [特征 X] 对模型进行排序以避免 [操作 Y]

上面 X 和 Y 的一些常见问题值是什么?

似乎显示列表有助于提高性能。我可以在显示列表中做什么?有什么必须在绘制时完成的,还是可以全部预先计算?

作为 OpenGL 的新手,我对在这里做什么没有很好的直觉。

【问题讨论】:

  • 请更具体一些。你用什么OpenGL?你的目标是什么硬件?你的应用是什么?你做过测量吗?你使用 glBegin/glEnd 吗?
  • 我的应用程序是一个有汽车和月亮的小虚拟世界。我正在使用glBegin/glEnd。我没有进行测量。我没有专门针对任何硬件。
  • 尽早排序的一个关键是指标。如果你能找到一种测量每帧时间的方法(更好的每秒帧数),你就可以开始看到有多少改进正在发生变化。它还可能有助于为函数添加计时,这样您就可以查看哪些函数占用了您的时间
  • 嗨@NickHeiner,你解决了吗?
  • 这个领域有什么新进展吗?

标签: java opengl graphics jogl


【解决方案1】:

就优化代码的 OpenGL 部分而言,我建议使用减少客户端服务器数据传输(即 CPU 和 GPU 之间的数据传输)的 OpenGL 技术。显示列表肯定有助于提高性能,因为它们可以显着减少从客户端发送到服务器(系统到 GPU)的数据。显示列表和顶点数组是提高即时模式性能的良好开端,但还有更多改进,例如 缓冲区对象着色器

我建议你看看SongHo's OpenGL pages。他们通过完整的代码示例对上述几个主题进行了出色的解释和实现。

编辑:我忘了说他的例子是用 C++ 编写的,但是 OpenGL 调用应该都是一样的,如果不是的话,高度相似。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
相关资源
最近更新 更多