Я в 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 все как та просто, на нем рисуется отлично)
Я знакомлюсь с VK API, и воспользовался WebClient'ом для выполнения Get запросаВсё проходит гладко, но текст как и нужно, отображается на textbox'е в формате...
Допустим, есть программа и мне нужно в конце ее работы получить некоторую статистику