/* Author: Josh Holtrop * DornerWorks screensaver * This module implements a very simple screensaver mode. * It just creates a DW logo and then continuously spins around it. */ #include #include #include "PlainSpin.h" #include using namespace std; /* construct screensaver mode and do some basic OpenGL setup */ PlainSpin::PlainSpin(SSMain * _SSMain) : SSMode(_SSMain) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, (double)m_SSMain->getWidth() / (double)m_SSMain->getHeight() / (double)m_SSMain->getNumMonitors(), 0.01, 1000.01); glMatrixMode(GL_MODELVIEW); } /* called every time this screensaver mode should redraw the screen */ void PlainSpin::update() { SSMode::update(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); int numMonitors = m_SSMain->getNumMonitors(); int width = m_SSMain->getWidth(); int height = m_SSMain->getHeight(); for (int i = 0; i < numMonitors; i++) { glViewport(i*width/numMonitors, 0, width/numMonitors, height); glLoadIdentity(); gluLookAt(0, 0, 12, 0, 0, 0, 0, 1, 0); glRotatef(m_elapsed/33.0f, 0, 1, 0); m_logoBox.draw(); } SDL_GL_SwapBuffers(); }