コード例 #1
0
        public RenderSystem(PresentationParameters parameters)
        {
            Adapters = GraphicsAdapter.EnumerateGraphicsAdapter();

            Device = new GraphicsDevice(Adapters[0]);

            SwapChain = new GraphicsSwapChain(parameters, Device);

            CommandList = new CommandList(Device);

            Texture = new Texture(Device, SwapChain);

            Shaders = new Shaders(Device, "Shaders/VertexShader.hlsl", "Shaders/PixelShader.hlsl");

            Mesh = new Mesh();

            VertexBuffer = new Buffer(Mesh.SizeInBytes, Mesh.Size, Device, ResourceInfo.VertexBuffer);

            IndexBuffer = new Buffer(Mesh.IndexSizeInBytes, Mesh.IndexSize, Device, ResourceInfo.IndexBuffer);

            ConstantBuffer = new Buffer(Utilities.SizeOf <Transform>(), Utilities.SizeOf <Transform>(), Device, ResourceInfo.ConstantBuffer);

            Camera = new Camera(CameraType.Static);

            Camera.SetLens((float)Math.PI / 4, 1.2f, 1.0f, 1000.0f);
        }
コード例 #2
0
        public void Draw()
        {
            Device.Reset();

            VertexBuffer.Update <Vertex>(Mesh.Vertices);

            IndexBuffer.Update <int>(Mesh.Indices);

            CommandList.ClearDepthStencilView(Texture, DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil);

            CommandList.SetRenderTargets(Texture);

            //Clear our backbuffer to the updated color
            CommandList.Clear(Texture, new Color4(0.0f, 0.2f, 0.4f, 1));

            CommandList.SetInputLayout(Shaders.Layout);

            CommandList.SetViewPort(SwapChain.PresentParameters.Width, SwapChain.PresentParameters.Height, 0, 0);

            CommandList.SetVertexBuffer(VertexBuffer);

            CommandList.SetIndexBuffer(IndexBuffer);

            CommandList.SetVertexShader(Shaders.VertexShader);

            CommandList.SetPixelShader(Shaders.PixelShader);



            //---Draw Mesh
            CommandList.SetPrimitiveType(SharpDX.Direct3D.PrimitiveTopology.TriangleList);
            CommandList.DrawIndexed(Mesh.IndexCount);
        }
コード例 #3
0
        public RenderSystem(PresentationParameters parameters)
        {
            Adapters = GraphicsAdapter.EnumerateGraphicsAdapter();

            Device = new GraphicsDevice(Adapters[0]);

            SwapChain = new GraphicsSwapChain(parameters, Device);

            CommandList = new CommandList(Device);

            Texture = new Texture(Device, SwapChain);

            Shaders = new Shaders(Device, "Shaders/VertexShader.hlsl", "Shaders/PixelShader.hlsl");

            StateWireframe = new PipelineState(Device, FillMode.Wireframe, CullMode.None);

            StateSolid = new PipelineState(Device, FillMode.Solid, CullMode.None);

            Grid = new Grid(1, 1, 8, 8);

            VertexBuffer = new Buffer(Grid.SizeInBytes, Grid.Size, Device, ResourceInfo.VertexBuffer);

            IndexBuffer = new Buffer(Grid.IndexSizeInBytes, Grid.IndexSize, Device, ResourceInfo.IndexBuffer);

            ConstantBuffer = new Buffer(Utilities.SizeOf <Transform>(), Utilities.SizeOf <Transform>(), Device, ResourceInfo.ConstantBuffer);

            Camera = new Camera(CameraType.Static);

            Camera.Position = new Vector3(0.0f, 0.0f, -2.5f);

            Camera.SetLens((float)Math.PI / 4, 1.2f, 1.0f, 1000.0f);

            World = new Matrix[2];
        }
