本文整理汇总了C#中SwapChain.GetParent方法的典型用法代码示例。如果您正苦于以下问题:C# SwapChain.GetParent方法的具体用法?C# SwapChain.GetParent怎么用?C# SwapChain.GetParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SwapChain
的用法示例。
在下文中一共展示了SwapChain.GetParent方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Renderer
public Renderer(int Width, int Height, IntPtr? OutputHandle)
{
if (Width < 1)
Width = 1;
if (Height < 1)
Height = 1;
bufferWidth = Width;
bufferHeight = Height;
deviceUsers++;
if (device == null)
device = new Device(DriverType.Hardware, DeviceCreationFlags.Debug | DeviceCreationFlags.BgraSupport, FeatureLevel.Level_11_0);
if (OutputHandle.HasValue)
{
SwapChainDescription swapChainDesc = new SwapChainDescription()
{
BufferCount = 1,
ModeDescription = new ModeDescription(BufferWidth, BufferHeight, new Rational(120, 1), Format.R8G8B8A8_UNorm),
IsWindowed = true,
OutputHandle = OutputHandle.Value,
SampleDescription = BufferSampleDescription,
SwapEffect = SwapEffect.Discard,
Usage = Usage.RenderTargetOutput,
Flags = SwapChainFlags.AllowModeSwitch,
};
swapChain = new SwapChain(device.Factory, Device, swapChainDesc);
using (var factory = swapChain.GetParent<Factory>())
factory.SetWindowAssociation(OutputHandle.Value, WindowAssociationFlags.IgnoreAltEnter);
}
LightingSystem = new ForwardLighting(this);
SetupRenderTargets();
LightingSystem.Initialize();
}
示例2: CreateDeviceInternal
//.........这里部分代码省略.........
if (settings.AdapterOrdinal == -1)
{
throw new MyRenderException("No supported device detected!", MyRenderExceptionEnum.GpuNotSupported);
}
m_settings = settings;
Log.WriteLine("CreateDevice settings");
LogSettings(ref m_settings);
// If this line crashes cmd this: Dism /online /add-capability /capabilityname:Tools.Graphics.DirectX~~~~0.0.1.0
var adapters = GetAdaptersList();
if (m_settings.AdapterOrdinal >= adapters.Length)
throw new MyRenderException("No supported device detected!", MyRenderExceptionEnum.GpuNotSupported);
var adapterId = adapters[m_settings.AdapterOrdinal].AdapterDeviceId;
if (adapterId >= GetFactory().Adapters.Length)
throw new MyRenderException("Invalid adapter id binding!", MyRenderExceptionEnum.GpuNotSupported);
var adapter = GetFactory().Adapters[adapterId];
Device = new Device(adapter, flags, FeatureLevel.Level_11_0);
// HACK: This is required for Steam overlay to work. Apparently they hook only CreateDevice methods with DriverType argument.
try
{
using (new Device(DriverType.Hardware, flags, FeatureLevel.Level_11_0)){}
}
catch { }
if (flags.HasFlag(DeviceCreationFlags.Debug))
{
if (DebugDevice != null)
{
DebugDevice.Dispose();
DebugDevice = null;
}
DebugDevice = new DeviceDebug(Device);
DebugInfoQueue = DebugDevice.QueryInterface<InfoQueue>();
new System.Threading.Thread(ProcessDebugOutput).Start();
}
if(DeviceContext != null)
{
DeviceContext.Dispose();
DeviceContext = null;
}
DeviceContext = Device.ImmediateContext;
m_windowHandle = windowHandle;
m_resolution = new Vector2I(m_settings.BackBufferWidth, m_settings.BackBufferHeight);
if (!m_initialized)
{
InitSubsystems();
m_initialized = true;
}
if (m_swapchain != null)
{
m_swapchain.Dispose();
m_swapchain = null;
}
if (m_swapchain == null)
{
SharpDX.DXGI.Device d = Device.QueryInterface<SharpDX.DXGI.Device>();
Adapter a = d.GetParent<Adapter>();
var factory = a.GetParent<Factory>();
var scDesc = new SwapChainDescription();
scDesc.BufferCount = MyRender11Constants.BUFFER_COUNT;
scDesc.Flags = SwapChainFlags.AllowModeSwitch;
scDesc.IsWindowed = true;
scDesc.ModeDescription.Format = MyRender11Constants.DX11_BACKBUFFER_FORMAT;
scDesc.ModeDescription.Height = m_settings.BackBufferHeight;
scDesc.ModeDescription.Width = m_settings.BackBufferWidth;
scDesc.ModeDescription.RefreshRate.Numerator = m_settings.RefreshRate;
scDesc.ModeDescription.RefreshRate.Denominator = 1000;
scDesc.ModeDescription.Scaling = DisplayModeScaling.Unspecified;
scDesc.ModeDescription.ScanlineOrdering = DisplayModeScanlineOrder.Progressive;
scDesc.SampleDescription.Count = 1;
scDesc.SampleDescription.Quality = 0;
scDesc.OutputHandle = m_windowHandle;
scDesc.Usage = Usage.RenderTargetOutput;
scDesc.SwapEffect = SwapEffect.Discard;
m_swapchain = new SwapChain(factory, Device, scDesc);
m_swapchain.GetParent<Factory>().MakeWindowAssociation(m_windowHandle, WindowAssociationFlags.IgnoreAll);
}
// we start with window always (DXGI recommended)
m_settings.WindowMode = MyWindowModeEnum.Window;
ApplySettings(settings);
return m_settings;
}
示例3: CreateDeviceAndSwapChain
public void CreateDeviceAndSwapChain(RenderForm form)
{
FeatureLevel[] featureLevels = { FeatureLevel.Level_11_0 };
#if GPU_DEBUG
//Use https://dev.windows.com/en-us/develop/graphics-debugging-and-frame-analysis-update on Windows 10 to install debug layer.
Device = new Device(DriverType.Hardware, DeviceCreationFlags.Debug, featureLevels);
#else
Device = new Device(DriverType.Hardware, DeviceCreationFlags.None, featureLevels);
#endif
if(ConfigurationManager.Config.AntiAliasing)
_maxQualityLevel = Device.CheckMultisampleQualityLevels(Format.B8G8R8A8_UNorm, 4);
var swapChainDescription = new SwapChainDescription
{
BufferCount = 1, // Set to a single back buffer (double buffering)
ModeDescription = new ModeDescription(form.ClientSize.Width, form.ClientSize.Height, _refreshRate, Format.R8G8B8A8_UNorm),
IsWindowed = ConfigurationManager.Config.WindowedMode,
OutputHandle = form.Handle,
SampleDescription = ConfigurationManager.Config.AntiAliasing ? new SampleDescription(4, _maxQualityLevel-1) : new SampleDescription(1, 0),
SwapEffect = SwapEffect.Discard,
Usage = Usage.RenderTargetOutput
};
SwapChain = new SwapChain(new Factory(), Device, swapChainDescription);
DeviceContext = Device.ImmediateContext;
SwapChain.GetParent<Factory>().MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll);
}
示例4: CreateDeviceAndSwapChain
public void CreateDeviceAndSwapChain(RenderForm form)
{
FeatureLevel[] featureLevels = { FeatureLevel.Level_11_0, FeatureLevel.Level_10_0 };
Device = new Device(DriverType.Hardware, DeviceCreationFlags.None, featureLevels);
if(ConfigurationManager.Config.AntiAliasing)
_maxQualityLevel = Device.CheckMultisampleQualityLevels(Format.B8G8R8A8_UNorm, 4);
var swapChainDescription = new SwapChainDescription
{
BufferCount = 1, // Set to a single back buffer (double buffering)
ModeDescription = new ModeDescription(form.ClientSize.Width, form.ClientSize.Height, _refreshRate, Format.R8G8B8A8_UNorm),
IsWindowed = ConfigurationManager.Config.WindowedMode,
OutputHandle = form.Handle,
SampleDescription = ConfigurationManager.Config.AntiAliasing ? new SampleDescription(4, _maxQualityLevel-1) : new SampleDescription(1, 0),
SwapEffect = SwapEffect.Discard,
Usage = Usage.RenderTargetOutput
};
SwapChain = new SwapChain(new Factory(), Device, swapChainDescription);
DeviceContext = Device.ImmediateContext;
SwapChain.GetParent<Factory>().MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll);
}
示例5: CreateDevice
//.........这里部分代码省略.........
}
}
if(adapterIndex == -1)
{
throw new MyRenderException("No supporting device detected!", MyRenderExceptionEnum.GpuNotSupported);
}
var settings = settingsToTry ?? new MyRenderDeviceSettings()
{
AdapterOrdinal = adapterIndex,
BackBufferHeight = mode.dmPelsHeight,
BackBufferWidth = mode.dmPelsWidth,
WindowMode = MyWindowModeEnum.Fullscreen,
VSync = false,
};
m_settings = settings;
Device = new Device(GetFactory().Adapters[adapters[m_settings.AdapterOrdinal].AdapterDeviceId], flags, FeatureLevel.Level_11_0);
// HACK: This is required for Steam overlay to work. Apparently they hook only CreateDevice methods with DriverType argument.
try
{
using (new Device(DriverType.Hardware, flags, FeatureLevel.Level_11_0)){}
}
catch { }
if (flags.HasFlag(DeviceCreationFlags.Debug))
{
if (DebugDevice != null)
{
DebugDevice.Dispose();
DebugDevice = null;
}
DebugDevice = new DeviceDebug(Device);
DebugInfoQueue = DebugDevice.QueryInterface<InfoQueue>();
new System.Threading.Thread(ProcessDebugOutput).Start();
}
if(ImmediateContext != null)
{
ImmediateContext.Dispose();
ImmediateContext = null;
}
ImmediateContext = Device.ImmediateContext;
m_windowHandle = windowHandle;
m_resolution = new Vector2I(m_settings.BackBufferWidth, m_settings.BackBufferHeight);
if (!m_initialized)
{
InitSubsystems();
m_initialized = true;
}
if (m_swapchain != null)
{
m_swapchain.Dispose();
m_swapchain = null;
}
if (m_swapchain == null)
{
SharpDX.DXGI.Device d = Device.QueryInterface<SharpDX.DXGI.Device>();
Adapter a = d.GetParent<Adapter>();
var factory = a.GetParent<Factory>();
var scDesc = new SwapChainDescription();
scDesc.BufferCount = MyRender11Constants.BUFFER_COUNT;
scDesc.Flags = SwapChainFlags.AllowModeSwitch;
scDesc.IsWindowed = true;
scDesc.ModeDescription.Format = MyRender11Constants.BACKBUFFER_FORMAT;
scDesc.ModeDescription.Height = m_settings.BackBufferHeight;
scDesc.ModeDescription.Width = m_settings.BackBufferWidth;
scDesc.ModeDescription.RefreshRate.Numerator = m_settings.RefreshRate;
scDesc.ModeDescription.RefreshRate.Denominator = 1000;
scDesc.ModeDescription.Scaling = DisplayModeScaling.Unspecified;
scDesc.ModeDescription.ScanlineOrdering = DisplayModeScanlineOrder.Progressive;
scDesc.SampleDescription.Count = 1;
scDesc.SampleDescription.Quality = 0;
scDesc.OutputHandle = m_windowHandle;
scDesc.Usage = Usage.RenderTargetOutput;
scDesc.SwapEffect = SwapEffect.Discard;
m_swapchain = new SwapChain(factory, Device, scDesc);
m_swapchain.GetParent<Factory>().MakeWindowAssociation(m_windowHandle, WindowAssociationFlags.IgnoreAll);
}
// we start with window always (DXGI recommended)
m_settings.WindowMode = MyWindowModeEnum.Window;
ApplySettings(settings);
return m_settings;
}