X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=src%2Fmain.cc;h=933bd6247b24529ca682471d52ac121ec3e9e9dc;hp=166b467361216bb65e1b04604d331a44a93fc016;hb=243eb502c5dc70e586a9e81815234069bf623480;hpb=197f20b5d4db937029f7b585be23ee7fe5da66dc diff --git a/src/main.cc b/src/main.cc index 166b467..933bd62 100644 --- a/src/main.cc +++ b/src/main.cc @@ -16,6 +16,7 @@ #include "object.h" #include "renderer.h" #include "scene.h" +#include "terrain.h" #include "texture.h" #include "opengl/opengl.h" @@ -60,6 +61,10 @@ static Scene *scene_ground; static Renderer *rground; // default renderer static Texture *gskybox; +static Renderer *tr; +static Material tmat; +static Terrain t; + /* *** */ int main(int argc, char **argv) @@ -116,11 +121,24 @@ static bool init(Gfx_API api) camera = new OrbitCamera; camera->set_orbit_params(phi, theta, dist); - scene_ground = new Scene; - if(!scene_ground->load("data/ground.obj")) { - fprintf(stderr, "Failed to load scene: ground.obj.\n"); - return false; - } + // scene_ground = new Scene; + // if(!scene_ground->load("data/ground.obj")) { + // fprintf(stderr, "Failed to load scene: ground.obj.\n"); + // return false; + // } + + // rground = new Renderer; + // rground->camera = camera; + // rground->scene = scene_ground; + + // if(!rground->create()) { + // fprintf(stderr, "Failed to create default renderer.\n"); + // return false; + // } + + // gskybox = gfx_create_texture(); + // gskybox->load("data/cubemap/cubemap.hdr"); + // rground->set_sky_tex(gskybox); scene_cow = new Scene; if(!scene_cow->load("data/spot/spot.obj")) { @@ -128,19 +146,6 @@ static bool init(Gfx_API api) return false; } - rground = new Renderer; - rground->camera = camera; - rground->scene = scene_ground; - - if(!rground->create()) { - fprintf(stderr, "Failed to create default renderer.\n"); - return false; - } - - gskybox = gfx_create_texture(); - gskybox->load("data/cubemap/cubemap.hdr"); - rground->set_sky_tex(gskybox); - rcow = new Renderer; rcow->camera = camera; rcow->scene = scene_cow; @@ -150,14 +155,46 @@ static bool init(Gfx_API api) return false; } -// TODO delete: debugging - for(size_t i=0; iobjects.size(); ++i) { - printf("object: %d\n", (int)i); - printf("mesh: %s\n", scene_ground->objects[i]->mesh->name.c_str()); - printf("material: %s\n", scene_ground->objects[i]->material->name.c_str()); - printf("transform:\n"); - scene_ground->objects[i]->transform.print(); + TerrainParams p; + p.xsz = 50; + p.ysz = 50; + p.max_height = 1; + p.xtiles = 1; //40; + p.ytiles = 1; // 40; + p.tile_usub = 8; + p.tile_vsub = 8; + p.num_octaves = 3; + p.noise_freq = 10; + p.coarse_heightmap = 0; + + t.init(); + t.generate(p); + + tmat.diffuse = Vec3(1, 0, 0); + tmat.specular = Vec3(0.5, 0, 0); + tmat.shininess = 40; + tmat.dtex = 0; + tmat.name = "tt"; + + t.material = tmat; + + tr = new Renderer; + tr->camera = camera; + tr->scene = t.get_visible(camera); + if(!tr->create()) { + fprintf(stderr, "terrain fail\n"); + return false; } + + +// TODO delete: debugging + // for(size_t i=0; iobjects.size(); ++i) { + // printf("object: %d\n", (int)i); + // printf("mesh: %s\n", scene_ground->objects[i]->mesh->name.c_str()); + // printf("material: %s\n", scene_ground->objects[i]->material->name.c_str()); + // printf("transform:\n"); + // scene_ground->objects[i]->transform.print(); + // } return true; } @@ -169,9 +206,11 @@ static void cleanup() delete scene_cow; delete rcow; - delete scene_ground; - delete rground; + // delete scene_ground; + // delete rground; +//TODO + delete tr; gfx_cleanup(); } @@ -231,8 +270,10 @@ static void display() { camera->set_orbit_params(phi, theta, dist); - gfx_clear(0.76, 0.3, 0.43); + // gfx_clear(0.76, 0.3, 0.43); + gfx_clear(0.1, 0.1, 0.1); - rground->draw(); - rcow->draw(); + tr->draw(); +// rground->draw(); + // rcow->draw(); } \ No newline at end of file