使用OpenGL在空间中渲染星星的可能技术?

Vio*_*ffe 1 opengl

我有大量的恒星(颗粒),几乎没有在很大的空间内散射.我需要以某种方式可视化这个空间,包括导航.显然,我不能只用粒子的所有真实空间坐标来提供OpenGL,看起来我需要执行严格的处理并想出一些易于渲染的东西,比如纹理或OpenGL友好的少量点坐标.所以,问题是,是否有解决这项任务的常用技术,如果没有 - 你会怎么做?

zac*_*caj 6

您可以非常轻松地获得深度缓冲精度限制.你只需要将所有星星分成不同的距离.我不确定是否有名字,我刚看到它在几个地方描述过

假设你的深度缓冲/投影矩阵在你遇到精度问题之前可以达到10,000,但你的星星远远超过27,000.您可以根据它们离开的距离对星星进行分类.第一个垃圾箱中的0到10,000个星,第二个垃圾箱中的10,000到20,000个等等.然后开始绘制它们:

  1. 清晰的颜色和深度缓冲
  2. 将投影矩阵设置为near = 20,000且far = 30,000
  3. 画出20,000到30,000之间的所有星星
  4. 清除深度缓冲区
  5. 将投影矩阵设置为near = 10,000且far = 20,000
  6. 画出10,000到20,000之间的所有星星
  7. 清除深度缓冲区
  8. 将投影矩阵设置为near = 0和far = 10,000
  9. 画出0到10,000之间的所有星星

既然您知道10-20箱中的所有星星都位于20-30箱中的所有星星前面,您可以安全地清除深度缓冲区,允许您绕过深度缓冲区的精度限制并将其绘制为远在你想要的地方