TinyGL 0.4.1 for MinGW
spin.c
Go to the documentation of this file.
1/* spin.c */
2
3
4/*
5 * Spinning box. This program is in the public domain.
6 *
7 * Brian Paul
8 */
9
10
11#include <math.h>
12#include <stdio.h>
13#include <windows.h>
14
15#include <GL/gdi.h>
16#include <GL/gl.h>
17#include "ui.h"
18
19
20
21
22static GLfloat Xrot, Xstep;
23static GLfloat Yrot, Ystep;
24static GLfloat Zrot, Zstep;
25static GLfloat Step = 5.0;
26static GLfloat Scale = 1.0;
27static GLuint Object;
28
29
30
31
32static GLuint make_object( void )
33{
34 GLuint list;
35
36 list = glGenLists( 1 );
37
38 glNewList( list, GL_COMPILE );
39
41 glColor3f( 1.0, 1.0, 1.0 );
42 glVertex3f( 1.0, 0.5, -0.4 );
43 glColor3f( 1.0, 0.0, 0.0 );
44 glVertex3f( 1.0, -0.5, -0.4 );
45 glColor3f( 0.0, 1.0, 0.0 );
46 glVertex3f( -1.0, -0.5, -0.4 );
47 glColor3f( 0.0, 0.0, 1.0 );
48 glVertex3f( -1.0, 0.5, -0.4 );
49 glEnd();
50
51 glColor3f( 1.0, 1.0, 1.0 );
52
54 glVertex3f( 1.0, 0.5, 0.4 );
55 glVertex3f( 1.0, -0.5, 0.4 );
56 glVertex3f( -1.0, -0.5, 0.4 );
57 glVertex3f( -1.0, 0.5, 0.4 );
58 glEnd();
59
61 glVertex3f( 1.0, 0.5, -0.4 ); glVertex3f( 1.0, 0.5, 0.4 );
62 glVertex3f( 1.0, -0.5, -0.4 ); glVertex3f( 1.0, -0.5, 0.4 );
63 glVertex3f( -1.0, -0.5, -0.4 ); glVertex3f( -1.0, -0.5, 0.4 );
64 glVertex3f( -1.0, 0.5, -0.4 ); glVertex3f( -1.0, 0.5, 0.4 );
65 glEnd();
66
67
68 glEndList();
69
70 return list;
71}
72
73
74
75void reshape( int width, int height )
76{
77 glViewport(0, 0, (GLint)width, (GLint)height);
80 glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
82}
83
84
85GLenum key(int k, GLenum mask)
86{
87 switch (k) {
88 case KEY_ESCAPE:
89 exit(0);
90 }
91 return GL_FALSE;
92}
93
94
95void draw( void )
96{
97 glClearColor(0.9, 0.9, 0.9, 0.0);
99
100
101 glPushMatrix();
102
103 glTranslatef( 0.0, 0.0, -10.0 );
104 glScalef( Scale, Scale, Scale );
105 if (Xstep) {
106 glRotatef( Xrot, 1.0, 0.0, 0.0 );
107 }
108 else if (Ystep) {
109 glRotatef( Yrot, 0.0, 1.0, 0.0 );
110 }
111 else {
112 glRotatef( Zrot, 0.0, 0.0, 1.0 );
113 }
114
115 glCallList( Object );
116
117 glPopMatrix();
118
119 glFlush();
121}
122
123
124void idle( void )
125{
126 Xrot += Xstep;
127 Yrot += Ystep;
128 Zrot += Zstep;
129
130 if (Xrot>=360.0) {
131 Xrot = Xstep = 0.0;
132 Ystep = Step;
133 }
134 else if (Yrot>=360.0) {
135 Yrot = Ystep = 0.0;
136 Zstep = Step;
137 }
138 else if (Zrot>=360.0) {
139 Zrot = Zstep = 0.0;
140 Xstep = Step;
141 }
142 //draw();
143}
144
145void init(void)
146{
147 Object = make_object();
149/* glEnable( GL_CULL_FACE );*/
152/* glEnable( GL_DEPTH_TEST ); */
153
154 Xrot = Yrot = Zrot = 0.0;
155 Xstep = Step;
156 Ystep = Zstep = 0.0;
157}
158
159
160int main( int argc, char *argv[] )
161{
162 return ui_loop(argc, argv, "spin");
163}
void glColor3f(float x, float y, float z)
Definition: api.c:92
void glVertex3f(float x, float y, float z)
Definition: api.c:23
void glFrustum(double left, double right, double bottom, double top, double near, double far)
Definition: api.c:354
@ GL_BACK
Definition: gl.h:120
@ GL_FALSE
Definition: gl.h:15
@ GL_COMPILE
Definition: gl.h:134
@ GL_LINES
Definition: gl.h:32
@ GL_DITHER
Definition: gl.h:344
@ GL_PROJECTION
Definition: gl.h:95
@ GL_MODELVIEW
Definition: gl.h:94
@ GL_LINE_LOOP
Definition: gl.h:35
@ GL_FLAT
Definition: gl.h:186
unsigned int glGenLists(int range)
Definition: list.c:233
int GLenum
Definition: gl.h:662
void glPushMatrix(void)
Definition: api.c:285
void glPopMatrix(void)
Definition: api.c:294
void glCallList(unsigned int list)
Definition: api.c:635
void glEndList(void)
Definition: list.c:210
float GLfloat
Definition: gl.h:671
void glClearColor(float r, float g, float b, float a)
Definition: api.c:481
void glShadeModel(int mode)
Definition: api.c:140
void glViewport(int x, int y, int width, int height)
Definition: api.c:341
int GLint
Definition: gl.h:667
void glClear(int mask)
Definition: api.c:471
void glNewList(unsigned int list, int mode)
Definition: list.c:191
void glMatrixMode(int mode)
Definition: api.c:244
void glFlush(void)
Definition: api.c:645
void glRotatef(float angle, float x, float y, float z)
Definition: api.c:303
unsigned int GLuint
Definition: gl.h:670
void glBegin(int type)
Definition: api.c:223
void glTranslatef(float x, float y, float z)
Definition: api.c:316
void glCullFace(int mode)
Definition: api.c:152
void glLoadIdentity(void)
Definition: api.c:265
void glScalef(float x, float y, float z)
Definition: api.c:328
void glDisable(int code)
Definition: api.c:210
@ GL_COLOR_BUFFER_BIT
Definition: gl.h:651
void glEnd(void)
Definition: api.c:233
int ui_loop(int argc, char **argv, const char *name)
Definition: mingw32.c:310
void tkSwapBuffers(void)
Definition: mingw32.c:305
void idle(void)
Definition: spin.c:124
GLenum key(int k, GLenum mask)
Definition: spin.c:85
int main(int argc, char *argv[])
Definition: spin.c:160
void init(void)
Definition: spin.c:145
void reshape(int width, int height)
Definition: spin.c:75
void draw(void)
Definition: spin.c:95
#define KEY_ESCAPE
Definition: ui.h:16