1

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

4

2 回答 2

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 bin 中的所有星星都在 20-30 bin 中的所有星星前面,因此您可以安全地清除深度缓冲区,让您绕过深度缓冲区的精度限制并将事物绘制为随心所欲

于 2012-09-19T20:38:37.000 回答
0

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

于 2012-09-18T08:52:08.683 回答