diff options
author | Ehsan Akhgari <ehsan.akhgari@gmail.com> | 2012-01-21 19:14:39 -0500 |
---|---|---|
committer | Ehsan Akhgari <ehsan.akhgari@gmail.com> | 2012-01-21 19:25:00 -0500 |
commit | 72c65ebbe62f1b84e0f3a6c0605d19e4b97139f4 (patch) | |
tree | 27c4387204fe933f31ac32a8033608a411025c09 | |
parent | 08036c648cad75c6644ad607a4b21eba2714f64b (diff) |
Implement the buffering APIs
-rw-r--r-- | src/library_gl.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 2be881df..3b948bf1 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -6,6 +6,8 @@ var LibraryGL = { $GL: { textures: {}, textureCounter: 0, + buffers: {}, + bufferCounter: 0, }, glGetString: function(name_) { @@ -66,6 +68,36 @@ var LibraryGL = { Module.ctx.bindTexture(target, GL.textures[texture]); }, + glGenBuffers__deps: ['$GL'], + glGenBuffers: function(n, buffers) { + for (var i = 0; i < n; i++) { + var id = GL.bufferCounter++; + GL.buffers[id] = Module.ctx.createBuffer(); + IHEAP[buffers+QUANTUM_SIZE*i] = id; + } + }, + + glDeleteBuffers: function(n, buffers) { + for (var i = 0; i < n; i++) { + var id = IHEAP[buffers+QUANTUM_SIZE*i]; + Module.ctx.deleteBuffer(GL.buffers[id]); + delete GL.buffers[id]; + } + }, + + glBufferData: function(target, size, data, usage) { + var buf = new ArrayBuffer(size); + var dataInBuf = new Uint8Array(buf); + for (var i = 0; i < size; ++i) { + dataInBuf[i] = IHEAP[data+QUANTUM_SIZE*i]; + } + Module.ctx.bufferData(target, buf, usage); + }, + + glBindBuffer: function(target, buffer) { + Module.ctx.bindBuffer(target, GL.buffers[buffer]); + }, + glClearColor: function(red, green, blue, alpha) { Module.ctx.clearColor(red, green, blue, alpha); }, |