【问题标题】:Draw polygon wire in Maya using OpenGL使用 OpenGL 在 Maya 中绘制多边形线
【发布时间】:2014-09-17 23:49:54
【问题描述】:

我正在寻找使用 openGL 在 Maya 中快速绘制多边形线框的方法。我有一个可行的解决方案,但是对于复杂的场景来说它非常慢。

我还有一个使用 MGeometry 和 MGeometryPrimitive 的快速解决方案,但是它给了我三角形,我看不到获得多边形定义的方法。

我只对点和多边形定义感兴趣,我不关心法线、UV 等。

这是我工作缓慢的解决方案:

MPointArray points;
for (MItMeshPolygon oPolyIter(object); !oPolyIter.isDone(); oPolyIter.next())
{
    gGLFT->glBegin(MGL_LINE_LOOP);
    oPolyIter.getPoints(points);
    for (unsigned int i = 0; i < points.length(); i++)
        gGLFT->glVertex3d(points[i].x, points[i].y, points[i].z);
    gGLFT->glEnd();
}

有什么想法或建议吗?

【问题讨论】:

  • 将 glDrawMode 更改为 Wire?
  • 感谢您的评论,但这有点暗示。我只是没有展示这部分代码。
  • 啊,好吧。抱歉,我略略略过。我见过人们尝试用 GL_LINES 来做到这一点。无论如何,用线框绘制它不应该比用多边形绘制慢。

标签: c++ opengl maya


【解决方案1】:

经过一番研究,我想出了这个解决方案,它的运行速度相当快。

gGLFT->glPolygonMode(MGL_FRONT_AND_BACK, MGL_LINE);
MIntArray verts;
UintArray vertIds;
for (int i = 0 ; i < mesh.numPolygons(); i++)
{
    mesh.getPolygonVertices(i, verts);
    vertIds.convert(verts);
    gGLFT->glDrawElements(GL_POLYGON, verts.length(), GL_UNSIGNED_INT, vertIds.data() );
}

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2015-02-05
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多