Java OpenGL渲染许多三角形

标签 java opengl jogl

我有一个 openGL(实际上是 JOGL,但同样的概念也适用于此)应用程序,其中我有一个场景,在每个渲染 channel 上渲染大约 10k 三角形。由于三角形需要保持恒定的大小和相对于相机位置的旋转,因此必须在每次渲染时计算三角形的比例和角度。

我尝试过使用显示列表,然后在每次调用 glCallList 之前进行缩放/旋转。这确实有效,但它会让系统变得缓慢。我已经考虑为此使用顶点缓冲区,但我不确定这是否是适当的方法,因为我需要在每次渲染时旋转/缩放。

有人可以帮我指出在每个场景中渲染这么多三角形的正确方向吗?

编辑 - 这为问题提供了一些额外的背景信息。

该应用程序是一个显示 3D 世界 View 的 map 应用程序。需要在表面上绘制某些形状,指向相对于指南针的方向,即 30 度。用户可以旋转 3D View ,但形状必须保持平坦在地球表面上,并且还指向指定的方向。

谢谢, 杰夫

最佳答案

就简单性而言,使用 GL_DYNAMIC_DRAW 的顶点缓冲区和使用 GL_STATIC_DRAW 的索引缓冲区将是最好的选择。

如果您有权访问着色器(GLSL 或 HSL),请使用带有 GL_STATIC_DRAW 的顶点缓冲区和带有 GL_STATIC_DRAW 的索引缓冲区,并计算顶点着色器中的缩放和旋转。这样你就可以将一些工作转储到 GPU 上。 (如果工作一开始就占用大量 CPU 资源)

也许事先做一些视锥体剔除?遮挡剔除?加速应用程序的最佳方法是减少渲染的三角形数量。

也许甚至可以使用一些线程。一个线程用于渲染,另一个线程用于计算比例和角度。

关于Java OpenGL渲染许多三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4306886/

相关文章:

OpenGL:在着色器中定义变量

c++ - 上传压缩纹理时出现 GL_INVALID_OPERATION

禁用深度测试时,Java OpenGL 颜色 Material 变暗

jogl - 在 JOGL 中找不到 GL.glColor3f?

java - 带有 JNLP 的 Jogl Applet 在 eclipse 中运行,但不在浏览器中运行

java - 设置Java中的RegEx默认为非贪婪

java - 从类路径加载资源时出现问题

java - 如何在不运行服务器的情况下查看thymeleaf模板

java - 如何在log4j2中打印Object参数

iPhone 和 cocos2d - 在设备中运行时的间隔操作计时问题