X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fextrusion.c;h=81cdeb918a8d22a0869b9f901159cf8d4bbb40d0;hb=a94197e76a5dea5cb60542840809d6c20d0abbf3;hp=c79d45c17b12363610594eb46bf6f8e03d8d6764;hpb=c596d1306f5f92f7eab76224d3b049980a14adcb;p=xscreensaver diff --git a/hacks/glx/extrusion.c b/hacks/glx/extrusion.c index c79d45c1..81cdeb91 100644 --- a/hacks/glx/extrusion.c +++ b/hacks/glx/extrusion.c @@ -15,6 +15,7 @@ * Revision History: * Tue Oct 19 22:24:47 PDT 1999 Initial creation by David Konerding + * * * Notes: * This screensaver requires the GLE ("OpenGL Tubing and Extrusion Library") @@ -28,14 +29,19 @@ #include - +#ifdef HAVE_CONFIG_H +#include +#endif #ifdef STANDALONE # define PROGCLASS "Screensaver" # define HACK_INIT init_screensaver # define HACK_DRAW draw_screensaver +# define HACK_RESHAPE reshape_screensaver # define screensaver_opts xlockmore_opts -#define DEFAULTS "*light: True \n" \ +#define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + "*light: True \n" \ "*wire: False \n" \ "*texture: False \n" \ "*image: BUILTIN \n" \ @@ -49,13 +55,6 @@ #ifdef USE_GL /* whole file */ -#ifdef HAVE_XPM -# include -# ifndef PIXEL_ALREADY_TYPEDEFED -# define PIXEL_ALREADY_TYPEDEFED /* Sigh, Xmu/Drawing.h needs this... */ -# endif -#endif - #ifdef HAVE_XMU # ifndef VMS # include @@ -64,14 +63,18 @@ # endif /* VMS */ #endif -#include +#include #include #include #include #include #include #include +#ifdef HAVE_GLE3 +#include +#else #include +#endif #undef countof #define countof(x) (sizeof((x))/sizeof((*x))) @@ -455,8 +458,10 @@ void Create_Texture(char *filename, int do_mipmap, int do_texture_quality) format, GL_UNSIGNED_BYTE, image); } else { + clear_gl_error(); glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, image); + check_gl_error("texture"); } free(image); } @@ -657,6 +662,7 @@ void draw_screensaver(ModeInfo * mi) dd_lasty *= scale; } + if (mi->fps_p) do_fps (mi); glXSwapBuffers(display, window); } @@ -674,6 +680,7 @@ void SetupLight(void) glEnable (GL_LIGHTING); glColorMaterial (GL_FRONT, GL_DIFFUSE); + glColorMaterial (GL_BACK, GL_DIFFUSE); glEnable (GL_COLOR_MATERIAL); } @@ -687,9 +694,11 @@ void resetProjection(void) { } /* Standard reshape function */ -static void -reshape(int width, int height) +void +reshape_screensaver(ModeInfo *mi, int width, int height) { + global_width=width; + global_height=height; glViewport( 0, 0, global_width, global_height ); resetProjection(); } @@ -724,26 +733,27 @@ void chooseScreensaverExample(void) { } /* main OpenGL initialization routine */ -void initializeGL(GLsizei width, GLsizei height) +void +initializeGL(ModeInfo *mi, GLsizei width, GLsizei height) { int style; int mode; - global_width=width; - global_height=height; - + reshape_screensaver(mi, width, height); glViewport( 0, 0, width, height ); glEnable(GL_DEPTH_TEST); glClearColor(0,0,0,0); - glCullFace(GL_BACK); - glEnable(GL_CULL_FACE); +/* glCullFace(GL_BACK); */ +/* glEnable(GL_CULL_FACE); */ glShadeModel(GL_SMOOTH); if (do_light) SetupLight(); - if (do_wire) + if (do_wire) { glPolygonMode(GL_FRONT,GL_LINE); + glPolygonMode(GL_BACK,GL_LINE); + } if (do_texture) { Create_Texture(which_image, do_mipmap, do_texture_quality); glEnable(GL_TEXTURE_2D); @@ -779,8 +789,8 @@ void init_screensaver(ModeInfo * mi) gp->window = MI_WINDOW(mi); if ((gp->glx_context = init_GL(mi)) != NULL) { - reshape(MI_WIDTH(mi), MI_HEIGHT(mi)); - initializeGL(MI_WIDTH(mi), MI_HEIGHT(mi)); + reshape_screensaver(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + initializeGL(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); chooseScreensaverExample(); } else { MI_CLEARWINDOW(mi);