#include "object.h"
#include "renderer.h"
#include "scene.h"
+#include "terrain.h"
#include "texture.h"
#include "opengl/opengl.h"
static Renderer *rground; // default renderer
static Texture *gskybox;
+static Renderer *tr;
+static Material tmat;
+static Terrain t;
+
/* *** */
int main(int argc, char **argv)
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")) {
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;
return false;
}
-// TODO delete: debugging
- for(size_t i=0; i<scene_ground->objects.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; i<scene_ground->objects.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;
}
delete scene_cow;
delete rcow;
- delete scene_ground;
- delete rground;
+ // delete scene_ground;
+ // delete rground;
+//TODO
+ delete tr;
gfx_cleanup();
}
{
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