【发布时间】:2013-10-24 03:29:47
【问题描述】:
我的文件包含 2300 万条记录,格式如下 {atomName, x, y, z, transparence}。对于解决方案,我决定使用 OpenGL。
我的任务是渲染它。在第一次迭代中,我使用块“glBegin/glEnd”并将每个原子绘制为点某种颜色。这个解决方案奏效了。但我得到了 0.002 fps。
然后我尝试使用 VBO。我形成了三个缓冲区:顶点、颜色和索引。这个解决方案奏效了。我得到了 60 fps,但我没有舒适的绑定缓冲区,我正在绘制点,而不是球体。
然后我读到了 VAO,它可以简化绑定缓冲区。好的,它成功了。我觉得装订很舒服。
现在我想绘制球体,而不是点。我想,相对于顶点集的每个点形成一个球体,可以在其上构建一个球体(具有一定的准确性)。但是如果我有 2300 万个顶点,我必须计算每个点之间的 12 个或更多顶点相关。 23 000 000 * 4 (float) = 1 Gb 数据,可能不是很好的解决方案。
下一步我应该怎么做?我无法完全理解此任务中适用的着色器或存在其他方式。
【问题讨论】:
-
我认为纹理点精灵可能会起作用,因为您的球体从每个角度来看都是相同的。
-
你的意思是我应该在每个点(x,y,z)输出球体精灵?
-
带纹理的点精灵基本上是具有纹理的点。所以它(可能)是你已经做过的,但是你在它上面加上了纹理。这将为您的原子提供更球形的外观。看这里informit.com/articles/article.aspx?p=770639&seqNum=7。或者只是谷歌
Textured point sprites明白我的意思。 -
看这里,您可能会发现它对理解该技术很有用:fullonsoftware.co.uk/snippets/content/OpenGL_-Particle_System_Tutorial-Blending-_PointSprites.pdf跨度>