对于一个新项目,我正在考虑是否使用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();
}
答案 0 :(得分:0)
SetIndices方法允许您选择MeshTopology。你需要的是MeshTopology.LineStrip
。
您还可以使用LineRenderer组件绘制线条。我强烈建议您将其视为一种选择。
取决于你:)
glBegin
,glEnd
和glVertex
函数的使用称为立即模式,现在被视为已弃用(由于性能问题)。