Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- arrayBufferStack: [],
- boundArrayBuffer: 0,
- bindBuffer_post: function(target , bufferptr) {
- // Remember the last bound ArrayBuffer
- boundArrayBuffer(buffer_ptr);
- },
- pushAndBindArrayBuffer: function(bufferptr) {
- GLES2.arrayBufferStack.push(boundArrayBuffer);
- GL.glBindBuffer(GL_ARRAY_BUFFER, bufferptr);
- },
- popArrayBuffer: function() {
- GL.glBindBuffer(GL_ARRAY_BUFFER, arrayBufferStack.pop());
- },
- glVertexAttribPointer: function(indx, count, type, normalized, stride, ptr, usage) {
- if( buffer ) {
- switch( usage ) {
- case GL_STATIC_DRAW:
- case GL_DYNAMIC_DRAW:
- case GL_STREAM_DRAW:
- break; // Usage is provided and correct
- default:
- throw 'glVertexAttribPointer needs an additional argument usage = [GL_STATIC_DRAW, GL_DYNAMIC_DRAW, GL_STREAM_DRAW]';
- }
- }
- var bufferptr = GLES2.buffers[indx];
- if( bufferptr ) {
- // Remember buffer so we don't allocate all the time
- //TODO: allocate some _bufferptr_
- GL.glGenBuffers(1, bufferptr);
- GLES2.buffers[indx] = bufferptr;
- // TODO: How do we do buffer cazakaleanup?
- }
- GL.glBufferData(GL_ARRAY_BUFFER, count, ptr, usage);
- // Temporarily switch bound buffer
- GLES2.pushAndBindArrayBuffer( bufferptr );
- GL.ctx.vertexAttribPointer( indx, count, type,
- GLES2.bool(normalized), stride,
- 0 );
- GLES2.popArrayBuffer();
- }
- }
Add Comment
Please, Sign In to add comment