public void InitDX()
        {
            m_PresentParameters = new PresentParameters()
            {
                Windowed   = true,
                SwapEffect = SwapEffect.Discard
            };

            Logger.WriteLine(Logger.Stage.INIT_GFX, "creating device...");
            m_Device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, m_PresentParameters);

            Logger.WriteLine(Logger.Stage.INIT_GFX, "device info :");
            AdapterDetails devInfo = Manager.Adapters[0].Information;
            Caps           devCaps = m_Device.DeviceCaps;

            Logger.WriteLine(Logger.Stage.INIT_GFX, String.Format("- device desc           : {0}", devInfo.Description));
            Logger.WriteLine(Logger.Stage.INIT_GFX, String.Format("- max texture size      : {0}x{1}", devCaps.MaxTextureWidth, devCaps.MaxTextureHeight));
            Logger.WriteLine(Logger.Stage.INIT_GFX, String.Format("- vertex shader version : {0}", devCaps.VertexShaderVersion.ToString()));
            Logger.WriteLine(Logger.Stage.INIT_GFX, String.Format("- pixel shader version  : {0}", devCaps.PixelShaderVersion.ToString()));

            Logger.WriteLine(Logger.Stage.INIT_GFX, "device reset..");
            m_Device_DeviceReset(m_Device, null);

            m_Device.DeviceLost  += new EventHandler(m_Device_DeviceLost);
            m_Device.DeviceReset += new EventHandler(m_Device_DeviceReset);

            m_DXInitialized = true;
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GraphicsAdapter" /> class.
        /// </summary>
        /// <param name="adapterOrdinal">The adapter ordinal.</param>
        private GraphicsAdapter(int adapterOrdinal)
        {
            this.adapterOrdinal = adapterOrdinal;

            SupportedDisplayModes = GetSupportedDisplayModes();

            CurrentDisplayMode = D3D.GetAdapterDisplayMode(adapterOrdinal);

            m_adapterDetails = D3D.GetAdapterIdentifier(adapterOrdinal);
            this.Name        = m_adapterDetails.Description + " (" + m_adapterDetails.DeviceName.Replace("\\", "").Replace(".", "") + ")";
        }
Пример #3
0
        public DeviceContext(IntPtr handle, int backBufferWidth, int backBufferHeight, bool fullScreen, bool verticalSync)
        {
            PerformanceMonitor = new PerformanceMonitor();

            _formHandle            = handle;
            PresentationParameters = new PresentParameters()
            {
                BackBufferFormat       = Format.X8R8G8B8,
                BackBufferCount        = 1,
                BackBufferWidth        = backBufferWidth,
                BackBufferHeight       = backBufferHeight,
                MultiSampleType        = MultisampleType.None,
                SwapEffect             = SwapEffect.Discard,
                EnableAutoDepthStencil = true,
                AutoDepthStencilFormat = Format.D24S8,
                PresentFlags           = PresentFlags.DiscardDepthStencil,
                PresentationInterval   = PresentInterval.Immediate,
                Windowed           = !fullScreen,
                DeviceWindowHandle = _formHandle
            };

            try
            {
                Direct3D library = new Direct3D();

                if (library.AdapterCount == 0)
                {
                    throw new Exception("Unable to find an appropriate Direct3D adapter.");
                }

                AdapterDetails     adapterDetails     = library.GetAdapterIdentifier(0);
                AdapterInformation adapterInformation = library.Adapters[0];

                _device   = new Device(library, 0, DeviceType.Hardware, _formHandle, CreateFlags.HardwareVertexProcessing, PresentationParameters);
                _viewport = _device.Viewport;

                _capabilities = _device.Capabilities;

                Tracer.Info("Adapter: {0}", adapterDetails.DeviceName);
                Tracer.Info("Driver: {0}, v{1}", adapterDetails.Driver, adapterDetails.DriverVersion);
                Tracer.Info("Max Texture Size: {0}x{1}", _capabilities.MaxTextureWidth, _capabilities.MaxTextureHeight);
                Tracer.Info("Max Texture Repeat: {0}", _capabilities.MaxTextureRepeat);
                Tracer.Info("Max Texture Aspect Ratio: {0}", _capabilities.MaxTextureAspectRatio);
                Tracer.Info("Texture Size Options: {0}", _capabilities.TextureCaps);
            }
            catch (Exception e)
            {
                Tracer.Error(e);
                return;
            }

            _vertexDeclarationBuilder = new VertexDeclarationBuilder(this);
        }
Пример #4
0
        public DisplayAdapter(Microsoft.DirectX.Direct3D.AdapterInformation adapterInfo)
        {
            this.ordinal = adapterInfo.Adapter;
            this.details = adapterInfo.Information;

            // Get list of all display modes on this adapter.
            // Also build a temporary list of all display adapter formats.
            foreach (DisplayMode displayMode in adapterInfo.SupportedDisplayModes)
                this.displayModes.Add(displayMode);

            DisplayModeComparer dmc = new DisplayModeComparer();
            this.displayModes.Sort(dmc);

            RefreshDisplayDevices();
        }
