Skip to content

Commit b824765

Browse files
authored
Specify behavior of "null" default objects for Transform Feedback and Vertex Array. (#3763)
Mark return types for objects from getParameter as nullable via s/Foo/Foo?/. Fixes #2350.
1 parent 60365f6 commit b824765

1 file changed

Lines changed: 27 additions & 15 deletions

File tree

specs/latest/2.0/index.html

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,10 +1062,10 @@ <h4>Setting and getting state</h4>
10621062
the pname/type values from WebGL 1.0, the following parameters are supported:
10631063
<table>
10641064
<tr><th>pname</th><th>returned type</th></tr>
1065-
<tr><td>COPY_READ_BUFFER_BINDING</td><td>WebGLBuffer</td></tr>
1066-
<tr><td>COPY_WRITE_BUFFER_BINDING</td><td>WebGLBuffer</td></tr>
1065+
<tr><td>COPY_READ_BUFFER_BINDING</td><td>WebGLBuffer?</td></tr>
1066+
<tr><td>COPY_WRITE_BUFFER_BINDING</td><td>WebGLBuffer?</td></tr>
10671067
<tr><td>DRAW_BUFFER<em>i</em></td><td>GLenum</td></tr>
1068-
<tr><td>DRAW_FRAMEBUFFER_BINDING</td><td>WebGLFramebuffer</td></tr>
1068+
<tr><td>DRAW_FRAMEBUFFER_BINDING</td><td>WebGLFramebuffer?</td></tr>
10691069
<tr><td>FRAGMENT_SHADER_DERIVATIVE_HINT</td><td>GLenum</td></tr>
10701070
<tr><td>MAX_3D_TEXTURE_SIZE</td><td>GLint</td></tr>
10711071
<tr><td>MAX_ARRAY_TEXTURE_LAYERS</td><td>GLint</td></tr>
@@ -1098,26 +1098,26 @@ <h4>Setting and getting state</h4>
10981098
<tr><td>PACK_ROW_LENGTH</td><td>GLint</td></tr>
10991099
<tr><td>PACK_SKIP_PIXELS</td><td>GLint</td></tr>
11001100
<tr><td>PACK_SKIP_ROWS</td><td>GLint</td></tr>
1101-
<tr><td>PIXEL_PACK_BUFFER_BINDING</td><td>WebGLBuffer</td></tr>
1102-
<tr><td>PIXEL_UNPACK_BUFFER_BINDING</td><td>WebGLBuffer</td></tr>
1101+
<tr><td>PIXEL_PACK_BUFFER_BINDING</td><td>WebGLBuffer?</td></tr>
1102+
<tr><td>PIXEL_UNPACK_BUFFER_BINDING</td><td>WebGLBuffer?</td></tr>
11031103
<tr><td>RASTERIZER_DISCARD</td><td>GLboolean</td></tr>
11041104
<tr><td>READ_BUFFER</td><td>GLenum</td></tr>
1105-
<tr><td>READ_FRAMEBUFFER_BINDING</td><td>WebGLFramebuffer</td></tr>
1106-
<tr><td>SAMPLER_BINDING</td><td>WebGLSampler</td></tr>
1107-
<tr><td>TEXTURE_BINDING_2D_ARRAY</td><td>WebGLTexture</td></tr>
1108-
<tr><td>TEXTURE_BINDING_3D</td><td>WebGLTexture</td></tr>
1105+
<tr><td>READ_FRAMEBUFFER_BINDING</td><td>WebGLFramebuffer?</td></tr>
1106+
<tr><td>SAMPLER_BINDING</td><td>WebGLSampler?</td></tr>
1107+
<tr><td>TEXTURE_BINDING_2D_ARRAY</td><td>WebGLTexture?</td></tr>
1108+
<tr><td>TEXTURE_BINDING_3D</td><td>WebGLTexture?</td></tr>
11091109
<tr><td>TRANSFORM_FEEDBACK_ACTIVE</td><td>GLboolean</td></tr>
1110-
<tr><td>TRANSFORM_FEEDBACK_BINDING</td><td>WebGLTransformFeedback</td></tr>
1111-
<tr><td>TRANSFORM_FEEDBACK_BUFFER_BINDING</td><td>WebGLBuffer</td></tr>
1110+
<tr><td>TRANSFORM_FEEDBACK_BINDING</td><td>WebGLTransformFeedback?</td></tr>
1111+
<tr><td>TRANSFORM_FEEDBACK_BUFFER_BINDING</td><td>WebGLBuffer?</td></tr>
11121112
<tr><td>TRANSFORM_FEEDBACK_PAUSED</td><td>GLboolean</td></tr>
1113-
<tr><td>UNIFORM_BUFFER_BINDING</td><td>WebGLBuffer</td></tr>
1113+
<tr><td>UNIFORM_BUFFER_BINDING</td><td>WebGLBuffer?</td></tr>
11141114
<tr><td>UNIFORM_BUFFER_OFFSET_ALIGNMENT</td><td>GLint</td></tr>
11151115
<tr><td>UNPACK_IMAGE_HEIGHT</td><td>GLint</td></tr>
11161116
<tr><td>UNPACK_ROW_LENGTH</td><td>GLint</td></tr>
11171117
<tr><td>UNPACK_SKIP_IMAGES</td><td>GLint</td></tr>
11181118
<tr><td>UNPACK_SKIP_PIXELS</td><td>GLint</td></tr>
11191119
<tr><td>UNPACK_SKIP_ROWS</td><td>GLint</td></tr>
1120-
<tr><td>VERTEX_ARRAY_BINDING</td><td>WebGLVertexArrayObject</td></tr>
1120+
<tr><td>VERTEX_ARRAY_BINDING</td><td>WebGLVertexArrayObject?</td></tr>
11211121
</table><br>
11221122
<p>All queries returning sequences or typed arrays return a new object each time.</p>
11231123
<p>If <em>pname</em> is not in the table above and is not one of parameter names supported by WebGL 1.0, generates an <code>INVALID_ENUM</code> error and returns null.</p>
@@ -1140,10 +1140,10 @@ <h4>Setting and getting state</h4>
11401140
as given in the following table:
11411141
<table class="foo">
11421142
<tr><th>target</th><th>returned type</th></tr>
1143-
<tr><td>TRANSFORM_FEEDBACK_BUFFER_BINDING</td><td>WebGLBuffer</td></tr>
1143+
<tr><td>TRANSFORM_FEEDBACK_BUFFER_BINDING</td><td>WebGLBuffer?</td></tr>
11441144
<tr><td>TRANSFORM_FEEDBACK_BUFFER_SIZE</td><td>GLsizeiptr</td></tr>
11451145
<tr><td>TRANSFORM_FEEDBACK_BUFFER_START</td><td>GLintptr</td></tr>
1146-
<tr><td>UNIFORM_BUFFER_BINDING</td><td>WebGLBuffer</td></tr>
1146+
<tr><td>UNIFORM_BUFFER_BINDING</td><td>WebGLBuffer?</td></tr>
11471147
<tr><td>UNIFORM_BUFFER_SIZE</td><td>GLsizeiptr</td></tr>
11481148
<tr><td>UNIFORM_BUFFER_START</td><td>GLintptr</td></tr>
11491149
</table><br>
@@ -3101,6 +3101,12 @@ <h4>Transform feedback</h4>
31013101
program is linked.
31023102
</p>
31033103

3104+
<p>
3105+
There is a default Transform Feedback object, represented by the <code>null</code> <code>WebGLTransformFeedback</code> handle.
3106+
In the initial state of the context, the default object is bound.
3107+
When bound, <code>getParameter(TRANSFORM_FEEDBACK_BINDING)</code> returns <code>null</code>.
3108+
</p>
3109+
31043110
<p>
31053111
If any output variable is specified to be streamed to a transform feedback buffer object but not actually
31063112
written by a vertex shader, the value is set to 0. See <a href="#TRANSFORM_FEEDBACK_NOT_WRITTEN">
@@ -3355,6 +3361,12 @@ <h4>Vertex Array objects</h4>
33553361
definition of data used by the vertex processor.
33563362
</p>
33573363

3364+
<p>
3365+
There is a default Vertex Array object, represented by the <code>null</code> <code>WebGLVertexArrayObject</code> handle.
3366+
In the initial state of the context, the default object is bound.
3367+
When bound, <code>getParameter(VERTEX_ARRAY_BINDING)</code> returns <code>null</code>.
3368+
</p>
3369+
33583370
<dl class="methods">
33593371
<dt class="idl-code">void bindVertexArray(WebGLVertexArrayObject? vertexArray)
33603372
<span class="gl-spec">

0 commit comments

Comments
 (0)