void resize(const example_state_view& state) override { gl.viewport(state.width(), state.height()); aspect = state.aspect(); gl.uniform(prog.scale_loc, scale*aspect, scale); }
void resize(const example_state_view& state) override { gl.viewport(0, 0, state.width(), state.height()); erg.set_dimensions(state.width(), state.height()); aspect = state.aspect(); }
void render(const example_state_view& state) override { rad += radians_(0.5f*state.frame_duration().value()); current_buf = (current_buf+1)%2; gl.uniform( prog.light_pos, vec3(cos(rad)*4, sin(rad)*4, 8) ); gl.uniform( prog.modelview, matrix_rotation_x(rad*1)* matrix_rotation_y(rad*2)* matrix_rotation_z(rad*3) ); // draw into the texture gl.bind(GL.draw_framebuffer, rnd_tex.fbos[current_buf]); gl.viewport(tex_side, tex_side); GLfloat s = 0.5f; gl.uniform( prog.projection, oglplus::matrix_perspective(-s,+s, -s,+s, 1.0f, 5)* oglplus::matrix_translation(0,0,-2) ); gl.clear(GL.color_buffer_bit|GL.depth_buffer_bit); gl.draw_arrays(GL.triangles, 0, 6 * 2 * 3); // draw on screen gl.bind(GL.draw_framebuffer, default_framebuffer); gl.viewport(state.width(), state.height()); gl.uniform(prog.cube_tex, GLint(current_buf)); GLfloat h = 0.55f; GLfloat w = h*state.aspect(); gl.uniform( prog.projection, oglplus::matrix_perspective(-w,+w, -h,+h, 1, 3)* oglplus::matrix_translation(0,0,-2) ); gl.clear(GL.color_buffer_bit|GL.depth_buffer_bit); gl.draw_arrays(GL.triangles, 0, 6 * 2 * 3); }
void set_projection(const example_state_view& state) { gl.uniform( prog.projection, matrix_perspective::y( right_angle_(), state.aspect(), 0.5f, 10.f )*matrix_orbiting_y_up( vec3(), smooth_lerp(1.5f, 5.0f, cam_orbit), turns_(cam_turns), smooth_oscillate(radians_(1.5f), cam_pitch) ) ); }