位置: 编程技术 - 正文

WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)(webgl fbo)

编辑:rootadmin

推荐整理分享WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)(webgl fbo),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:webgl使用,webgl fbo,webgl fbo,webgl fbo,webgl viewport,webgl debug,webgl debug,webgl 示例,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了WebGL利用FBO完成立方体贴图效果的方法。分享给大家供大家参考,具体如下:

这篇主要记录WebGL的一些基本要点,顺便也学习下如何使用FBO与环境贴图。先看下效果图(需要支持WebGL,Chrome,火狐,IE)。

主要实现过程如下,先用FBO输出当前环境在立方体纹理中,再画出当前立方体,最后画球,并且把FBO关联的纹理贴在这个球面上。

开始WebGL时,最好有些OpenGL基础,在前面讲Obj完善与MD2时,大家可能已经发现了,因为着色器的添加使用,原来一些Opengl大部分API已经没有使用。WebGL就和这差不多,大部分功能是着色器完成主要功能,记录下主要过程,大家可以比较下前面的,看看是不是很像,为了熟悉WebGL基本功能,本文没有利用比较完善的框架,只是用到一个帮助计算矩阵的框架(gl-matrix.js).

和使用OpenGL一样,我们要初始化使用环境,提取一些全局使用量。相关代码如下:

初始化:

在这里,我们初始化在网页中WebGL的上下方环境,并给出一系列初始化过程。下面先给出房间,也就是其中立方体的相关代码。

立方体:

上面的代码主要分为初始化立方体的着色器对象,初始化相关缓存,然后绘制立方体,可以说在Opengl中,如果用着色器来画,过程也是差不多的,在Opengl里,已经没有固定管线的一些功能如InterleavedArrays来指定是顶点还是法线或是纹理了,统一用vertexAttribPointer来传递应用程序与着色器之间的数据。在前面 MD2桢动画实现里面后面的参数传递改进版也有相关应用。

相应着立方体着色器主要代码如下:

立方体着色器实现:

着色器中,已经没有ftransform()功能可供调用,要自己传递如模型,视图,透视矩阵,在这里,模型是以原点为中心来绘画,意思模型视图矩阵也就是视图矩阵,所以屏幕位置的计算只需要视图和透视矩阵。在片断着色器中,x,y是从顶点着色器中的纹理坐标传递过来,相应过程6.*8.0,相当于8个度,用于控制立方体上的方块显示,而tex2是着色器中的顶点映射[0,1]的值,分别给立方体的六面分别设置不同的意思,然后用二个矢量的乘积来混合这二种颜色显示,gl_FragColor = vec4(tex2,1.0) * vec4(sign(cos(x)+cos(y)))。

WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)(webgl fbo)

在显示球体之前,应该先生成当前环境的立方体绘图,在这里使用FBO,先生成桢缓存和立方体绘理,并关联,然后以原点为中心,分别向上下左右前右绘图,然后利用桢缓冲分别输出到立方体上的六个面,主要代码如下:

FBO与立方体纹理:

在上面不知是gl-matrix提供的矩阵算法有问题,还是本来应该这样,在上下面的时候生成的纹理图不对,需要偏转摄像机的向上矢量。因为这是摄像机位置与目标的生成的Z轴和设定的UP轴平行了,这样导致不能正确计算X轴,然后对应的UP轴也计算不出来,相应视图矩阵出现错误。

最后是球体的绘画,代码主要和立方体的差不多,注意球体的顶点算法。

球体:

可以看到,也是和立方体一样的三步,初始化着色器,初始化顶点与法线,绘画。下面给出着色器代码:

球体着色器:

和前面立方体有点不同的是,球体有自己的模型矩阵,这也是一般正常的用法,然后传递眼睛对应球体顶点矢量与法线传递在片断着色器中,在片断着色器中,就有用到前面所生成的立方体纹理,我们根据眼睛经过顶点通过对应法向量反射到立体体纹理上的点来获取当前球体所对应的环境颜色,在这里,我们可以直接调用textureCube来完成上面所说的过程,不需要我们手动来计算。

其中GetShader函数的使用,参照了 这里的讲解。

可以说,上面主要的绘制函数已经完成,但是我们这个是能动的,所以需要模拟如客户端环境每隔多久绘制一次,主要代码如下:

动画:

