所以,在过去的几天里,我开始获得一些 OpenGL 3D 编程的经验。我正在为 Java 使用 LWJGL。我创建了一个带有 fps-movement 的 3d 相机类。我还用 VBO 创建了一个立方体。我可以毫无问题地渲染它。
现在,我怎样才能在另一个位置上绘制相同的 VBO?现在我的立方体在 (0, 0, 0) 上,然后转到 (5, 5, 5)。如果我想在 (10, 10, 10) 到 (15, 15, 15) 处绘制同一个立方体怎么办?
谢谢!
将立方体的位置向量作为uniform vec3
变量传递给顶点着色器。在那里,将它添加到每个顶点的位置。
如果要绘制数百个,可以使用实例化来节省一些性能。为顶点位置设置一个每个顶点属性,glVertexAttribDivisor
为每个实例的平移设置一个每个实例属性(via = 1)。有关详细信息,请参阅此 wiki 条目。