aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/tinygl-0.4-ugfx/examples/spin.c
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/tinygl-0.4-ugfx/examples/spin.c')
-rw-r--r--3rdparty/tinygl-0.4-ugfx/examples/spin.c160
1 files changed, 160 insertions, 0 deletions
diff --git a/3rdparty/tinygl-0.4-ugfx/examples/spin.c b/3rdparty/tinygl-0.4-ugfx/examples/spin.c
new file mode 100644
index 00000000..339bf003
--- /dev/null
+++ b/3rdparty/tinygl-0.4-ugfx/examples/spin.c
@@ -0,0 +1,160 @@
+/* spin.c */
+
+
+/*
+ * Spinning box. This program is in the public domain.
+ *
+ * Brian Paul
+ */
+
+
+#include <math.h>
+#include <stdio.h>
+
+#include <GL/glx.h>
+#include <GL/gl.h>
+#include "ui.h"
+
+
+
+
+static GLfloat Xrot, Xstep;
+static GLfloat Yrot, Ystep;
+static GLfloat Zrot, Zstep;
+static GLfloat Step = 5.0;
+static GLfloat Scale = 1.0;
+static GLuint Object;
+
+
+
+
+static GLuint make_object( void )
+{
+ GLuint list;
+
+ list = glGenLists( 1 );
+
+ glNewList( list, GL_COMPILE );
+
+ glBegin( GL_LINE_LOOP );
+ glColor3f( 1.0, 1.0, 1.0 );
+ glVertex3f( 1.0, 0.5, -0.4 );
+ glColor3f( 1.0, 0.0, 0.0 );
+ glVertex3f( 1.0, -0.5, -0.4 );
+ glColor3f( 0.0, 1.0, 0.0 );
+ glVertex3f( -1.0, -0.5, -0.4 );
+ glColor3f( 0.0, 0.0, 1.0 );
+ glVertex3f( -1.0, 0.5, -0.4 );
+ glEnd();
+
+ glColor3f( 1.0, 1.0, 1.0 );
+
+ glBegin( GL_LINE_LOOP );
+ glVertex3f( 1.0, 0.5, 0.4 );
+ glVertex3f( 1.0, -0.5, 0.4 );
+ glVertex3f( -1.0, -0.5, 0.4 );
+ glVertex3f( -1.0, 0.5, 0.4 );
+ glEnd();
+
+ glBegin( GL_LINES );
+ glVertex3f( 1.0, 0.5, -0.4 ); glVertex3f( 1.0, 0.5, 0.4 );
+ glVertex3f( 1.0, -0.5, -0.4 ); glVertex3f( 1.0, -0.5, 0.4 );
+ glVertex3f( -1.0, -0.5, -0.4 ); glVertex3f( -1.0, -0.5, 0.4 );
+ glVertex3f( -1.0, 0.5, -0.4 ); glVertex3f( -1.0, 0.5, 0.4 );
+ glEnd();
+
+
+ glEndList();
+
+ return list;
+}
+
+
+
+void reshape( int width, int height )
+{
+ glViewport(0, 0, (GLint)width, (GLint)height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
+ glMatrixMode(GL_MODELVIEW);
+}
+
+
+GLenum key(int k, GLenum mask)
+{
+ switch (k) {
+ case KEY_ESCAPE:
+ exit(0);
+ }
+ return GL_FALSE;
+}
+
+
+void draw( void )
+{
+ glClear( GL_COLOR_BUFFER_BIT );
+
+ glPushMatrix();
+
+ glTranslatef( 0.0, 0.0, -10.0 );
+ glScalef( Scale, Scale, Scale );
+ if (Xstep) {
+ glRotatef( Xrot, 1.0, 0.0, 0.0 );
+ }
+ else if (Ystep) {
+ glRotatef( Yrot, 0.0, 1.0, 0.0 );
+ }
+ else {
+ glRotatef( Zrot, 0.0, 0.0, 1.0 );
+ }
+
+ glCallList( Object );
+
+ glPopMatrix();
+
+ glFlush();
+ tkSwapBuffers();
+}
+
+
+void idle( void )
+{
+ Xrot += Xstep;
+ Yrot += Ystep;
+ Zrot += Zstep;
+
+ if (Xrot>=360.0) {
+ Xrot = Xstep = 0.0;
+ Ystep = Step;
+ }
+ else if (Yrot>=360.0) {
+ Yrot = Ystep = 0.0;
+ Zstep = Step;
+ }
+ else if (Zrot>=360.0) {
+ Zrot = Zstep = 0.0;
+ Xstep = Step;
+ }
+ draw();
+}
+
+void init(void)
+{
+ Object = make_object();
+ glCullFace( GL_BACK );
+/* glEnable( GL_CULL_FACE );*/
+ glDisable( GL_DITHER );
+ glShadeModel( GL_FLAT );
+/* glEnable( GL_DEPTH_TEST ); */
+
+ Xrot = Yrot = Zrot = 0.0;
+ Xstep = Step;
+ Ystep = Zstep = 0.0;
+}
+
+
+int main( int argc, char *argv[] )
+{
+ return ui_loop(argc, argv, "spin");
+}