现在,我使用glutSolidSphere绘制了多个50k +球体
速度极低。

有什么方法或建议可以提高速度吗?

下面是我的代码...

void COpenGlWnd::OnPaint()
{
    CPaintDC dc(this);
    ::wglMakeCurrent(m_hDC, m_hRC);
    for(int k = 0; k < m_nCountZ; k++)
    {
        for(int j = 0; j < m_nCountY; j ++)
        {
            for(int i = 0; i < m_nCountX; i ++)
            {
            ::glPushMatrix();
            ........
            ::glutSolidSphere(Size[i][j][k], 36, 36);
            ........
            ::glPopMatrix();
            }
        }
    }
    ::SwapBuffers(m_hDC);
}

想要查询更多的信息:
球体将始终位于特定位置,但是用户可以使用鼠标旋转并从差异 View 查看所有球体。

最佳答案

这里有一些建议:

  • 创建包含球体的顶点缓冲对象(VBO)并渲染它,而不是使用glutSolidSphere。
  • 查看实例化,即通过一个draw调用绘制多个球体。

  • 以下文章几乎完全满足您的要求:http://sol.gfxile.net/instancing.html

    关于c++ - 使用Opengl绘制超过50k的球体时如何提高速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10026169/

    10-11 22:52