WEBGL(1):WEBGL介绍

news2024/11/25 0:36:11

1 WebGL容器(坐标系)

在2D绘图环境中的坐标系统,默认情况下是与窗口坐标系统相同,它以canvas的左上角为坐标原点,沿x轴向右为正值,沿y轴向下为正值。其中canvas坐标的单位都是 "px"。

在浏览器中显示如下:

WebGL使用的是正交右手坐标系,且每个方向都有可使用的值的区间,超出该矩形区间的图像不会绘制:

  • x轴最左边为-1,最右边为1;
  • y轴最下边为-1,最上边为1;
  • z轴朝向你的方向最大值为1,远离你的方向最大值为-1;

注:这些值与Canvas的尺寸无关,无论Canvas的长宽比是多少,WebGL的区间值都是一致的。

2 WebGL渲染管线

    渲染管线就像一条流水线,由一系列具有特定功能的数字电路单元组成,下一个功能单元处理上一个功能单元生成的数据,逐级处理数据。

    顶点着色器和片元着色器是可编程的功能单元,拥有更大的自主性,还有光栅器、深度测试等不可编程的功能单元。CPU会通过WebGL API和GPU通信,传递着色器程序和数据,GPU执行的着色器程序可以通过useProgram方法切换,传递数据就是把CPU主存中的数据传送到GPU的显存中。

3 WebGL 关键名词

3.1 顶点着色器

顶点着色器是GPU渲染管线上一个可以执行着色器语言的功能单元,具体执行的就是顶点着色器程序,WebGL顶点着色器程序在Javascript中以字符串的形式存在,通过编译处理后传递给顶点着色器执行。 顶点着色器主要作用就是执行顶点着色器程序对顶点进行变换计算,比如顶点位置坐标执行进行旋转、平移等矩阵变换,变换后新的顶点坐标然后赋值给内置变量gl_Position,作为顶点着色器的输出,图元装配和光栅化环节的输入。

attribute

uniform

3.2 图元装配

顶点变换后的操作是图元装配(primitive assembly),硬件上具体是怎么回事不用思考,从程序的角度来看,就是绘制函数drawArrays()或drawElements()第一个参数绘制模式mode控制顶点如何装配为图元, gl.LINES的定义的是把两个顶点装配成一个线条图元,gl.TRIANGLES定义的是三个顶点装配为一个三角面图元,gl.POINTS定义的是一个点域图元。

3.3 光栅化

片元着色器和顶点着色器一样是GPU渲染管线上一个可以执行着色器程序的功能单元,顶点着色器处理的是逐顶点处理顶点数据,片元着色器是逐片元处理片元数据。通过给内置变量gl_FragColor赋值可以给每一个片元进行着色, 值可以是一个确定的RGBA值,可以是一个和片元位置相关的值,也可以是插值后的顶点颜色。除了给片元进行着色之外,通过关键字discard还可以实现哪些片元可以被丢弃,被丢弃的片元不会出现在帧缓冲区,自然不会显示在canvas画布上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/959808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

渗透测试工具ZAP入门教程(4)-设置代理谷歌浏览器

ZAP 代理原理 如下浏览器,拿Chrome为例,Chrome发出的请求都会先经过 ZAP, 然后再由 ZAP 发往服务器.如下图: 设置代理 1. Chrome设置只需要在地址栏输入 chrome://settings 2. 然后在搜索栏输入 代理 然后点击 打开您计算机的代理设置 3. 设置手动代理 端口为什么是 8080 呢?…

【发版公告】Virbox Protector 3.1.3.19051 发版- elf 文件支持导入表保护

深盾安全-软件保护工具 Virbox Protector 3 ( 3.1.3.19051)迎来了版本升级.本次升级支持了 elf 文件导入表保护。 以下是本次 Virbox Protector 发版的主要功能: 新功能 1. ELF格式的程序支持导入表保护(Beta);; 2…

代码随想录笔记--栈与队列篇

1--用栈实现队列 利用两个栈&#xff0c;一个是输入栈&#xff0c;另一个是输出栈&#xff1b; #include <iostream> #include <stack>class MyQueue { public:MyQueue() {}void push(int x) {in_stk.push(x);}int pop() {if(out_stk.empty()){while(!in_stk.empty…

Apollo领航官送福利啦

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f388;✨百度apollo介绍 全球智能驾驶产业领跑者 起源 百度…

stable diffusion实践操作-文生图

本文专门开一节写文生图相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 正文 1 liblib SD1.5底模 lora(baihuaniang_1.0) 详细信息&#xff1a; 底模&#xff1a;SD 1.5 Lora:baihuaniang_1.0 正向提示词&#xff1a; Best …

ubuntu18.04.6的安装教程

目录 一、下载并安装virtualbox virtualbox7.0.8版本的安装 二、Ubuntu的下载与安装 ubuntu18.04.6操作系统 下载 安装 一、下载并安装virtualbox VirtualBox是功能强大的x86和AMD64/Intel64虚拟化企业和家庭使用的产品。VirtualBox不仅是面向企业客户的功能极其丰富的高…

微信小程序 - 2023年最新版手机号快捷登录详细教程

