// tick for OpenGL rendering code public void RenderGL() { // measure frame duration float frameDuration = timer.ElapsedMilliseconds; timer.Reset(); timer.Start(); // prepare matrix for vertex shader Matrix4 transform = Matrix4.CreatePerspectiveFieldOfView( 1.2f, 1.3f, .1f, 1000 ); // update rotation a += 0.001f * frameDuration; if (a > 2 * PI) a -= 2 * PI; // enable render target target.Bind(); // render scene to render target Matrix4 cameraM = Matrix4.CreateFromAxisAngle(new Vector3(0, 1, 0), a) * camera.cameramatrix * transform; foreach (Mesh m in meshes) sceneGraph.Render(shader, cameraM, wood, m); GL.UseProgram(shader.programID); GL.Uniform3(shader.uniform_viewdirection, new Vector3(cameraM.M13, cameraM.M23, cameraM.M33)); //GL.Uniform4(shader.uniform_light1pos, light1.position); //GL.Uniform4(shader.uniform_light1dif, light1.diffuse); //GL.Uniform4(shader.uniform_light1spec, light1.specularity); //GL.Uniform3(shader.uniform_light1att, light1.attenuation); //GL.Uniform4(shader.uniform_light2pos, light2.position); //GL.Uniform4(shader.uniform_light2dif, light2.diffuse); //GL.Uniform4(shader.uniform_light2spec, light2.specularity); //GL.Uniform3(shader.uniform_light2att, light2.attenuation); //GL.Uniform4(shader.uniform_light3pos, light3.position); //GL.Uniform4(shader.uniform_light3dif, light3.diffuse); //GL.Uniform4(shader.uniform_light3spec, light3.specularity); //GL.Uniform3(shader.uniform_light3att, light3.attenuation); //GL.Uniform4(shader.uniform_light4pos, light4.position); //GL.Uniform4(shader.uniform_light4dif, light4.diffuse); //GL.Uniform4(shader.uniform_light4spec, light4.specularity); //GL.Uniform3(shader.uniform_light4att, light4.attenuation); // render quad target.Unbind(); quad.Render(postproc, target.GetTextureID()); }
public virtual void DrawPost(ScreenQuad q, RenderTarget t) { q.Render(postproc, t.GetTextureID()); }