Direct2D随笔1——构建D2D环境

最近准备写个小游戏,所以特意去捣鼓了一下D2D,发现网上关于D2D的文章相当的少,所以很多时候都只能自己摸索前进。

把自己的一些随笔记下来,省得以后忘了~

因为是随笔嘛~不会有那么堆乱七八糟的概念,更多的是一种经验,能用就行~

D2D我选择的是SharpDX,因为听说比那个什么API开发包要好,各方面都好,所以就用了这个……

protected D2D1.Factory D2DFactory = null;
protected D2D1.WindowRenderTarget D2DWindowRenderTarget = null;

这两个东西是必须有的东西,另外前边定义了一排using,也贴上来。

using SharpDX;
using SharpDX.Direct2D1;
using SharpDX.Direct3D11;
using SharpDX.Direct3D9;
using SharpDX.DirectWrite;
using SharpDX.DXGI;
using SharpDX.WIC;
using D2D1 = SharpDX.Direct2D1;
using D3D11 = SharpDX.Direct3D11;
using D3D9 = SharpDX.Direct3D9;
using DW = SharpDX.DirectWrite;
using DXGI = SharpDX.DXGI;
using WIC = SharpDX.WIC;
首先就是要建立设备:

private void CreateDevice (Control renderTarget) {
	D2DFactory = new D2D1.Factory();
      	D2D1.PixelFormat D2DPixelFormat = new D2D1.PixelFormat(DXGI.Format.B8G8R8A8_UNorm, D2D1.AlphaMode.Ignore);
      	D2D1.HwndRenderTargetProperties D2DHwndRenderTargetProperties = new HwndRenderTargetProperties();
      	D2DHwndRenderTargetProperties.Hwnd = renderTarget.Handle;
      	D2DHwndRenderTargetProperties.PixelSize = new Size2(renderTarget.Width, renderTarget.Height);
      	D2DHwndRenderTargetProperties.PresentOptions = PresentOptions.None;
      	D2D1.RenderTargetProperties D2DRenderTargetProperties = new RenderTargetProperties(
      		D2D1.RenderTargetType.Hardware,
      		D2DPixelFormat,
      		0, 0,
		RenderTargetUsage.None,
		FeatureLevel.Level_DEFAULT);
      	D2DWindowRenderTarget = new WindowRenderTarget(
		D2DFactory, 
		D2DRenderTargetProperties,
		D2DHwndRenderTargetProperties);
      	D2DWindowRenderTarget.AntialiasMode = AntialiasMode.PerPrimitive;
}

Control是要绘图的控件,可以把Form传进来,也可以只传进来一个panel。

最后一行是一个抗锯齿的玩意,我设定的是抗锯齿打开。

RenderTarget会是绘制的主要工具。

到此为止构建就基本结束了。

你可能感兴趣的:(Direct2D,SharpDX)