WebGL Objects, Targets and Bindings
GL objects
| Object | remarks |
|---|---|
| Buffer | |
| Texture | |
| RenderBuffer | |
| Sampler* | |
| Query* | |
| VertexArray* | container |
| Framebuffer | container |
| TransformFeedback* | container |
*new in WebGL 2
create<object>(): e.g.createBuffer(),createTexture(), etcbind<object>(); unbind by binding tonulldelete<object>()
Each object may have multple targets. Targets determine what you can do with an object, its specific behaviors. E.g. binding a buffer to gl.ELEMENT_ARRAY_BUFFER enables gl.drawElements().
WebGL functions may depend on objects bound to targets. Binding connects an object with a set of functions.
Functions can be target-free, e.g. gl.drawArrays.
A very incomplete list of dependencies:
ARRAY_BUFFER | COPY_READ_BUFFER | COPY_WRITE_BUFFER | ELEMENT_ARRAY_BUFFER | PIXEL_PACK_BUFFER | PIXEL_UNPACK_BUFFER | |
|---|---|---|---|---|---|---|
bindBuffer | + | + | + | + | + | + |
bufferData | + | + | + | + | + | + |
bufferSubData | + | + | + | + | + | + |
copyBufferSubData | + | + | + | + | + | + |
getBufferParameter | + | + | + | + | + | + |
vertexAttribPointer | + | |||||
drawElements | + | |||||
drawElementsInstanced | + | |||||
drawRangeElements | + | |||||
readPixels | + | |||||
compressedTexImage2D | + |
and so on, and so on.