/// <summary> /// Creates a render target texture with the given width and height. /// </summary> /// <param name="device">Graphics device.</param> /// <param name="width">Width of generated texture.</param> /// <param name="height">Height of generated texture.</param> public D3D11.Texture2D CreateRenderTargetTexture(D3D11.Device device, int width, int height) { var textureDescription = new D3D11.Texture2DDescription(); if (TryEnableAntialiasing) { var maxCount = 1; for (var i = 0; i < 32; i++) { if (device.CheckMultisampleQualityLevels(DXGI.Format.B8G8R8A8_UNorm, i) > 0) maxCount = i; } textureDescription.Width = width; textureDescription.Height = height; textureDescription.MipLevels = 1; textureDescription.ArraySize = 1; textureDescription.Format = DXGI.Format.B8G8R8A8_UNorm; textureDescription.Usage = D3D11.ResourceUsage.Default; textureDescription.SampleDescription = new DXGI.SampleDescription(maxCount, 0); textureDescription.BindFlags = D3D11.BindFlags.ShaderResource | D3D11.BindFlags.RenderTarget; textureDescription.CpuAccessFlags = D3D11.CpuAccessFlags.None; textureDescription.OptionFlags = D3D11.ResourceOptionFlags.None; } else { textureDescription.Width = width; textureDescription.Height = height; textureDescription.MipLevels = 1; textureDescription.ArraySize = 1; textureDescription.Format = DXGI.Format.B8G8R8A8_UNorm; textureDescription.Usage = D3D11.ResourceUsage.Default; textureDescription.SampleDescription = new DXGI.SampleDescription(1, 0); textureDescription.BindFlags = D3D11.BindFlags.ShaderResource | D3D11.BindFlags.RenderTarget; textureDescription.CpuAccessFlags = D3D11.CpuAccessFlags.None; textureDescription.OptionFlags = D3D11.ResourceOptionFlags.None; } return new D3D11.Texture2D(device, textureDescription); }