Esempio n. 1
0
    void InitializeDeviceResources()
    {
        DXGI.ModeDescription      backBufferDesc = new DXGI.ModeDescription(m_width, m_height, new DXGI.Rational(60, 1), DXGI.Format.R8G8B8A8_UNorm);
        DXGI.SwapChainDescription swapChainDesc  = new DXGI.SwapChainDescription()
        {
            ModeDescription   = backBufferDesc,
            SampleDescription = new DXGI.SampleDescription(1, 0),
            Usage             = DXGI.Usage.RenderTargetOutput,
            BufferCount       = 1,
            OutputHandle      = m_renderForm.Handle,
            IsWindowed        = true,
        };
        D3D11.Device.CreateWithSwapChain(SharpDX.Direct3D.DriverType.Hardware, D3D11.DeviceCreationFlags.None, swapChainDesc,
                                         out m_d3d11Device, out m_swapChain);
        m_d3d11DeviceContext = m_d3d11Device.ImmediateContext;

        using (D3D11.Texture2D backBufer = m_swapChain.GetBackBuffer <D3D11.Texture2D>(0))
        {
            m_renderTargetView = new D3D11.RenderTargetView(m_d3d11Device, backBufer);
        }

        m_viewPort = new SharpDX.Viewport(0, 0, m_width, m_height);
        m_d3d11DeviceContext.Rasterizer.SetViewport(m_viewPort);
    }
Esempio n. 2
0
 public void SetViewport(SharpDX.Viewport viewport)
 {
     Context.Rasterizer.SetViewport(viewport);
 }
Esempio n. 3
0
        static void Main(string[] args)
        {
            //Это быстро написанный код. Тут все переменные для DX11.
            RenderForm renderForm = new RenderForm();

            SharpDX.Direct3D11.Device device;
            SwapChain            swapChain;
            SwapChainDescription swapChainDescription;

            SharpDX.Viewport viewport;
            DeviceContext    deviceContext;
            ModeDescription  modeDescription;
            Texture2D        texture2D;
            RenderTargetView renderTargetView;



            //Устанавливаем параметры в переменные.
            renderForm.Width     = 640;
            renderForm.Height    = 480;
            modeDescription      = new ModeDescription(640, 480, new Rational(60, 1), Format.R8G8B8A8_UNorm);
            swapChainDescription = new SwapChainDescription()
            {
                BufferCount       = 1,
                SampleDescription = new SampleDescription(1, 0),
                Usage             = Usage.RenderTargetOutput,
                ModeDescription   = modeDescription,
                IsWindowed        = true,
                OutputHandle      = renderForm.Handle
            };
            SharpDX.Direct3D11.Device.CreateWithSwapChain(
                DriverType.Hardware,
                SharpDX.Direct3D11.DeviceCreationFlags.None,
                swapChainDescription,
                out device,
                out swapChain);
            viewport      = new SharpDX.Viewport(0, 0, 640, 480);
            deviceContext = device.ImmediateContext;
            deviceContext.Rasterizer.SetViewport(viewport);
            texture2D        = swapChain.GetBackBuffer <Texture2D>(0);
            renderTargetView = new RenderTargetView(device, texture2D);



            //Шейдеры.
            ShaderSignature inputSignature;
            VertexShader    vertexShader;
            PixelShader     pixelShader;
            InputLayout     inputLayout;

            Vector3[] vertices;
            SharpDX.Direct3D11.Buffer buffer;
            ShaderBytecode            vertexShaderByteCode;
            ShaderBytecode            pixelShaderByteCode;

            SharpDX.Direct3D11.InputElement[] inputElements;


            inputElements = new SharpDX.Direct3D11.InputElement[]
            {
                new SharpDX.Direct3D11.InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0, SharpDX.Direct3D11.InputClassification.PerVertexData, 0),
                new SharpDX.Direct3D11.InputElement("COLOR", 0, Format.R32G32B32A32_Float, 12, 0, SharpDX.Direct3D11.InputClassification.PerVertexData, 0)
            };
            vertices = new Vector3[]
            {
                new Vector3(0, 0, 0),
                new Vector3(0, 240, 0),
                new Vector3(320, 120, 0)
            };
            buffer = SharpDX.Direct3D11.Buffer.Create(device, SharpDX.Direct3D11.BindFlags.VertexBuffer, vertices);

            VertexPositionColor[] vrt = new VertexPositionColor[]
            {
                new VertexPositionColor(new Vector3(-0.5f, 0.5f, 0.0f), SharpDX.Color.Red),
                new VertexPositionColor(new Vector3(0.5f, 0.5f, 0.0f), SharpDX.Color.Green),
                new VertexPositionColor(new Vector3(0.0f, -0.5f, 0.0f), SharpDX.Color.Blue)
            };

            vertexShaderByteCode = ShaderBytecode.CompileFromFile("vertexShader.hlsl", "main", "vs_4_0", ShaderFlags.Debug);
            inputSignature       = ShaderSignature.GetInputSignature(vertexShaderByteCode);
            vertexShader         = new SharpDX.Direct3D11.VertexShader(device, vertexShaderByteCode);



            pixelShaderByteCode = ShaderBytecode.CompileFromFile("pixelShader.hlsl", "main", "ps_4_0", ShaderFlags.Debug);
            pixelShader         = new SharpDX.Direct3D11.PixelShader(device, pixelShaderByteCode);



            deviceContext.VertexShader.Set(vertexShader);
            deviceContext.PixelShader.Set(pixelShader);
            deviceContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
            inputLayout = new SharpDX.Direct3D11.InputLayout(device, inputSignature, inputElements);
            deviceContext.InputAssembler.InputLayout = inputLayout;



            //Используем.
            deviceContext.OutputMerger.SetRenderTargets(renderTargetView);
            deviceContext.ClearRenderTargetView(renderTargetView, new SharpDX.Color(32, 103, 178));
            deviceContext.Draw(0, 0);
            swapChain.Present(1, PresentFlags.None);
            renderForm.Show();



            //Очистка всего.
            renderTargetView.Dispose();
            texture2D.Dispose();
            deviceContext.Dispose();
            swapChain.Dispose();
            device.Dispose();
            renderForm.Dispose();
        }