1个回答
2013-11-19
展开全部
生成切割面主要用利用OpenGL的模板测试及反馈功能
主要绘制过程如下:
第一步, 初始化;
glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);//清除颜色和深度缓存;
... ...
第二步, 只绘制模型的模板植(颜色和深度缓存被禁用);
glEnable(GL_STENCIL_TEST);//打开模板测试;
... ...
glclipplane(GL_CLIP_PLANE0,equ);//设置切割面参数;
glEnable(GL_CLIP_PLANE0);//打开切割面;
... ...
DrawPlan1(... ...);//在模板中绘制图形,并没有在屏幕上绘制图形;
glDisable(GL_STENCIL_TEST);//这里禁用模板测试
第三步, 在反馈模式下绘图,并将剖面数据从反馈数组中提取出来;
... ...
DrawScene(GL_RENDER); //绘制一个规则的模型
glFeedbackBuffer(1024,GL_3D_COLOR,feed); //设置反馈数组
glRenderMode(GL_FEEDBACK); //在反馈模式下重新绘制,它不影响反馈缓存
DrawScene(GL_FEEDBACK); //将返回真正反馈回来的反馈值
... ...
PrintBuffer(feed); //自定义函数将缓存的剖面三角形提取出来
第四步, 绘制剖面三角形
... ...
glDisable(GL_CLIP_PLANE0);
DrawPlan2(... ...); //绘制剖面三角形
OpenGL能用这种方法,自动求取裁减平面和模型的交和自动实现剖面的三角化?
主要绘制过程如下:
第一步, 初始化;
glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);//清除颜色和深度缓存;
... ...
第二步, 只绘制模型的模板植(颜色和深度缓存被禁用);
glEnable(GL_STENCIL_TEST);//打开模板测试;
... ...
glclipplane(GL_CLIP_PLANE0,equ);//设置切割面参数;
glEnable(GL_CLIP_PLANE0);//打开切割面;
... ...
DrawPlan1(... ...);//在模板中绘制图形,并没有在屏幕上绘制图形;
glDisable(GL_STENCIL_TEST);//这里禁用模板测试
第三步, 在反馈模式下绘图,并将剖面数据从反馈数组中提取出来;
... ...
DrawScene(GL_RENDER); //绘制一个规则的模型
glFeedbackBuffer(1024,GL_3D_COLOR,feed); //设置反馈数组
glRenderMode(GL_FEEDBACK); //在反馈模式下重新绘制,它不影响反馈缓存
DrawScene(GL_FEEDBACK); //将返回真正反馈回来的反馈值
... ...
PrintBuffer(feed); //自定义函数将缓存的剖面三角形提取出来
第四步, 绘制剖面三角形
... ...
glDisable(GL_CLIP_PLANE0);
DrawPlan2(... ...); //绘制剖面三角形
OpenGL能用这种方法,自动求取裁减平面和模型的交和自动实现剖面的三角化?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询