#define PROGCLASS "Lament"
#define HACK_INIT init_lament
#define HACK_DRAW draw_lament
+#define HACK_RESHAPE reshape_lament
#define lament_opts xlockmore_opts
#define DEFAULTS "*delay: 10000 \n" \
+ "*showFPS: False \n" \
"*wireframe: False \n" \
"*texture: True \n"
#include "xlockmore.h"
lament_faces);
}
-
\f
/* Computing normal vectors (thanks to Nat Friedman <ndf@mit.edu>)
*/
/* Window management, etc
*/
-static void
-reshape(int width, int height)
+void
+reshape_lament(ModeInfo *mi, int width, int height)
{
int target_size = 180;
int win_size = (width > height ? height : width);
int height = lc->texture->width; /* assume square */
glBindTexture(GL_TEXTURE_2D, lc->texids[i]);
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, exterior_color);
+
+ clear_gl_error();
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
lc->texture->width, height, 0,
GL_RGBA, GL_UNSIGNED_BYTE,
(lc->texture->data +
(lc->texture->bytes_per_line * height * i)));
+ check_gl_error("texture");
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
lc->ddy = 0.00006 + frand(0.00003);
lc->ddz = 0.00006 + frand(0.00003);
- lc->ddx = 0.00001;
- lc->ddy = 0.00001;
- lc->ddz = 0.00001;
-
lc->type = LAMENT_BOX;
lc->anim_pause = 300 + (random() % 100);
if ((lc->glx_context = init_GL(mi)) != NULL)
{
- reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
+ reshape_lament(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
gl_init(mi);
}
void
draw_lament(ModeInfo *mi)
{
- static int tick = 0;
lament_configuration *lc = &lcs[MI_SCREEN(mi)];
Display *dpy = MI_DISPLAY(mi);
Window window = MI_WINDOW(mi);
glXMakeCurrent(dpy, window, *(lc->glx_context));
draw(mi);
+ if (mi->fps_p) do_fps (mi);
+
glFinish();
glXSwapBuffers(dpy, window);
lc->anim_pause--;
else
animate(mi);
-
- if (++tick > 500)
- {
- tick = 0;
- reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
- }
}
#endif /* USE_GL */