// This source code is property of the Computer Graphics and Visualization // chair of the TU Dresden. Do not distribute! // Copyright (C) CGV TU Dresden - All Rights Reserved #pragma once #include class Viewer : public nse::gui::AbstractViewer { public: Viewer(); void drawContents(); private: void SetupGUI(); Eigen::Matrix4f modelViewMatrix, projectionMatrix; //GUI Elements for the various options nanogui::CheckBox *chkHasFaceCulling; //Shall back face culling be activated? nanogui::CheckBox *chkHasDepthTesting; //Shall depth testing be activated? nanogui::Slider *sldJuliaCX; //Seed for the Julia fractal nanogui::Slider *sldJuliaCY; nanogui::Slider *sldJuliaZoom; //Zoom factor for the Julia fractal nanogui::Slider *point1X; nanogui::Slider *point1Y; nanogui::Slider *point2X; nanogui::Slider *point2Y; nanogui::Slider *point3X; nanogui::Slider *point3Y; // The following variables hold OpenGL object IDs GLuint vertex_shader_id, // ID of the vertex shader fragment_shader_id, // ID of the fragment shader program_id, // ID of the shader program vertex_array_id, // ID of the vertex array position_buffer_id, // ID of the position buffer color_buffer_id, // ID of the color buffer uv_map_buffer_id; // ID of the uv_map GLint view_uniform_id; GLint proj_uniform_id; GLint julia_m_id; GLint julia_c_id; GLint julia_pos_id; // Read, Compile and link the shader codes to a shader program void CreateShaders(); // Create and define the vertex array and add a number of vertex buffers void CreateVertexBuffers(); };