首先网格化的步骤为(代码示意)
GLUtesselator *pTessLator;
pTessLator=gluNewTess(); //创建网格化对象
gluTessCallback(pTessLator,GLU_TESS_BEGIN,(void (__stdcall *)())glBegin);//设置回调函数
gluTessCallback(pTessLator,GLU_TESS_END,(void (__stdcall *)())glEnd);
gluTessCallback(pTessLator,GLU_VERTEX,(void (__stdcall *)())glVertex3dv);
gluTessCallback(pTessLator,GLU_TESS_ERROR,(void (__stdcall *)())TessError);
gluTessBeginPolygon(pTessLator,NULL);//开始一条曲线,后面逐一指定顶点,所以第二参数为空
gluTessBeginContour(pTessLator);
group=&(tess.groups[0]);
vector<VertexPoint>::iterator it;
GLdouble vertex[10][3];
int i=0;
for (it=group->vertexsArray.begin();it!=group->vertexsArray.end() ;it++)
{
VertexPoint vp=*it;
vertex[i][0]=vp.xyz[0];
vertex[i][1]=vp.xyz[1];
vertex[i][2]=vp.xyz[2];<

本文探讨了网格化(Tessellation)过程中的关键步骤和常见问题,包括环绕顶点的平面一致性、顶点数组的定义位置、数据传递方式以及不同环绕顶点数的处理。通过实例分析,解释了为何顶点数据必须在网格化对象的作用域内,并展示了如何调整顶点数据源以实现正确的网格化结果。
最低0.47元/天 解锁文章
917

被折叠的 条评论
为什么被折叠?



