public static ModeDescription GetAdapterDisplayMode(int adapterOrdinal, int outputOrdinal) { OutputInfo10 outputInfo = Enumeration10.GetOutputInfo(adapterOrdinal, outputOrdinal); ModeDescription mode = new ModeDescription(); mode.RefreshRate = new Rational(0, 0); mode.Format = Format.R8G8B8A8_UNorm; mode.Scaling = DisplayModeScaling.Unspecified; mode.ScanlineOrdering = DisplayModeScanlineOrdering.Unspecified; mode.Width = 640; mode.Height = 480; if (outputInfo != null) { Rectangle rectangle = outputInfo.OutputDescription.DesktopBounds; mode.Width = rectangle.Width; mode.Height = rectangle.Height; } if (mode.Format == Format.B8G8R8A8_UNorm) { mode.Format = Format.R8G8B8A8_UNorm; } return(mode); }
/// <summary> /// Finds valid device settings based upon the desired settings. /// </summary> /// <param name="settings">The desired settings.</param> /// <returns>The best valid device settings matching the input settings.</returns> public static DeviceSettings FindValidSettings(DeviceSettings settings) { // check the desired API version try { GraphicsDeviceManager.EnsureD3D10(); } catch (Exception e) { throw new NoCompatibleDevicesException("Could not initialize Direct3D10.", e); } if (!Enumeration10.HasEnumerated) { Enumeration10.Enumerate(); } DeviceSettings newSettings = settings.Clone(); Direct3D10Settings d3d10 = FindValidD3D10Settings(settings); newSettings.Direct3D10 = d3d10; return(newSettings); }