创建库以使用JOGL绘制3D对象

时间:2012-10-10 04:20:15

标签: java jogl

所以我遇到了一些泡菜。我正在使用JOGL编写一个库来在GLCanvas上显示3D模型(以及2D模型)。好吧,一切都运行得很顺利,直到我决定将Strixa3DElement的各个多边形的draw方法调用到一个线程中以加快它的速度。以前,一切都完美地画在屏幕上,但非常慢。现在,就速度而言,它不可能更好。但它没有任何吸引力。忽略除了绘制方法处理的所有内容,是否有任何理由

https://github.com/NicholasRoge/StrixaGL/blob/master/src/com/strixa/gl/Strixa3DElement.java

应该不起作用?

编辑:另外,为了避免线程中的并发问题,假设任何给定元素的多边形不超过100000个。

1 个答案:

答案 0 :(得分:1)

现在最好将渲染任务保留在gl线程中。

  • 您甚至不使用显示列表。当然,它会很慢。
  • 即便如此,渲染也不是速度问题:您可以准备数据以便在另一个线程中渲染,从而使渲染循环保持干净和快速。 (搬出this._performGameLogic等)
  • 您可以使用VBO,着色器(移动数据和从CPU到GPU渲染逻辑),屏幕外缓冲等,以提高性能。

如果你继续,你应该

  • 检查GLArrayDataServer类,以便在编写代码时使用VBO,单元测试和演示。
  • 不传递GL2作为参数:GLContext.getCurrentGL()。getGL2();
  • 应该尝试GL2ES2:不推荐使用固定功能,允许在移动平台上使用。
  • 加入jabber会议

关于JOGL和线程的一些答案:Resources: Parallelism in Java for OpenGL realtime applications