added LightBounce mode copied from PlainSpin
git-svn-id: svn://anubis/dwscr/trunk@90 5bef9df8-b654-44bb-925b-0ff18baa8f8c
This commit is contained in:
parent
bef677581f
commit
49d091deeb
44
ss/LightBounce.cc
Normal file
44
ss/LightBounce.cc
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
/* 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();
|
||||||
|
}
|
22
ss/LightBounce.h
Normal file
22
ss/LightBounce.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
/* Author: Josh Holtrop
|
||||||
|
* DornerWorks screensaver
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LIGHTBOUNCE_H
|
||||||
|
#define LIGHTBOUNCE_H
|
||||||
|
|
||||||
|
#include "SSMain.h"
|
||||||
|
#include "SSMode.h"
|
||||||
|
#include "LogoBox.h"
|
||||||
|
|
||||||
|
class LightBounce : public SSMode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LightBounce(SSMain * _SSMain);
|
||||||
|
void update();
|
||||||
|
protected:
|
||||||
|
LogoBox m_logoBox;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -3,6 +3,7 @@ OBJS := SSMain.o
|
|||||||
OBJS += SSMode.o
|
OBJS += SSMode.o
|
||||||
OBJS += LogoBox.o
|
OBJS += LogoBox.o
|
||||||
OBJS += PlainSpin.o
|
OBJS += PlainSpin.o
|
||||||
|
OBJS += LightBounce.o
|
||||||
ifndef WITHOUT_ODE
|
ifndef WITHOUT_ODE
|
||||||
OBJS += TumblingLogos.o
|
OBJS += TumblingLogos.o
|
||||||
OBJS += Towers.o
|
OBJS += Towers.o
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <SDL/SDL.h>
|
#include <SDL/SDL.h>
|
||||||
#include "SSMain.h"
|
#include "SSMain.h"
|
||||||
#include "PlainSpin.h"
|
#include "PlainSpin.h"
|
||||||
|
#include "LightBounce.h"
|
||||||
#ifndef WITHOUT_ODE
|
#ifndef WITHOUT_ODE
|
||||||
#include "TumblingLogos.h"
|
#include "TumblingLogos.h"
|
||||||
#include "Towers.h"
|
#include "Towers.h"
|
||||||
@ -124,9 +125,9 @@ SSMode * SSMain::startMode()
|
|||||||
{
|
{
|
||||||
static int mode = 0;
|
static int mode = 0;
|
||||||
#ifndef WITHOUT_ODE
|
#ifndef WITHOUT_ODE
|
||||||
const int numModes = 3;
|
const int numModes = 4;
|
||||||
#else
|
#else
|
||||||
const int numModes = 1;
|
const int numModes = 2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mode++;
|
mode++;
|
||||||
@ -137,8 +138,10 @@ SSMode * SSMain::startMode()
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return new PlainSpin(this);
|
return new PlainSpin(this);
|
||||||
#ifndef WITHOUT_ODE
|
|
||||||
case 1:
|
case 1:
|
||||||
|
return new LightBounce(this);
|
||||||
|
#ifndef WITHOUT_ODE
|
||||||
|
case 2:
|
||||||
return new Towers(this);
|
return new Towers(this);
|
||||||
default:
|
default:
|
||||||
return new TumblingLogos(this);
|
return new TumblingLogos(this);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user