Mercurial > sdl-ios-xcode
annotate test/testdyngl.c @ 3877:81f66f258d77 SDL-1.2
Fixed bug #281
------- Comment #2 From Christian Walther 2006-07-23 07:37 [reply] -------
Wow, that was an interesting bug to chase. It was a timing issue: it seems that
for some reason, a certain time must pass between ShowMenuBar() being called in
QZ_UnsetVideoMode() and the application quitting. Before rev. 1885, this delay
was provided by the slow hand-coded fade. With the asynchronous Core Graphics
fading introduced in rev. 1885, that delay was no longer present (most of the
time) and the bug became apparent. Adding an SDL_Delay(100) somewhere between
ShowMenuBar() and the end of QZ_VideoQuit() lowered the frequency of the bug
appearing from "almost every time" to "very rarely" here.
However, there is another solution: doing the ShowMenuBar() before releasing
the captured display instead of afterwards. Apparently, no delay is necessary
in that case, and it looks nicer to me anyway because it is the reverse order
of the way things are set up in the beginning: capture display - set video mode
- hide menu bar - ... - show menu bar - reset video mode - release captured
display. So, this is what the attached patch does.
In addition, I've taken the liberty of
- removing some unused code that I forgot to remove in rev. 1885,
- fixing two warnings about undeclared functions in SDL_QuartzVideo.m by
including OpenGL.h (whose name is a bit misleading - it only declares CGL
stuff, so there's no interference with SDL_opengl.h).
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 24 Sep 2006 01:27:40 +0000 |
parents | 871090feb7ad |
children | 782fd950bd46 c121d94672cb |
rev | line source |
---|---|
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 * Small SDL example to demonstrate dynamically loading |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 * OpenGL lib and functions |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 * |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 * (FYI it was supposed to look like snow in the wind or something...) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 * |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 * Compile with : |
847
0afe0e38e02c
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
842
diff
changeset
|
8 * gcc testdyngl.c `sdl-config --libs --cflags` -o testdyngl -DHAVE_OPENGL |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 * |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 * You can specify a different OpenGL lib on the command line, i.e. : |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 * ./testdyngl /usr/X11R6/lib/libGL.so.1.2 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 * or |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 * ./testdyngl /usr/lib/libGL.so.1.0.4496 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 * |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 */ |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 #include <stdio.h> |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 #include <stdlib.h> |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 #include "SDL.h" |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 |
1815
871090feb7ad
Fixed building with CodeWarrior on MacOS Classic
Sam Lantinga <slouken@libsdl.org>
parents:
1440
diff
changeset
|
22 #ifdef __MACOS__ |
871090feb7ad
Fixed building with CodeWarrior on MacOS Classic
Sam Lantinga <slouken@libsdl.org>
parents:
1440
diff
changeset
|
23 #define HAVE_OPENGL |
871090feb7ad
Fixed building with CodeWarrior on MacOS Classic
Sam Lantinga <slouken@libsdl.org>
parents:
1440
diff
changeset
|
24 #endif |
871090feb7ad
Fixed building with CodeWarrior on MacOS Classic
Sam Lantinga <slouken@libsdl.org>
parents:
1440
diff
changeset
|
25 |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 #ifdef HAVE_OPENGL |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 #include "SDL_opengl.h" |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
30 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
31 static void quit(int rc) |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
32 { |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
33 SDL_Quit(); |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
34 exit(rc); |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
35 } |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
36 |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
37 void* get_funcaddr(const char* p) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
39 void* f=SDL_GL_GetProcAddress(p); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 if (f) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 return f; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 else |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
45 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 printf("Unable to get function pointer for %s\n",p); |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
47 quit(1); |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 } |
1439
4d3bb026cd16
Fixed warnings in -pedantic mode
Sam Lantinga <slouken@libsdl.org>
parents:
1436
diff
changeset
|
49 return NULL; |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
50 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
51 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
52 typedef struct |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 { |
885
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
54 void(APIENTRY*glBegin)(GLenum); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
55 void(APIENTRY*glEnd)(); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
56 void(APIENTRY*glVertex3f)(GLfloat, GLfloat, GLfloat); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
57 void(APIENTRY*glClearColor)(GLfloat, GLfloat, GLfloat, GLfloat); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
58 void(APIENTRY*glClear)(GLbitfield); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
59 void(APIENTRY*glDisable)(GLenum); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
60 void(APIENTRY*glEnable)(GLenum); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
61 void(APIENTRY*glColor4ub)(GLubyte,GLubyte,GLubyte,GLubyte); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
62 void(APIENTRY*glPointSize)(GLfloat); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
63 void(APIENTRY*glHint)(GLenum,GLenum); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
64 void(APIENTRY*glBlendFunc)(GLenum,GLenum); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
65 void(APIENTRY*glMatrixMode)(GLenum); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
66 void(APIENTRY*glLoadIdentity)(); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
67 void(APIENTRY*glOrtho)(GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
68 void(APIENTRY*glRotatef)(GLfloat,GLfloat,GLfloat,GLfloat); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
69 void(APIENTRY*glViewport)(GLint,GLint,GLsizei,GLsizei); |
9f6ad2286011
Date: Wed, 28 Apr 2004 16:52:41 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
847
diff
changeset
|
70 void(APIENTRY*glFogf)(GLenum,GLfloat); |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
72 glfuncs; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
73 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
74 void init_glfuncs(glfuncs* f) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
76 f->glBegin=get_funcaddr("glBegin"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
77 f->glEnd=get_funcaddr("glEnd"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
78 f->glVertex3f=get_funcaddr("glVertex3f"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 f->glClearColor=get_funcaddr("glClearColor"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 f->glClear=get_funcaddr("glClear"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
81 f->glDisable=get_funcaddr("glDisable"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 f->glEnable=get_funcaddr("glEnable"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 f->glColor4ub=get_funcaddr("glColor4ub"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 f->glPointSize=get_funcaddr("glPointSize"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
85 f->glHint=get_funcaddr("glHint"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
86 f->glBlendFunc=get_funcaddr("glBlendFunc"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
87 f->glMatrixMode=get_funcaddr("glMatrixMode"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
88 f->glLoadIdentity=get_funcaddr("glLoadIdentity"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
89 f->glOrtho=get_funcaddr("glOrtho"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
90 f->glRotatef=get_funcaddr("glRotatef"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
91 f->glViewport=get_funcaddr("glViewport"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
92 f->glFogf=get_funcaddr("glFogf"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
93 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
94 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
95 #define NB_PIXELS 1000 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
96 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
97 int main(int argc,char *argv[]) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
98 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
99 glfuncs f; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 int i; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
101 SDL_Event event; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
102 int done=0; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
103 GLfloat pixels[NB_PIXELS*3]; |
1440
ae78374ac894
Passing a NULL GL library does the right thing nowadays.
Sam Lantinga <slouken@libsdl.org>
parents:
1439
diff
changeset
|
104 const char *gl_library = NULL; /* Use the default GL library */ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1386
diff
changeset
|
105 |
842
0eec9985767d
Load the correct library on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
839
diff
changeset
|
106 if (argv[1]) { |
0eec9985767d
Load the correct library on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
839
diff
changeset
|
107 gl_library = argv[1]; |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
108 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
109 |
842
0eec9985767d
Load the correct library on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
839
diff
changeset
|
110 if (SDL_Init(SDL_INIT_VIDEO)<0) |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
111 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
112 printf("Unable to init SDL : %s\n",SDL_GetError()); |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
113 return(1); |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
114 } |
990
8e20c48a9c13
Restore everything when a function pointer is NULL
Patrice Mandin <patmandin@gmail.com>
parents:
910
diff
changeset
|
115 |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
116 if (SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1)<0) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
117 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
118 printf("Unable to set GL attribute : %s\n",SDL_GetError()); |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
119 quit(1); |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
120 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
121 |
842
0eec9985767d
Load the correct library on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
839
diff
changeset
|
122 if (SDL_GL_LoadLibrary(gl_library)<0) |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
123 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
124 printf("Unable to dynamically open GL lib : %s\n",SDL_GetError()); |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
125 quit(1); |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
126 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
127 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
128 if (SDL_SetVideoMode(640,480,0,SDL_OPENGL)==NULL) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
129 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
130 printf("Unable to open video mode : %s\n",SDL_GetError()); |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
990
diff
changeset
|
131 quit(1); |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
132 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
133 |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
885
diff
changeset
|
134 /* Set the window manager title bar */ |
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
885
diff
changeset
|
135 SDL_WM_SetCaption( "SDL Dynamic OpenGL Loading Test", "testdyngl" ); |
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
885
diff
changeset
|
136 |
839
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
137 init_glfuncs(&f); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
138 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
139 for(i=0;i<NB_PIXELS;i++) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
140 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
141 pixels[3*i]=rand()%250-125; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
142 pixels[3*i+1]=rand()%250-125; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
143 pixels[3*i+2]=rand()%250-125; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
144 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
145 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
146 f.glViewport(0,0,640,480); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
147 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
148 f.glMatrixMode(GL_PROJECTION); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
149 f.glLoadIdentity(); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
150 f.glOrtho(-100,100,-100,100,-500,500); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
151 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
152 f.glMatrixMode(GL_MODELVIEW); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
153 f.glLoadIdentity(); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
154 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
155 f.glEnable(GL_DEPTH_TEST); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
156 f.glDisable(GL_TEXTURE_2D); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
157 f.glEnable(GL_BLEND); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
158 f.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
159 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
160 f.glClearColor(0.0f,0.0f,0.0f,0.0f); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
161 f.glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
162 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
163 f.glEnable(GL_POINT_SMOOTH); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
164 f.glHint(GL_POINT_SMOOTH_HINT,GL_NICEST); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
165 f.glPointSize(5.0f); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
166 f.glEnable(GL_FOG); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
167 f.glFogf(GL_FOG_START,-500); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
168 f.glFogf(GL_FOG_END,500); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
169 f.glFogf(GL_FOG_DENSITY,0.005); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
170 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
171 do |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
172 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
173 f.glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
174 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
175 f.glRotatef(2.0,1.0,1.0,1.0); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
176 f.glRotatef(1.0,0.0,1.0,1.0); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
177 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
178 f.glColor4ub(255,255,255,255); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
179 f.glBegin(GL_POINTS); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
180 for(i=0;i<NB_PIXELS;i++) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
181 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
182 f.glVertex3f(pixels[3*i],pixels[3*i+1],pixels[3*i+2]); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
183 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
184 f.glEnd(); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
185 SDL_GL_SwapBuffers(); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
186 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
187 while(SDL_PollEvent(&event)) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
188 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
189 if(event.type & SDL_KEYDOWN) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
190 done=1; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
191 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
192 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
193 SDL_Delay(20); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
194 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
195 while(!done); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
196 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
197 SDL_Quit(); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
198 return 0; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
199 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
200 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
201 #else /* HAVE_OPENGL */ |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
202 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
203 int main(int argc, char *argv[]) |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
204 { |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
205 printf("No OpenGL support on this system\n"); |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
206 return 1; |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
207 } |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
208 |
7b255f0290da
Added a test program for dynamically loading OpenGL
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
209 #endif /* HAVE_OPENGL */ |