opengl - 在OpenGL中绘制许多球体

标签 opengl performance glut visualization

我想使用 OpenGL 绘制许多球体(~100k)。到目前为止,我正在做类似的事情

for (int i=0; i<pnum; i++){
     glPushMatrix();
     glTranslatef(bpos[i].x, bpos[i].y, bpos[i].z);
     glCallList(DListSPHERE);
     glPopMatrix();
}

在使用合适的球体之前,我使用了 GL_POINTS .这让我可以调用 glDrawArrays一个包含所有点的数组,非常有效。有没有比上面的代码更好的方法来绘制许多相同的对象?

最佳答案

instancing 上查看此页面: 它包含许多引用资料:

  • 一些测试显示何时使用实例化,何时不使用:http://www.ozone3d.net/blogs/lab/?p=87
  • 伪实例化的 OpenGL 实现(推荐用于旧硬件)。
    glsl_pseudo_instancing.pdf
  • OpenGL实例:
    http://www.opengl.org/registry/specs/EXT/draw_instanced.txt

  • 另见 Geometry instancing on Wikipedia .

    关于opengl - 在OpenGL中绘制许多球体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995262/

    相关文章:

    c - 对 OpenGL 绘图形状使用值而不是 -1...1?

    c++ - 如何在结构数组中设置统一值?

    java - 重写 Java 类导致性能不佳?

    改变茶壶的颜色有时不起作用

    sql - BETWEEN 子句与 <= AND >=

    python - Win 7,IDLE突然不工作,Labview不工作,系统缓慢

    c - 全局变量的替代方案 - GLUT C

    c++ - 为 opengl 纹理加载图像时,stb_image 不会垂直翻转

    c++ - 低于 4.5 的 OpenGL 版本的 glBindTextureUnit 的替代方案?

    c# - opengl-Vbo 颜色在对象之间混合