[Public WebGL] Null return values from create*
Glenn Maynard
[email protected]
Fri Apr 13 19:10:40 PDT 2012
On Fri, Apr 13, 2012 at 8:30 PM, Kenneth Russell <[email protected]> wrote:
> The set of functions where non-nullability could be enforced is only a
> small percentage of the WebGL API.
There's nothing inconsistent about functions for which null is *always* a
programming error raising TypeError.
Further, there were only
> three functions -- bufferSubData, texImage2D and texSubImage2D --
> where enforcing non-nullable "data" arguments was under consideration.
>
No, it's much more than that. The following functions should have
non-nullable arguments:
void attachShader(WebGLProgram? program, WebGLShader? shader);
void detachShader(WebGLProgram? program, WebGLShader? shader);
void bindAttribLocation(WebGLProgram? program, GLuint index, DOMString
name);
WebGLActiveInfo? getActiveAttrib(WebGLProgram? program, GLuint index);
WebGLActiveInfo? getActiveUniform(WebGLProgram? program, GLuint index);
WebGLShader[]? getAttachedShaders(WebGLProgram? program);
any getProgramParameter(WebGLProgram? program, GLenum pname);
DOMString? getProgramInfoLog(WebGLProgram? program);
any getUniform(WebGLProgram? program, WebGLUniformLocation? location);
(first argument)
WebGLUniformLocation? getUniformLocation(WebGLProgram? program,
DOMString name);
void linkProgram(WebGLProgram? program);
void validateProgram(WebGLProgram? program);
void compileShader(WebGLShader? shader);
any getShaderParameter(WebGLShader? shader, GLenum pname);
DOMString? getShaderInfoLog(WebGLShader? shader);
DOMString? getShaderSource(WebGLShader? shader);
void shaderSource(WebGLShader? shader, DOMString source);
GLint getAttribLocation(WebGLProgram? program, DOMString name);
void bufferData(GLenum target, ArrayBuffer? data, GLenum usage);
void bufferSubData(GLenum target, GLintptr offset, ArrayBuffer? data);
and the following should have non-nullable return values (I havn't seen any
rationale for why this hasn't been done; it's worthwhile on its own):
WebGLBuffer? createBuffer();
WebGLFramebuffer? createFramebuffer();
WebGLProgram? createProgram();
WebGLRenderbuffer? createRenderbuffer();
WebGLShader? createShader(GLenum type);
WebGLTexture? createTexture();
(The delete* and is* functions should have simply been two member functions
on WebGLObject, "delete()" and "isValid()", but it's too late to fix
that...)
--
Glenn Maynard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://khronos.org/pipermail/public_webgl_khronos.org/attachments/20120413/0a4d811a/attachment.html>
More information about the public_webgl
mailing list