material.set_specular(GL::Color(1.0));
material.set_shininess(100);
- GL::Program::StandardFeatures features;
+ GL::ProgramBuilder::StandardFeatures features;
features.lighting = true;
features.specular = true;
features.material = true;
GL::ProgramData shdata;
shdata.uniform("environment", 0);
shdata.uniform("reflectivity", 0.5f);
+ float env_mat[9] = { 1, 0, 0, 0, 1, 0, 0, 0, 1 };
+ shdata.uniform_matrix3("env_eye_matrix", env_mat);
GL::MatrixStack::projection() = GL::Matrix::frustum_centered(0.15, 0.1, 0.1, 10);
GL::Bind bind_depth(GL::DepthTest::lequal());
GL::Renderer renderer(0);
renderer.set_material(&material);
- renderer.set_shader(&shprog, &shdata);
+ renderer.set_shader_program(&shprog, &shdata);
renderer.set_texture(&texture);
- renderer.matrix_stack() *= GL::Matrix::translation(0, 0, -7);
+ renderer.transform(GL::Matrix::translation(0, 0, -7));
{
GL::Renderer::Push _push(renderer);
- renderer.matrix_stack() *= GL::Matrix::translation(-2, 0, 0);
- renderer.matrix_stack() *= GL::Matrix::rotation(angle/2.3, 0, 1, 0);
- renderer.matrix_stack() *= GL::Matrix::rotation(angle, 1, 0.25, 0);
+ renderer.transform(GL::Matrix::translation(-2, 0, 0));
+ renderer.transform(GL::Matrix::rotation(angle/2.3, 0, 1, 0));
+ renderer.transform(GL::Matrix::rotation(angle, 1, 0.25, 0));
box.draw(renderer);
}
{
GL::Renderer::Push _push(renderer);
- renderer.matrix_stack() *= GL::Matrix::translation(2, 0, 0);
- renderer.matrix_stack() *= GL::Matrix::rotation(-angle/2.3, 0, 1, 0);
- renderer.matrix_stack() *= GL::Matrix::rotation(angle, 1, 0.25, 0);
+ renderer.transform(GL::Matrix::translation(2, 0, 0));
+ renderer.transform(GL::Matrix::rotation(-angle/2.3, 0, 1, 0));
+ renderer.transform(GL::Matrix::rotation(angle, 1, 0.25, 0));
cylinder.draw(renderer);
}
}