implemented reading the heightmap from png

This commit is contained in:
Steffen Fündgens 2014-11-04 19:40:35 +01:00
parent e6912b41ee
commit fa65d01b8b
2 changed files with 32 additions and 1 deletions

View File

@ -5,3 +5,30 @@ Terrain::Terrain() {
Terrain::~Terrain() { Terrain::~Terrain() {
} }
void Terrain::load() {
std::ifstream terrain_png(this->filePath);
unsigned int width, height, rowNum, columnNum;
terrain_png.seekg(16); //skip part of the header
terrain_png.read((char *)&width, 4); //read width
terrain_png.read((char *)&height, 4); //read height
width = ntohl(width); //convert from host to network byte order
height = ntohl(height);
heightmap = new unsigned int*[height]; //initialize the heightmap
for(rowNum=0; rowNum<height; rowNum++){ //read in the heightmap
heightmap[rowNum] = new unsigned int[width];
for(columnNum=0; columnNum<width; columnNum++){
terrain_png.read((char *)&heightmap[rowNum][columnNum], 1);
}
}
}
void Terrain::render() {
}

View File

@ -3,6 +3,9 @@
#include <string> #include <string>
#include "texture.hh" #include "texture.hh"
#include <fstream>
//#include <winsock.h> //on Windows
#include <netinet/in.h> //on Unix
class Terrain { class Terrain {
public: public:
@ -14,6 +17,7 @@ class Terrain {
float friction; float friction;
Texture texture; Texture texture;
std::string filePath; std::string filePath;
unsigned int** heightmap; //can be accessed like 'unsigned int[][]'
}; };
#endif #endif