用Unity绘制LINE_STRIP

时间:2014-05-28 08:32:52

标签: opengl unity3d

对于一个新项目,我正在考虑是否使用OpenGL或Unity3d。我对OpenGL有一些经验,但我对Unity完全不熟悉。我已经阅读了Unity网站上的Unity文档和教程。但是,我找不到用Unity绘制简单Line-Strip的方法。

在下面的示例(C#,OpenGL / SharpGL)中,我绘制了一个从预定义点到障碍物的圆形轨迹,可以将其想象为具有中点 [cx,cy] 的分割圆和radius r 。障碍物的位置(x-y坐标)由 obst_x obst_y 给出。

问题1:我怎样才能对Unity做同样的事情?

问题2:在我的新项目中,我将不得不绘制相当多的这样的几何图元。将Unity用于那些事情是否有意义?

void drawCircle(float cx, float cy, float r, const float obst_x, const float obst_y) 
{
    float theta = 0.0f, pos_x, pos_y, dist;
    const float delta = 0.1;

    glBegin(GL_LINE_STRIP);

    while (theta < 180) 
    { 
        theta += delta;                 //get the current angle 

        float x = r * cosf(theta);      //calculate the x component 
        float y = r * sinf(theta);      //calculate the y component 

        pos_x = x + cx;                 //calculate current x position
        pos_y = y + cy;                 //calculate current y position

        //calculate distance from current vertex to obstacle
        dist = sqrt(pow(pos_x - obst_x) + pow(pos_y - obst_y));

        //check if current vertex intersects with obstacle
        if dist <= 0
        {
            break;                      //stop drawing circle
        }
        else
        {
            glVertex2f(pos_x, pos_y);   //draw vertex
        }
    }

    glEnd(); 
}

1 个答案:

答案 0 :(得分:0)

如何绘制线条

Mesh类的

SetIndices方法允许您选择MeshTopology。你需要的是MeshTopology.LineStrip

如何画线

您还可以使用LineRenderer组件绘制线条。我强烈建议您将其视为一种选择。

您需要使用Unity 3D吗?

取决于你:)

旁注

glBeginglEndglVertex函数的使用称为立即模式,现在被视为已弃用(由于性能问题)。