小编Dar*_*ark的帖子

使用OpenGL有效地绘制大量多边形?

我目前正在使用opengl来绘制几千个多边形,而且运行速度非常慢.绘制8000个多边形需要大约100毫秒.

以下是有关我的设置的一些信息:

  • 我将3d场中的每个对象设置为2d多边形平面的集合,因此正方形将由6个4顶点平面组成.所以我可以访问每个单独的飞机.
  • 我不能保证每个多边形将具有相同数量的顶点
  • 我现在画的如下:

    for(allPlanes){
      glBegin(GL_POLYGON);
       for(allPointsInThePlane){
           glVertex(pointX,pointY,pointZ);
        }
      glEnd();
    }
    
    Run Code Online (Sandbox Code Playgroud)

这比我预期的慢得多,我已经研究过使用glDrawElements()代替并将多边形平面分成三角形并使用三角形或条带来绘制它们.

我正在寻找一些关于最有效的方法的建议,或者对我接近绘图方式的任何批评.

opengl

4
推荐指数
2
解决办法
3180
查看次数

glDrawArrays在原点绘制随机点?

我有几个通过三角形扇形绘制的对象,但是一旦我设置了我的glVertexPointer,并调用了glDrawArrays,在绘制的原点上始终只有一个点,我没有明确指定.以下是我绘制场景的方法.DrawScene函数设置为每30 ms调用一次的计时器.

    // initialize openGL scene
    InitializeGL(){
    glViewport(0, 0, 800, 600); 
    glEnable(GL_MULTISAMPLE);
    glClearDepth(1.0f);
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
    glShadeModel(GL_FLAT);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE); 
    glClearColor(0.0f,0.0f,0.0f,0.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    setUpView() // optional makes a call to glRotate() and glTranslate() in MODELVIEW matrix mode

    drawAxis() //optional method to draw x,y,z axis

    startDrawSceneTimer() // method that just starts the DrawScene timer to 30ms

    }


    DrawScene()
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
        glEnable(GL_VERTEX_ARRAY);
        //poly2 is a 7 point sided polygon, array is pointX, pointY, pointZ of each vertex
        GLfloat poly2 …
Run Code Online (Sandbox Code Playgroud)

opengl

1
推荐指数
1
解决办法
1817
查看次数

标签 统计

opengl ×2