本文告诉大家通过 SharpDx 画出简单的 2D 界面
本文属于 SharpDx 系列 博客,建议从头开始读
本文分为两步,第一步是初始化,第二步才是画界面
初始化
先创建 RenderForm 用来显示界面,在创建的过程需要指定宽度和高度
_renderForm = new RenderForm();
_renderForm.ClientSize = new Size(Width, Height);
private const int Width = 1280;
private const int Height = 720;
在 InitializeDeviceResources 函数里面更改一些参数,用于创建资源和初始化
var backBufferDesc =
new ModeDescription(Width, Height, new Rational(60, 1), Format.R8G8B8A8_UNorm);
var swapChainDesc = new SwapChainDescription
{
BufferCount = 1,
ModeDescription = backBufferDesc,
IsWindowed = true,
OutputHandle = _renderForm.Handle,
SampleDescription = new SampleDescription(1, 0),
SwapEffect = SwapEffect.Discard,
Usage = Usage.RenderTargetOutput
};
Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, swapChainDesc,
out _d3DDevice, out _swapChain);
_d3DDeviceContext = _d3DDevice.ImmediateContext;
using (var backBuffer = _swapChain.GetBackBuffer(0))
{
_renderTargetView = new RenderTargetView(_d3DDevice, backBuffer);
_viewport = new Viewport(0, 0, Width, Height);
_d3DDeviceContext.Rasterizer.SetViewport(_viewport);
}
CreateD2DRender();
上面参数和C# 从零开始写 SharpDx 应用 初始化dx修改颜色的有一些不相同,在 SwapChainDescription 里面添加了 SwapEffect 参数
在创建交换链的时候,在 Device.CreateWithSwapChain 里面修改了 DeviceCreationFlags 参数
上面内容还是在创建 3D 内容,在 DX 里面是通过一个 3D 的平面画 2D 界面
在 CreateD2DRender 方法里面才是创建 2D 的代码
想要绘制界面需要 SharpDX.Direct2D1.RenderTarget 对象,需要先创建工厂然后通过工厂和交换链拿到平面,然后将输出定向到拿到的平面
创建工厂只需要直接创建
var d2dFactory = new SharpDX.D