【发布时间】:2016-03-01 22:46:19
【问题描述】:
我正在使用 OpenGL ES 来可视化具有超过 3 个顶点的多边形的网格。我想使用以下循环将这些多边形转换为三角形。在循环中,我创建了polygonVertexSize-2 的三角形数量,只需填充一个 OpenGL 索引数组,该数组以不同的顺序和时间引用相同的顶点。
for(int j=0;j<polygonVertexSize-2;j++) //number of triangles
{
//GetPolygonVertex returns the index of a polygon Vertex
indices[indp+0]=Polygon->GetPolygonVertex(0);
indices[indp+1]=Polygon->GetPolygonVertex(1+j);
indices[indp+2]=Polygon->GetPolygonVertex(2+j);
indp+=3;
}
这种转换的问题是,除非我应用 glDisable(GL_CULL_FACE),否则网格的某些部分是不可见的。这可能意味着我的三角剖分导致表面法线错误。另一件需要注意的是,我使用不同三角形中相同顶点的法线来平均一个顶点的法线。
【问题讨论】:
-
在渲染表面时没有法线。顶点有。表面上的法线是从顶点法线插值的。所以不应该改变。您能否附上屏幕截图 - 启用和禁用
GL_CULL_FACE?你确定你的多边形是凸的吗?否则你的三角测量可能是错误的 -
我添加了结果,我现在开始思考是否真的存在凸多边形。有没有办法以编程方式对此进行调查?视觉上有点难以看到,尤其是在小部分。
标签: c++ opengl-es mesh triangulation