1 /* $Id: texline.c,v 1.3 2001/05/21 17:45:25 brianp Exp $ */
15 #include "../util/readtex.c" /* I know, this is a hack. */
17 #define TEXTURE_FILE "../images/girl.rgb"
19 static GLboolean Antialias
= GL_FALSE
;
20 static GLboolean Animate
= GL_FALSE
;
21 static GLboolean Texture
= GL_TRUE
;
22 static GLfloat LineWidth
= 1.0;
23 static GLboolean Multitex
= GL_FALSE
;
25 static GLfloat Xrot
= -60.0, Yrot
= 0.0, Zrot
= 0.0;
26 static GLfloat DYrot
= 1.0;
27 static GLboolean Points
= GL_FALSE
;
30 static void Idle( void )
39 static void Display( void )
43 glClear( GL_COLOR_BUFFER_BIT
);
46 glRotatef(Xrot
, 1.0, 0.0, 0.0);
47 glRotatef(Yrot
, 0.0, 1.0, 0.0);
48 glRotatef(Zrot
, 0.0, 0.0, 1.0);
55 for (t
= 0.0; t
<= 1.0; t
+= 0.025) {
56 for (s
= 0.0; s
<= 1.0; s
+= 0.025) {
61 glMultiTexCoord2fARB(GL_TEXTURE1_ARB
, t
, s
);
70 for (t
= 0.0; t
<= 1.0; t
+= 0.025) {
75 glMultiTexCoord2fARB(GL_TEXTURE1_ARB
, 0.0, t
);
80 glMultiTexCoord2fARB(GL_TEXTURE1_ARB
, 1.0, t
);
92 static void Reshape( int width
, int height
)
94 GLfloat ar
= (float) width
/ height
;
95 glViewport( 0, 0, width
, height
);
96 glMatrixMode( GL_PROJECTION
);
98 glFrustum( -ar
, ar
, -1.0, 1.0, 10.0, 100.0 );
99 glMatrixMode( GL_MODELVIEW
);
101 glTranslatef( 0.0, 0.0, -12.0 );
105 static void Key( unsigned char key
, int x
, int y
)
111 Antialias
= !Antialias
;
113 glEnable(GL_LINE_SMOOTH
);
114 glEnable(GL_POINT_SMOOTH
);
116 glBlendFunc(GL_SRC_ALPHA
, GL_ONE_MINUS_SRC_ALPHA
);
119 glDisable(GL_LINE_SMOOTH
);
120 glDisable(GL_POINT_SMOOTH
);
127 glEnable(GL_TEXTURE_2D
);
129 glDisable(GL_TEXTURE_2D
);
133 if (LineWidth
< 0.25)
135 glLineWidth(LineWidth
);
136 glPointSize(LineWidth
);
142 glLineWidth(LineWidth
);
143 glPointSize(LineWidth
);
146 Multitex
= !Multitex
;
148 glEnable(GL_TEXTURE_2D
);
151 glDisable(GL_TEXTURE_2D
);
168 printf("LineWidth, PointSize = %f\n", LineWidth
);
173 static void SpecialKey( int key
, int x
, int y
)
197 static void Init( int argc
, char *argv
[] )
200 for (u
= 0; u
< 2; u
++) {
201 glActiveTextureARB(GL_TEXTURE0_ARB
+ u
);
202 glBindTexture(GL_TEXTURE_2D
, 10+u
);
203 if (u
== 0 || Multitex
)
204 glEnable(GL_TEXTURE_2D
);
205 glTexParameteri(GL_TEXTURE_2D
, GL_TEXTURE_MIN_FILTER
, GL_NEAREST
);
206 glTexParameteri(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
207 glTexParameteri(GL_TEXTURE_2D
, GL_TEXTURE_MIN_FILTER
, GL_LINEAR
);
208 glTexParameteri(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, GL_LINEAR
);
211 glTexEnvi(GL_TEXTURE_ENV
, GL_TEXTURE_ENV_MODE
, GL_REPLACE
);
213 glTexEnvi(GL_TEXTURE_ENV
, GL_TEXTURE_ENV_MODE
, GL_ADD
);
215 glPixelStorei(GL_UNPACK_ALIGNMENT
, 1);
216 if (!LoadRGBMipmaps(TEXTURE_FILE
, GL_RGB
)) {
217 printf("Error: couldn't load texture image\n");
222 if (argc
> 1 && strcmp(argv
[1], "-info")==0) {
223 printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER
));
224 printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION
));
225 printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR
));
226 printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS
));
231 int main( int argc
, char *argv
[] )
233 glutInit( &argc
, argv
);
234 glutInitWindowSize( 400, 300 );
236 glutInitDisplayMode( GLUT_RGB
| GLUT_DOUBLE
);
238 glutCreateWindow(argv
[0] );
242 glutReshapeFunc( Reshape
);
243 glutKeyboardFunc( Key
);
244 glutSpecialFunc( SpecialKey
);
245 glutDisplayFunc( Display
);
247 glutIdleFunc( Idle
);