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);
        }
Exemplo n.º 2
0
        /// <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);
        }