// tick for OpenGL rendering code public void RenderGL() { // measure frame duration float frameDuration = timer.ElapsedMilliseconds; timer.Reset(); timer.Start(); if (useRenderTarget) { // enable render target target.Bind(); // render scene to render target scenegraph.Render(camera.lookat * camera.cameramatrix, frameDuration, shader, postproc); // render quad target.Unbind(); quad.Render(postproc, target.GetTextureID()); } else { // render scene directly to the screen scenegraph.Render(camera.lookat * camera.cameramatrix, frameDuration, shader, postproc); } }
// tick for OpenGL rendering code public void RenderGL() { // measure frame duration float frameDuration = timer.ElapsedMilliseconds; timer.Reset(); timer.Start(); // The translation relative to the camera Matrix4 transform = Matrix4.CreateFromAxisAngle(new Vector3(0, 1, 0), a); Matrix4 toWorld = transform; transform *= Matrix4.CreateTranslation(0, -4, 15) * Matrix4.CreateTranslation(c.cameraPos) * Matrix4.CreateFromAxisAngle(new Vector3(0,0,1), c.zRotate) * Matrix4.LookAt(Vector3.Zero, c.cameraDir, c.up); transform *= Matrix4.CreatePerspectiveFieldOfView(1.2f, 1.3f, .1f, 1000); // update rotation a += 0.001f * frameDuration; if (a > 2 * PI) a -= 2 * PI; if (c.vRotate < 0) c.vRotate = 2 * PI; // render scene to render target if (useRenderTarget) { // enable render target target.Bind(); floorNode.Render(shader, transform, toWorld); // render quad target.Unbind(); quad.Render(postproc, target.GetTextureID()); } else { target.Bind(); floorNode.nodeMesh.Render(shader, transform, toWorld, wood); floorNode.nodeChildren[0].nodeMesh.Render(shader, transform, toWorld, wood); target.Unbind(); quad.Render(postproc, target.GetTextureID()); } }
// tick for OpenGL rendering code public void RenderGL() { if (useRenderTarget) { // enable render target target.Bind(); scenegraph.SceneGraph(); // render quad target.Unbind(); //gwn laten quad.Render(postproc, target.GetTextureID()); } }
// tick for OpenGL rendering code public void RenderGL() { if (useRenderTarget) { // enable render target target.Bind(); // render scene to render target sceneGraph.Render(shader); // render quad target.Unbind(); quad.Render(postproc, target.GetTextureID()); } else { // render scene directly to the screen sceneGraph.Render(shader); } }
// Renders each mesh in the list. public void Render(Matrix4 cameramatrix) { // Instead of calculating this for every mesh, we speed up the process by precalculating the universal matrix. // This defines the startposition of the camera. Matrix4 uniform = Matrix4.CreateTranslation(0, -14, -15); // Then, the cameramatrix is given from the game class. uniform *= cameramatrix; // Lastly, the prespective is created. uniform *= Matrix4.CreatePerspectiveFieldOfView(1.2f, 1.3f, .1f, 1000); target.Bind(); foreach (Mesh mesh in meshes) { // The local position to the parent is taken and the mesh is copied. Matrix4 transform = Matrix4.CreateScale(mesh.Scale); transform *= mesh.Rotation; transform *= mesh.ModelViewMatrix; Mesh m = mesh; // The transform of the parent is taken into account. // Then, if the parent of the current mesh also has a parent, it repeats until we have the worldcoördinates. while (m.Parent != null) { m = m.Parent; transform *= m.Rotation; transform *= m.ModelViewMatrix; } Matrix4 toWorld = transform; // The universal matrix is added up to the total transform... transform *= uniform; // and the mesh is finally rendered. mesh.Render(shader, transform, toWorld, mesh.Texture); } // Last but not least, the image is postprocessed. target.Unbind(); quad.Render(postproc, target.GetTextureID()); }
// tick for OpenGL rendering code public void RenderGL() { // measure frame duration float frameDuration = timer.ElapsedMilliseconds; timer.Reset(); timer.Start(); GL.UseProgram(shader.programID); Matrix4 cameraPos = cam.GetViewMatrix(); GL.Uniform3(shader.camPosition, new Vector3(cameraPos.M13, cameraPos.M23, cameraPos.M33)); // enable render target target.Bind(); viewProjectMatrix = cameraPos * Matrix4.CreatePerspectiveFieldOfView(1.2f, 1.3f, .1f, 1000); // render the scene scene.Render(shader, viewProjectMatrix, frameDuration); // render quad target.Unbind(); quad.Render(postproc, target.GetTextureID(), colorCube.id); }
// 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.CreateFromAxisAngle(new Vector3(0, 1, 0), a); Matrix4 toWorld = transform; transform *= Matrix4.CreateTranslation(0, -4, -15); transform *= Matrix4.CreatePerspectiveFieldOfView(1.2f, 1.3f, .1f, 1000); // update rotation a += 0.001f * frameDuration; if (a > 2 * PI) a -= 2 * PI; if (useRenderTarget) { // enable render target target.Bind(); // render scene to render target mesh.Render(shader, transform, toWorld, wood); floor.Render(shader, transform, toWorld, wood); // render quad target.Unbind(); quad.Render(postproc, target.GetTextureID()); } else { // render scene directly to the screen mesh.Render(shader, transform, toWorld, wood); floor.Render(shader, transform, toWorld, wood); } }