//------------------------------------------------------------------------------
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);
}
Beispiel #2
0
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;
}