//------------------------------------------------------------------------------ Example::Example(void) : glfw_error_handler(glfwSetErrorCallback(HandleGLFWError)) , glfw_init_ok(glfwInit()) , glfw_window(InitWindow()) , gl() , palette(MakePalette()) , program(MakeProgram()) , view_matrix(program, "ViewMatrix") , screen( oglplus::List("Position").Get(), oglplus::shapes::Screen(), program ), screen_width(800) , screen_height(600) , view_aspect(4.0/3.0) , view_divs(4) , view_tile(0) , view_tile_index(view_divs*view_divs) , mouse_left_down(false) , mouse_middle_down(false) , frame_no(0) { oglplus::UniformSampler(program, "Palette").Set(0); for(unsigned i=0; i!=view_tile_index.size(); ++i) view_tile_index[i] = i; CenterView(); UpdateView(); screen.Use(); self_ptr(this); gl.Enable(oglplus::Capability::ScissorTest); }
bool Shader::Init(const string& vertexShaderFile, const string& fragmentShaderFile) { GLuint vertexShader = MakeShader(GL_VERTEX_SHADER, vertexShaderFile); if (!vertexShader) return false; GLuint fragmentShader = MakeShader(GL_FRAGMENT_SHADER, fragmentShaderFile); if (!fragmentShader) return false; program = MakeProgram(vertexShader, fragmentShader); if (!program) return false; glDeleteShader(vertexShader); glDeleteShader(fragmentShader); return true; }