2012-09-17 84 views
1

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

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

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

回答

4

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

就你而言,你可能想要使用两个渲染列表:一个用于半透明物体,一个用于不透明物体。

一旦你的清单被排序,你会翻阅它们并按顺序渲染对象。

您可能已经对场景图的需求感到困惑,因为几乎任何场景图实现都会渲染列表。