public static D3d.Device CreateDevice(   Settings deviceSettings,
            System.Windows.Forms.Control renderWindow)
        {
            EnumerateAdapters();

            // First try full hardware acceleration.
            D3d.PresentParameters   presentParams   = deviceSettings.GetPresentParameters( renderWindow );
            D3d.CreateFlags         createFlags     = deviceSettings.GetCreateFlags(true,true);

            D3d.Device d3dDevice = CreateDevice( renderWindow,presentParams,createFlags,deviceSettings );

            if (d3dDevice == null)
            {
                log.Warning("Pure device not available.");
                createFlags = deviceSettings.GetCreateFlags(false,true);

                d3dDevice = CreateDevice( renderWindow,presentParams,createFlags,deviceSettings );

                if (d3dDevice == null)
                {
                    log.Warning("Hardware vertex processing not available.");
                    createFlags = deviceSettings.GetCreateFlags( false,false );

                    d3dDevice = CreateDevice( renderWindow,presentParams,createFlags,deviceSettings );
                }
            }

            return d3dDevice;
        }
        private static D3d.Device CreateDevice(System.Windows.Forms.Control renderWindow,
            D3d.PresentParameters presentParams,
            D3d.CreateFlags createFlags,
            Settings deviceSettings)
        {
            try
            {
                D3d.Device d3dDevice = new D3d.Device(deviceSettings.adapterIndex,
                                                        deviceSettings.deviceType,
                                                        renderWindow,
                                                        createFlags,
                                                        presentParams);
                return d3dDevice;
            }
            catch (D3d.DeviceLostException e)
            {
                log.Warning("Unable to create Direct3D device: {0}", e.Message);
            }
            catch (D3d.InvalidCallException e)
            {
                log.Warning("Unable to create Direct3D device: {0}", e.Message);
            }
            catch (D3d.NotAvailableException e)
            {
                log.Warning("Unable to create Direct3D device: {0}", e.Message);
            }
            catch (D3d.OutOfVideoMemoryException e)
            {
                log.Warning("Unable to create Direct3D device: {0}", e.Message);
            }

            return null;
        }
 public static FrameBuffer Create(Settings settings, D3d.Device device, System.Windows.Forms.Control renderWindow)
 {
     D3d.SwapChain swapChain = new D3d.SwapChain( device,settings.GetPresentParameters(renderWindow) );
     return null;
 }
Beispiel #4
0
        private bool Initialize(System.Windows.Forms.Control renderWindow )
        {
            d3dSettings     = new Settings();
            d3dDevice       = DeviceUtility.CreateDevice( d3dSettings,renderWindow );

            if (d3dDevice != null)
            {
                d3dCapabilities         = new Capabilities(this);

                // Create subsystems.
                d3dPrimaryFrameBuffer   = FrameBuffer.Create( this );
                d3dGeometryManager      = GeometryManager.Create( this );
                d3dTextureManager       = TextureManager.Create(this);
                d3dQueryManager         = QueryManager.Create(this);
                d3dCompiler             = Compiler.Create(this);

                return true;
            }
            return false;
        }