コード例 #1
0
ファイル: game.cs プロジェクト: Nicole3s/rasterizerP3
        // 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);
            }
        }
コード例 #2
0
        // 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());
            }
        }
コード例 #3
0
ファイル: game.cs プロジェクト: vincentlandes/Graphics-P3
        // 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());
            }
        }
コード例 #4
0
        // 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);
            }
        }
コード例 #5
0
        // 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());
        }
コード例 #6
0
ファイル: game.cs プロジェクト: MaaikeG/Rasterizer
        // 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);
        }
コード例 #7
0
        // 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);
            }
        }