#ifndef SCENE_H_ #define SCENE_H_ #include #include #include #include #include "fbo.h" #include "camera.h" #include "interface.h" struct Vertex { glm::vec3 position; glm::vec2 texCoord; }; class Scene { public: Scene(int width, int height); ~Scene(); void Init(); void GenerateGrid(int divisions, std::vector& verts, std::vector& inds); void Display(GLFWwindow* window); void DrawGui(GLFWwindow* window); void Idle(); void ReloadShader(); void UpdateCamera(); void UpdateViewport(); std::vector LoadHGT(const std::string& filename, int width, int height); int window_width; int window_height; private: void InitBuffers(); void InitQuadBuffers(); void InitShaders(); void InitUI(); Camera activeCamera_; Framebuffer geo_fbo_; Framebuffer lht_fbo_; GLuint shader_program_; GLuint quad_shader_program_; GLuint vao_; GLuint quad_vao_; float angle_; float scale_; float aspect_; float near_z_; float far_z_; float fov_; std::vector windows_; glm::mat4 view_matrix_; glm::mat4 projection_matrix_; int16_t SwapEndian(int16_t val); GLuint CreateHeightmapTexture(std::vector data, int width, int height); }; #endif // SCENE_H_