没有着色器的OpenGL Instanced Rendering

时间:2013-09-29 04:48:52

标签: c++ opengl 3d vbo

我渲染了许多轴对齐的3D立方体。每个立方体可以通过立方体中心和/或颜色的位置彼此不同。这就是我现在正在渲染的方式

for (i = 0; i < num_of_cubes; ++i) {
 glTranslatef(center[i].x, center[i].y, center[i].z);
 DrawCube();
}

我的DrawCube()简单地渲染6个四边形,对应于立方体的每一边,使用glDrawElements,顶点数据存储在VBO中。 glVertexPointer和glColorPointer用于设置属性元素。

这很有效,但我希望通过使用glDrawElementsInstanced()来使用Instanced rendering。但是由于项目的一些遗留代码,我必须使用固定功能管道。

是否可以使用固定管道执行此操作?如果是,我如何告诉我的GPU使用体素中心和颜色的实例vbo。

1 个答案:

答案 0 :(得分:0)

datenwolf评论,我转而使用了兼容性配置文件。我在Qt中使用了很多现有的固定管道代码。所以我在每次实例渲染后绑定和取消绑定着色器。