Пример #5
0
        internal override void MakeApiInfo()
        {
            AdapterDetails details = Direct3D.GetAdapterIdentifier(d3d, 0);
            string         adapter = details.Description;
            uint           memRaw  = Device.GetAvailableTextureMemory(device);
            float          texMem  = Device.GetAvailableTextureMemory(device) / 1024f / 1024f;

            ApiInfo = new string[] {
                "-- Using Direct3D9 --",
                "Adapter: " + adapter,
                "Processing mode: " + createFlags,
                "Texture memory: " + texMem + " MB",
                "Max texture size: (" + MaxTexWidth + ", " + MaxTexHeight + ")",
                "Depth buffer format: " + depthFormat,
                "Back buffer format: " + viewFormat,
            };
        }
Пример #6
0
        /// <summary>
        /// Provede inicializaci
        /// </summary>
        private void Init()
        {
            int        defaultAdapter = 0;
            DeviceType type           = DeviceType.Hardware;

            for (int t = 0; t < Manager.Adapters.Count; t++)
            {
                AdapterDetails adapterInformation = Manager.Adapters[t].Information;

                if (adapterInformation.Description == "NVIDIA PerfHUD")
                {
                    type           = DeviceType.Reference;
                    defaultAdapter = t;
                    break;
                }
            }
            device = new Device(defaultAdapter, type, form, CreateFlags.HardwareVertexProcessing, presentParameters);
        }
Пример #7
0
        public DisplayAdapter(Microsoft.DirectX.Direct3D.AdapterInformation adapterInfo)
        {
            this.ordinal = adapterInfo.Adapter;
            this.details = adapterInfo.Information;

            // Get list of all display modes on this adapter.
            // Also build a temporary list of all display adapter formats.
            foreach (DisplayMode displayMode in adapterInfo.SupportedDisplayModes)
            {
                this.displayModes.Add(displayMode);
            }

            DisplayModeComparer dmc = new DisplayModeComparer();

            this.displayModes.Sort(dmc);

            RefreshDisplayDevices();
        }
Пример #8
0
        internal override void MakeApiInfo()
        {
            AdapterDetails details = Direct3D.GetAdapterIdentifier(d3d, 0);
            string         adapter = details.Description;

            totalMem = VideoMemoryMB;

            ApiInfo = new string[] {
                "-- Using Direct3D9 --",
                "Adapter: " + adapter,
                "Processing mode: " + createFlags,
                null,
                "Max texture size: (" + MaxTexWidth + ", " + MaxTexHeight + ")",
                "Depth buffer format: " + depthFormat,
                "Back buffer format: " + viewFormat,
            };
            UpdateApiInfo();
        }
Пример #9
0
        /*-------------------------------------------------------------------------
         * デバイス情報を得る
         * 単純に文字列とする
         * ---------------------------------------------------------------------------*/
        private void get_device_information()
        {
            Caps           caps    = base.caps;
            AdapterDetails details = Manager.Adapters[base.adpter_index].Information;

            // 短い版
            m_device_info_string_short = details.Description;

            // 通常
            m_device_info_string  = details.Description + "\n";
            m_device_info_string += "VertexShader: " + caps.VertexShaderVersion.ToString() + "  ";
            m_device_info_string += "PixelShader: " + caps.PixelShaderVersion.ToString() + "\n";

            m_device_info_string += "頂点処理:";
            if ((base.create_flags & CreateFlags.HardwareVertexProcessing) != 0)
            {
                // ハードウェアで頂点変換に対応している
                m_device_info_string += "HardwareVertexProcessing";
                if ((base.create_flags & CreateFlags.PureDevice) != 0)
                {
                    // ピュアデバイス
                    m_device_info_string += "(PureDevice)\n";
                }
                else
                {
                    m_device_info_string += "\n";
                }
            }
            else
            {
                // ハードウェアで頂点変換に対応していない
                if ((base.create_flags & CreateFlags.SoftwareVertexProcessing) != 0)
                {
                    m_device_info_string += "SoftwareVertexProcessing\n";
                }
            }
            m_device_info_string += "Vertex/Pixel Shader:";
            m_device_info_string += (now_use_shader)? "有効": "無効";
        }
