aboutsummaryrefslogtreecommitdiff
path: root/tests/glfw/triangle.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/glfw/triangle.c')
-rw-r--r--tests/glfw/triangle.c152
1 files changed, 83 insertions, 69 deletions
diff --git a/tests/glfw/triangle.c b/tests/glfw/triangle.c
index a8b737be..db9d9ab1 100644
--- a/tests/glfw/triangle.c
+++ b/tests/glfw/triangle.c
@@ -8,87 +8,101 @@
#include <stdlib.h>
#include <GL/glfw.h>
+#ifdef EMSCRIPTEN
+#include <emscripten/emscripten.h>
+#endif
-int main( void )
+void
+iteration ()
{
- int width, height, x;
- double t;
+ int width, height, x;
+ double t;
+
+ t = glfwGetTime ();
+ glfwGetMousePos (&x, NULL);
+
+ // Get window size (may be different than the requested size)
+ glfwGetWindowSize (&width, &height);
+
+ // Special case: avoid division by zero below
+ height = height > 0 ? height : 1;
+
+ glViewport (0, 0, width, height);
+
+ // Clear color buffer to black
+ glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
+ glClear (GL_COLOR_BUFFER_BIT);
+
+ // Select and setup the projection matrix
+ glMatrixMode (GL_PROJECTION);
+ glLoadIdentity ();
+ gluPerspective (65.0f, (GLfloat) width / (GLfloat) height, 1.0f, 100.0f);
+
+ // Select and setup the modelview matrix
+ glMatrixMode (GL_MODELVIEW);
+ glLoadIdentity ();
+ gluLookAt (0.0f, 1.0f, 0.0f, // Eye-position
+ 0.0f, 20.0f, 0.0f, // View-point
+ 0.0f, 0.0f, 1.0f); // Up-vector
+
+ // Draw a rotating colorful triangle
+ //glTranslatef (0.0f, 14.0f, 0.0f);
+ glTranslatef (0.0f, 1.0f, 0.0f);
+ glRotatef (0.3f * (GLfloat) x + (GLfloat) t * 100.0f, 0.0f, 0.0f, 1.0f);
+ glBegin (GL_TRIANGLES);
+ glColor3f (1.0f, 0.0f, 0.0f);
+ glVertex3f (-5.0f, 0.0f, -4.0f);
+ glColor3f (0.0f, 1.0f, 0.0f);
+ glVertex3f (5.0f, 0.0f, -4.0f);
+ glColor3f (0.0f, 0.0f, 1.0f);
+ glVertex3f (0.0f, 0.0f, 6.0f);
+ glEnd ();
+
+ // Swap buffers
+ glfwSwapBuffers ();
- // Initialise GLFW
- if( !glfwInit() )
+}
+
+int
+main (void)
+{
+ // Initialise GLFW
+ if (!glfwInit ())
{
- fprintf( stderr, "Failed to initialize GLFW\n" );
- exit( EXIT_FAILURE );
+ fprintf (stderr, "Failed to initialize GLFW\n");
+ exit (EXIT_FAILURE);
}
- // Open a window and create its OpenGL context
- if( !glfwOpenWindow( 640, 480, 0,0,0,0, 0,0, GLFW_WINDOW ) )
+ // Open a window and create its OpenGL context
+ if (!glfwOpenWindow (640, 480, 0, 0, 0, 0, 0, 0, GLFW_WINDOW))
{
- fprintf( stderr, "Failed to open GLFW window\n" );
+ fprintf (stderr, "Failed to open GLFW window\n");
- glfwTerminate();
- exit( EXIT_FAILURE );
+ glfwTerminate ();
+ exit (EXIT_FAILURE);
}
- glfwSetWindowTitle( "Spinning Triangle" );
+ glfwSetWindowTitle ("Spinning Triangle");
- // Ensure we can capture the escape key being pressed below
- glfwEnable( GLFW_STICKY_KEYS );
+ // Ensure we can capture the escape key being pressed below
+ glfwEnable (GLFW_STICKY_KEYS);
- // Enable vertical sync (on cards that support it)
- glfwSwapInterval( 1 );
+ // Enable vertical sync (on cards that support it)
+ glfwSwapInterval (1);
- do
+#ifdef EMSCRIPTEN
+ emscripten_set_main_loop (iteration, 0, 1);
+#else
+ do
{
- t = glfwGetTime();
- glfwGetMousePos( &x, NULL );
-
- // Get window size (may be different than the requested size)
- glfwGetWindowSize( &width, &height );
-
- // Special case: avoid division by zero below
- height = height > 0 ? height : 1;
-
- glViewport( 0, 0, width, height );
-
- // Clear color buffer to black
- glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
- glClear( GL_COLOR_BUFFER_BIT );
-
- // Select and setup the projection matrix
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- gluPerspective( 65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f );
-
- // Select and setup the modelview matrix
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- gluLookAt( 0.0f, 1.0f, 0.0f, // Eye-position
- 0.0f, 20.0f, 0.0f, // View-point
- 0.0f, 0.0f, 1.0f ); // Up-vector
-
- // Draw a rotating colorful triangle
- glTranslatef( 0.0f, 14.0f, 0.0f );
- glRotatef( 0.3f*(GLfloat)x + (GLfloat)t*100.0f, 0.0f, 0.0f, 1.0f );
- glBegin( GL_TRIANGLES );
- glColor3f( 1.0f, 0.0f, 0.0f );
- glVertex3f( -5.0f, 0.0f, -4.0f );
- glColor3f( 0.0f, 1.0f, 0.0f );
- glVertex3f( 5.0f, 0.0f, -4.0f );
- glColor3f( 0.0f, 0.0f, 1.0f );
- glVertex3f( 0.0f, 0.0f, 6.0f );
- glEnd();
-
- // Swap buffers
- glfwSwapBuffers();
-
- } // Check if the ESC key was pressed or the window was closed
- while( glfwGetKey( GLFW_KEY_ESC ) != GLFW_PRESS &&
- glfwGetWindowParam( GLFW_OPENED ) );
-
- // Close OpenGL window and terminate GLFW
- glfwTerminate();
-
- exit( EXIT_SUCCESS );
-}
+ iteration ();
+ } // Check if the ESC key was pressed or the window was closed
+ while (glfwGetKey (GLFW_KEY_ESC) != GLFW_PRESS &&
+ glfwGetWindowParam (GLFW_OPENED));
+#endif
+
+ // Close OpenGL window and terminate GLFW
+ glfwTerminate ();
+ exit (EXIT_SUCCESS);
+}