【发布时间】:2012-12-07 10:16:11
【问题描述】:
我有一个问题(实际上有几个)
1) 如何在 Python 中使用顶点缓冲区对象渲染立方体?
2) 我怎样才能多次重新定位那个立方体
3)我将如何不渲染某些面孔呢? (我有一个八叉树来存储位置,我不想渲染相互接触的面)
谢谢
【问题讨论】:
标签: python dynamic vbo pyopengl cubes
我有一个问题(实际上有几个)
1) 如何在 Python 中使用顶点缓冲区对象渲染立方体?
2) 我怎样才能多次重新定位那个立方体
3)我将如何不渲染某些面孔呢? (我有一个八叉树来存储位置,我不想渲染相互接触的面)
谢谢
【问题讨论】:
标签: python dynamic vbo pyopengl cubes
1:我使用这个模块在 OpenGL 3+ 中渲染立方体
如果您没有模型视图/投影矩阵,只需传入“numpy.identity(4)”,这将使顶点以原点为中心。 这也意味着相机将出现在立方体内部,因此可能不可见。
2:您无需“重新定位”对象,而是更改模型视图/投影矩阵并再次渲染 VBO。
立方体的顶点不知道其在 3D 空间中的位置,它们是相对于原点的。当你渲染它时,你应用一个矩阵(投影*模型视图)来移动立方体的顶点。
3:有很多方法可以做到这一点:
A.为每个面创建一个 VAO / VBO,并且只渲染你想要的面。
B.为每个面对应的每个顶点分配一个顶点属性。然后,使用统一的值,为顶点/片段着色器传递足够的信息,以了解它们是否应该渲染。 您可以使用单个整数轻松实现这一点,并使用单个位来表示每个面。
我会使用 B,因为您不会经常更改 VAO / VBO 状态,只需更改 6 个值(每个面 1 个)。
【讨论】: