0

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

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

不应该工作?

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

4

1 回答 1

1

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

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

如果你要继续,你应该

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

关于 JOGL&threads 的一些答案:Resources: Parallelism in Java for OpenGL realtime applications

于 2012-10-14T16:31:54.000 回答