95 lines
2.1 KiB
C
95 lines
2.1 KiB
C
|
|
|
||
|
|
/* anything related to drawing is in here
|
||
|
|
* including texture loading and setting */
|
||
|
|
|
||
|
|
#ifndef __DRAW_H__
|
||
|
|
#define __DRAW_H__
|
||
|
|
|
||
|
|
#include "common.h"
|
||
|
|
|
||
|
|
extern PEmitter theEmitter[2];
|
||
|
|
|
||
|
|
int drawGLScene( GLvoid )
|
||
|
|
{
|
||
|
|
/* These are to calculate our fps */
|
||
|
|
static GLint T0 = 0;
|
||
|
|
GLint t = 0;
|
||
|
|
static GLint Frames = 0;
|
||
|
|
|
||
|
|
/* Clear The Screen And The Depth Buffer */
|
||
|
|
glPointSize(3.0f);
|
||
|
|
|
||
|
|
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
|
||
|
|
|
||
|
|
glMatrixMode(GL_MODELVIEW);
|
||
|
|
glLoadIdentity( );
|
||
|
|
glTranslatef(0.0f, 1.0f, -20.0f);
|
||
|
|
|
||
|
|
|
||
|
|
DrawEmitter(&theEmitter[0]);
|
||
|
|
DrawEmitter(&theEmitter[1]);
|
||
|
|
|
||
|
|
/* Draw it to the screen */
|
||
|
|
SDL_GL_SwapBuffers( );
|
||
|
|
|
||
|
|
Frames++;
|
||
|
|
t = SDL_GetTicks();
|
||
|
|
if (t - T0 >= 1000) {
|
||
|
|
GLfloat seconds = (t - T0) / 1000.0;
|
||
|
|
GLfloat fps = Frames / seconds;
|
||
|
|
printf("%d frames in %g seconds = %g FPS (new time %g)\n", Frames, seconds, fps, (float)time(NULL));
|
||
|
|
T0 = t;
|
||
|
|
Frames = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
UpdateEmitter(&theEmitter[0], t - T0);
|
||
|
|
UpdateEmitter(&theEmitter[1], t - T0);
|
||
|
|
|
||
|
|
T0 = t;
|
||
|
|
|
||
|
|
return( TRUE );
|
||
|
|
}
|
||
|
|
|
||
|
|
/* function to reset our viewport after a window resize */
|
||
|
|
int resizeWindow( int width, int height )
|
||
|
|
{
|
||
|
|
GLfloat ratio;
|
||
|
|
|
||
|
|
/* Protect against a divide by zero */
|
||
|
|
if ( height == 0 ) height = 1;
|
||
|
|
|
||
|
|
ratio = ( GLfloat )width / ( GLfloat )height;
|
||
|
|
|
||
|
|
/* set the viewport, viewing volume, perspective, etc etc */
|
||
|
|
|
||
|
|
glViewport( 0, 0, ( GLint )width, ( GLint )height );
|
||
|
|
glMatrixMode( GL_PROJECTION );
|
||
|
|
glLoadIdentity( );
|
||
|
|
gluPerspective( 45.0f, ratio, 0.1f, 100.0f );
|
||
|
|
glMatrixMode( GL_MODELVIEW );
|
||
|
|
|
||
|
|
/* Reset The Modelview matrix */
|
||
|
|
glLoadIdentity( );
|
||
|
|
|
||
|
|
return( TRUE );
|
||
|
|
}
|
||
|
|
|
||
|
|
/* general OpenGL initialization function */
|
||
|
|
int initGL( GLvoid )
|
||
|
|
{
|
||
|
|
|
||
|
|
/* Setup shading, clearing, depth testing, and rendering hints */
|
||
|
|
glShadeModel( GL_SMOOTH );
|
||
|
|
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
|
||
|
|
glClearDepth( 1.0f );
|
||
|
|
glEnable( GL_DEPTH_TEST );
|
||
|
|
glDepthFunc( GL_LEQUAL );
|
||
|
|
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
|
||
|
|
glEnable(GL_BLEND);
|
||
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||
|
|
|
||
|
|
return( TRUE );
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif // __DRAW_H__
|