コード例 #4
0
        public RenderSystem(PresentationParameters parameters)
        {
            parameter = parameters;

            Adapters = GraphicsAdapter.EnumerateGraphicsAdapter();

            Device = new GraphicsDevice(Adapters[0]);

            SwapChain = new GraphicsSwapChain(parameters, Device);

            CommandList = new CommandList(Device);

            Texture = new Texture(Device, SwapChain);

            Shaders = new Shaders(Device, "Shaders/VertexShader.hlsl", "Shaders/PixelShader.hlsl");

            StateSolid = new PipelineState(Device, FillMode.Solid, CullMode.None);

            Mesh = new Mesh("Models/suzanne.obj");

            TextureAddressMode Wrap = TextureAddressMode.Wrap;

            SamplerState = new SamplerState(Device, Wrap, Wrap, Wrap, Filter.MinMagMipLinear);

            Camera = new Camera();

            Camera.Position = new Vector3(0, 5, -33);

            Camera.SetLens((float)Math.PI / 4, 1.2f, 1.0f, 1000.0f);

            Grid = new Grid(30, 30, 2, 2);

            System.Drawing.Point LastMousePos = new System.Drawing.Point();

            parameter.Con.MouseDown += (o, e) =>
            {
                LastMousePos = e.Location;
            };

            parameter.Con.MouseMove += (o, e) =>
            {
                if (e.Button == MouseButtons.Middle)
                {
                    Camera.Pitch((float)Math.PI * (0.25f * (e.Y - LastMousePos.Y)) / 180.0f);
                    Camera.Yaw((float)Math.PI * (0.25f * (e.X - LastMousePos.X)) / 180.0f);

                    LastMousePos = e.Location;
                }
            };

            BuildRenderItems();

            Input = new Input.Input();

            Input.Initialize(parameter.Con);
        }
コード例 #5
0
        public RenderSystem(PresentationParameters parameters)
        {
            Adapters = GraphicsAdapter.EnumerateGraphicsAdapter();

            Device = new GraphicsDevice(Adapters[0]);

            SwapChain = new GraphicsSwapChain(parameters, Device);

            CommandList = new CommandList(Device);

            Texture = new Texture(Device, SwapChain);

            Shaders = new Shaders(Device, "Shaders/VertexShader.hlsl", "Shaders/PixelShader.hlsl");


            StateSolid = new PipelineState(Device, FillMode.Solid, CullMode.None);


            Mesh = new Mesh("Models/mitsuba-sphere.obj");

            VertexBuffer   = new Buffer[1];
            IndexBuffer    = new Buffer[1];
            ConstantBuffer = new Buffer[2];



            VertexBuffer[0] = new Buffer(Mesh.SizeInBytes, Mesh.Size, Device, ResourceInfo.VertexBuffer);
            IndexBuffer[0]  = new Buffer(Mesh.IndexSizeInBytes, Mesh.IndexSize, Device, ResourceInfo.IndexBuffer);


            ConstantBuffer[0] = new Buffer(Utilities.SizeOf <Transform>(), Utilities.SizeOf <Transform>(), Device, ResourceInfo.ConstantBuffer);
            ConstantBuffer[1] = new Buffer(Utilities.SizeOf <LightBuffer>(), Utilities.SizeOf <LightBuffer>(), Device, ResourceInfo.ConstantBuffer);


            TextureAddressMode Wrap = TextureAddressMode.Wrap;

            SamplerState = new SamplerState(Device, Wrap, Wrap, Wrap, Filter.MinMagMipLinear);


            Camera = new Camera(CameraType.Static);

            Camera.Position = new Vector3(0.0f, 1.2f, -8.0f);

            Camera.SetLens((float)Math.PI / 4, 1.2f, 1.0f, 1000.0f);


            World = new Matrix[3];

            Textures    = new ShaderResourceView[3];
            Textures[0] = Texture.LoadFromFile(Device, "Text/cracked_c.png");
            Textures[1] = Texture.LoadFromFile(Device, "Text/mtl01_c.png");
            Textures[2] = Texture.LoadFromFile(Device, "Text/wall_stone04_c2.png");
        }
コード例 #6
0
        public RenderSystem(PresentationParameters parameters)
        {
            Adapters = GraphicsAdapter.EnumerateGraphicsAdapter();

            Device = new GraphicsDevice(Adapters[0]);

            SwapChain = new GraphicsSwapChain(parameters, Device);

            CommandList = new CommandList(Device);

            Texture = new Texture(Device, SwapChain);
        }