前言 最近开发公司手机快捷登录的功能&#xff0c;花费了不少时间&#xff0c;这里附上详细教程。 这里以海底捞小程序的图片为例&#xff0c;如有侵权请联系小编删除。 代码如下 <button open-type"getPhoneNumber" getphonenumber"getPhoneNumber"…

自动驾驶——【规划】记忆泊车特殊学习路径拟合

1.Back ground 如上图&#xff0c;SLAM学习路线Start到End路径&#xff0c;其中曲线SDAB为D档位学习路径&#xff0c;曲线BC为R学习路径&#xff0c;曲线AE为前进档D档学习路径。 为了使其使用记忆泊车时&#xff0c;其驾驶员体验感好&#xff0c;需去除R档倒车部分轨迹&#x…

【STM32教程】第三章 使用OLED屏作为调试工具

案例代码及相关资料下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1hsIibEmsB91xFclJd-YTYA?pwdjauj 提取码&#xff1a;jauj 1 OLED调试工具 1.1对程序调试的认识与OLED简介 本章节只需要知道怎么调用封装好的驱动函数&#xff0c;用OLED屏幕来做调…

高效使用WMS仓储管理系统,需要关注这八个点

在现代供应链中&#xff0c;WMS仓储管理系统扮演着至关重要的角色。然而&#xff0c;随着供应链需求的不断增长和变化&#xff0c;实施WMS仓储管理系统面临着越来越多的挑战和要求。本文将探讨使用WMS仓储管理系统需要考虑的8大因素&#xff0c;以适应现代供应链的需求。 一、W…

我们把“高血压”小游戏真正做到了不用下载,点击即玩!!!

相信大家经常在短视频网站上刷到各种“高血压“小游戏吧&#xff0c;当你按捺不住点击&#xff0c;却发现手机上多了一大堆“流氓软件”的时候&#xff0c;血压就更高了。 但是&#xff01; 今天&#xff01; 我们把“虚假广告”做成了真实的游戏&#xff0c;并且可以轻松部署到…

在Linux服务器部署多台nginx

升级版2.0关于如何在linux服务器上布置多台nginx&#xff0c;之前吃了点苦头&#xff0c;特写文章避免重蹈覆辙。 文章目录 前言一、下载环境依赖二、安装nginx1.创建放置nginx的文件2.上传解压压缩包3.安装nginx&#xff08;关键步&#xff09; 三、启动nginx四、验证nginx是否…

R语言之数值型描述分析

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。 在分析之前&#xff0c;先将数据集 birthwt 中的分类变量 low、race、smoke、ht 和 ui 转换成因子。 library(MASS) data(birthwt)…

固定资产管理分析怎么写?

对企业内的固定资产进行全面的统计和分析&#xff0c;包括设备、装修、维修等方面的信息&#xff0c;有助于企业进行资产管理和风险控制。  通过该软件&#xff0c;用户可以实现对资产的跟踪和管理&#xff0c;如实时监测设备的使用情况&#xff0c;提高设备利用率和维护效率…

python基础教程:深浅copy的详细用法

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 1.先看赋值运算 l1 [1,2,3,[barry,alex]] l2 l1l1[0] 111 print(l1) # [111, 2, 3, [barry, alex]] print(l2) # [111, 2, 3, [barry, alex]]l1[3][0] wusir print(l1) # [111, 2, 3, [wusir, alex]] print(l2)…

嵌入式linux轻量级sshd服务Dropbear交叉编译

下载 zlib-1.2.11.tar.gz dropbear-2020.81.tar.bz2 解压 $tar -zxvf zlib-1.2.11.tar.gz $tar -jxvf dropbear-2020.81.tar.bz2 zlib交叉编译配置 CC/usr/local/arm/network/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc ./configure --prefix$PWD/install dro…

目录扫描+JS文件中提取URL和子域+403状态绕过+指纹识别(dirsearch_bypass403)

dirsearch_bypass403 在安全测试时&#xff0c;安全测试人员信息收集中时可使用它进行目录枚举&#xff0c;目录进行指纹识别&#xff0c;枚举出来的403状态目录可尝试进行绕过&#xff0c;绕过403有可能获取管理员权限。不影响dirsearch原本功能使用 运行流程 dirsearch进行…

LLM强势挺进端侧,AI大语言模型端侧部署如何影响超自动化?

▲ 图片由AI生成 算力资源吃紧&#xff0c;成本居高不下&#xff0c;数据隐私泄露&#xff0c;用户体验不佳…… 以OpenAI为代表的大语言模型爆发后&#xff0c;多重因素影响之下本地化部署成为LLM落地的主流模式。LLM迫切需要部署在本地设备上&#xff0c;围绕LLM端侧部署的…

财报解读:首次全口径盈利,快手深耕电商找准了发展门道?

快手成功闯过了盈利大关。 近日快手发布的Q2财报显示&#xff0c;其借助于电商“内循环”取得超预期成效&#xff0c;不仅用户数相比一季度环比净增1900万&#xff0c;再创新高&#xff0c;而且迎来了成立以来首次单季度全口径盈利。 对于快手盈利能力的大幅提升&#xff0c;…

ASCII码 对照表

总256个字符元素 0&#xff5e;255 码值整数据 字符结构 字符元素(内容) 整数结构 码值整数