annotate test/testgl.c @ 4106:12bb6311fd5d SDL-1.2

Hans de Goede fixed bug #495 When running boswars: http://www.boswars.org/ on a machine with intel integrathed graphics it crashes when it tries to play the initial theora splashscreen video: X Error of failed request: BadAlloc (insufficient resources for operation) Major opcode of failed request: 140 (XVideo) Minor opcode of failed request: 19 () Serial number of failed request: 25 Current serial number in output stream: 26 boswars: xcb_xlib.c:41: xcb_xlib_lock: Assertion `!c->xlib.lock' failed. Aborted I recognized this problem from a few years back, when I encountered it while working on the Xv blitter for xmame. The problem is that for some reason creation the Xvport and XvImage succeeds, and failure (lack of resources / hw capability?) is only indicated during the first XvPut[Shm]Image. I've written a patch for SDL using the work around for this I developed for xmame (and which is still used successfully in xmame after many years of usage). I'll admit it isn't very pretty, but after investigating several possibilities this was the best option, any other fixes would need changes to the SDL api and abi.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 29 Dec 2007 02:23:48 +0000
parents 9d940db55a91
children c121d94672cb
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
1815
871090feb7ad Fixed building with CodeWarrior on MacOS Classic
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
8 #ifdef __MACOS__
871090feb7ad Fixed building with CodeWarrior on MacOS Classic
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
9 #define HAVE_OPENGL
871090feb7ad Fixed building with CodeWarrior on MacOS Classic
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
10 #endif
871090feb7ad Fixed building with CodeWarrior on MacOS Classic
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
11
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
12 #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
13
214
0e5d6dd77bda Added platform independent OpenGL header - SDL_opengl.h
Sam Lantinga <slouken@libsdl.org>
parents: 0
diff changeset
14 #include "SDL_opengl.h"
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
15
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
16 /* 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
17 #define SHADED_CUBE
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
18
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
19 /* 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
20 #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
21
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
22 /* 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
23 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
24 */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
25
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
26 static SDL_bool USE_DEPRECATED_OPENGLBLIT = SDL_FALSE;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
27
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
28 static SDL_Surface *global_image = NULL;
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
29 static GLuint global_texture = 0;
933
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
30 static GLuint cursor_texture = 0;
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
31
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
32 /**********************************************************************/
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
33
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
34 void HotKey_ToggleFullScreen(void)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
35 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
36 SDL_Surface *screen;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
37
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
38 screen = SDL_GetVideoSurface();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
39 if ( SDL_WM_ToggleFullScreen(screen) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
40 printf("Toggled fullscreen mode - now %s\n",
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
41 (screen->flags&SDL_FULLSCREEN) ? "fullscreen" : "windowed");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
42 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
43 printf("Unable to toggle fullscreen mode\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
44 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
45 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
46
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
47 void HotKey_ToggleGrab(void)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
48 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
49 SDL_GrabMode mode;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
50
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
51 printf("Ctrl-G: toggling input grab!\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
52 mode = SDL_WM_GrabInput(SDL_GRAB_QUERY);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
53 if ( mode == SDL_GRAB_ON ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
54 printf("Grab was on\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
55 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
56 printf("Grab was off\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
57 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
58 mode = SDL_WM_GrabInput(!mode);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
59 if ( mode == SDL_GRAB_ON ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
60 printf("Grab is now on\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
61 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
62 printf("Grab is now off\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
63 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
64 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
65
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
66 void HotKey_Iconify(void)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
67 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
68 printf("Ctrl-Z: iconifying window!\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
69 SDL_WM_IconifyWindow();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
70 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
71
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
72 int HandleEvent(SDL_Event *event)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
73 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
74 int done;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
75
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
76 done = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
77 switch( event->type ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
78 case SDL_ACTIVEEVENT:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
79 /* See what happened */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
80 printf( "app %s ", event->active.gain ? "gained" : "lost" );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
81 if ( event->active.state & SDL_APPACTIVE ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
82 printf( "active " );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
83 } else if ( event->active.state & SDL_APPMOUSEFOCUS ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
84 printf( "mouse " );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
85 } else if ( event->active.state & SDL_APPINPUTFOCUS ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
86 printf( "input " );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
87 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
88 printf( "focus\n" );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
89 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
90
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
91
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
92 case SDL_KEYDOWN:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
93 if ( event->key.keysym.sym == SDLK_ESCAPE ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
94 done = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
95 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
96 if ( (event->key.keysym.sym == SDLK_g) &&
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
97 (event->key.keysym.mod & KMOD_CTRL) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
98 HotKey_ToggleGrab();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
99 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
100 if ( (event->key.keysym.sym == SDLK_z) &&
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
101 (event->key.keysym.mod & KMOD_CTRL) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
102 HotKey_Iconify();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
103 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
104 if ( (event->key.keysym.sym == SDLK_RETURN) &&
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
105 (event->key.keysym.mod & KMOD_ALT) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
106 HotKey_ToggleFullScreen();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
107 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
108 printf("key '%s' pressed\n",
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
109 SDL_GetKeyName(event->key.keysym.sym));
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
110 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
111 case SDL_QUIT:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
112 done = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
113 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
114 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
115 return(done);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
116 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
117
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
118 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
119 {
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
120 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
121
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
122 /* 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
123 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
124 */
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
125 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
126 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
127 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
128 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
129
243
cf4944faad96 Fixed testgl so that SDL_GL_Enter2DMode() allows alpha blending
Sam Lantinga <slouken@libsdl.org>
parents: 234
diff changeset
130 /* 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
131 glEnable(GL_BLEND);
cf4944faad96 Fixed testgl so that SDL_GL_Enter2DMode() allows alpha blending
Sam Lantinga <slouken@libsdl.org>
parents: 234
diff changeset
132 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
133
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
134 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
135
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
136 glMatrixMode(GL_PROJECTION);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
137 glPushMatrix();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
138 glLoadIdentity();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
139
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
140 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
141
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
142 glMatrixMode(GL_MODELVIEW);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
143 glPushMatrix();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
144 glLoadIdentity();
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 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
147 }
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 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
150 {
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
151 glMatrixMode(GL_MODELVIEW);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
152 glPopMatrix();
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 glMatrixMode(GL_PROJECTION);
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
155 glPopMatrix();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
156
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
157 glPopAttrib();
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
158 }
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
159
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
160 /* 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
161 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
162 {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
163 int value = 1;
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 while ( value < input ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
166 value <<= 1;
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 return value;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
169 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
170
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
171 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
172 {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
173 GLuint texture;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
174 int w, h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
175 SDL_Surface *image;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
176 SDL_Rect area;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
177 Uint32 saved_flags;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
178 Uint8 saved_alpha;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
179
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
180 /* 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
181 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
182 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
183 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
184 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
185 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
186 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
187
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
188 image = SDL_CreateRGBSurface(
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
189 SDL_SWSURFACE,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
190 w, h,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
191 32,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
192 #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
193 0x000000FF,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
194 0x0000FF00,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
195 0x00FF0000,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
196 0xFF000000
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
197 #else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
198 0xFF000000,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
199 0x00FF0000,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
200 0x0000FF00,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
201 0x000000FF
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
202 #endif
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
203 );
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
204 if ( image == NULL ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
205 return 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
206 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
207
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
208 /* 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
209 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
210 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
211 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
212 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
213 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
214
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
215 /* 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
216 area.x = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
217 area.y = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
218 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
219 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
220 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
221
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
222 /* 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
223 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
224 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
225 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
226
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
227 /* 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
228 glGenTextures(1, &texture);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
229 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
230 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
231 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
232 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
233 0,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
234 GL_RGBA,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
235 w, h,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
236 0,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
237 GL_RGBA,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
238 GL_UNSIGNED_BYTE,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
239 image->pixels);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
240 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
241
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
242 return texture;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
243 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
244
933
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
245 void DrawLogoCursor(void)
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
246 {
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
247 static GLfloat texMinX, texMinY;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
248 static GLfloat texMaxX, texMaxY;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
249 static int w, h;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
250 int x, y;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
251
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
252 if ( ! cursor_texture ) {
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
253 SDL_Surface *image;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
254 GLfloat texcoord[4];
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
255
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
256 /* Load the image (could use SDL_image library here) */
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
257 image = SDL_LoadBMP(LOGO_FILE);
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
258 if ( image == NULL ) {
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
259 return;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
260 }
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
261 w = image->w;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
262 h = image->h;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
263
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
264 /* Convert the image into an OpenGL texture */
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
265 cursor_texture = SDL_GL_LoadTexture(image, texcoord);
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
266
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
267 /* Make texture coordinates easy to understand */
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
268 texMinX = texcoord[0];
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
269 texMinY = texcoord[1];
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
270 texMaxX = texcoord[2];
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
271 texMaxY = texcoord[3];
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
272
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
273 /* We don't need the original image anymore */
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
274 SDL_FreeSurface(image);
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
275
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
276 /* Make sure that the texture conversion is okay */
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
277 if ( ! cursor_texture ) {
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
278 return;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
279 }
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
280 }
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
281
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
282 /* Move the image around */
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
283 SDL_GetMouseState(&x, &y);
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
284 x -= w/2;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
285 y -= h/2;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
286
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
287 /* Show the image on the screen */
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
288 SDL_GL_Enter2DMode();
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
289 glBindTexture(GL_TEXTURE_2D, cursor_texture);
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
290 glBegin(GL_TRIANGLE_STRIP);
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
291 glTexCoord2f(texMinX, texMinY); glVertex2i(x, y );
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
292 glTexCoord2f(texMaxX, texMinY); glVertex2i(x+w, y );
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
293 glTexCoord2f(texMinX, texMaxY); glVertex2i(x, y+h);
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
294 glTexCoord2f(texMaxX, texMaxY); glVertex2i(x+w, y+h);
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
295 glEnd();
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
296 SDL_GL_Leave2DMode();
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
297 }
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
298
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
299 void DrawLogoTexture(void)
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
300 {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
301 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
302 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
303 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
304 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
305 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
306 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
307 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
308
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
309 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
310
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
311 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
312 SDL_Surface *image;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
313 GLfloat texcoord[4];
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 /* 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
316 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
317 if ( image == NULL ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
318 return;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
319 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
320 w = image->w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
321 h = image->h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
322
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
323 /* Convert the image into an OpenGL texture */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
324 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
325
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
326 /* 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
327 texMinX = texcoord[0];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
328 texMinY = texcoord[1];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
329 texMaxX = texcoord[2];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
330 texMaxY = texcoord[3];
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
331
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
332 /* 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
333 SDL_FreeSurface(image);
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
334
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
335 /* Make sure that the texture conversion is okay */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
336 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
337 return;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
338 }
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
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
341 /* 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
342 x += delta_x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
343 if ( x < 0 ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
344 x = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
345 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
346 } else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
347 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
348 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
349 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
350 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
351 y += delta_y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
352 if ( y < 0 ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
353 y = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
354 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
355 } else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
356 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
357 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
358 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
359 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
360
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
361 /* 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
362 SDL_GL_Enter2DMode();
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
363 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
364 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
365 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
366 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
367 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
368 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
369 glEnd();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
370 SDL_GL_Leave2DMode();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
371 }
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
372
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
373 /* 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
374 void DrawLogoBlit(void)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
375 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
376 static int x = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
377 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
378 static int w, h;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
379 static int delta_x = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
380 static int delta_y = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
381
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
382 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
383 SDL_Surface *screen = SDL_GetVideoSurface();
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
384
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
385 if ( global_image == NULL ) {
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
386 SDL_Surface *temp;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
387
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
388 /* 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
389 temp = SDL_LoadBMP(LOGO_FILE);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
390 if ( temp == NULL ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
391 return;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
392 }
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
393 w = temp->w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
394 h = temp->h;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
395
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
396 /* Convert the image into the screen format */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
397 global_image = SDL_CreateRGBSurface(
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
398 SDL_SWSURFACE,
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
399 w, h,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
400 screen->format->BitsPerPixel,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
401 screen->format->Rmask,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
402 screen->format->Gmask,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
403 screen->format->Bmask,
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
404 screen->format->Amask);
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
405 if ( global_image ) {
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
406 SDL_BlitSurface(temp, NULL, global_image, NULL);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
407 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
408 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
409
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
410 /* Make sure that the texture conversion is okay */
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
411 if ( ! global_image ) {
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
412 return;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
413 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
414 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
415
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
416 /* Move the image around
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
417 Note that we do not clear the old position. This is because we
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
418 perform a glClear() which clears the framebuffer and then only
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
419 update the new area.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
420 Note that you can also achieve interesting effects by modifying
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
421 the screen surface alpha channel. It's set to 255 by default..
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
422 */
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
423 x += delta_x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
424 if ( x < 0 ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
425 x = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
426 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
427 } else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
428 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
429 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
430 delta_x = -delta_x;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
431 }
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
432 y += delta_y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
433 if ( y < 0 ) {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
434 y = 0;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
435 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
436 } else
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
437 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
438 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
439 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
440 }
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
441 dst.x = x;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
442 dst.y = y;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
443 dst.w = w;
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
444 dst.h = h;
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
445 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
446
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
447 /* 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
448 SDL_UpdateRects(screen, 1, &dst);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
449 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
450
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
451 int RunGLTest( int argc, char* argv[],
1737
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
452 int logo, int logocursor, int slowly, int bpp, float gamma, int noframe, int fsaa, int sync, int accel )
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
453 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
454 int i;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
455 int rgb_size[3];
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
456 int w = 640;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
457 int h = 480;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
458 int done = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
459 int frames;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
460 Uint32 start_time, this_time;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
461 float color[8][3]= {{ 1.0, 1.0, 0.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
462 { 1.0, 0.0, 0.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
463 { 0.0, 0.0, 0.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
464 { 0.0, 1.0, 0.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
465 { 0.0, 1.0, 1.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
466 { 1.0, 1.0, 1.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
467 { 1.0, 0.0, 1.0},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
468 { 0.0, 0.0, 1.0}};
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
469 float cube[8][3]= {{ 0.5, 0.5, -0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
470 { 0.5, -0.5, -0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
471 {-0.5, -0.5, -0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
472 {-0.5, 0.5, -0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
473 {-0.5, 0.5, 0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
474 { 0.5, 0.5, 0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
475 { 0.5, -0.5, 0.5},
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
476 {-0.5, -0.5, 0.5}};
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
477 Uint32 video_flags;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
478 int value;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
479
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
480 if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
481 fprintf(stderr,"Couldn't initialize SDL: %s\n",SDL_GetError());
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
482 exit( 1 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
483 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
484
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
485 /* See if we should detect the display depth */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
486 if ( bpp == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
487 if ( SDL_GetVideoInfo()->vfmt->BitsPerPixel <= 8 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
488 bpp = 8;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
489 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
490 bpp = 16; /* More doesn't seem to work */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
491 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
492 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
493
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
494 /* 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
495 if ( logo && USE_DEPRECATED_OPENGLBLIT ) {
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
496 video_flags = SDL_OPENGLBLIT;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
497 } else {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
498 video_flags = SDL_OPENGL;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
499 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
500 for ( i=1; argv[i]; ++i ) {
1265
670e74bf5cc8 Date: Mon, 22 Sep 2003 23:31:54 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 933
diff changeset
501 if ( strcmp(argv[i], "-fullscreen") == 0 ) {
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
502 video_flags |= SDL_FULLSCREEN;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
503 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
504 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
505
320
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
506 if (noframe) {
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
507 video_flags |= SDL_NOFRAME;
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
508 }
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
509
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
510 /* Initialize the display */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
511 switch (bpp) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
512 case 8:
363
ca0b4ba5313e Date: Thu, 18 Apr 2002 13:50:53 -0700
Sam Lantinga <slouken@libsdl.org>
parents: 320
diff changeset
513 rgb_size[0] = 3;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
514 rgb_size[1] = 3;
363
ca0b4ba5313e Date: Thu, 18 Apr 2002 13:50:53 -0700
Sam Lantinga <slouken@libsdl.org>
parents: 320
diff changeset
515 rgb_size[2] = 2;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
516 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
517 case 15:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
518 case 16:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
519 rgb_size[0] = 5;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
520 rgb_size[1] = 5;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
521 rgb_size[2] = 5;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
522 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
523 default:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
524 rgb_size[0] = 8;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
525 rgb_size[1] = 8;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
526 rgb_size[2] = 8;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
527 break;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
528 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
529 SDL_GL_SetAttribute( SDL_GL_RED_SIZE, rgb_size[0] );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
530 SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, rgb_size[1] );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
531 SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, rgb_size[2] );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
532 SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
533 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
534 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
535 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
536 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
537 }
1737
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
538 if ( accel ) {
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
539 SDL_GL_SetAttribute( SDL_GL_ACCELERATED_VISUAL, 1 );
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
540 }
1736
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
541 if ( sync ) {
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
542 SDL_GL_SetAttribute( SDL_GL_SWAP_CONTROL, 1 );
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
543 } else {
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
544 SDL_GL_SetAttribute( SDL_GL_SWAP_CONTROL, 0 );
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
545 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
546 if ( SDL_SetVideoMode( w, h, bpp, video_flags ) == NULL ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
547 fprintf(stderr, "Couldn't set GL mode: %s\n", SDL_GetError());
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
548 SDL_Quit();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
549 exit(1);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
550 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
551
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
552 printf("Screen BPP: %d\n", SDL_GetVideoSurface()->format->BitsPerPixel);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
553 printf("\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
554 printf( "Vendor : %s\n", glGetString( GL_VENDOR ) );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
555 printf( "Renderer : %s\n", glGetString( GL_RENDERER ) );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
556 printf( "Version : %s\n", glGetString( GL_VERSION ) );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
557 printf( "Extensions : %s\n", glGetString( GL_EXTENSIONS ) );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
558 printf("\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
559
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
560 SDL_GL_GetAttribute( SDL_GL_RED_SIZE, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
561 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
562 SDL_GL_GetAttribute( SDL_GL_GREEN_SIZE, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
563 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
564 SDL_GL_GetAttribute( SDL_GL_BLUE_SIZE, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
565 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
566 SDL_GL_GetAttribute( SDL_GL_DEPTH_SIZE, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
567 printf( "SDL_GL_DEPTH_SIZE: requested %d, got %d\n", bpp, value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
568 SDL_GL_GetAttribute( SDL_GL_DOUBLEBUFFER, &value );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
569 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
570 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
571 SDL_GL_GetAttribute( SDL_GL_MULTISAMPLEBUFFERS, &value );
1736
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
572 printf("SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value );
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
573 SDL_GL_GetAttribute( SDL_GL_MULTISAMPLESAMPLES, &value );
1736
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
574 printf("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, value );
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
575 }
1737
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
576 if ( accel ) {
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
577 SDL_GL_GetAttribute( SDL_GL_ACCELERATED_VISUAL, &value );
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
578 printf( "SDL_GL_ACCELERATED_VISUAL: requested 1, got %d\n", value );
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
579 }
1736
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
580 if ( sync ) {
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
581 SDL_GL_GetAttribute( SDL_GL_SWAP_CONTROL, &value );
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
582 printf( "SDL_GL_SWAP_CONTROL: 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
583 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
584
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
585 /* Set the window manager title bar */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
586 SDL_WM_SetCaption( "SDL GL test", "testgl" );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
587
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
588 /* Set the gamma for the window */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
589 if ( gamma != 0.0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
590 SDL_SetGamma(gamma, gamma, gamma);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
591 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
592
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
593 glViewport( 0, 0, w, h );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
594 glMatrixMode( GL_PROJECTION );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
595 glLoadIdentity( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
596
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
597 glOrtho( -2.0, 2.0, -2.0, 2.0, -20.0, 20.0 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
598
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
599 glMatrixMode( GL_MODELVIEW );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
600 glLoadIdentity( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
601
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
602 glEnable(GL_DEPTH_TEST);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
603
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
604 glDepthFunc(GL_LESS);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
605
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
606 glShadeModel(GL_SMOOTH);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
607
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
608 /* Loop until done. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
609 start_time = SDL_GetTicks();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
610 frames = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
611 while( !done ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
612 GLenum gl_error;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
613 char* sdl_error;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
614 SDL_Event event;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
615
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
616 /* Do our drawing, too. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
617 glClearColor( 0.0, 0.0, 0.0, 1.0 );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
618 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
619
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
620 glBegin( GL_QUADS );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
621
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
622 #ifdef SHADED_CUBE
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
623 glColor3fv(color[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
624 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
625 glColor3fv(color[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
626 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
627 glColor3fv(color[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
628 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
629 glColor3fv(color[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
630 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
631
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
632 glColor3fv(color[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
633 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
634 glColor3fv(color[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
635 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
636 glColor3fv(color[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
637 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
638 glColor3fv(color[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
639 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
640
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
641 glColor3fv(color[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
642 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
643 glColor3fv(color[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
644 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
645 glColor3fv(color[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
646 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
647 glColor3fv(color[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
648 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
649
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
650 glColor3fv(color[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
651 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
652 glColor3fv(color[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
653 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
654 glColor3fv(color[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
655 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
656 glColor3fv(color[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
657 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
658
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
659 glColor3fv(color[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
660 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
661 glColor3fv(color[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
662 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
663 glColor3fv(color[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
664 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
665 glColor3fv(color[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
666 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
667
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
668 glColor3fv(color[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
669 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
670 glColor3fv(color[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
671 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
672 glColor3fv(color[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
673 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
674 glColor3fv(color[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
675 glVertex3fv(cube[7]);
1439
4d3bb026cd16 Fixed warnings in -pedantic mode
Sam Lantinga <slouken@libsdl.org>
parents: 1265
diff changeset
676 #else /* flat cube */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
677 glColor3f(1.0, 0.0, 0.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
678 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
679 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
680 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
681 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
682
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
683 glColor3f(0.0, 1.0, 0.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
684 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
685 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
686 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
687 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
688
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
689 glColor3f(0.0, 0.0, 1.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
690 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
691 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
692 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
693 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
694
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
695 glColor3f(0.0, 1.0, 1.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
696 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
697 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
698 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
699 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
700
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
701 glColor3f(1.0, 1.0, 0.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
702 glVertex3fv(cube[5]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
703 glVertex3fv(cube[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
704 glVertex3fv(cube[3]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
705 glVertex3fv(cube[4]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
706
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
707 glColor3f(1.0, 0.0, 1.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
708 glVertex3fv(cube[6]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
709 glVertex3fv(cube[1]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
710 glVertex3fv(cube[2]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
711 glVertex3fv(cube[7]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
712 #endif /* SHADED_CUBE */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
713
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
714 glEnd( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
715
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
716 glMatrixMode(GL_MODELVIEW);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
717 glRotatef(5.0, 1.0, 1.0, 1.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
718
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
719 /* Draw 2D logo onto the 3D display */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
720 if ( logo ) {
234
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
721 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
722 DrawLogoBlit();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
723 } else {
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
724 DrawLogoTexture();
1af4be6a73cd Modified the logo texture load to accept any width/height image
Sam Lantinga <slouken@libsdl.org>
parents: 233
diff changeset
725 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
726 }
933
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
727 if ( logocursor ) {
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
728 DrawLogoCursor();
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
729 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
730
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
731 SDL_GL_SwapBuffers( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
732
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
733 /* Check for error conditions. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
734 gl_error = glGetError( );
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( gl_error != GL_NO_ERROR ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
737 fprintf( stderr, "testgl: OpenGL error: %d\n", gl_error );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
738 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
739
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
740 sdl_error = SDL_GetError( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
741
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
742 if( sdl_error[0] != '\0' ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
743 fprintf(stderr, "testgl: SDL error '%s'\n", sdl_error);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
744 SDL_ClearError();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
745 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
746
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
747 /* Allow the user to see what's happening */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
748 if ( slowly ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
749 SDL_Delay( 20 );
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 /* Check if there's a pending event. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
753 while( SDL_PollEvent( &event ) ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
754 done = HandleEvent(&event);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
755 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
756 ++frames;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
757 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
758
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
759 /* Print out the frames per second */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
760 this_time = SDL_GetTicks();
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
761 if ( this_time != start_time ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
762 printf("%2.2f FPS\n",
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
763 ((float)frames/(this_time-start_time))*1000.0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
764 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
765
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
766 if ( global_image ) {
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
767 SDL_FreeSurface(global_image);
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
768 global_image = NULL;
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
769 }
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
770 if ( global_texture ) {
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
771 glDeleteTextures( 1, &global_texture );
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
772 global_texture = 0;
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
773 }
933
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
774 if ( cursor_texture ) {
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
775 glDeleteTextures( 1, &cursor_texture );
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
776 cursor_texture = 0;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
777 }
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
778
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
779 /* Destroy our GL context, etc. */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
780 SDL_Quit( );
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
781 return(0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
782 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
783
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
784 int main(int argc, char *argv[])
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
785 {
1439
4d3bb026cd16 Fixed warnings in -pedantic mode
Sam Lantinga <slouken@libsdl.org>
parents: 1265
diff changeset
786 int i, logo, logocursor = 0;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
787 int numtests;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
788 int bpp = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
789 int slowly;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
790 float gamma = 0.0;
492
c59692dcdce0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 363
diff changeset
791 int noframe = 0;
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
792 int fsaa = 0;
1737
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
793 int accel = 0;
1736
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
794 int sync = 0;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
795
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
796 logo = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
797 slowly = 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
798 numtests = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
799 for ( i=1; argv[i]; ++i ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
800 if ( strcmp(argv[i], "-twice") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
801 ++numtests;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
802 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
803 if ( strcmp(argv[i], "-logo") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
804 logo = 1;
233
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
805 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
806 }
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
807 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
808 logo = 1;
5b42a7f5fab3 SDL_OPENGLBLIT is deprecated, show the "right way" of doing things
Sam Lantinga <slouken@libsdl.org>
parents: 221
diff changeset
809 USE_DEPRECATED_OPENGLBLIT = SDL_TRUE;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
810 }
933
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
811 if ( strcmp(argv[i], "-logocursor") == 0 ) {
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
812 logocursor = 1;
4272450dd8d0 Added an option to show the logo at the cursor position for debugging
Sam Lantinga <slouken@libsdl.org>
parents: 910
diff changeset
813 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
814 if ( strcmp(argv[i], "-slow") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
815 slowly = 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
816 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
817 if ( strcmp(argv[i], "-bpp") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
818 bpp = atoi(argv[++i]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
819 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
820 if ( strcmp(argv[i], "-gamma") == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
821 gamma = (float)atof(argv[++i]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
822 }
320
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
823 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
824 noframe = 1;
66f815c147ed Date: Thu, 28 Mar 2002 09:20:03 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 243
diff changeset
825 }
655
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
826 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
827 ++fsaa;
9c42ee1b7d77 Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 492
diff changeset
828 }
1737
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
829 if ( strcmp(argv[i], "-accel") == 0 ) {
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
830 ++accel;
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
831 }
1736
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
832 if ( strcmp(argv[i], "-sync") == 0 ) {
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
833 ++sync;
3b2a92126f4d Implemented bug #2, 117:
Sam Lantinga <slouken@libsdl.org>
parents: 1439
diff changeset
834 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
835 if ( strncmp(argv[i], "-h", 2) == 0 ) {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
836 printf(
1880
9d940db55a91 Fixed bug #260
Sam Lantinga <slouken@libsdl.org>
parents: 1815
diff changeset
837 "Usage: %s [-twice] [-logo] [-logocursor] [-slow] [-bpp n] [-gamma n] [-noframe] [-fsaa] [-accel] [-sync] [-fullscreen]\n",
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
838 argv[0]);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
839 exit(0);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
840 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
841 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
842 for ( i=0; i<numtests; ++i ) {
1737
eacc5bc01d1c Implemented bug #5
Sam Lantinga <slouken@libsdl.org>
parents: 1736
diff changeset
843 RunGLTest(argc, argv, logo, logocursor, slowly, bpp, gamma, noframe, fsaa, sync, accel);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
844 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
845 return 0;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
846 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
847
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
848 #else /* HAVE_OPENGL */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
849
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
850 int main(int argc, char *argv[])
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
851 {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
852 printf("No OpenGL support on this system\n");
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
853 return 1;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
854 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
855
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
856 #endif /* HAVE_OPENGL */