对象渲染顺序,场景图?

时间:2012-09-17 05:17:26

标签: c++ opengl scenegraph

我正在使用OpenGL渲染3D对象。 3D世界中的每个对象都有一个边界框和一个相关的模型矩阵,用于将对象从零件坐标系(PCS)转换为世界(WCS)。边界框也在PCS中。每个对象的质心在WCS中计算并与每个对象相关联。

在WCS中给出摄像机位置和目标位置: - >我想从前到后渲染所有不透明的对象(alpha == 1)。 - >我想在渲染不透明物体后,将所有半透明物体从后向前渲染。

由于这是我第一次尝试实现图形引擎,我不确定场景图将如何帮助我。我想我必须根据与相机的距离手动对对象进行排序,然后根据不透明/半透明对象渲染相同的对象。我真的需要场景图吗?我应该如何实施引擎。我可以使用其他可用的引擎,但我不愿意并希望自己实现。

1 个答案:

答案 0 :(得分:5)

嗯,你不一定需要这里的场景图,但你需要一个渲染列表。也就是说,每个渲染周期都会清除列表。每个要渲染的对象都会将自身添加到渲染列表中。完成后,您可以根据与相机的距离对列表进行排序。

在您的情况下,您可能想要使用两个渲染列表:一个用于半透明对象,另一个用于不透明。

对列表进行排序后,您可以浏览它们并按顺序渲染对象。

你可能已经混淆了对场景图的需求,因为几乎任何场景图实现都会呈现列表。