位置: 编程技术 - 正文

OpenGL中的深度缓存(opengl帧缓冲)

编辑:rootadmin

推荐整理分享OpenGL中的深度缓存(opengl帧缓冲),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl深度值,opengl phong,opengl帧缓冲,opengl 深度,opengl帧缓冲,opengl开启深度测试,opengl开启深度测试,opengl 深度缓冲区,内容如对您有帮助,希望把文章链接给更多的朋友!

在说深度缓存前先来了解一下什么是深度?

深度,在日常生活中,这个词可以用来形容比如说一口井有多少深,即是一个距离,在OpenGL中也是一样的,不过它是用z坐标来描述的。一般地,z轴的坐标原点在屏幕上,屏幕里为负轴,向外为正轴。我们通过&#;睛可以看井的里面,那么在OpenGL中&#;睛描述为摄像机。一般地,摄像机的初始位置在OpenGL窗口的正中心。

说了什么是深度,接下来就来说一下什么是深度缓存(区)?

我们在用OpenGL来绘制图形的时候,我们希望有些图形在前,有些图形在后,这时候就用到了z坐标。当然,并不一定图形1的z坐标大于图形2的z坐标,就说图形1会绘制在图形2的前面,这是不对的,因为,这取决于我们的观察平面,即摄像机的位置。当然,如果我们不改动摄像机的位置(即初始化状态),那就可以这么认为的了。但是,如果z坐标超出到了屏幕的外面,那当然我们是看不到的了。

深度缓存(区)的原理就是把一个距离观察平面的深度&#;(或距离)与窗口的每个像素相关联。

在绘制之前,先通过glClear(GL_DEPTH_BUFFER_BIT);来清除深度缓存。然后在绘制的时候OpenGL会计算绘制图形与观察平面的距离。如果启用了深度缓存区,那么,在绘制的时候会首先对新的深度&#;和当前窗口中的深度&#;进行比较,如果小于,则替换当前像素位置的深度&#;和像素&#;。反之,就会被遮挡。

在通过深度缓存来绘制图形时,首先我们需要对深度缓存进行一些初始化。代码如下:

首先来说一下glClearDepth(1.0f);

该函数的作用是设置深度缓存的清除&#;,范围是0.0f~1.0f,这里的&#;表示,绘制的像素的深度&#;如果小于这个&#;,则会被画出来,反之就不会。一般地,设置为1.0f,由于物体的像素的深度&#;范围为0.0f~1.0f,所以,物体就会被全部显示出来。如果设置为0.0f,那就等于不可见了。

再来说一下glEnable(GL_DEPTH_TEST);

这个函数的作用就是启用深度缓存(区)。

最后再说一下glDepthFunc(GL_LEQUAL);

这个函数的作用就是设置深度测试类型,也可以叫做深度缓存比较函数。

OpenGL中的深度缓存(opengl帧缓冲)

在上述中,说到了这句话“新的深度&#;和当前窗口中的深度&#;进行比较,如果小于,则替换当前像素位置的深度&#;和像素&#;。反之,就会被遮挡。”这个就取决于深度测试的类型。我们来看一下它的一些参数:

GL_NEVER,GL_LESS,GL_EQUAL,GL_LEQUAL,GL_GREATER,GL_NOTEQUAL,GL_GEQUAL,GL_ALWAYS,GL_LESS。

