【WebGL系列-01】获取WebGL上下文
获取WebGL上下文
获取上下文
WebGL上下文是从<canvas>
标签中获取到的,通过canvas
对象的getContext()
函数可以获取WebGLRenderingContext
。
跟据参数的不同,getContext()
函数可以获取不同种类的渲染上下文。
接口
canvas.getContext(contextType: String, contextAttributes ?: Object)
contextType
:'2d'
:建立一个CanvasRenderingContext2D
二维渲染上下文'webgl'
或'experimental-webgl'
:创建一个WebGLRenderingContext
三维上下文对象,只在实现WebGL1的浏览器上可用'webgl2'
或'experimental-webgl2'
:创建一个WebGL2RenderingContext
三维渲染上下文对象,只在实现WebGL2的浏览器上可用'bitmaprenderer'
:创建一个只提供将canvas
内容替换为指定ImageBitmap
功能的ImageBitmapRenderingContext
contextAttributes
:当
contextType
为2d
时:alpha
:boolean,表明canvas包含一个alpha通道。如果设置为false
,浏览器默认canvas背景总是不透明的,可加速绘制透明物体willReadFrequently (Gecko only)
:boolean,表示是否有重复读取计划。经常使用getImageData()会导致软件使用2D canvas并节省内存,适用于存在属性gfx.canvas.willReadFrequently的环境storage (Blink only)
:string,表示使用哪种方式存储,默认为"presistent"持久性存储
当使用webgl上下文时:
alpha
:boolean,表明canvas包含一个alpha缓冲区antialias
:boolean,表明是否开启抗锯齿depth
:boolean,表明绘制缓冲区包含一个深度至少为16位的缓冲区failIfMajorPerformanceCaveat
:表明在一个系统性能低的环境是否创建该上下文的boolean值powerPreference
:指示浏览器在运行webgl上下文时使用相应的GPU电源配置,可能的值有"default"
:默认,自动选择"high-performance"
:高性能模式"low-power"
:节能模式
premultipliedAlpha
:boolean,表明排版引擎将假设绘制缓冲区包含预混合alpha通道preserveDrawingBuffer
:boolean,如果为true,缓冲区将不会被清除,会保存袭来,直到被清除或被覆盖stencil
:boolean,表明绘制缓冲区包含一个深度至少为8为的模板缓冲区
当要获取一个上下文对象的contextAttributes
时,可以使用接口context.getContextAttributes()
来获取
返回值
CanvasRenderingContext2D
:当ContextType
为"2d"
WebGLRenderingContext
:当ContextType
为"webgl"
或"experimental-webgl"
WebGL2RenderingContext
:当ContextType
为"webgl2"
或"experimental-webgl2"
ImageBitmapRenderingContext
:当ContextType
为"bitmaprenderer"
获取上下文事件
canvas
获取上下文会触发以下事件:
contextlost (experimental)
:当获取的CanvasRenderingContext2D
上下文丢失时会触发contextrestored (experimental)
:在用户代理恢复CanvasRenderingContext2D
时会触发webglcontextcreatingerror
:在用户无法创建WebGLRenderingContext
上下文时触发webglcontextlost
:在用户代理检测到绘制缓冲关联的WebGLRenderingContext
上下文丢失时会触发
-webglcontextrestored
:在用户代理恢复WebGLRenderingContext
对象的绘制缓冲时会触发
【WebGL系列-01】获取WebGL上下文的更多相关文章
- 学废了系列 - WebGIS vs WebGL图形编程
目前工作中有不少涉及到地图的项目,我参加了几次技术评审,前端伙伴们在 WebGIS 方面的知识储备稍有不足,这次分享的主要目的是科普一些在前端领域比较常用的 WebGIS 知识.另外,我之前的工作中积 ...
- webgl 系列 —— 绘制猫
其他章节请看: webgl 系列 绘制猫 上文我们了解了如何绘制渐变彩色三角形,明白了图形装配.光栅化,以及片元着色器计算片元的颜色. 现在如果让你绘制如下一只猫.难道绘制很多三角形,然后指定它们的颜 ...
- webgl 系列 —— 变换矩阵和动画
其他章节请看: webgl 系列 变换矩阵和动画 动画就是不停地将某个东西变换(transform).例如将三角形不停地旋转就是一个动画 和 CSS transform 类似,变换有三种形式:平移.缩 ...
- webgl 系列 —— 渐变三角形
其他章节请看: webgl 系列 渐变三角形 本文通过一个渐变三角形的示例逐步分析:varying变量.合并缓冲区.图形装配.光栅化.varying 内插 绘制三个点v1 需求:绘制三个相同颜色的点, ...
- webgl 系列 —— 着色器语言
其他章节请看: webgl 系列 着色器语言 本篇开始学习着色器语言 -- GLSL全称是 Graphics Library Shader Language (图形库着色器语言) GLSL 是一门独立 ...
- WebGL入门教程(二)-webgl绘制三角形
前面已经介绍过了webgl,WebGL入门教程(一)-初识webgl(http://www.cnblogs.com/bsman/p/6128447.html),也知道了如何绘制一个点,接下来就用web ...
- WebGL入门教程(五)-webgl纹理
前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 WebGL入门教程(四)-webgl颜色 这里就需要用到 ...
- WebGL入门教程(四)-webgl颜色
前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 颜色效果图: 操作步骤: 1.创建HTML5 canva ...
- java io系列01之 "目录"
java io 系列目录如下: 01. java io系列01之 "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...
- SAP接口编程 之 JCo3.0系列(01):JCoDestination
SAP接口编程 之 JCo3.0系列(01):JCoDestination 字数2101 阅读103 评论0 喜欢0 JCo3.0是Java语言与ABAP语言双向通讯的中间件.与之前1.0/2.0相比 ...
随机推荐
- AI 绘画咒语入门 - Stable Diffusion Prompt 语法指南 【成为初级魔导士吧!】
要用好 Stable Diffusion,最最重要的就是掌握 Prompt(提示词).由于提示词对于生成图的影响甚大,所以被称为魔法,用得好惊天动地,用不好魂飞魄散 . 因此本篇整理下提示词的语法(魔 ...
- [OpenCV-Python] 8 用滑动条做调色板
文章目录 OpenCV-Python:II OpenCV 中的 Gui 特性 8 用滑动条做调色板 8.1 代码示例 练习 OpenCV-Python:II OpenCV 中的 Gui 特性 8 用滑 ...
- Web服务器压力测试工具 - HULK
HULK是一种web的拒绝服务攻击工具.它能够在web服务器上产生许多单一的伪造流量,能绕开引擎的缓存,因此能够直接攻击服务器的资源池.hulk的特别之处在于:对于每一个请求都是独特的,能够绕开引擎的 ...
- ChatGPT最全提示词Prompts总结,看这一篇就够了!
以下几乎涵盖了各类人群想要使用ChatGPT的所有提示词,需要的朋友可以直接复制粘贴使用. 从翻译到整理耗费超过2个小时,如果内容对大家有帮助,请不要吝啬你们的喜欢.点赞.关注~ 如何正确的提问? ...
- 2022-10-23:给你一个整数数组 nums 。如果 nums 的一个子集中, 所有元素的乘积可以表示为一个或多个 互不相同的质数 的乘积,那么我们称它为 好子集 。 比方说,如果 nums =
2022-10-23:给你一个整数数组 nums .如果 nums 的一个子集中, 所有元素的乘积可以表示为一个或多个 互不相同的质数 的乘积,那么我们称它为 好子集 . 比方说,如果 nums = ...
- 2022-09-16:以下go语言代码输出什么?A:101;B:100;C:1;D:2。 package main import ( “fmt“ ) type MS struct {
2022-09-16:以下go语言代码输出什么?A:101:B:100:C:1:D:2. package main import ( "fmt" ) type MS struct ...
- 2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7。施展魔法之后,A和B通过该边到达彼此的代价都是7。 求,允许施展一次魔法
2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7.施展魔法之后,A和B通过该边到达彼此的代价都是7. 求,允许施展一次魔法 ...
- 使用增强版 singleflight 合并事件推送,效果炸裂!
hello,大家好啊,我是小楼. 最近在工作中对 Go 的 singleflight 包做了下增强,解决了一个性能问题,这里记录下,希望对你也有所帮助. singleflight 是什么 single ...
- Docker-Compose快速搭建LNMP
Docker-Compose 1.安装Docker sudo apt -y install docker.io docker version 查看版本号 docker help 查看帮助文档 2.更换 ...
- ARC144
ARC 144 比赛情况:一眼订正,鉴定为做起 \(3\) 道题. A - Digit Sum of 2x \(2x\) 进位就不满足 \(M\) 最大的条件了,所以 \(x\) 不能进位. 然后要求 ...