コード例 #7
0
        public void Draw()
        {
            Device.Reset();


            CommandList.ClearDepthStencilView(Texture, DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil);

            CommandList.SetRenderTargets(Texture);

            //Clear our backbuffer to the updated color
            CommandList.Clear(Texture, new Color4(0.2f, 0.4f, 0.8f, 1.0f));

            CommandList.SetInputLayout(Shaders.Layout);

            CommandList.SetViewPort(SwapChain.PresentParameters.Width, SwapChain.PresentParameters.Height, 0, 0);

            CommandList.SetVertexShader(Shaders.VertexShader);

            CommandList.SetPixelShader(Shaders.PixelShader);



            for (int i = 0; i < RMesh.Worlds.Count(); i++)
            {
                RMesh.VertexBuffer.Update <Vertex>(Mesh.Vertices.Data.ToArray());
                RMesh.IndexBuffer.Update <int>(Mesh.Indices.Data.ToArray());
                RMesh.ConstantBuffer[0].UpdateConstant <Transform>(ShaderType.VertexShader, 0, new Transform(RMesh.Worlds[i], Camera.View, Camera.Proj)); // cbuffer MatrixBuffer (W V P) : register(b0)
                RMesh.ConstantBuffer[1].UpdateConstant <LightBuffer>(ShaderType.PixelShader, 0, RMesh.Light);
                RMesh.ConstantBuffer[2].UpdateConstant <CameraBuffer>(ShaderType.VertexShader, 1, new CameraBuffer(Camera.Position));
                CommandList.SetVertexBuffer(RMesh.VertexBuffer);
                CommandList.SetIndexBuffer(RMesh.IndexBuffer);
                CommandList.SetPrimitiveType(SharpDX.Direct3D.PrimitiveTopology.TriangleList);
                CommandList.SetRasterizerState(StateSolid);
                CommandList.SetSampler(ShaderType.PixelShader, SamplerState, 0);
                CommandList.SetShaderResource(ShaderType.PixelShader, RMesh.Texture, 0);
                CommandList.DrawIndexed(Mesh.Indices.Count);
            }



            RGrid.VertexBuffer.Update <Vertex>(Grid.Vertices.Data.ToArray());
            RGrid.IndexBuffer.Update <int>(Grid.Indices.Data.ToArray());
            RGrid.ConstantBuffer[0].UpdateConstant <Transform>(ShaderType.VertexShader, 0, new Transform(RGrid.Worlds[0], Camera.View, Camera.Proj)); // cbuffer MatrixBuffer (W V P) : register(b0)
            RGrid.ConstantBuffer[1].UpdateConstant <LightBuffer>(ShaderType.PixelShader, 0, RGrid.Light);
            RGrid.ConstantBuffer[2].UpdateConstant <CameraBuffer>(ShaderType.VertexShader, 1, new CameraBuffer(Camera.Position));
            CommandList.SetVertexBuffer(RGrid.VertexBuffer);
            CommandList.SetIndexBuffer(RGrid.IndexBuffer);
            CommandList.SetPrimitiveType(SharpDX.Direct3D.PrimitiveTopology.TriangleList);
            CommandList.SetRasterizerState(StateSolid);
            CommandList.SetSampler(ShaderType.PixelShader, SamplerState, 0);
            CommandList.SetShaderResource(ShaderType.PixelShader, RGrid.Texture, 0);
            CommandList.DrawIndexed(Grid.Indices.Count);
        }
コード例 #8
0
        public RenderSystem(PresentationParameters parameters)
        {
            Adapters = GraphicsAdapter.EnumerateGraphicsAdapter();

            Device = new GraphicsDevice(Adapters[0]);

            SwapChain = new GraphicsSwapChain(parameters, Device);

            CommandList = new CommandList(Device);

            Texture = new Texture(Device, SwapChain);

            Shaders = new Shaders(Device, "Shaders/VertexShader.hlsl", "Shaders/PixelShader.hlsl");

            StateWireframe = new PipelineState(Device, FillMode.Wireframe, CullMode.None);

            StateSolid = new PipelineState(Device, FillMode.Solid, CullMode.None);

            Grid = new Grid(1, 1, 8, 8);

            Mesh = new Mesh("suzanne.obj");

            VertexBuffer = new Buffer[2];
            IndexBuffer  = new Buffer[2];

            VertexBuffer[0] = new Buffer(Grid.SizeInBytes, Grid.Size, Device, ResourceInfo.VertexBuffer);
            IndexBuffer[0]  = new Buffer(Grid.IndexSizeInBytes, Grid.IndexSize, Device, ResourceInfo.IndexBuffer);

            VertexBuffer[1] = new Buffer(Mesh.SizeInBytes, Mesh.Size, Device, ResourceInfo.VertexBuffer);
            IndexBuffer[1]  = new Buffer(Mesh.IndexSizeInBytes, Mesh.IndexSize, Device, ResourceInfo.IndexBuffer);

            ConstantBuffer = new Buffer(Utilities.SizeOf <Transform>(), Utilities.SizeOf <Transform>(), Device, ResourceInfo.ConstantBuffer);

            TextureAddressMode Wrap = TextureAddressMode.Wrap;

            SamplerState = new SamplerState(Device, Wrap, Wrap, Wrap, Filter.MinMagMipLinear);

            Camera = new Camera(CameraType.Static);

            Camera.Position = new Vector3(0.0f, 0.15f, -1.5f);

            Camera.SetLens((float)Math.PI / 4, 1.2f, 1.0f, 1000.0f);

            World = new Matrix[2];

            Textures    = new ShaderResourceView[2];
            Textures[0] = Texture.LoadFromFile(Device, "Text/UV_Grid_Sm.jpg");
            Textures[1] = Texture.LoadFromFile(Device, "Text/UV_Grid_Lrg.jpg");
        }
