图形渲染中的背面消隐

在3d图形学中,一个三角形图元有两个表面

在dx中,认为在摄像机坐标系中 以你的观察方向三角形环绕为顺时针的面为正面,另一面为背面,而在openGL中正好相反。(顶点的方向又称为环绕)

dx是左手坐标系而openGL是右手坐标系。

dx

D3DRS_CULLMODE,绘制状态

用法:Device->SetRenderState(D3DRS_CULLMODE,X);

其中X可取的值
1、D3DCULL_NONE //完全禁用背面消隐
2、D3DCULL_CW //只对顺时针绕序的三角形进行消隐
3、D3DCULL_CCW //只对逆时针绕序的三角形进行消隐(在消隐中为默认值)

dx的参考: http://blog.csdn.net/yaoxinchao/article/details/7982099

opengl

void  glFrontFace(GLenum  mode);
作用是控制多边形的正面是如何决定的。在默认情况下,是GL_CCW(逆时针)。
GL_CCW 表示窗口坐标上投影多边形的顶点顺序为逆时针方向的表面为正面。
GL_CW 表示顶点顺序为顺时针方向的表面为正面。
 
glEnable(GL_CULL_FACE) 开启剔除操作效果
glDisable(GL_CULL_FACE) 关闭剔除操作效果
 
glCullFace:指定剔除操作的多边形面
 
剔除操作
glCullFace()参数包括GL_FRONT和GL_BACK。表示禁用多边形正面或者背面上的光照、阴影和颜色计算及操作,消除不必要的渲染计算。
 
综上,在进行背面消隐时,假设我们设定只绘制正面的三角形图元,在你的试点看,如果这个三角形图元被认定为正面,则被绘制出来
如果被认定为背面则被剔除( 这个三角形不会被渲染,是剔除三角形图元而不是剔除这个三角形的背面的表面),所以要保证一个闭合模型的顶点环绕一致
如果不一致并且采用了背面消隐,很可能会看到模型的一部分不见了。

转载于:https://www.cnblogs.com/onlyDIABLO/p/3853125.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值