Guest User

Untitled

a guest
Oct 16th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. {
  2. arrayBufferStack: [],
  3. boundArrayBuffer: 0,
  4.  
  5. bindBuffer_post: function(target , bufferptr) {
  6. // Remember the last bound ArrayBuffer
  7. boundArrayBuffer(buffer_ptr);
  8. },
  9.  
  10. pushAndBindArrayBuffer: function(bufferptr) {
  11. GLES2.arrayBufferStack.push(boundArrayBuffer);
  12. GL.glBindBuffer(GL_ARRAY_BUFFER, bufferptr);
  13. },
  14.  
  15. popArrayBuffer: function() {
  16. GL.glBindBuffer(GL_ARRAY_BUFFER, arrayBufferStack.pop());
  17. },
  18.  
  19. glVertexAttribPointer: function(indx, count, type, normalized, stride, ptr, usage) {
  20. if( buffer ) {
  21. switch( usage ) {
  22. case GL_STATIC_DRAW:
  23. case GL_DYNAMIC_DRAW:
  24. case GL_STREAM_DRAW:
  25. break; // Usage is provided and correct
  26. default:
  27. throw 'glVertexAttribPointer needs an additional argument usage = [GL_STATIC_DRAW, GL_DYNAMIC_DRAW, GL_STREAM_DRAW]';
  28. }
  29. }
  30.  
  31. var bufferptr = GLES2.buffers[indx];
  32.  
  33. if( bufferptr ) {
  34. // Remember buffer so we don't allocate all the time
  35. //TODO: allocate some _bufferptr_
  36. GL.glGenBuffers(1, bufferptr);
  37. GLES2.buffers[indx] = bufferptr;
  38. // TODO: How do we do buffer cazakaleanup?
  39. }
  40.  
  41. GL.glBufferData(GL_ARRAY_BUFFER, count, ptr, usage);
  42.  
  43. // Temporarily switch bound buffer
  44. GLES2.pushAndBindArrayBuffer( bufferptr );
  45. GL.ctx.vertexAttribPointer( indx, count, type,
  46. GLES2.bool(normalized), stride,
  47. 0 );
  48. GLES2.popArrayBuffer();
  49. }
  50. }
Add Comment
Please, Sign In to add comment