c++ - 没有着色器的 OpenGL 实例化渲染

标签 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() 使用 glDrawElements 将顶点数据存储在 VBO 中,简单地渲染对应于立方体每一侧的 6 个四边形。 glVertexPointer 和 glColorPointer 用于设置属性元素。

这有效,但我想使用 Instanced rendering通过使用可能的 glDrawElementsInstanced()。但是由于项目的一些遗留代码,我不得不使用固定功能管道。

是否可以使用固定管道来做到这一点?如果是,我如何告诉我的 GPU 使用体素中心和颜色的实例 vbo。

最佳答案

正如 datenwolf 评论的那样,我切换到兼容性配置文件。我将 Qt 与大量现有的固定管道代码一起使用。因此,我在每次实例化渲染后绑定(bind)和取消绑定(bind)着色器。

关于c++ - 没有着色器的 OpenGL 实例化渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19074523/

相关文章:

c++ - 使用 VAO/VBO 的 OpenGL 模型/纹理渲染

c++ - 现代 OpenGL 中的分形树(OpenGL 3.3 及更高版本)

javascript - A 形框架中的灯光根据与它们的距离而产生条纹伪影

c++ - C++是否允许函数在参数不足的情况下调用自身?

c++ - 确定数字(编码为字符串)是否适合 C++ 中的 64 位整数?

c++ - 用调试版本覆盖 new 而不会损坏 placement new

javascript - intersectsBox 在期望 false 时返回 true

c++ - 您会为 Blackberry 开发选择什么平台?

opengl - 使用 opengl 和 x264 更快地编码实时 3d 图形

html - 移动 css 3d 动画,使其右对齐(而不是左对齐)