aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Liot <anthony.liot@gmail.com>2014-02-17 22:26:04 +0100
committerJukka Jylänki <jujjyl@gmail.com>2014-02-19 17:42:56 +0200
commitb5e4175ddd42a0e1d3ca3281c9a2aa1d17ee099e (patch)
tree3b5beec88a601064cb1898cf68101ed1d422f725
parent940543a71ccd5bd5638f58fa8d316e19c008514a (diff)
Add support of both emulate and extension vao
-rw-r--r--src/library_gl.js57
1 files changed, 56 insertions, 1 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index c1ecfdf8..027f3ada 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -1800,11 +1800,22 @@ var LibraryGL = {
return GLctx.isFramebuffer(fb);
},
+#if LEGACY_GL_EMULATION
+ glGenVertexArrays__deps: ['emulGlGenVertexArrays'],
+#endif
glGenVertexArrays__sig: 'vii',
glGenVertexArrays: function (n , arrays) {
+#if LEGACY_GL_EMULATION
+ if (GL.vaoExt == null) {
+ _emulGlGenVertexArrays(n , arrays);
+ return;
+ }
+#else
#if ASSERTIONS
assert(GL.vaoExt, 'Must have OES_vertex_array_object to use vao');
#endif
+#endif
+
for (var i = 0; i < n ; i++) {
var id = GL.getNewId(GL.vaos);
var vao = GL.vaoExt.createVertexArrayOES();
@@ -1814,11 +1825,22 @@ var LibraryGL = {
}
},
+#if LEGACY_GL_EMULATION
+ glDeleteVertexArrays__deps: ['emulGlDeleteVertexArrays'],
+#endif
glDeleteVertexArrays__sig: 'vii',
glDeleteVertexArrays: function(n, vaos) {
+#if LEGACY_GL_EMULATION
+ if (GL.vaoExt == null) {
+ _emulGlDeleteVertexArrays(n , vaos);
+ return;
+ }
+#else
#if ASSERTIONS
assert(GL.vaoExt, 'Must have OES_vertex_array_object to use vao');
#endif
+#endif
+
for (var i = 0; i < n; i++) {
var id = {{{ makeGetValue('vaos', 'i*4', 'i32') }}};
GL.vaoExt.deleteVertexArrayOES(GL.vaos[id]);
@@ -1826,19 +1848,40 @@ var LibraryGL = {
}
},
+#if LEGACY_GL_EMULATION
+ glBindVertexArray__deps: ['emulGlBindVertexArray'],
+#endif
glBindVertexArray__sig: 'vi',
glBindVertexArray: function(vao) {
+#if LEGACY_GL_EMULATION
+ if (GL.vaoExt == null) {
+ _emulGlBindVertexArray(vao);
+ return;
+ }
+#else
#if ASSERTIONS
assert(GL.vaoExt, 'Must have OES_vertex_array_object to use vao');
#endif
+#endif
+
GL.vaoExt.bindVertexArrayOES(GL.vaos[vao]);
},
+#if LEGACY_GL_EMULATION
+ glIsVertexArray__deps: ['emulGlIsVertexArray'],
+#endif
glIsVertexArray__sig: 'ii',
glIsVertexArray: function(array) {
+#if LEGACY_GL_EMULATION
+ if (GL.vaoExt == null) {
+ return _emulGlIsVertexArray(array);
+ }
+#else
#if ASSERTIONS
assert(GL.vaoExt, 'Must have OES_vertex_array_object to use vao');
-#endif
+#endif
+#endif
+
var vao = GL.vaos[array];
if (!vao) return 0;
return GL.vaoExt.isVertexArrayOES(vao);
@@ -4881,6 +4924,12 @@ var LibraryGL = {
if (GLEmulation.currentVao && GLEmulation.currentVao.id == id) GLEmulation.currentVao = null;
}
},
+ emulGlIsVertexArray__sig: 'vi',
+ emulGlIsVertexArray: function(array) {
+ var vao = GLEmulation.vaos[array];
+ if (!vao) return 0;
+ return 1;
+ },
emulGlBindVertexArray__deps: ['glBindBuffer', 'glEnableVertexAttribArray', 'glVertexAttribPointer', 'glEnableClientState'],
emulGlBindVertexArray__sig: 'vi',
emulGlBindVertexArray: function(vao) {
@@ -5093,6 +5142,12 @@ var LibraryGL = {
#endif // LEGACY_GL_EMULATION
+ // Open GLES1.1 vao compatibility (Could work w/o -s LEGACY_GL_EMULATION=1)
+
+ glGenVertexArraysOES: 'glGenVertexArrays',
+ glDeleteVertexArraysOES: 'glDeleteVertexArrays',
+ glBindVertexArrayOES: 'glBindVertexArray',
+
// GLU
gluPerspective: function(fov, aspect, near, far) {