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

时间:2012-09-18 07:22:04

标签: opengl

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

2 个答案:

答案 0 :(得分: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. 由于您知道10-20箱中的所有星星都位于20-30箱中的所有星星前面,因此您可以安全地清除深度缓冲区,从而可以绕过深度缓冲区的精度限制,尽可能远地画出物品

答案 1 :(得分:0)

您可以使用分层天空立方体的方法,在其上渲染星星和物体。如果事情相对接近,你可以在立方体的“matroyshka”排列上使用视差滚动方法。