dungeon_crawler

diff prototype/src/main.cc @ 15:3a3236a4833c

adding shaders and renderer abstraction
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 19 Aug 2012 23:09:30 +0300
parents b10ba85f75e0
children 91180ee7b7d9
line diff
     1.1 --- a/prototype/src/main.cc	Sun Aug 19 06:30:18 2012 +0300
     1.2 +++ b/prototype/src/main.cc	Sun Aug 19 23:09:30 2012 +0300
     1.3 @@ -7,11 +7,13 @@
     1.4  #include "camera.h"
     1.5  #include "datapath.h"
     1.6  #include "tileset.h"
     1.7 +#include "renderer.h"
     1.8  
     1.9  bool init();
    1.10  void cleanup();
    1.11  void idle();
    1.12  void disp();
    1.13 +void draw();
    1.14  void update(unsigned long msec);
    1.15  void reshape(int x, int y);
    1.16  void keyb(unsigned char key, int x, int y);
    1.17 @@ -70,6 +72,10 @@
    1.18  
    1.19  	add_data_path("data");
    1.20  
    1.21 +	if(!init_renderer()) {
    1.22 +		return false;
    1.23 +	}
    1.24 +
    1.25  	// load a tileset
    1.26  	tileset = new TileSet;
    1.27  	if(!tileset->load(datafile_path("default.tileset"))) {
    1.28 @@ -88,6 +94,14 @@
    1.29  	return true;
    1.30  }
    1.31  
    1.32 +void cleanup()
    1.33 +{
    1.34 +	delete level;
    1.35 +	delete tileset;
    1.36 +
    1.37 +	destroy_renderer();
    1.38 +}
    1.39 +
    1.40  void idle()
    1.41  {
    1.42  	glutPostRedisplay();
    1.43 @@ -103,7 +117,7 @@
    1.44  	glLoadIdentity();
    1.45  	cam.use_inverse();
    1.46  
    1.47 -	level->draw();
    1.48 +	render_deferred(draw);
    1.49  
    1.50  	glutSwapBuffers();
    1.51  	assert(glGetError() == GL_NO_ERROR);
    1.52 @@ -111,6 +125,11 @@
    1.53  	usleep(10000);
    1.54  }
    1.55  
    1.56 +void draw()
    1.57 +{
    1.58 +	level->draw();
    1.59 +}
    1.60 +
    1.61  void update(unsigned long msec)
    1.62  {
    1.63  	static unsigned long last_upd;