Пример #10
0
            /// <summary>
            /// Updates the string which describes the device
            /// </summary>
            private void UpdateDeviceStats(DeviceType deviceType, CreateFlags behaviorFlags, AdapterDetails info)
            {
            if (State.AreStatsHidden)
                return; // Do nothing if stats are hidden

            // Get the behavior flags
            BehaviorFlags flags = new BehaviorFlags(behaviorFlags);
            // Store device information
            System.Text.StringBuilder builder = new System.Text.StringBuilder();
            // Append device type
            builder.Append(deviceType.ToString());
            // Append other types based on flags
            if (flags.HardwareVertexProcessing && flags.PureDevice)
            {
                if (deviceType == DeviceType.Hardware)
                    builder.Append(" (pure hw vp)");
                else
                    builder.Append(" (simulated pure hw vp)");
            }
            else if (flags.HardwareVertexProcessing)
            {
                if (deviceType == DeviceType.Hardware)
                    builder.Append(" (hw vp)");
                else
                    builder.Append(" (simulated hw vp)");
            }
            else if (flags.MixedVertexProcessing)
            {
                if (deviceType == DeviceType.Hardware)
                    builder.Append(" (mixed vp)");
                else
                    builder.Append(" (simulated mixed vp)");
            }
            else if (flags.SoftwareVertexProcessing)
            {
                builder.Append(" (sw vp)");
            }

            // now add the description
            builder.Append(": ");
            builder.Append(info.Description);

            // Store the device stats string
            State.DeviceStats = builder.ToString();
            }
Пример #11
0
        public DeviceEnumeration(Direct3D d3d)
        {
            InitializeComponent();
            _displayModes = new List<DisplayMode>();
            _settingsScript = new Script("DisplaySettings.txt");
            _adapter = d3d.GetAdapterIdentifier(0);

            var allowedFormats = new[] {
                Format.X1R5G5B5,
                Format.A1R5G5B5,
                Format.R5G6B5,
                Format.X8R8G8B8,
                Format.A8R8G8B8,
                Format.A2R10G10B10,
            };
            for (var af = 0; af < allowedFormats.Length; af++) {
                var format = allowedFormats[af];
                var modes = d3d.GetAdapterModeCount(0, format);
                for (var m = 0; m < modes; m++) {
                    var mode = d3d.EnumerateAdapterModes(0, format, m);
                    if (mode.Height < 600) continue;

                    var displayMode = new DisplayMode {
                        Mode = mode,
                        Bpp = af < 3 ? "16 bpp" : "32 bpp"
                    };
                    _displayModes.Add(displayMode);
                }
            }

            txtAdapterName.Text = _adapter.Description;
            txtDriverVersion.Text = _adapter.DriverVersion.ToString();

            if (_settingsScript.VariableCount == 0) {
                _windowed = true;
                rbWindowed.Checked = true;
            } else {

                if (_settingsScript.GetBool("windowed")) {
                    _windowed = true;
                    rbWindowed.Checked = true;
                } else {
                    rbFullscreen.Checked = true;
                    _windowed = false;
                }
            }
            if (!_windowed) {
                // enable fullscreen options
                chkVSync.Enabled = true;
                cbColorFormat.Enabled = true;
                cbResolution.Enabled = true;
                cbRefresh.Enabled = true;

                chkVSync.Checked = _settingsScript.GetBool("vsync");

                ResetColorFormats();

                long selectedRes = _settingsScript.GetNumber("resolution");
                ResetResolution(selectedRes);

                long refresh = _settingsScript.GetNumber("refresh");
                ResetRefresh(refresh);
            }
        }
Пример #12
0
        public DeviceEnumeration(Direct3D d3d)
        {
            InitializeComponent();
            _displayModes   = new List <DisplayMode>();
            _settingsScript = new Script("DisplaySettings.txt");
            _adapter        = d3d.GetAdapterIdentifier(0);

            var allowedFormats = new[] {
                Format.X1R5G5B5,
                Format.A1R5G5B5,
                Format.R5G6B5,
                Format.X8R8G8B8,
                Format.A8R8G8B8,
                Format.A2R10G10B10,
            };

            for (var af = 0; af < allowedFormats.Length; af++)
            {
                var format = allowedFormats[af];
                var modes  = d3d.GetAdapterModeCount(0, format);
                for (var m = 0; m < modes; m++)
                {
                    var mode = d3d.EnumerateAdapterModes(0, format, m);
                    if (mode.Height < 600)
                    {
                        continue;
                    }

                    var displayMode = new DisplayMode {
                        Mode = mode,
                        Bpp  = af < 3 ? "16 bpp" : "32 bpp"
                    };
                    _displayModes.Add(displayMode);
                }
            }

            txtAdapterName.Text   = _adapter.Description;
            txtDriverVersion.Text = _adapter.DriverVersion.ToString();

            if (_settingsScript.VariableCount == 0)
            {
                _windowed          = true;
                rbWindowed.Checked = true;
            }
            else
            {
                if (_settingsScript.GetBool("windowed"))
                {
                    _windowed          = true;
                    rbWindowed.Checked = true;
                }
                else
                {
                    rbFullscreen.Checked = true;
                    _windowed            = false;
                }
            }
            if (!_windowed)
            {
                // enable fullscreen options
                chkVSync.Enabled      = true;
                cbColorFormat.Enabled = true;
                cbResolution.Enabled  = true;
                cbRefresh.Enabled     = true;

                chkVSync.Checked = _settingsScript.GetBool("vsync");

                ResetColorFormats();

                long selectedRes = _settingsScript.GetNumber("resolution");
                ResetResolution(selectedRes);

                long refresh = _settingsScript.GetNumber("refresh");
                ResetRefresh(refresh);
            }
        }