Mercurial > sdl-ios-xcode
diff test/testdyngl.c @ 1895:c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 10 Jul 2006 21:04:37 +0000 |
parents | 871090feb7ad |
children | 7b53a8401195 |
line wrap: on
line diff
--- a/test/testdyngl.c Thu Jul 06 18:01:37 2006 +0000 +++ b/test/testdyngl.c Mon Jul 10 21:04:37 2006 +0000 @@ -28,182 +28,177 @@ #include "SDL_opengl.h" /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void quit(int rc) +static void +quit(int rc) { - SDL_Quit(); - exit(rc); + SDL_Quit(); + exit(rc); } -void* get_funcaddr(const char* p) +void * +get_funcaddr(const char *p) { - void* f=SDL_GL_GetProcAddress(p); - if (f) - { - return f; - } - else - { - printf("Unable to get function pointer for %s\n",p); - quit(1); - } - return NULL; + void *f = SDL_GL_GetProcAddress(p); + if (f) { + return f; + } else { + printf("Unable to get function pointer for %s\n", p); + quit(1); + } + return NULL; } typedef struct { - void(APIENTRY*glBegin)(GLenum); - void(APIENTRY*glEnd)(); - void(APIENTRY*glVertex3f)(GLfloat, GLfloat, GLfloat); - void(APIENTRY*glClearColor)(GLfloat, GLfloat, GLfloat, GLfloat); - void(APIENTRY*glClear)(GLbitfield); - void(APIENTRY*glDisable)(GLenum); - void(APIENTRY*glEnable)(GLenum); - void(APIENTRY*glColor4ub)(GLubyte,GLubyte,GLubyte,GLubyte); - void(APIENTRY*glPointSize)(GLfloat); - void(APIENTRY*glHint)(GLenum,GLenum); - void(APIENTRY*glBlendFunc)(GLenum,GLenum); - void(APIENTRY*glMatrixMode)(GLenum); - void(APIENTRY*glLoadIdentity)(); - void(APIENTRY*glOrtho)(GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble); - void(APIENTRY*glRotatef)(GLfloat,GLfloat,GLfloat,GLfloat); - void(APIENTRY*glViewport)(GLint,GLint,GLsizei,GLsizei); - void(APIENTRY*glFogf)(GLenum,GLfloat); + void (APIENTRY * glBegin) (GLenum); + void (APIENTRY * glEnd) (); + void (APIENTRY * glVertex3f) (GLfloat, GLfloat, GLfloat); + void (APIENTRY * glClearColor) (GLfloat, GLfloat, GLfloat, GLfloat); + void (APIENTRY * glClear) (GLbitfield); + void (APIENTRY * glDisable) (GLenum); + void (APIENTRY * glEnable) (GLenum); + void (APIENTRY * glColor4ub) (GLubyte, GLubyte, GLubyte, GLubyte); + void (APIENTRY * glPointSize) (GLfloat); + void (APIENTRY * glHint) (GLenum, GLenum); + void (APIENTRY * glBlendFunc) (GLenum, GLenum); + void (APIENTRY * glMatrixMode) (GLenum); + void (APIENTRY * glLoadIdentity) (); + void (APIENTRY * glOrtho) (GLdouble, GLdouble, GLdouble, GLdouble, + GLdouble, GLdouble); + void (APIENTRY * glRotatef) (GLfloat, GLfloat, GLfloat, GLfloat); + void (APIENTRY * glViewport) (GLint, GLint, GLsizei, GLsizei); + void (APIENTRY * glFogf) (GLenum, GLfloat); } glfuncs; -void init_glfuncs(glfuncs* f) +void +init_glfuncs(glfuncs * f) { - f->glBegin=get_funcaddr("glBegin"); - f->glEnd=get_funcaddr("glEnd"); - f->glVertex3f=get_funcaddr("glVertex3f"); - f->glClearColor=get_funcaddr("glClearColor"); - f->glClear=get_funcaddr("glClear"); - f->glDisable=get_funcaddr("glDisable"); - f->glEnable=get_funcaddr("glEnable"); - f->glColor4ub=get_funcaddr("glColor4ub"); - f->glPointSize=get_funcaddr("glPointSize"); - f->glHint=get_funcaddr("glHint"); - f->glBlendFunc=get_funcaddr("glBlendFunc"); - f->glMatrixMode=get_funcaddr("glMatrixMode"); - f->glLoadIdentity=get_funcaddr("glLoadIdentity"); - f->glOrtho=get_funcaddr("glOrtho"); - f->glRotatef=get_funcaddr("glRotatef"); - f->glViewport=get_funcaddr("glViewport"); - f->glFogf=get_funcaddr("glFogf"); + f->glBegin = get_funcaddr("glBegin"); + f->glEnd = get_funcaddr("glEnd"); + f->glVertex3f = get_funcaddr("glVertex3f"); + f->glClearColor = get_funcaddr("glClearColor"); + f->glClear = get_funcaddr("glClear"); + f->glDisable = get_funcaddr("glDisable"); + f->glEnable = get_funcaddr("glEnable"); + f->glColor4ub = get_funcaddr("glColor4ub"); + f->glPointSize = get_funcaddr("glPointSize"); + f->glHint = get_funcaddr("glHint"); + f->glBlendFunc = get_funcaddr("glBlendFunc"); + f->glMatrixMode = get_funcaddr("glMatrixMode"); + f->glLoadIdentity = get_funcaddr("glLoadIdentity"); + f->glOrtho = get_funcaddr("glOrtho"); + f->glRotatef = get_funcaddr("glRotatef"); + f->glViewport = get_funcaddr("glViewport"); + f->glFogf = get_funcaddr("glFogf"); } #define NB_PIXELS 1000 -int main(int argc,char *argv[]) +int +main(int argc, char *argv[]) { - glfuncs f; - int i; - SDL_Event event; - int done=0; - GLfloat pixels[NB_PIXELS*3]; - const char *gl_library = NULL; /* Use the default GL library */ + glfuncs f; + int i; + SDL_Event event; + int done = 0; + GLfloat pixels[NB_PIXELS * 3]; + const char *gl_library = NULL; /* Use the default GL library */ - if (argv[1]) { - gl_library = argv[1]; - } - - if (SDL_Init(SDL_INIT_VIDEO)<0) - { - printf("Unable to init SDL : %s\n",SDL_GetError()); - return(1); - } + if (argv[1]) { + gl_library = argv[1]; + } + + if (SDL_Init(SDL_INIT_VIDEO) < 0) { + printf("Unable to init SDL : %s\n", SDL_GetError()); + return (1); + } - if (SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1)<0) - { - printf("Unable to set GL attribute : %s\n",SDL_GetError()); - quit(1); - } - - if (SDL_GL_LoadLibrary(gl_library)<0) - { - printf("Unable to dynamically open GL lib : %s\n",SDL_GetError()); - quit(1); - } + if (SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) < 0) { + printf("Unable to set GL attribute : %s\n", SDL_GetError()); + quit(1); + } + + if (SDL_GL_LoadLibrary(gl_library) < 0) { + printf("Unable to dynamically open GL lib : %s\n", SDL_GetError()); + quit(1); + } - if (SDL_SetVideoMode(640,480,0,SDL_OPENGL)==NULL) - { - printf("Unable to open video mode : %s\n",SDL_GetError()); - quit(1); - } + if (SDL_SetVideoMode(640, 480, 0, SDL_OPENGL) == NULL) { + printf("Unable to open video mode : %s\n", SDL_GetError()); + quit(1); + } + + /* Set the window manager title bar */ + SDL_WM_SetCaption("SDL Dynamic OpenGL Loading Test", "testdyngl"); - /* Set the window manager title bar */ - SDL_WM_SetCaption( "SDL Dynamic OpenGL Loading Test", "testdyngl" ); + init_glfuncs(&f); - init_glfuncs(&f); + for (i = 0; i < NB_PIXELS; i++) { + pixels[3 * i] = rand() % 250 - 125; + pixels[3 * i + 1] = rand() % 250 - 125; + pixels[3 * i + 2] = rand() % 250 - 125; + } + + f.glViewport(0, 0, 640, 480); - for(i=0;i<NB_PIXELS;i++) - { - pixels[3*i]=rand()%250-125; - pixels[3*i+1]=rand()%250-125; - pixels[3*i+2]=rand()%250-125; - } - - f.glViewport(0,0,640,480); - - f.glMatrixMode(GL_PROJECTION); - f.glLoadIdentity(); - f.glOrtho(-100,100,-100,100,-500,500); - - f.glMatrixMode(GL_MODELVIEW); - f.glLoadIdentity(); - - f.glEnable(GL_DEPTH_TEST); - f.glDisable(GL_TEXTURE_2D); - f.glEnable(GL_BLEND); - f.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - f.glClearColor(0.0f,0.0f,0.0f,0.0f); - f.glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - f.glEnable(GL_POINT_SMOOTH); - f.glHint(GL_POINT_SMOOTH_HINT,GL_NICEST); - f.glPointSize(5.0f); - f.glEnable(GL_FOG); - f.glFogf(GL_FOG_START,-500); - f.glFogf(GL_FOG_END,500); - f.glFogf(GL_FOG_DENSITY,0.005); - - do - { - f.glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - f.glRotatef(2.0,1.0,1.0,1.0); - f.glRotatef(1.0,0.0,1.0,1.0); - - f.glColor4ub(255,255,255,255); - f.glBegin(GL_POINTS); - for(i=0;i<NB_PIXELS;i++) - { - f.glVertex3f(pixels[3*i],pixels[3*i+1],pixels[3*i+2]); - } - f.glEnd(); - SDL_GL_SwapBuffers(); + f.glMatrixMode(GL_PROJECTION); + f.glLoadIdentity(); + f.glOrtho(-100, 100, -100, 100, -500, 500); + + f.glMatrixMode(GL_MODELVIEW); + f.glLoadIdentity(); + + f.glEnable(GL_DEPTH_TEST); + f.glDisable(GL_TEXTURE_2D); + f.glEnable(GL_BLEND); + f.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + f.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + f.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + f.glEnable(GL_POINT_SMOOTH); + f.glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); + f.glPointSize(5.0f); + f.glEnable(GL_FOG); + f.glFogf(GL_FOG_START, -500); + f.glFogf(GL_FOG_END, 500); + f.glFogf(GL_FOG_DENSITY, 0.005); - while(SDL_PollEvent(&event)) - { - if(event.type & SDL_KEYDOWN) - done=1; - } + do { + f.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + f.glRotatef(2.0, 1.0, 1.0, 1.0); + f.glRotatef(1.0, 0.0, 1.0, 1.0); - SDL_Delay(20); - } - while(!done); - - SDL_Quit(); - return 0; + f.glColor4ub(255, 255, 255, 255); + f.glBegin(GL_POINTS); + for (i = 0; i < NB_PIXELS; i++) { + f.glVertex3f(pixels[3 * i], pixels[3 * i + 1], pixels[3 * i + 2]); + } + f.glEnd(); + SDL_GL_SwapBuffers(); + + while (SDL_PollEvent(&event)) { + if (event.type & SDL_KEYDOWN) + done = 1; + } + + SDL_Delay(20); + } + while (!done); + + SDL_Quit(); + return 0; } #else /* HAVE_OPENGL */ -int main(int argc, char *argv[]) +int +main(int argc, char *argv[]) { - printf("No OpenGL support on this system\n"); - return 1; + printf("No OpenGL support on this system\n"); + return 1; } #endif /* HAVE_OPENGL */