45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
|
|
/* Author: Josh Holtrop
|
|
* DornerWorks screensaver
|
|
*/
|
|
|
|
#include <GL/gl.h>
|
|
#include <GL/glu.h>
|
|
#include "LightBounce.h"
|
|
|
|
#include <iostream>
|
|
using namespace std;
|
|
|
|
/* construct screensaver mode and do some basic OpenGL setup */
|
|
LightBounce::LightBounce(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 LightBounce::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();
|
|
}
|