aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library_gl.js16
-rw-r--r--tests/screenshot-gray.pngbin170477 -> 203336 bytes
-rw-r--r--tests/sdl_ogl.c31
3 files changed, 31 insertions, 16 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 65ab7d0f..47ce832d 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -1069,7 +1069,7 @@ var LibraryGL = {
#endif
if (GL.immediate.mode == 7) { // GL_QUADS
if (GL.immediate.vertexCounter % 4 == 0) {
- var start = GL.immediate.vertexCounter % 4;
+ var start = GL.immediate.vertexCounter - 4;
GL.immediate.indexData[GL.immediate.indexCounter ] = start;
GL.immediate.indexData[GL.immediate.indexCounter+1] = start+1;
GL.immediate.indexData[GL.immediate.indexCounter+2] = start+2;
@@ -1078,6 +1078,20 @@ var LibraryGL = {
GL.immediate.indexData[GL.immediate.indexCounter+5] = start+3;
GL.immediate.indexCounter += 6;
}
+ } else if (GL.immediate.mode == 5) { // GL_TRIANGLE_STRIP
+ if (GL.immediate.vertexCounter >= 3) {
+ var start = GL.immediate.vertexCounter - 3;
+ if (GL.immediate.indexCounter % 6 == 0) {
+ GL.immediate.indexData[GL.immediate.indexCounter ] = start;
+ GL.immediate.indexData[GL.immediate.indexCounter+1] = start+1;
+ GL.immediate.indexData[GL.immediate.indexCounter+2] = start+2;
+ } else {
+ GL.immediate.indexData[GL.immediate.indexCounter ] = start+1;
+ GL.immediate.indexData[GL.immediate.indexCounter+1] = start;
+ GL.immediate.indexData[GL.immediate.indexCounter+2] = start+2;
+ }
+ GL.immediate.indexCounter += 3;
+ }
} else {
throw 'only GL_QUADS supported so far';
}
diff --git a/tests/screenshot-gray.png b/tests/screenshot-gray.png
index 928f9f9a..16e45a7a 100644
--- a/tests/screenshot-gray.png
+++ b/tests/screenshot-gray.png
Binary files differ
diff --git a/tests/sdl_ogl.c b/tests/sdl_ogl.c
index cec32bf1..c423a16e 100644
--- a/tests/sdl_ogl.c
+++ b/tests/sdl_ogl.c
@@ -119,21 +119,22 @@ int main(int argc, char *argv[])
glBindTexture( GL_TEXTURE_2D, texture );
glBegin( GL_QUADS );
- // Top-left vertex (corner)
- glTexCoord2i( 0, 0 );
- glVertex3f( 100, 100, 0 );
-
- // Bottom-left vertex (corner)
- glTexCoord2i( 1, 0 );
- glVertex3f( 600, 100, 0 );
-
- // Bottom-right vertex (corner)
- glTexCoord2i( 1, 1 );
- glVertex3f( 600, 328, 0 );
-
- // Top-right vertex (corner)
- glTexCoord2i( 0, 1 );
- glVertex3f( 100, 328, 0 );
+ glTexCoord2i( 0, 0 ); glVertex3f( 10, 10, 0 );
+ glTexCoord2i( 1, 0 ); glVertex3f( 300, 10, 0 );
+ glTexCoord2i( 1, 1 ); glVertex3f( 300, 128, 0 );
+ glTexCoord2i( 0, 1 ); glVertex3f( 10, 128, 0 );
+
+ glTexCoord2f( 0, 0.5 ); glVertex3f( 410, 10, 0 );
+ glTexCoord2f( 1, 0.5 ); glVertex3f( 600, 10, 0 );
+ glTexCoord2f( 1, 1 ); glVertex3f( 630, 200, 0 );
+ glTexCoord2f( 0.5, 1 ); glVertex3f( 310, 250, 0 );
+ glEnd();
+
+ glBegin( GL_TRIANGLE_STRIP );
+ glTexCoord2i( 0, 0 ); glVertex3f( 100, 300, 0 );
+ glTexCoord2i( 1, 0 ); glVertex3f( 300, 300, 0 );
+ glTexCoord2i( 1, 1 ); glVertex3f( 300, 400, 0 );
+ glTexCoord2i( 0, 1 ); glVertex3f( 500, 410, 0 );
glEnd();
SDL_GL_SwapBuffers();