SharpDX11 [DirectX11] рисование линии

365
27 мая 2017, 15:06

Я в DirextX ноль, по этому нубский вопрос. Как мне рисовать линии в окне DirectX11 имея только классы:

SharpDX.Direct3D11.Device _device,
SharpDX.Direct3D11.DeviceContext _deviceContext
SharpDX.Direct3D11.Texture2D _texture2d
SharpDX.DXGI.SwapChain3 swapChain

дело в том что я перехватываю игровое окно, по этому у меня нету других инструментов из SharpDX или есть даже не знаю.

Вот пример который работает но, закрывает весь окно и не видно самой игры.

 void InitText(SharpDX.Direct3D11.Device _device, DeviceContext _deviceContext, Texture2D _renderTarge, SwapChain3 swapChain)
    {
        init = true;
        renderView = new RenderTargetView(_device, _renderTarge);
        var vertexShaderByteCode = SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile(@"MiniTri.fx", "VS", "vs_4_0", SharpDX.D3DCompiler.ShaderFlags.None, SharpDX.D3DCompiler.EffectFlags.None);
        var vertexShader = new VertexShader(_device, vertexShaderByteCode);
        var pixelShaderByteCode = SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile(@"MiniTri.fx", "PS", "ps_4_0", SharpDX.D3DCompiler.ShaderFlags.None, SharpDX.D3DCompiler.EffectFlags.None);
        var pixelShader = new PixelShader(_device, pixelShaderByteCode);
        var layout = new InputLayout(
            _device,
            SharpDX.D3DCompiler.ShaderSignature.GetInputSignature(vertexShaderByteCode),
            new[]
                {
                    new SharpDX.Direct3D11.InputElement("POSITION", 0, SharpDX.DXGI.Format.R32G32B32A32_Float, 0, 0),
                    new SharpDX.Direct3D11.InputElement("COLOR", 0, SharpDX.DXGI.Format.R32G32B32A32_Float, 16, 0)
                });
        // Instantiate Vertex buiffer from vertex data
        var vertices = SharpDX.Direct3D11.Buffer.Create(_device, BindFlags.VertexBuffer, new[]
                              {
                                  new Vector4(0.0f, 0.5f, 0.5f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
                                  new Vector4(0.5f, -0.5f, 0.5f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f),
                                  new Vector4(-0.5f, -0.5f, 0.5f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f),
                              });
        _deviceContext.InputAssembler.InputLayout = layout;
        _deviceContext.InputAssembler.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.TriangleList;
        _deviceContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(vertices, 32, 0));
        _deviceContext.VertexShader.Set(vertexShader);
        _deviceContext.Rasterizer.SetViewport(new SharpDX.Viewport(0, 0, 800, 600, 0.0f, 1.0f));
        _deviceContext.PixelShader.Set(pixelShader);
        _deviceContext.OutputMerger.SetTargets(renderView);
    }
int PresentHook(IntPtr swapChainPtr, int syncInterval, SharpDX.DXGI.PresentFlags flags)
    {
        this.Frame();
        SwapChain3 swapChain = (SharpDX.DXGI.SwapChain3)swapChainPtr;
        SharpDX.Direct3D11.Device device = swapChain.GetDevice<SharpDX.Direct3D11.Device>();
        DeviceContext _deviceContext = device.ImmediateContext;
        Texture2D _renderTarge = swapChain.GetBackBuffer<Texture2D>(0);
        //_deviceContext.ClearRenderTargetView(renderView, Color.ForestGreen);
        InitText(device, _deviceContext, _renderTarge, swapChain);
        _deviceContext.Draw(3, 0);

        swapChain.Present(syncInterval, flags);
        return SharpDX.Result.Ok.Code;
    }

(В DirectX9 все как та просто, на нем рисуется отлично)

READ ALSO
Как добавить кнопку рядом с кнопкой пуск?

Как добавить кнопку рядом с кнопкой пуск?

Как добавить кнопку рядом с кнопкой пуск?

296
Как перевести Json формат в &ldquo;понятный&rdquo; текст?

Как перевести Json формат в “понятный” текст?

Я знакомлюсь с VK API, и воспользовался WebClient'ом для выполнения Get запросаВсё проходит гладко, но текст как и нужно, отображается на textbox'е в формате...

307
С помощью каких средств можно получить статистику о времени выполнения каждого метода?

С помощью каких средств можно получить статистику о времени выполнения каждого метода?

Допустим, есть программа и мне нужно в конце ее работы получить некоторую статистику

241