现在即将放出的是第十二课的内容。
首先还是以前课程的连接:
第一课,编写第一个OpenGL程序
第二课,绘制几何图形
第三课,绘制几何图形的一些细节问题
第四课,颜色的选择
第五课,三维的空间变换
第六课,动画的制作
第七课,使用光照来表现立体感
第八课,使用显示列表
第九课,使用混合来实现半透明效果
第十课,BMP文件与像素操作
第十一课,纹理的使用入门
第十二课,OpenGL片断测试 ——→ 本次课程的内容
片断测试其实就是测试每一个像素,只有通过测试的像素才会被绘制,没有通过测试的像素则不进行绘制。OpenGL提供了多种测试操作,利用这些操作可以实现一些特殊的效果。
我们在前面的课程中,曾经提到了“深度测试”的概念,它在绘制三维场景的时候特别有用。在不使用深度测试的时候,如果我们先绘制一个距离较近的物体,再绘制距离较远的物体,则距离远的物体因为后绘制,会把距离近的物体覆盖掉,这样的效果并不是我们所希望的。
如果使用了深度测试,则情况就会有所不同:每当一个像素被绘制,OpenGL就记录这个像素的“深度”(深度可以理解为:该像素距离观察者的距离。深度值越大,表示距离越远),如果有新的像素即将覆盖原来的像素时,深度测试会检查新的深度是否会比原来的深度值小。如果是,则覆盖像素,绘制成功;如果不是,则不会覆盖原来的像素,绘制被取消。这样一来,即使我们先绘制比较近的物体,再绘制比较远的物体,则远的物体也不会覆盖近的物体了。
实际上,只要存在深度缓冲区,无论是否启用深度测试,OpenGL在像素被绘制时都会尝试将深度数据写入到缓冲区内,除非调用了glDepthMask(GL_FALSE)来禁止写入。这些深度数据除了用于常规的测试外,还可以有一些有趣的用途,比如绘制阴影等等。
除了深度测试,OpenGL还提供了剪裁测试、Alpha测试和模板测试。
因为论坛开始支持附件,现在把程序源代码和所使用的图片一起打包上传
=====================未完,请勿跟帖=====================
最后修改于2007-10-7 11:33:00
1
JS变量提升(var)
pip 升级过程中断,导致pip不能使用
centos7 安装 mysql5.7 (rpm)
Vim 基础命令使用
"export 'watchEffect' was not found in 'vue'
Vue 子组件通过 $emit 发送事件,父组件接收不到的问题
MyBatis更新数据时,时间字段的值被自动更新
正则表达式NFA文档
linux中恢复链接文件为真实文件