系统默认的参数为GL_LESS,这跟我们现实生活中一样,距离我视线的并且在同一直线上的事物,近的就会遮挡住远的。GL_NEVER,不通过(输入的深度&#;不取代参考&#;)

GL_LESS,如果输入的深度&#;小于参考&#;,则通过

GL_EQUAL,如果输入的深度&#;等于参考&#;,则通过

GL_LEQUAL,如果输入的深度&#;小于或等于参考&#;,则通过

GL_GREATER,如果输入的深度&#;大于参考&#;,则通过

GL_NOTEQUAL,如果输入的深度&#;不等于参考&#;,则通过

GL_GEQUAL,如果输入的深度&#;大于或等于参考&#;,则通过

GL_ALWAYS,总是通过(输入的深度&#;取代参考&#;)

一般地,我们都会选择GL_LESS或者GL_LEQUAL,因为这两个更加符合实际,但是在具体应用中,还需要具体情况具体分析。

好了,这次先写到这儿吧~

To be continued~

&#;&#;

OpenGL中光照的设置(一) OpenGL这个系列的blog是我这个小白学习的笔记。大部分内容是摘录的,少部分内容是自己的理解。这篇文章转载自

OpenGL入门 & VS 配置使用 OpenGL gult库 GLUT(英文全写:OpenGLUtilityToolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O,并包括了以下常见的功能:定义以及控制视

OpenGL中光照的设置(二) OpenGL这个系列的blog是我这个小白学习的笔记。大部分内容是摘录的,少部分内容是自己的理解。这篇文章转载自

标签: opengl帧缓冲

本文链接地址:https://www.jiuchutong.com/biancheng/369479.html 转载请保留说明!

上一篇:opencl入门介绍(opencli)

下一篇:OpenGL中光照的设置(一)(opengl实现光照效果)

  • 附加税的税率表
  • 合伙企业如何纳入合并报表
  • 税控盘的进项税在哪里申报
  • 款已付未收到发票怎么开
  • 银行回单可以跨年补录吗
  • 小规模纳税人变成一般纳税人之前的发票变更
  • 化工原材料销售挣钱吗
  • 非同一控制企业合并下,购买日将
  • 核定征收企业怎么申报
  • 短期借款利息都需要测算什么
  • 哪些属于不动产权
  • 物资采集是什么意思
  • 公司委托收款该怎么办
  • 高新技术企业如何查询
  • 捐赠支出和赞助支出的区别
  • 应收账款的借方表示增加还是减少
  • 分摊材料成本差异率怎么算
  • 劳动合同解除和终止的经济补偿
  • 子公司可否将母公司注销
  • 电解铜进口可以卖吗
  • 一般纳税人注销公司需要什么资料和流程
  • 收款收据可以做账么
  • 小规模纳税人补开发票如何申报增值税
  • 可以在企业所得税税前扣除的税金有
  • 纳税人办理退税手续流程
  • 增值税专用发票和普通发票的区别
  • php发送电子邮件
  • 如何开启系统自带杀毒软件
  • linux内核与文件系统
  • scworker.exe是病毒
  • 装修费用如何做分录
  • 什么情况下增长率是0
  • php实现查询功能
  • 前端等比例缩放
  • excel if统计
  • 新个人所得税起征点2023
  • python拆分文本文件
  • 织梦怎么改首页背景
  • 个税申报错了并撤销
  • 建筑垃圾处置费 南通
  • 政府奖励收入要交所得税吗
  • 通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
  • 购买房屋缴纳的契税可以退税政策
  • 合伙企业年底如何做账
  • 发票开具流程是?
  • 电力行业规定
  • 小微企业流转税优惠政策
  • 土地使用权如何取得
  • 购买员工团体意外险需要缴纳个税么
  • 销售费用进项税抵扣
  • 现金存银行凭证
  • 收到工程款怎么入账
  • 负数发票要给税务局吗
  • 社会医疗保险机构名词解释汇总
  • 通过SQL Server的位运算功能巧妙解决多选查询方法
  • windows server 2003安装域控制器的方法
  • xp系统怎么提升性能
  • windows2008防火墙允许远程桌面
  • 如何制作ubuntu系统盘
  • vmware workstation虚拟机设置
  • VMware虚拟机中安装MATE桌面环境
  • xp系统1
  • xp任务栏靠右怎么调回来
  • mac小技巧
  • MAC OS X 10.8通知中心无法访问、停止更新怎么重启
  • win7系统关闭自动休眠
  • win7点开始一直跳闪
  • 修改注册表命令
  • 系统时间错乱如何使用NTP进行系统时间调整
  • css各种滤镜的应用是什么
  • c#怎么使用opencv
  • shell脚本mysql
  • easyui框架的优缺点
  • jquery渐变效果
  • python中csv怎么用
  • 收藏一些不常用的图片
  • android键盘aosp
  • 国家税务局广东省电子税务总局手机版
  • 研发费用加计扣除2022政策
  • 去地税开个人发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设