コード例 #9
0
        public void Draw()
        {
            Device.Reset();

            VertexBuffer[0].Update <Vertex>(Grid.Vertices.ToArray());
            IndexBuffer[0].Update <int>(Grid.Indices.ToArray());

            VertexBuffer[1].Update <Vertex>(Mesh.Vertices.ToArray());
            IndexBuffer[1].Update <int>(Mesh.Indices.ToArray());

            CommandList.ClearDepthStencilView(Texture, DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil);

            CommandList.SetRenderTargets(Texture);

            //Clear our backbuffer to the updated color
            CommandList.Clear(Texture, new Color4(0.0f, 0.2f, 0.4f, 1));

            CommandList.SetInputLayout(Shaders.Layout);

            CommandList.SetViewPort(SwapChain.PresentParameters.Width, SwapChain.PresentParameters.Height, 0, 0);

            CommandList.SetVertexShader(Shaders.VertexShader);

            CommandList.SetPixelShader(Shaders.PixelShader);


            //---Draw Grid #2
            CommandList.SetVertexBuffer(VertexBuffer[0]);
            CommandList.SetIndexBuffer(IndexBuffer[0]);
            ConstantBuffer.UpdateConstant <Transform>(ShaderType.VertexShader, 0, new Transform(World[0], Camera.View, Camera.Projection)); // cbuffer MatrixBuffer (W V P) : register(b0)
            CommandList.SetPrimitiveType(SharpDX.Direct3D.PrimitiveTopology.TriangleList);
            CommandList.SetRasterizerState(StateSolid);
            CommandList.SetSampler(ShaderType.PixelShader, SamplerState, 0);
            CommandList.SetShaderResource(ShaderType.PixelShader, Textures[0], 0);
            CommandList.DrawIndexed(Grid.IndexCount);



            //---Draw Grid #2
            CommandList.SetVertexBuffer(VertexBuffer[1]);
            CommandList.SetIndexBuffer(IndexBuffer[1]);
            ConstantBuffer.UpdateConstant <Transform>(ShaderType.VertexShader, 0, new Transform(World[1], Camera.View, Camera.Projection)); // cbuffer MatrixBuffer (W V P) : register(b0)
            CommandList.SetPrimitiveType(SharpDX.Direct3D.PrimitiveTopology.TriangleList);
            CommandList.SetRasterizerState(StateWireframe);
            CommandList.SetSampler(ShaderType.PixelShader, SamplerState, 0);
            CommandList.SetShaderResource(ShaderType.PixelShader, Textures[1], 0);
            CommandList.DrawIndexed(Mesh.IndexCount);
        }
コード例 #10
0
        public RenderSystem(PresentationParameters parameters)
        {
            Adapters = GraphicsAdapter.EnumerateGraphicsAdapter();

            Device = new GraphicsDevice(Adapters[0]);

            SwapChain = new GraphicsSwapChain(parameters, Device);

            CommandList = new CommandList(Device);

            Texture = new Texture(Device, SwapChain);

            Shaders = new Shaders(Device, "Shaders/VertexShader.hlsl", "Shaders/PixelShader.hlsl");

            Triangle = new Mesh();

            VertexBuffer = new Buffer(Triangle.SizeInBytes, Triangle.Size, Device, ResourceInfo.VertexBuffer());
        }
コード例 #11
0
 public void Draw()
 {
     //Clear our backbuffer to the updated color
     CommandList.Clear(Texture, new Color4(0.0f, 0.2f, 0.4f, 1));
 }