【问题标题】:OpenGL Instanced Rendering without shaders没有着色器的 OpenGL 实例化渲染
【发布时间】:2013-10-05 03:41:15
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您可以使用兼容性配置文件并仅在需要时打开着色器(在新代码中),然后再次关闭它们。这就是为什么有兼容性配置文件,以使过渡更容易。
  • 谢谢。我花了一些时间,但我切换到了兼容性配置文件

标签: c++ opengl 3d vbo


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 2016-09-12
    • 2012-02-27
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多