From acf537e026ca3bb5e3f8dba4bd8928065a7b7b9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20F=C3=BCndgens?= Date: Fri, 7 Nov 2014 16:55:56 +0100 Subject: [PATCH] tried to call the load functions, no success this far --- level.cc | 6 +++--- terrain.cc | 26 +++++++++++++++++--------- terrain.hh | 2 ++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/level.cc b/level.cc index 6b73d91..4323bdd 100644 --- a/level.cc +++ b/level.cc @@ -2,7 +2,7 @@ Level::Level(std::string filePath){ this->filePath = filePath; - terrain = Terrain(filePath + "/terrain"); + this->terrain = Terrain(filePath + "/terrain"); } Level::Level() { @@ -12,7 +12,7 @@ Level::~Level() { } void Level::load(Shader shader) { - terrain.load(); + //this->terrain.load(); @@ -38,7 +38,7 @@ void Level::render() { for(int i = 0; iterrain.render(); } glm::vec3 Level::getAmbientLight() { diff --git a/terrain.cc b/terrain.cc index b9216c1..959cbfe 100644 --- a/terrain.cc +++ b/terrain.cc @@ -12,18 +12,25 @@ Terrain::~Terrain() { void Terrain::load() { - std::ifstream terrain_png(this->filePath + "/heightmap.png"); //TODO: filepath organization + std::ifstream terrain_png(this->filePath + "/heightmap.png"); //TODO: filepath organization unsigned int rowNum, columnNum, heightmapValue; - terrain_png.seekg(16); //skip part of the header - char temp[2]; - terrain_png.read(temp, 4); //read width - this->heightmapWidth = (temp[1]<<0) | (temp[0]<<8); //convert from network to host byte order - terrain_png.read(temp, 4); //read height - this->heightmapHeight = (temp[1]<<0) | (temp[0]<<8); //convert from network to host byte order + terrain_png.seekg(16); //skip part of the header - heightmap = new float*[this->heightmapHeight]; //initialize the heightmap - for(rowNum = 0; rowNum < this->heightmapHeight; rowNum++){ //read in the heightmap + terrain_png.read((char *)&this->heightmapWidth, 4); //read width + terrain_png.read((char *)&this->heightmapHeight, 4); //read height + this->heightmapWidth = ntohl(this->heightmapWidth); //convert from network to host byte order + this->heightmapHeight = ntohl(this->heightmapHeight); +/* //alternate implementation that does NOT work at all + char temp[2];4??? + terrain_png.read(temp, 4); //read width + this->heightmapWidth = (temp[1]<<0) | (temp[0]<<8); //convert from network to host byte order + terrain_png.read(temp, 4); //read height + this->heightmapHeight = (temp[1]<<0) | (temp[0]<<8); //convert from network to host byte order +*/ + + heightmap = new float*[this->heightmapHeight]; //initialize the heightmap + for(rowNum = 0; rowNum < this->heightmapHeight; rowNum++){ //read in the heightmap heightmap[rowNum] = new float[this->heightmapWidth]; for(columnNum = 0; columnNum < this->heightmapWidth; columnNum++){ terrain_png.read((char *)&heightmapValue, 1); @@ -81,6 +88,7 @@ void Terrain::makeTriangleMesh(){ this->triangleMesh->bind(); this->triangleMesh->setMode(GL_TRIANGLE_STRIP); this->triangleMesh->attachAllAttributes(arrayBuffer); + //TODO unbind? } void Terrain::render() { diff --git a/terrain.hh b/terrain.hh index 09dcf10..c4d9a83 100644 --- a/terrain.hh +++ b/terrain.hh @@ -4,6 +4,8 @@ #include #include "texture.hh" #include +#include +#include class Terrain { public: