#include #include #include #include #include #include #include #include "Starfield.h" Starfield::Starfield() { m_last_ticks = 0; srand(time(NULL) + getpid()); } Starfield::~Starfield() { } bool Starfield::expose (GnomeScreensaver & gs) { if (m_last_ticks == 0) m_last_ticks = gs.getTicks(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, gs.getWidth(), gs.getHeight()); glPushMatrix(); glTranslatef(0, 0, -30); m_logobox.draw(); glPopMatrix(); m_last_ticks = gs.getTicks(); return true; } bool Starfield::configure (GnomeScreensaver & gs) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, gs.getAspectRatio(), 0.01, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, 0, 0, 0, 0, -1, 0, 1, 0); return true; } bool Starfield::update (GnomeScreensaver & gs) { return true; } void Starfield::getRandomAxis(float (*axis)[3]) { double alpha = rand() / (double)RAND_MAX * 2.0 * M_PI; double beta = rand() / (double)RAND_MAX * M_PI; (*axis)[0] = cos(alpha) * sin(beta); (*axis)[1] = sin(alpha) * sin(beta); (*axis)[2] = cos(beta); }