Opengl中glEnable的介绍

        在Opengl中glEnable函数的功能是:用于启用各种功能,其功能由参数决定。所以该函数

在实现各种功能中是十分重要的。

其函数原型为:void glEnable(GLenum  cap);其cap就是一个参数值,每个参数值有着不一样的功能。

与其相对应的是glDisable(GLenum  cap);函数,就是关闭各种功能。

glDepthFunc
  功能:指定用于深度缓冲比较值。
  参数说明:func指定深度比较函数,GL_NEVER,GL_LESS,GL_EQUAL,GL_LEQUAL,GL_GREATER,

       GL_NOTE_QUAL,GL_GEQUAL,GL_ALWAYS,缺省值GL_LESS,
  GL_NEVER,不通过(输入的深度值不取代参考值)
  GL_LESS,如果输入的深度值小于参考值,则通过
  GL_EQUAL,如果输入的深度值等于参考值,则通过
  GL_LEQUAL,如果输入的深度值小于或等于参考值,则通过
  GL_GREATER,如果输入的深度值大于参考值,则通过
  GL_NOTE_QUAL,如果输入的深度值不等于参考值,则通过
  GL_GEQUAL,如果输入的深度值大于或等于参考值,则通过
  GL_ALWAYS,总是通过(输入的深度值取代参考值)

opengl里面的深度缓存 
在现实生活中,一个实心物体挡在另外一个实心物体的前面, 后面的那个物体有部分会被遮盖掉
那么opengl里面如何模拟这个情况呢? 每个物体的每个像素都有一个深度缓存的值(在0到1之间,

可以想象成是z轴的距离)glDepthFunc启用了GL_LESS(现实生活中的前景), 那么当前个物体

挡住后个物体时, 由于前个物体深度值小(越靠近人的), 所以它就被画了出来, 后面的物体

被挡住的像素就被忽略掉了。(当然你如果启用了GL_GREATER, 那么情况就反过来了)这个时

候再来说glClearDepth, 它给深度缓冲指定了一个初始值,缓冲中的每个像素的深度值都是这个, 

比如1,这个时候你往里面画一个物体, 由于物体的每个像素的深度值都小于等于1, 所以整个

物体都被显示了出来。 如果初始值指定为0, 物体的每个像素的深度值都大于等于0, 所以整个

物体都不可见。 如果初始值指定为0.5, 那么物体就只有深度小于0.5的那部分才是可见的

glEnable函数的用法:

void myInit(void)   
{   
/*设置背景色*/   
glClearColor(1.0,1.0,1.0,1.0);   
   
glEnable(GL_DEPTH_TEST);   
glDepthFunc(GL_LEQUAL);   

。。。

}

但是不能放在glBegin和glEnd两个函数的中间。

参数cap的取值为:



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值