https://www.khronos.org/registry/webgl/specs/1.0/#4 原文
4 Security
4.1 Resource Restrictions
WebGL resources such as textures and vertex buffer objects (VBOs) must always contain initialized data, even if they were created without initial user data values. Creating a resource without initial values is commonly used to reserve space for a texture or VBO, which is then modified using texSubImage or bufferSubData calls. If initial data is not provided to these calls, the WebGL implementation must initialize their contents to 0; depth renderbuffers must be cleared to the default 1.0 clear depth. For example, this may require creating a temporary buffer of 0 values the size of a requested VBO, so that it can be initialized correctly. All other forms of loading data into a texture or VBO involve either ArrayBuffers or DOM objects such as images, and are therefore already required to be initialized.
WebGL资源如纹理和顶点缓冲区对象都必须有初始数据,即使在没有初始用户数据值时创建资源。没有初始值的创建资源通常为纹理或VBO用于预留空间一个纹理或VBO,然后调用texSubImage或bufferSubData方法来修改。如果出世数据没有提供给这些调用,WebGL的实现必须初始化其内容为0,深度渲染缓冲区必须清除深度值到默认值1.0,例如,请求一个VBO大小需要创建一个0值的临时缓冲区,以便VBO正确的初始化,给纹理或VBO以其他方式加载数据都需要初始化,这些数据涉及到ArrayBuffers或DOM对象,例如,图片。
When WebGL resources are accessed by shaders through a call such as drawElements or drawArrays, the WebGL implementation must ensure that the shader cannot access either out of bounds or uninitialized data. See Enabled Vertex Attributes and Range Checking for restrictions which must be enforced by the WebGL implementation.
当通过调用着色器例如drawElements或drawArrays方法来访问WebGL资源,WebGL的实现要确保着色器不能访问越界或者未初始化的数据。顶点属性可用设置和限制范围检查都需要强制实现WebGL。
4.2 Origin Restrictions
In order to prevent information leakage, the HTML5 canvas element has a origin-clean flag. (See HTML5, section 4.8.11.3, "Security with canvas elements".) For a WebGL context, the origin-clean flag must be set to false if any of the following actions occur:
•The texImage2D method is called with an HTMLImageElement or HTMLVideoElement whose origin is not the same as that of the Document object that owns the canvas element.
•The texImage2D method is called with an HTMLCanvasElement whose origin-clean flag is set to false.
Whenever the readPixels method of the 2D context of a canvas element whose origin-clean flag is set to false is called with otherwise correct arguments, the method must raise a SECURITY_ERR exception.
4.3 Supported GLSL Constructs
A WebGL implementation must only accept shaders which conform to The OpenGL ES Shading Language, Version 1.00 [GLES20GLSL], and which do not exceed the minimum functionality mandated in Sections 4 and 5 of Appendix A. In particular, a shader referencing state variables or functions that are available in other versions of GLSL (such as that found in versions of OpenGL for the desktop), must not be allowed to load.
In addition to the reserved identifiers in the aforementioned specification, identifiers starting with "webgl_" and "_webgl_" are reserved for use by WebGL. A shader which declares a function, variable, structure name, or structure field starting with these prefixes must not be allowed to load.
分享到:
相关推荐
【标题】"WebGL喷泉粒子发射动画特效"是一个利用WebGL技术实现的创新视觉效果,它基于HTML5的Canvas 2D接口,为用户提供了一种全屏的彩虹粒子喷泉展示。这种特效通常用于网站设计,提升用户体验,或者作为交互式艺术...
本书名为《交互式计算机图形学——基于WebGL的自顶向下技术 英文第七版》,是电子工业出版社出版的教材,由Edward Angel与Dave Shreiner共同撰写,张荣华、宋雨等人翻译。该书的标签为“计算机图形学”和“WebGL”,...
7. **安全与性能**:由于WebGL是基于浏览器的,因此要考虑安全性问题,如防止跨站脚本攻击(XSS)和数据泄露。此外,WebGL应用可能需要优化以应对可能的内存和性能限制。 总之,Unity通用WebGL模板1.2.1为开发者...
WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中实现交互式的2D和3D图形渲染。这个“WEBGL_webgl_”很可能是一份教程或教材,旨在帮助初学者掌握WebGL技术,并随着学习者的进步不断更新...
标题提到的问题——"解决webgl输入框无法输入中文插件",是WebGL应用中常见的一个挑战。通常,当用户尝试在WebGL场景中使用HTML输入框输入中文时,可能会遇到输入困难或无法输入的情况。这主要是因为WebGL与HTML元素...
《WebGL编程指南》的主要篇幅讲解了WebGL 原生API 和三维图形学的基础知识,包括渲染管线、着色器、矩阵变换、着色器编程语言(GLSL ES)等等,也讲解了使用WebGL 渲染三维场景的一般技巧,如光照、阴影、雾化等等。...
安全性**:强调了WebGL的安全机制,包括资源和起源的限制、支持的GLSL构造以及防止拒绝服务攻击的方法。 - **5. DOM接口**:描述了WebGL与DOM的交互方式,包括各种WebGL对象的定义和使用方法。 - **6. WebGL与...
3. 安全性:WebGL的直接图形访问可能带来安全风险,如跨站脚本攻击(XSS)。 4. 学习曲线:WebGL涉及图形学和着色器编程,学习曲线相对较陡。 总之,WebGL为Web开发带来了强大的3D图形能力,但同时也需要开发者具备...
需要注意的是,由于Unity WebGL运行在浏览器的安全沙箱内,直接读取本地文件可能受到限制。因此,通常需要用户通过HTML文件输入控件手动上传文件,然后在WebGL应用内部处理。此外,由于WebGL的性能限制,处理大型...
在“HiWebGL-《拥抱 3D 网络世界 —— WebGL 的现状和未来》”中,可能包含以下内容: 1. **上下文创建**:在JavaScript中,我们使用`canvas.getContext('webgl')`来获取WebGL渲染上下文,这是开始所有WebGL操作的...
4. **顶点和图元**:讲解几何体的基本构建块——顶点,以及如何使用顶点数组和顶点缓冲对象来存储和传递顶点数据。介绍不同类型的图元,如点、线段和三角形。 5. **着色器语言GLSL**:深入探讨GLSL(OpenGL Shading...
在WebGL编程中,着色器是至关重要的组成部分,它们负责处理图形渲染的计算工作。在WebGL的上下文中,着色器分为两种主要类型:顶点着色器(Vertex Shader)和片段着色器(Fragment Shader)。这些着色器程序可以使用...
Unity WebGL 是一种强大的工具,允许开发者将他们的3D游戏或应用程序直接嵌入到网页中,无需任何插件或额外下载。"Better-Minimal-WebGL-Template" 是一个优化过的Unity WebGL打包模板,旨在提供更好的性能和兼容性...
WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中进行2D和3D图形渲染,无需插件。"webgl-debug.js"是一个专门针对WebGL编程的调试库,它通常用于帮助开发者更好地理解和解决问题,提高WebGL...
3. **着色器**:WebGL使用两种类型的着色器——顶点着色器和片段着色器。顶点着色器处理顶点数据,片段着色器决定像素颜色。 4. **缓冲区**:WebGL使用缓冲区存储顶点数据,如位置、颜色和纹理坐标。`gl.bindBuffer...
WebGL(Web Graphics Library)是一种JavaScript API,用于在任何兼容的Web浏览器中渲染交互式的2D和3D图形,无需插件。它基于OpenGL ES 2.0标准,并且是HTML5的一个组成部分,使得开发者可以在网页上直接进行图形...
WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中实现硬件加速的2D和3D图形渲染。这个“WebGL编程指南函数库”包含了一系列辅助脚本,帮助开发者更方便地进行WebGL编程。以下是这些脚本的...
8. **安全与兼容性**:虽然WebGL提供了强大的3D渲染能力,但也存在安全风险,如跨站脚本攻击(XSS)。此外,不是所有的浏览器都默认开启WebGL支持,开发者需要考虑到兼容性问题。 9. **WebGL与Three.js**:Three.js是...
Unity WebGL 是一种强大的技术,它允许开发者使用Unity游戏引擎创建的3D和2D内容在网页上运行,无需任何插件。在这个“Unity WebGL透明背景Demo”中,我们看到一个专注于实现Unity WebGL项目的透明背景的示例。这个...