diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/webglrenderingcontext/bufferdata | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/zh-cn/web/api/webglrenderingcontext/bufferdata')
-rw-r--r-- | files/zh-cn/web/api/webglrenderingcontext/bufferdata/index.html | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/webglrenderingcontext/bufferdata/index.html b/files/zh-cn/web/api/webglrenderingcontext/bufferdata/index.html new file mode 100644 index 0000000000..4f6fb7af93 --- /dev/null +++ b/files/zh-cn/web/api/webglrenderingcontext/bufferdata/index.html @@ -0,0 +1,161 @@ +--- +title: WebGLRenderingContext.bufferData() +slug: Web/API/WebGLRenderingContext/bufferData +tags: + - API + - WebGL + - WebGLRenderingContext + - 参考 + - 方法 +translation_of: Web/API/WebGLRenderingContext/bufferData +--- +<div>{{APIRef("WebGL")}}</div> + +<p><a href="/en-US/docs/Web/API/WebGL_API">WebGL API</a> 的<strong><code>WebGLRenderingContext.bufferData()</code></strong>方法创建并初始化了Buffer对象的数据存储区。</p> + +<h2 id="语法">语法</h2> + +<pre class="syntaxbox">// WebGL1: +void gl.bufferData(target, size, usage); +void gl.bufferData(target, ArrayBuffer? srcData, usage); +void gl.bufferData(target, ArrayBufferView srcData, usage); + +// WebGL2: +void gl.bufferData(target, ArrayBufferView srcData, usage, srcOffset, length); +</pre> + +<h3 id="参数">参数</h3> + +<dl> + <dt>target</dt> + <dd>{{domxref("GLenum")}} 指定Buffer绑定点(目标)。可取以下值: + <ul> + <li><code>gl.ARRAY_BUFFER</code>: 包含顶点属性的Buffer,如顶点坐标,纹理坐标数据或顶点颜色数据。</li> + <li><code>gl.ELEMENT_ARRAY_BUFFER</code>: 用于元素索引的Buffer。</li> + <li>当使用 {{domxref("WebGL2RenderingContext", "WebGL 2 context", "", 1)}} 时,可以使用以下值: + <ul> + <li><code>gl.COPY_READ_BUFFER</code>: 从一个Buffer对象复制到另一个Buffer对象。</li> + <li><code>gl.COPY_WRITE_BUFFER</code>: 从一个Buffer对象复制到另一个Buffer对象。</li> + <li><code>gl.TRANSFORM_FEEDBACK_BUFFER</code>: 用于转换反馈操作的Buffer。</li> + <li><code>gl.UNIFORM_BUFFER</code>: 用于存储统一块的Buffer。</li> + <li><code>gl.PIXEL_PACK_BUFFER</code>: 用于像素转换操作的Buffer。</li> + <li><code>gl.PIXEL_UNPACK_BUFFER</code>: 用于像素转换操作的Buffer。</li> + </ul> + </li> + </ul> + </dd> + <dt>size</dt> + <dd>{{domxref("GLsizeiptr")}} 设定Buffer对象的数据存储区大小。</dd> + <dt>srcData {{optional_inline}}</dt> + <dd>一个{{jsxref("ArrayBuffer")}},{{jsxref("SharedArrayBuffer")}} 或者 {{domxref("ArrayBufferView")}} 类型的数组对象,将被复制到Buffer的数据存储区。 如果为<code>null</code>,数据存储区仍会被创建,但是不会进行初始化和定义。</dd> + <dt>usage</dt> + <dd>{{domxref("GLenum")}} 指定数据存储区的使用方法。可取以下值: + <ul> + <li><code>gl.STATIC_DRAW</code>: 缓冲区的内容可能经常使用,而不会经常更改。内容被写入缓冲区,但不被读取。</li> + <li><code>gl.DYNAMIC_DRAW</code>: 缓冲区的内容可能经常被使用,并且经常更改。内容被写入缓冲区,但不被读取。</li> + <li><code>gl.STREAM_DRAW</code>: 缓冲区的内容可能不会经常使用。内容被写入缓冲区,但不被读取。</li> + <li>当使用 {{domxref("WebGL2RenderingContext", "WebGL 2 context", "", 1)}} 时,可以使用以下值: + <ul> + <li><code>gl.STATIC_READ</code>: 缓冲区的内容可能经常使用,而不会经常更改。内容从缓冲区读取,但不写入。</li> + <li><code>gl.DYNAMIC_READ</code>: 缓冲区的内容可能经常使用,并且经常更改。内容从缓冲区读取,但不写入。</li> + <li><code>gl.STREAM_READ</code>: 缓冲区的内容可能不会经常使用。内容从缓冲区读取,但不写入。</li> + <li><code>gl.STATIC_COPY</code>: 缓冲区的内容可能经常使用,而不会经常更改。用户不会从缓冲区读取内容,也不写入。</li> + <li><code>gl.DYNAMIC_COPY</code>: 缓冲区的内容可能经常使用,并且经常更改。用户不会从缓冲区读取内容,也不写入。</li> + <li><code>gl.STREAM_COPY</code>: 缓冲区的内容可能不会经常使用。用户不会从缓冲区读取内容,也不写入。</li> + </ul> + </li> + </ul> + </dd> + <dt>srcOffset</dt> + <dd>{{domxref("GLuint")}} 指定读取缓冲时的初始元素索引偏移量。</dd> + <dt><code>length</code> {{optional_inline}}</dt> + <dd>{{domxref("GLuint")}} 默认为0。</dd> +</dl> + +<h3 id="返回值">返回值</h3> + +<p>None.</p> + +<h3 id="异常">异常</h3> + +<ul> + <li>如果无法创建<code>size</code>指定大小的数据存储区,则会抛出<code>gl.OUT_OF_MEMORY</code>异常。</li> + <li>如果<code>size</code>是负值,则会抛出<code>gl.INVALID_VALUE</code>异常。</li> + <li>如果<code>target</code>或<code>usage</code>不属于枚举值之列,则会抛出<code>gl.INVALID_ENUM</code>异常。</li> +</ul> + +<h2 id="示例">示例</h2> + +<h3 id="使用_bufferData">使用 <code>bufferData</code></h3> + +<pre class="brush: js">var canvas = document.getElementById('canvas'); +var gl = canvas.getContext('webgl'); +var buffer = gl.createBuffer(); +gl.bindBuffer(gl.ARRAY_BUFFER, buffer); +gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW); +</pre> + +<h3 id="获取缓冲区信息">获取缓冲区信息</h3> + +<p>使用 {{domxref("WebGLRenderingContext.getBufferParameter()")}} 方法检查当前缓冲区的使用情况和缓冲区大小。</p> + +<pre class="brush: js">gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE); +gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE); +</pre> + +<h2 id="规范">规范</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">规范</th> + <th scope="col">状态</th> + <th scope="col">备注</th> + </tr> + <tr> + <td>{{SpecName('WebGL', "#5.14.5", "bufferData")}}</td> + <td>{{Spec2('WebGL')}}</td> + <td>初次定义</td> + </tr> + <tr> + <td>{{SpecName('OpenGL ES 2.0', "glBufferData.xml", "glBufferData")}}</td> + <td>{{Spec2('OpenGL ES 2.0')}}</td> + <td>OpenGL API的手册页</td> + </tr> + <tr> + <td>{{SpecName('OpenGL ES 3.0', "glBufferData.xhtml", "glBufferData")}}</td> + <td>{{Spec2('OpenGL ES 3.0')}}</td> + <td>OpenGL ES 3 API 的手册页<br> + <br> + 新增 <code>target</code> 可取的buffer值:<br> + <code>gl.COPY_READ_BUFFER</code>,<br> + <code>gl.COPY_WRITE_BUFFER</code>,<br> + <code>gl.TRANSFORM_FEEDBACK_BUFFER</code>,<br> + <code>gl.UNIFORM_BUFFER</code>,<br> + <code>gl.PIXEL_PACK_BUFFER</code>,<br> + <code>gl.PIXEL_UNPACK_BUFFER</code><br> + <br> + 新增 <code>usage</code> 提示:<br> + <code>gl.STATIC_READ</code>,<br> + <code>gl.DYNAMIC_READ</code>,<br> + <code>gl.STREAM_READ</code>,<br> + <code>gl.STATIC_COPY</code>,<br> + <code>gl.DYNAMIC_COPY</code>,<br> + <code>gl.STREAM_COPY</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("api.WebGLRenderingContext.bufferData")}}</p> + +<h2 id="更多">更多</h2> + +<ul> + <li>{{domxref("WebGLRenderingContext.createBuffer()")}}</li> + <li>{{domxref("WebGLRenderingContext.bufferSubData()")}}</li> + <li>Other buffers: {{domxref("WebGLFramebuffer")}}, {{domxref("WebGLRenderbuffer")}}</li> +</ul> |