位置: 编程技术 - 正文

OpenGL编程逐步深入(九)插值处理(opengl编程宝典)

编辑:rootadmin

推荐整理分享OpenGL编程逐步深入(九)插值处理(opengl编程宝典),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl gpu编程,opengl gpu编程,opengl例程,opengl 编程,opengl gpu编程,opengl例程,opengl编程语言,opengl编程实例,内容如对您有帮助,希望把文章链接给更多的朋友!

注:文中VS代指顶点着色器,FS代指片段着色器。

准备知识

这个教程和大家展示3d管道中非常重要的部分,即Interpolation(插值)。光栅化程序执行的插值变量由VS产生。正如你已经见到过的,为了在屏幕中显示一些有意义的东西,你需要在vertex shader中指定一个输出变量’gl_Position’。它是一个包含顶点坐标的有4个分量的向量。x/y/z分量会和w分量做除法运算,任何分量超出规范化正方形([-1,1])的部分将会被裁剪。这些值会被转换成屏幕空间坐标系,接着三角形(或者其他指定图形)会被光栅化程序渲染到屏幕上。

光栅化程序在三角形的三个顶点之间进行插值处理,会访问三个顶点之间每一个像素,然后对每个像素点执行fragment shader(片段着色器)。片段着色器將返回一个像素颜色,光栅化程序將该颜色存放到颜色缓冲区中。vertex shader(顶点着色器)输出的其他变量则不经过这些步骤。如果fragment shader没有显式的请求这些变量,驱动程序会进行优化处理,去除VS中这些变量相关的指令。然而,如果FS没有用到光栅化程序光栅化处理时进行插值的变量,每个FS的调用会提供一个插值和指定的location进行匹配。这意味着这些相邻像素的值会略有不同。

两种常见的依赖这种插值的变量是三角形法线和纹理坐标。顶点法线通常通过包含该顶点的所有三角形法线的平均值来计算。如果一个对象不是完全平坦的就意味着每个三角形的三个顶点法线会有所不同。在这种情况下我们依靠插值法计算每个像素的法线。这些法线用于灯光计算上以获得更加逼真的灯光效果。纹理坐标的情况也相似,这些坐标是模型的一部分,由每个顶点提供。为了將纹理覆盖在三角形上,你需要为每个像素执行相同的操作并且为每个像素指定正确的纹理坐标。这些坐标也是通过插值法获得。

在这个教程中我们会看到通过插值法对三角形表面像素插入不同颜色值后的效果。通常我们不在顶点缓冲区中提供颜色,而是提供纹理坐标,颜色从纹理中获取。这些颜色稍后会被光照计算程序处理。

程序代码OpenGL编程逐步深入(九)插值处理(opengl编程宝典)

清单1.顶点着色器shader.vs代码

代码解读

主程序代码和上节相比未做改动。

管道的不同阶段传递参数需要使用保留字out并且要定义在shader的全局作用域中,该颜色是个四分量向量,XYZ分量代表RGB,W分量代表透明度。

颜色在图形管道中,通常用在[0.0,1.0]之间的浮点数表示。这个值稍后会被映射成[0,]的整数。我们设置颜色值随着位置的改变而改变。首先我们使用内置的函数clamp()保证该值不会超过[0.0,1.0]这个范围。由于三角形左下角的顶点X、Y坐标为-1,-1,经过clamp()函数调用会转换为0,所以左下角为黑色。

clamp函数处理的结果是一个三分量向量,我们通过vec4(vec3, W)这种形式将它增加一个W分量,该值为1表明透明度为完全不透明。

运行效果

你将会看到三角形不同部分呈现不同的颜色。

OpenG: 光照 1.绘制带有光照效果的场景;2.场景包含3个茶壶,通过键盘1,2,3可以分别选中三个茶壶,然后用鼠标对每个茶壶进行分别的旋转;3.使用点光源,点光源

OpenGL教程翻译 第十七课 环境光(Ambient Lighting) OpenGL教程翻译第十七课环境光(AmbientLighting)原文地址:

OpenGl的glMatrixMode()函数理解 glMatrixMode()函数的参数,这个函数其实就是对接下来要做什么进行一下声明,也就是在要做下一步之前告诉计算机我要对什么进行操作了,这个什么在glM

标签: opengl编程宝典

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

上一篇:OpenGL入门二(opengl入门教程(精))

下一篇:OpenG: 光照(opengl光照设置)

  • 企业所得税更正申报要交滞纳金吗
  • 填写了领款单还要填报销单吗
  • 视同销售发放福利的会计分录
  • 上月计提工资下月要冲回吗冲会吗
  • 堤围费是什么意思
  • 固定资产未入固定资产账
  • 财务报表其他应付款为负数
  • 累计折旧是费用岗负责的吗
  • 收到社会保险基金管理局转来的失业保险金,社保代发
  • 建筑业开票金额与审定金额之间的关系
  • 出口商品一定要有条形码吗
  • 什么是企业所得税收入
  • 一个月计提2个月工资
  • 小规模纳税人发票可以抵扣吗
  • 加工费的增值税税率是多少
  • 手撕票可以报销么
  • 海关进口增值税可以抵扣吗
  • 不可抗力后果承担
  • 年底有留抵税额需要结转吗
  • 企业采购成本包括所有的仓储费用
  • 如何准确区分不动产租赁和仓储服务?
  • 拆迁的支出费用包括哪些
  • 对公转账先打钱后转账
  • 固定资产清理应交税费怎么算
  • bios中如何关闭cd/dvd
  • mac和mac之间怎么传东西
  • 域名停靠是病毒吗
  • 公寓收费标准
  • linux安装常用命令
  • 提供劳务收入如何核算
  • 如何用ai写代码
  • 残疾人取得房屋所有权
  • 安斯海滩上的角眼沙蟹,塞舌尔普拉兰岛 (© Ingo Schulz/Offset by Shutterstock)
  • 发票章需要注销吗
  • 基建账如何并入会计科目
  • 芝麻信用app
  • 投资性房地产在资产负债表哪个科目
  • 固定资产清理应交增值税怎么算
  • springboot自动配置的注解
  • 销售商品的收入属于收入吗
  • 加计扣除内容
  • 家具采购单
  • sqlserver无法打开备份设备
  • 存货周转率是指企业某一会计
  • 如何网上填报个人所得税
  • 哪些人需要税务会计
  • 计提折旧会计分录怎么做
  • 服务业预收账款什么时候确认收入
  • 个体工商户不经营需要税务登记吗
  • 可供分配的利润分配顺序
  • 其他应付款转应付账款分录
  • 营业外收入与其他业务收入的区别
  • 投资性房地产讲解
  • 建账时都要建哪些科目
  • 新冠肺炎疫情相关的公共政策
  • 期末留抵税额和上期留抵税额
  • 分公司是否需要独立核算
  • 如何办icp许可证
  • sql you
  • win8 开机
  • windows10创意者更新
  • 韩国电脑用什么系统
  • 六款常见的墨水
  • vmware 10虚拟机
  • win7切换输入法的快捷键怎么设置
  • windowsxp关闭窗口操作方法有哪些
  • win10系统怎么找到我的电脑
  • win1021年更新
  • linux怎么查网络走向
  • win10系统语言包安装方法
  • 在linux系统中
  • win8.1开不了机怎么办
  • win10系统无线网络连接在哪
  • win10ldac怎么开启
  • cocos2d官网
  • golang 和 python
  • android触屏事件的处理
  • unityui插件
  • 国家税务总局开票系统怎么开票
  • 北京天然气收费标准2024年
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设