高分求用OpenGL写的OpenMesh显示程序

高分求用OpenGL写的OpenMesh显示程序,第1张

你可以先便利所有的面,然后将面存放在一个队列中,然后使用列表来实现,下面是核心代码
void RenderingEntity::buildPointsList()
{
// if mesh is not NULL and faces is not empty, get the points first
if (mesh && (!renderingFacesempty()))
{
renderingPointsclear();
std::set<Mesh::FaceHandle>::iterator it;
Mesh::FaceVertexIter fv_it;
for (it = renderingFacesbegin(); it != renderingFacesend(); ++ it)
{
for (fv_it = mesh->fv_iter(it); fv_it; ++ fv_it)
{
renderingPointsinsert(mesh->point(fv_it));
}
}
}
// build the list
renderingList = glGenLists(1);
glNewList(renderingList, GL_COMPILE);
setMaterial(matRendering);
for (std::set<OpenMesh::Vec3d>::iterator it = renderingPointsbegin(); it != renderingPointsend(); ++ it)
{
//glBegin(GL_POINTS);
//glVertex3dv((it)data());
//glEnd();
renderPoint((it), SceneInterface::sphereRadius);
}
glEndList();
}
上面代码负责存入集合
下面代码用于显示
void RenderingEntity::renderingFaceEntities()
{
std::set<Mesh::FaceHandle>::iterator it;
Mesh::FaceVertexIter fv_it;
if (!mesh->has_vertex_normals())
{
mesh->update_normals();
}
// rendering the faces
glBegin(GL_TRIANGLES);
for (it = renderingFacesbegin(); it != renderingFacesend(); ++ it)
{
if (renderingMode & (CAD_RENDERING_MODE_SOLID_FLAT | CAD_RENDERING_MODE_WIRE_FLAT))
{
glNormal3dv(mesh->normal(it)data());
}
for (fv_it = mesh->fv_iter(it); fv_it; ++ fv_it)
{
if (!(renderingMode & (CAD_RENDERING_MODE_SOLID_FLAT | CAD_RENDERING_MODE_WIRE_FLAT)))
{
glNormal3dv(mesh->normal(fv_it)data());
}
glVertex3dv(mesh->point(fv_it)data());
}
}
glEnd();
}

以上就是关于高分求用OpenGL写的OpenMesh显示程序全部的内容,包括:高分求用OpenGL写的OpenMesh显示程序、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10134179.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存