tried to call the load functions, no success this far

This commit is contained in:
Steffen Fündgens 2014-11-07 16:55:56 +01:00
parent 454a004c8f
commit acf537e026
3 changed files with 22 additions and 12 deletions

View File

@ -2,7 +2,7 @@
Level::Level(std::string filePath){ Level::Level(std::string filePath){
this->filePath = filePath; this->filePath = filePath;
terrain = Terrain(filePath + "/terrain"); this->terrain = Terrain(filePath + "/terrain");
} }
Level::Level() { Level::Level() {
@ -12,7 +12,7 @@ Level::~Level() {
} }
void Level::load(Shader shader) { void Level::load(Shader shader) {
terrain.load(); //this->terrain.load();
@ -38,7 +38,7 @@ void Level::render() {
for(int i = 0; i<objects.size(); i++) { for(int i = 0; i<objects.size(); i++) {
objects[i].render(); objects[i].render();
} }
terrain.render(); //this->terrain.render();
} }
glm::vec3 Level::getAmbientLight() { glm::vec3 Level::getAmbientLight() {

View File

@ -12,18 +12,25 @@ Terrain::~Terrain() {
void Terrain::load() { 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; unsigned int rowNum, columnNum, heightmapValue;
terrain_png.seekg(16); //skip part of the header 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
heightmap = new float*[this->heightmapHeight]; //initialize the heightmap terrain_png.read((char *)&this->heightmapWidth, 4); //read width
for(rowNum = 0; rowNum < this->heightmapHeight; rowNum++){ //read in the heightmap 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]; heightmap[rowNum] = new float[this->heightmapWidth];
for(columnNum = 0; columnNum < this->heightmapWidth; columnNum++){ for(columnNum = 0; columnNum < this->heightmapWidth; columnNum++){
terrain_png.read((char *)&heightmapValue, 1); terrain_png.read((char *)&heightmapValue, 1);
@ -81,6 +88,7 @@ void Terrain::makeTriangleMesh(){
this->triangleMesh->bind(); this->triangleMesh->bind();
this->triangleMesh->setMode(GL_TRIANGLE_STRIP); this->triangleMesh->setMode(GL_TRIANGLE_STRIP);
this->triangleMesh->attachAllAttributes(arrayBuffer); this->triangleMesh->attachAllAttributes(arrayBuffer);
//TODO unbind?
} }
void Terrain::render() { void Terrain::render() {

View File

@ -4,6 +4,8 @@
#include <string> #include <string>
#include "texture.hh" #include "texture.hh"
#include <fstream> #include <fstream>
#include <netinet/in.h>
#include <ACGL/OpenGL/Objects/VertexArrayObject.hh>
class Terrain { class Terrain {
public: public: