public void Initialize(IntPtr outputHandle) {
Debug.Assert(Initialized == false);
if (UseMsaa) {
InitializeDevice().Dispose();
}
_swapChainDescription = new SwapChainDescription {
BufferCount = 2,
ModeDescription = new ModeDescription(0, 0, new Rational(60, 1), Format.R8G8B8A8_UNorm),
IsWindowed = true,
OutputHandle = outputHandle,
SampleDescription = SampleDescription,
SwapEffect = SwapEffect.Discard,
Usage = Usage.RenderTargetOutput
};
Device device;
Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, _swapChainDescription, out device, out _swapChain);
_deviceContextHolder = new DeviceContextHolder(device);
using (var factory = _swapChain.GetParent<Factory>()) {
factory.SetWindowAssociation(outputHandle, WindowAssociationFlags.IgnoreAll);
}
InitializeInner();
Initialized = true;
}