annotate test/testgl.c @ 910:4ab6d1fd028f

Date: Sat, 26 Jun 2004 14:58:42 +0300 From: "Mike Gorchak" Subject: QNX 6.3 fixes for SDL Sam, I've added new OpenGL framework for SDL, which appeared in the new QNX version - 6.3. I've leave compatibility with previous QNX versions. And I've moved all GL specific functions to the separate module, like it done for the other platforms. SDL is now ready for the QNX 6.3 :)
author Sam Lantinga <slouken@libsdl.org>
date Sun, 18 Jul 2004 19:46:38 +0000
parents 864e2d2a9a55
children 4272450dd8d0
rev   line source
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1 #include <stdlib.h>
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2 #include <stdio.h>
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3 #include <string.h>
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
4 #include <math.h>
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
5
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
6 #include "SDL.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
7
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
8 #ifdef HAVE_OPENGL
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
9
214
0e5d6dd77bda Added platform independent OpenGL header - SDL_opengl.h
Sam Lantinga <slouken@libsdl.org>
parents: 0
diff changeset
10 #include "SDL_opengl.h"
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
11
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
12 /* Undefine this if you want a flat cube instead of a rainbow cube */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
13 #define SHADED_CUBE
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
14
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
15 /* Define this to be the name of the logo image to use with -logo */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
16 #define LOGO_FILE "icon.bmp"
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
17
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
18 /* The SDL_OPENGLBLIT interface is deprecated.
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
19 The code is still available for benchmark purposes though.
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
20 */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
21
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
22 static SDL_bool USE_DEPRECATED_OPENGLBLIT = SDL_FALSE;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
23
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
24 static SDL_Surface *global_image = NULL;
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
25 static GLuint global_texture = 0;
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
26
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
27 /**********************************************************************/
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
28
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
29 void HotKey_ToggleFullScreen(void)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
30 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
31 SDL_Surface *screen;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
32
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
33 screen = SDL_GetVideoSurface();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
34 if ( SDL_WM_ToggleFullScreen(screen) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
35 printf("Toggled fullscreen mode - now %s\n",
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
36 (screen->flags&SDL_FULLSCREEN) ? "fullscreen" : "windowed");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
37 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
38 printf("Unable to toggle fullscreen mode\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
39 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
40 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
41
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
42 void HotKey_ToggleGrab(void)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
43 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
44 SDL_GrabMode mode;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
45
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
46 printf("Ctrl-G: toggling input grab!\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
47 mode = SDL_WM_GrabInput(SDL_GRAB_QUERY);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
48 if ( mode == SDL_GRAB_ON ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
49 printf("Grab was on\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
50 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
51 printf("Grab was off\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
52 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
53 mode = SDL_WM_GrabInput(!mode);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
54 if ( mode == SDL_GRAB_ON ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
55 printf("Grab is now on\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
56 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
57 printf("Grab is now off\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
58 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
59 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
60
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
61 void HotKey_Iconify(void)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
62 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
63 printf("Ctrl-Z: iconifying window!\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
64 SDL_WM_IconifyWindow();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
65 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
66
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
67 int HandleEvent(SDL_Event *event)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
68 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
69 int done;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
70
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
71 done = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
72 switch( event->type ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
73 case SDL_ACTIVEEVENT:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
74 /* See what happened */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
75 printf( "app %s ", event->active.gain ? "gained" : "lost" );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
76 if ( event->active.state & SDL_APPACTIVE ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
77 printf( "active " );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
78 } else if ( event->active.state & SDL_APPMOUSEFOCUS ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
79 printf( "mouse " );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
80 } else if ( event->active.state & SDL_APPINPUTFOCUS ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
81 printf( "input " );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
82 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
83 printf( "focus\n" );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
84 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
85
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
86
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
87 case SDL_KEYDOWN:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
88 if ( event->key.keysym.sym == SDLK_ESCAPE ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
89 done = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
90 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
91 if ( (event->key.keysym.sym == SDLK_g) &&
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
92 (event->key.keysym.mod & KMOD_CTRL) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
93 HotKey_ToggleGrab();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
94 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
95 if ( (event->key.keysym.sym == SDLK_z) &&
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
96 (event->key.keysym.mod & KMOD_CTRL) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
97 HotKey_Iconify();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
98 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
99 if ( (event->key.keysym.sym == SDLK_RETURN) &&
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
100 (event->key.keysym.mod & KMOD_ALT) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
101 HotKey_ToggleFullScreen();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
102 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
103 printf("key '%s' pressed\n",
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
104 SDL_GetKeyName(event->key.keysym.sym));
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
105 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
106 case SDL_QUIT:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
107 done = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
108 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
109 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
110 return(done);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
111 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
112
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
113 void SDL_GL_Enter2DMode()
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
114 {
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
115 SDL_Surface *screen = SDL_GetVideoSurface();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
116
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
117 /* Note, there may be other things you need to change,
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
118 depending on how you have your OpenGL state set up.
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
119 */
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
120 glPushAttrib(GL_ENABLE_BIT);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
121 glDisable(GL_DEPTH_TEST);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
122 glDisable(GL_CULL_FACE);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
123 glEnable(GL_TEXTURE_2D);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
124
243
cf4944faad96 Fixed testgl so that SDL_GL_Enter2DMode() allows alpha blending
Sam Lantinga <slouken@libsdl.org>
parents: 234
diff changeset
125 /* This allows alpha blending of 2D textures with the scene */
cf4944faad96 Fixed testgl so that SDL_GL_Enter2DMode() allows alpha blending
Sam Lantinga <slouken@libsdl.org>
parents: 234
diff changeset
126 glEnable(GL_BLEND);
cf4944faad96 Fixed testgl so that SDL_GL_Enter2DMode() allows alpha blending
Sam Lantinga <slouken@libsdl.org>
parents: 234
diff changeset
127 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
cf4944faad96 Fixed testgl so that SDL_GL_Enter2DMode() allows alpha blending
Sam Lantinga <slouken@libsdl.org>
parents: 234
diff changeset
128
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
129 glViewport(0, 0, screen->w, screen->h);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
130
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
131 glMatrixMode(GL_PROJECTION);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
132 glPushMatrix();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
133 glLoadIdentity();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
134
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
135 glOrtho(0.0, (GLdouble)screen->w, (GLdouble)screen->h, 0.0, 0.0, 1.0);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
136
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
137 glMatrixMode(GL_MODELVIEW);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
138 glPushMatrix();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
139 glLoadIdentity();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
140
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
141 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
142 }
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
143
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
144 void SDL_GL_Leave2DMode()
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
145 {
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
146 glMatrixMode(GL_MODELVIEW);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
147 glPopMatrix();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
148
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
149 glMatrixMode(GL_PROJECTION);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
150 glPopMatrix();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
151
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
152 glPopAttrib();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
153 }
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
154
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
155 /* Quick utility function for texture creation */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
156 static int power_of_two(int input)
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
157 {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
158 int value = 1;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
159
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
160 while ( value < input ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
161 value <<= 1;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
162 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
163 return value;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
164 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
165
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
166 GLuint SDL_GL_LoadTexture(SDL_Surface *surface, GLfloat *texcoord)
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
167 {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
168 GLuint texture;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
169 int w, h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
170 SDL_Surface *image;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
171 SDL_Rect area;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
172 Uint32 saved_flags;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
173 Uint8 saved_alpha;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
174
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
175 /* Use the surface width and height expanded to powers of 2 */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
176 w = power_of_two(surface->w);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
177 h = power_of_two(surface->h);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
178 texcoord[0] = 0.0f; /* Min X */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
179 texcoord[1] = 0.0f; /* Min Y */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
180 texcoord[2] = (GLfloat)surface->w / w; /* Max X */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
181 texcoord[3] = (GLfloat)surface->h / h; /* Max Y */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
182
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
183 image = SDL_CreateRGBSurface(
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
184 SDL_SWSURFACE,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
185 w, h,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
186 32,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
187 #if SDL_BYTEORDER == SDL_LIL_ENDIAN /* OpenGL RGBA masks */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
188 0x000000FF,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
189 0x0000FF00,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
190 0x00FF0000,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
191 0xFF000000
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
192 #else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
193 0xFF000000,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
194 0x00FF0000,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
195 0x0000FF00,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
196 0x000000FF
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
197 #endif
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
198 );
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
199 if ( image == NULL ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
200 return 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
201 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
202
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
203 /* Save the alpha blending attributes */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
204 saved_flags = surface->flags&(SDL_SRCALPHA|SDL_RLEACCELOK);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
205 saved_alpha = surface->format->alpha;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
206 if ( (saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
207 SDL_SetAlpha(surface, 0, 0);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
208 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
209
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
210 /* Copy the surface into the GL texture image */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
211 area.x = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
212 area.y = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
213 area.w = surface->w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
214 area.h = surface->h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
215 SDL_BlitSurface(surface, &area, image, &area);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
216
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
217 /* Restore the alpha blending attributes */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
218 if ( (saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
219 SDL_SetAlpha(surface, saved_flags, saved_alpha);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
220 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
221
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
222 /* Create an OpenGL texture for the image */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
223 glGenTextures(1, &texture);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
224 glBindTexture(GL_TEXTURE_2D, texture);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
225 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
226 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
227 glTexImage2D(GL_TEXTURE_2D,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
228 0,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
229 GL_RGBA,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
230 w, h,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
231 0,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
232 GL_RGBA,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
233 GL_UNSIGNED_BYTE,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
234 image->pixels);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
235 SDL_FreeSurface(image); /* No longer needed */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
236
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
237 return texture;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
238 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
239
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
240
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
241 void DrawLogoTexture(void)
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
242 {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
243 static GLfloat texMinX, texMinY;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
244 static GLfloat texMaxX, texMaxY;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
245 static int x = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
246 static int y = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
247 static int w, h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
248 static int delta_x = 1;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
249 static int delta_y = 1;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
250 static Uint32 last_moved = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
251
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
252 SDL_Surface *screen = SDL_GetVideoSurface();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
253
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
254 if ( ! global_texture ) {
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
255 SDL_Surface *image;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
256 GLfloat texcoord[4];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
257
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
258 /* Load the image (could use SDL_image library here) */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
259 image = SDL_LoadBMP(LOGO_FILE);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
260 if ( image == NULL ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
261 return;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
262 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
263 w = image->w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
264 h = image->h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
265
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
266 /* Convert the image into an OpenGL texture */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
267 global_texture = SDL_GL_LoadTexture(image, texcoord);
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
268
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
269 /* Make texture coordinates easy to understand */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
270 texMinX = texcoord[0];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
271 texMinY = texcoord[1];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
272 texMaxX = texcoord[2];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
273 texMaxY = texcoord[3];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
274
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
275 /* We don't need the original image anymore */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
276 SDL_FreeSurface(image);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
277
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
278 /* Make sure that the texture conversion is okay */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
279 if ( ! global_texture ) {
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
280 return;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
281 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
282 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
283
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
284 /* Move the image around */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
285 x += delta_x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
286 if ( x < 0 ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
287 x = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
288 delta_x = -delta_x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
289 } else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
290 if ( (x+w) > screen->w ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
291 x = screen->w-w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
292 delta_x = -delta_x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
293 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
294 y += delta_y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
295 if ( y < 0 ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
296 y = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
297 delta_y = -delta_y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
298 } else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
299 if ( (y+h) > screen->h ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
300 y = screen->h-h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
301 delta_y = -delta_y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
302 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
303
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
304 /* Show the image on the screen */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
305 SDL_GL_Enter2DMode();
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
306 glBindTexture(GL_TEXTURE_2D, global_texture);
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
307 glBegin(GL_TRIANGLE_STRIP);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
308 glTexCoord2f(texMinX, texMinY); glVertex2i(x, y );
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
309 glTexCoord2f(texMaxX, texMinY); glVertex2i(x+w, y );
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
310 glTexCoord2f(texMinX, texMaxY); glVertex2i(x, y+h);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
311 glTexCoord2f(texMaxX, texMaxY); glVertex2i(x+w, y+h);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
312 glEnd();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
313 SDL_GL_Leave2DMode();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
314 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
315
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
316 /* This code is deprecated, but available for speed comparisons */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
317 void DrawLogoBlit(void)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
318 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
319 static int x = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
320 static int y = 0;
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
321 static int w, h;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
322 static int delta_x = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
323 static int delta_y = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
324 static Uint32 last_moved = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
325
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
326 SDL_Rect dst;
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
327 SDL_Surface *screen = SDL_GetVideoSurface();
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
328
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
329 if ( global_image == NULL ) {
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
330 SDL_Surface *temp;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
331
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
332 /* Load the image (could use SDL_image library here) */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
333 temp = SDL_LoadBMP(LOGO_FILE);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
334 if ( temp == NULL ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
335 return;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
336 }
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
337 w = temp->w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
338 h = temp->h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
339
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
340 /* Convert the image into the screen format */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
341 global_image = SDL_CreateRGBSurface(
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
342 SDL_SWSURFACE,
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
343 w, h,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
344 screen->format->BitsPerPixel,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
345 screen->format->Rmask,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
346 screen->format->Gmask,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
347 screen->format->Bmask,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
348 screen->format->Amask);
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
349 if ( global_image ) {
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
350 SDL_BlitSurface(temp, NULL, global_image, NULL);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
351 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
352 SDL_FreeSurface(temp);
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
353
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
354 /* Make sure that the texture conversion is okay */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
355 if ( ! global_image ) {
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
356 return;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
357 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
358 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
359
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
360 /* Move the image around
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
361 Note that we do not clear the old position. This is because we
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
362 perform a glClear() which clears the framebuffer and then only
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
363 update the new area.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
364 Note that you can also achieve interesting effects by modifying
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
365 the screen surface alpha channel. It's set to 255 by default..
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
366 */
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
367 x += delta_x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
368 if ( x < 0 ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
369 x = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
370 delta_x = -delta_x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
371 } else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
372 if ( (x+w) > screen->w ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
373 x = screen->w-w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
374 delta_x = -delta_x;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
375 }
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
376 y += delta_y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
377 if ( y < 0 ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
378 y = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
379 delta_y = -delta_y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
380 } else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
381 if ( (y+h) > screen->h ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
382 y = screen->h-h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
383 delta_y = -delta_y;
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
384 }
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
385 dst.x = x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
386 dst.y = y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
387 dst.w = w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
388 dst.h = h;
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
389 SDL_BlitSurface(global_image, NULL, screen, &dst);
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
390
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
391 /* Show the image on the screen */
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
392 SDL_UpdateRects(screen, 1, &dst);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
393 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
394
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
395 int RunGLTest( int argc, char* argv[],
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
396 int logo, int slowly, int bpp, float gamma, int noframe, int fsaa )
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
397 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
398 int i;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
399 int rgb_size[3];
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
400 int w = 640;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
401 int h = 480;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
402 int done = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
403 int frames;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
404 Uint32 start_time, this_time;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
405 float color[8][3]= {{ 1.0, 1.0, 0.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
406 { 1.0, 0.0, 0.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
407 { 0.0, 0.0, 0.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
408 { 0.0, 1.0, 0.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
409 { 0.0, 1.0, 1.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
410 { 1.0, 1.0, 1.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
411 { 1.0, 0.0, 1.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
412 { 0.0, 0.0, 1.0}};
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
413 float cube[8][3]= {{ 0.5, 0.5, -0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
414 { 0.5, -0.5, -0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
415 {-0.5, -0.5, -0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
416 {-0.5, 0.5, -0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
417 {-0.5, 0.5, 0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
418 { 0.5, 0.5, 0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
419 { 0.5, -0.5, 0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
420 {-0.5, -0.5, 0.5}};
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
421 Uint32 video_flags;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
422 int value;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
423
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
424 if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
425 fprintf(stderr,"Couldn't initialize SDL: %s\n",SDL_GetError());
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
426 exit( 1 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
427 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
428
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
429 /* See if we should detect the display depth */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
430 if ( bpp == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
431 if ( SDL_GetVideoInfo()->vfmt->BitsPerPixel <= 8 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
432 bpp = 8;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
433 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
434 bpp = 16; /* More doesn't seem to work */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
435 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
436 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
437
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
438 /* Set the flags we want to use for setting the video mode */
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
439 if ( logo && USE_DEPRECATED_OPENGLBLIT ) {
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
440 video_flags = SDL_OPENGLBLIT;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
441 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
442 video_flags = SDL_OPENGL;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
443 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
444 for ( i=1; argv[i]; ++i ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
445 if ( strcmp(argv[1], "-fullscreen") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
446 video_flags |= SDL_FULLSCREEN;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
447 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
448 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
449
320
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
450 if (noframe) {
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
451 video_flags |= SDL_NOFRAME;
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
452 }
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
453
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
454 /* Initialize the display */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
455 switch (bpp) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
456 case 8:
363
ca0b4ba5313e Date: Thu, 18 Apr 2002 13:50:53 -0700
Sam Lantinga <slouken@libsdl.org>
parents: 320
diff changeset
457 rgb_size[0] = 3;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
458 rgb_size[1] = 3;
363
ca0b4ba5313e Date: Thu, 18 Apr 2002 13:50:53 -0700
Sam Lantinga <slouken@libsdl.org>
parents: 320
diff changeset
459 rgb_size[2] = 2;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
460 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
461 case 15:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
462 case 16:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
463 rgb_size[0] = 5;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
464 rgb_size[1] = 5;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
465 rgb_size[2] = 5;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
466 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
467 default:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
468 rgb_size[0] = 8;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
469 rgb_size[1] = 8;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
470 rgb_size[2] = 8;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
471 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
472 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
473 SDL_GL_SetAttribute( SDL_GL_RED_SIZE, rgb_size[0] );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
474 SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, rgb_size[1] );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
475 SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, rgb_size[2] );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
476 SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
477 SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
478 if ( fsaa ) {
656
864e2d2a9a55 Merged in Ryan's multisample code for MacOS, and changed the constants to match.
Sam Lantinga <slouken@libsdl.org>
parents: 655
diff changeset
479 SDL_GL_SetAttribute( SDL_GL_MULTISAMPLEBUFFERS, 1 );
864e2d2a9a55 Merged in Ryan's multisample code for MacOS, and changed the constants to match.
Sam Lantinga <slouken@libsdl.org>
parents: 655
diff changeset
480 SDL_GL_SetAttribute( SDL_GL_MULTISAMPLESAMPLES, fsaa );
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
481 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
482 if ( SDL_SetVideoMode( w, h, bpp, video_flags ) == NULL ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
483 fprintf(stderr, "Couldn't set GL mode: %s\n", SDL_GetError());
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
484 SDL_Quit();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
485 exit(1);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
486 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
487
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
488 printf("Screen BPP: %d\n", SDL_GetVideoSurface()->format->BitsPerPixel);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
489 printf("\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
490 printf( "Vendor : %s\n", glGetString( GL_VENDOR ) );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
491 printf( "Renderer : %s\n", glGetString( GL_RENDERER ) );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
492 printf( "Version : %s\n", glGetString( GL_VERSION ) );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
493 printf( "Extensions : %s\n", glGetString( GL_EXTENSIONS ) );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
494 printf("\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
495
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
496 SDL_GL_GetAttribute( SDL_GL_RED_SIZE, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
497 printf( "SDL_GL_RED_SIZE: requested %d, got %d\n", rgb_size[0],value);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
498 SDL_GL_GetAttribute( SDL_GL_GREEN_SIZE, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
499 printf( "SDL_GL_GREEN_SIZE: requested %d, got %d\n", rgb_size[1],value);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
500 SDL_GL_GetAttribute( SDL_GL_BLUE_SIZE, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
501 printf( "SDL_GL_BLUE_SIZE: requested %d, got %d\n", rgb_size[2],value);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
502 SDL_GL_GetAttribute( SDL_GL_DEPTH_SIZE, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
503 printf( "SDL_GL_DEPTH_SIZE: requested %d, got %d\n", bpp, value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
504 SDL_GL_GetAttribute( SDL_GL_DOUBLEBUFFER, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
505 printf( "SDL_GL_DOUBLEBUFFER: requested 1, got %d\n", value );
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
506 if ( fsaa ) {
656
864e2d2a9a55 Merged in Ryan's multisample code for MacOS, and changed the constants to match.
Sam Lantinga <slouken@libsdl.org>
parents: 655
diff changeset
507 SDL_GL_GetAttribute( SDL_GL_MULTISAMPLEBUFFERS, &value );
864e2d2a9a55 Merged in Ryan's multisample code for MacOS, and changed the constants to match.
Sam Lantinga <slouken@libsdl.org>
parents: 655
diff changeset
508 printf( "SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value );
864e2d2a9a55 Merged in Ryan's multisample code for MacOS, and changed the constants to match.
Sam Lantinga <slouken@libsdl.org>
parents: 655
diff changeset
509 SDL_GL_GetAttribute( SDL_GL_MULTISAMPLESAMPLES, &value );
864e2d2a9a55 Merged in Ryan's multisample code for MacOS, and changed the constants to match.
Sam Lantinga <slouken@libsdl.org>
parents: 655
diff changeset
510 printf( "SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, value );
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
511 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
512
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
513 /* Set the window manager title bar */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
514 SDL_WM_SetCaption( "SDL GL test", "testgl" );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
515
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
516 /* Set the gamma for the window */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
517 if ( gamma != 0.0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
518 SDL_SetGamma(gamma, gamma, gamma);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
519 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
520
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
521 glViewport( 0, 0, w, h );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
522 glMatrixMode( GL_PROJECTION );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
523 glLoadIdentity( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
524
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
525 glOrtho( -2.0, 2.0, -2.0, 2.0, -20.0, 20.0 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
526
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
527 glMatrixMode( GL_MODELVIEW );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
528 glLoadIdentity( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
529
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
530 glEnable(GL_DEPTH_TEST);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
531
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
532 glDepthFunc(GL_LESS);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
533
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
534 glShadeModel(GL_SMOOTH);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
535
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
536 /* Loop until done. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
537 start_time = SDL_GetTicks();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
538 frames = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
539 while( !done ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
540 GLenum gl_error;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
541 char* sdl_error;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
542 SDL_Event event;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
543
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
544 /* Do our drawing, too. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
545 glClearColor( 0.0, 0.0, 0.0, 1.0 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
546 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
547
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
548 glBegin( GL_QUADS );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
549
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
550 #ifdef SHADED_CUBE
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
551 glColor3fv(color[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
552 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
553 glColor3fv(color[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
554 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
555 glColor3fv(color[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
556 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
557 glColor3fv(color[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
558 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
559
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
560 glColor3fv(color[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
561 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
562 glColor3fv(color[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
563 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
564 glColor3fv(color[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
565 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
566 glColor3fv(color[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
567 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
568
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
569 glColor3fv(color[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
570 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
571 glColor3fv(color[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
572 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
573 glColor3fv(color[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
574 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
575 glColor3fv(color[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
576 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
577
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
578 glColor3fv(color[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
579 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
580 glColor3fv(color[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
581 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
582 glColor3fv(color[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
583 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
584 glColor3fv(color[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
585 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
586
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
587 glColor3fv(color[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
588 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
589 glColor3fv(color[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
590 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
591 glColor3fv(color[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
592 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
593 glColor3fv(color[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
594 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
595
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
596 glColor3fv(color[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
597 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
598 glColor3fv(color[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
599 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
600 glColor3fv(color[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
601 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
602 glColor3fv(color[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
603 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
604 #else // flat cube
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
605 glColor3f(1.0, 0.0, 0.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
606 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
607 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
608 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
609 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
610
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
611 glColor3f(0.0, 1.0, 0.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
612 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
613 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
614 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
615 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
616
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
617 glColor3f(0.0, 0.0, 1.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
618 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
619 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
620 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
621 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
622
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
623 glColor3f(0.0, 1.0, 1.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
624 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
625 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
626 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
627 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
628
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
629 glColor3f(1.0, 1.0, 0.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
630 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
631 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
632 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
633 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
634
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
635 glColor3f(1.0, 0.0, 1.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
636 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
637 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
638 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
639 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
640 #endif /* SHADED_CUBE */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
641
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
642 glEnd( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
643
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
644 glMatrixMode(GL_MODELVIEW);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
645 glRotatef(5.0, 1.0, 1.0, 1.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
646
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
647 /* Draw 2D logo onto the 3D display */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
648 if ( logo ) {
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
649 if ( USE_DEPRECATED_OPENGLBLIT ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
650 DrawLogoBlit();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
651 } else {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
652 DrawLogoTexture();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
653 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
654 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
655
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
656 SDL_GL_SwapBuffers( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
657
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
658 /* Check for error conditions. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
659 gl_error = glGetError( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
660
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
661 if( gl_error != GL_NO_ERROR ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
662 fprintf( stderr, "testgl: OpenGL error: %d\n", gl_error );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
663 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
664
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
665 sdl_error = SDL_GetError( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
666
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
667 if( sdl_error[0] != '\0' ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
668 fprintf(stderr, "testgl: SDL error '%s'\n", sdl_error);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
669 SDL_ClearError();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
670 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
671
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
672 /* Allow the user to see what's happening */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
673 if ( slowly ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
674 SDL_Delay( 20 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
675 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
676
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
677 /* Check if there's a pending event. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
678 while( SDL_PollEvent( &event ) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
679 done = HandleEvent(&event);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
680 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
681 ++frames;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
682 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
683
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
684 /* Print out the frames per second */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
685 this_time = SDL_GetTicks();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
686 if ( this_time != start_time ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
687 printf("%2.2f FPS\n",
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
688 ((float)frames/(this_time-start_time))*1000.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
689 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
690
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
691 if ( global_image ) {
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
692 SDL_FreeSurface(global_image);
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
693 global_image = NULL;
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
694 }
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
695 if ( global_texture ) {
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
696 glDeleteTextures( 1, &global_texture );
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
697 global_texture = 0;
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
698 }
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
699
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
700 /* Destroy our GL context, etc. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
701 SDL_Quit( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
702 return(0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
703 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
704
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
705 int main(int argc, char *argv[])
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
706 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
707 int i, logo;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
708 int numtests;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
709 int bpp = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
710 int slowly;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
711 float gamma = 0.0;
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
712 int noframe = 0;
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
713 int fsaa = 0;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
714
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
715 logo = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
716 slowly = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
717 numtests = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
718 for ( i=1; argv[i]; ++i ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
719 if ( strcmp(argv[i], "-twice") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
720 ++numtests;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
721 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
722 if ( strcmp(argv[i], "-logo") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
723 logo = 1;
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
724 USE_DEPRECATED_OPENGLBLIT = SDL_FALSE;
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
725 }
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
726 if ( strcmp(argv[i], "-logoblit") == 0 ) {
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
727 logo = 1;
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
728 USE_DEPRECATED_OPENGLBLIT = SDL_TRUE;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
729 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
730 if ( strcmp(argv[i], "-slow") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
731 slowly = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
732 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
733 if ( strcmp(argv[i], "-bpp") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
734 bpp = atoi(argv[++i]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
735 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
736 if ( strcmp(argv[i], "-gamma") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
737 gamma = (float)atof(argv[++i]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
738 }
320
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
739 if ( strcmp(argv[i], "-noframe") == 0 ) {
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
740 noframe = 1;
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
741 }
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
742 if ( strcmp(argv[i], "-fsaa") == 0 ) {
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
743 ++fsaa;
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
744 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
745 if ( strncmp(argv[i], "-h", 2) == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
746 printf(
910
4ab6d1fd028f Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents: 656
diff changeset
747 "Usage: %s [-twice] [-logo] [-slow] [-bpp n] [-gamma n] [-noframe] [-fsaa] [-fullscreen]\n",
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
748 argv[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
749 exit(0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
750 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
751 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
752 for ( i=0; i<numtests; ++i ) {
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
753 RunGLTest(argc, argv, logo, slowly, bpp, gamma, noframe, fsaa);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
754 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
755 return 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
756 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
757
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
758 #else /* HAVE_OPENGL */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
759
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
760 int main(int argc, char *argv[])
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
761 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
762 printf("No OpenGL support on this system\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
763 return 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
764 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
765
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
766 #endif /* HAVE_OPENGL */