diff options
-rw-r--r-- | src/library_gl.js | 16 | ||||
-rw-r--r-- | tests/screenshot-gray.png | bin | 170477 -> 203336 bytes | |||
-rw-r--r-- | tests/sdl_ogl.c | 31 |
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 Binary files differindex 928f9f9a..16e45a7a 100644 --- a/tests/screenshot-gray.png +++ b/tests/screenshot-gray.png 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(); |