在上面,每隔毫秒调用一次Update与Draw函数,其中Update用于更新眼睛与球体位置,Draw绘画。

完整实例代码点击此处本站下载。

更多关于JS特效相关内容感兴趣的读者可查看本站专题:《jQuery动画与特效用法总结》及《jQuery常见经典特效汇总》

希望本文所述对大家JavaScript程序设计有所帮助。

JS正则表达式比较常见用法 废话不多说,直接步入正轨了,想要了解js正则表达式用法的相关知识,通过本教程学习吧。定义和使用varpatt1=newRegExp("hello");varpatt2=/world/;test方法test()

一篇文章掌握RequireJS常用知识 本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,

探究Javascript模板引擎mustache.js使用方法 我们将为大家详解Mustache.js轻量级JavaScript模版引擎使用方法。简单示例functionshow(t){$("#content").html(t);}varview={title:'YZF',cacl:function(){return6+4;}};$("#content").html

标签: webgl fbo

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

上一篇:JS组件中bootstrap multiselect两大组件较量(javascript 组件)

下一篇:JS正则表达式比较常见用法(js正则表达式变量)

  • 增值税专用发票有效期是多长时间
  • 甲乙公司与银行之间的往来如何记账
  • 不动产什么时候可以抵扣进项税额
  • 企业季度报什么税
  • 自然人税收管理系统换了电脑怎么恢复数据
  • 收到低值资产报废回收款账务处理
  • 存货项目包括哪些具体内容
  • 捐赠支出税前扣除
  • 应收外币账款如何入账
  • 税收滞纳金算不算营业利润
  • 子公司取得的投资收益
  • 矿产资源税是多少
  • 代扣代缴个人所得税手续费是否缴纳增值税
  • 营改增后印花税计税依据文件
  • 2018年终奖个人所得税计算器公式
  • 企业出售固定资产取得的净收益应列入的利润表项目是
  • 公益性生物资产有哪些
  • 享受小型微利企业税收优惠的条件
  • 核定征收的小规模企业优惠
  • 如何正确安装和使用电脑
  • win11和win10哪个玩游戏好
  • windows 10如何清除联网记录
  • 计提个税怎么做
  • 个税经营所得申报怎么更正
  • 给员工租房会承担什么责任
  • linux CentOS/redhat 6.5 LVM分区使用详解
  • 常见的电脑病毒危害
  • ubuntu18.04 u盘安装
  • 苹果a1586是什么配置
  • 给客户赠送的礼物叫什么
  • 在建工程进项税可以抵扣吗
  • .hpp是什么文件
  • vue实战技巧
  • 购买财务软件会有操作流程吗
  • 建筑装饰工程公司取名
  • 转出未交增值税和未交增值税区别
  • antd upload组件
  • 银行汇票属于银行存款吗
  • php正则表达式匹配链接
  • vue项目首屏加载过慢
  • 遗传算法排课代码python
  • php购物车及订单思路
  • 苗木增值税税率
  • 股权出质有时间限制吗
  • python中默认值参数
  • 销售商品尚未发出会计分录
  • mysql中数据类型主要分为哪四种
  • 职工福利费的会计处理
  • 哪种发票可以报税
  • 电影院租金
  • 上个月的发票未开具
  • 营改增之前广告位出租
  • 子公司向母公司借钱
  • xp系统电脑开机密码忘记了
  • 如何用命令关机
  • mac快速开机
  • winxp win10哪个快
  • w10开发者模式
  • WIN XP下VMware Tools(虚拟机)安装的详细方法(图文教程)
  • 在windowsxp中设置控制计算机硬件设备
  • 在linux系统中
  • ubuntu怎么安装程序
  • cocos点击事件
  • vs2010配置opengl
  • Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
  • linux文件压缩和备份实验
  • macos安装过程
  • 利用jQuery及AJAX技术定时更新GridView的某一列数据
  • Linux Shell中判断进程是否存在的方法
  • vue中使用js
  • unity特色
  • jQuery simplePage+AJAX plus分页插件用法实例
  • Python运行报错此段代码无法访问
  • 税控发票开票软件密码怎么修改?
  • 进口汽车零部件编码查询
  • 厦门市税务局电话
  • 定期定额个体户需要申报个人所得税吗
  • 吉林省耕地面积有多少万亩
  • 对方申请了红字信息表我这边怎么操作
  • 资源税谁缴纳
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设