示例#1
0
        public WinformsDevice(WinformsEye eye, Direct3D direct3D, CAdapter adapter, 
            ControlWindow primaryWindow, SwapChainDescription implicitSwapChainDesc, 
            DeviceInitializationFlags flags, IFileSystem fileSystem)
        {
            this.eye = eye;
            this.adapter = adapter;
            this.primaryWindow = primaryWindow;
            this.implicitSwapChainDesc = implicitSwapChainDesc;
            this.flags = flags;

            caps = adapter.Info.GetCaps(DeviceType.Hardware);
            devicePresentParams = new PresentParameters();

            FillDevicePresentParams();
            d3dDevice = new Device(direct3D, adapter.Index, DeviceType.Hardware, primaryWindow.Handle, CreateFlags.FpuPreserve | CreateFlags.HardwareVertexProcessing, devicePresentParams);

            CreateBackBufferAndDepthStencil();

            additionalSwapChains = new List<CAdditionalSwapChain>();
            creator = new CDeviceChildCreator(this);
            immediateContext = new CDeviceContext(this);

            lastSwapChainSize = new IntSize(primaryWindow.SwapChainWidth, primaryWindow.SwapChainHeight);
            fullscreenState = FullscreenState.Windowed;
            fullscreenDisplayMode = adapter.GetSupportedDisplayModes().First();
        }
示例#2
0
        public DefaultDevice(DefaultEye eye, CAdapter adapter, DeviceInitializationFlags flags,
            WindowHandle windowHandle, ref SwapChainDescription implicitSwapChainDescription,
            IFileSystem fileSystem)
        {
            this.eye = eye;
            this.adapter = adapter;
            this.flags = flags;

            primaryWindow = new DefaultWindow(this, windowHandle.ClientWidth, windowHandle.ClientHeight,
                ref implicitSwapChainDescription, windowHandle.Title, GameWindowFlags.Default,
                ((COutput)adapter.Outputs[0]).GLDisplayDevice, ref glContext);

            creator = new CDeviceChildCreator(this);
            immediateContext = new CDeviceContext(this, glContext);
        }
示例#3
0
        public WinformsDevice(Factory1 dxgiFactory, WinformsEye eye, CAdapter adapter,
            ControlWindow primaryWindow, SwapChainDescription primarySwapChainDesc,
            DeviceInitializationFlags flags, IFileSystem fileSystem)
        {
            this.flags = flags;
            this.eye = eye;
            this.dxgiFactory = dxgiFactory;
            this.adapter = adapter;

            d3dDevice = new Device(adapter.DXGIAdapter, CtSharpDX11.DeviceCreationFlags(flags));

            primarySwapChain = new CSwapChain(this, primaryWindow, ref primarySwapChainDesc,
                pswc => { }, () => !primaryWindow.IsVisible && additionalSwapChains.All(aswc => !aswc.Window.IsVisible));

            creator = new CDeviceChildCreator(this);
            immediateContext = new CDeviceContext(this, d3dDevice.ImmediateContext);

            additionalSwapChains = new List<CSwapChain>();
        }
示例#4
0
        public void Initialize(
            IAdapter adapter, 
            IWindowHandle windowHandle, 
            SwapChainDescription primarySwapChainDescription,
            DeviceInitializationFlags initializationFlags,
            IFileSystem fileSystem)
        {
            var cAdapter = (CAdapter)adapter;

            var primaryWindow = (ControlWindow)windowHandle;
            device = new WinformsDevice(this, direct3D, cAdapter, primaryWindow, primarySwapChainDescription, initializationFlags, fileSystem);
            primaryWindow.SetSwapChain(device);
            primaryWindow.Control.Show();

            windows.Add(primaryWindow);

            IsInitialized = true;
        }
示例#5
0
        public void Initialize(
            IAdapter adapter,
            IWindowHandle windowHandle, 
            BSwapChainDescription primarySwapChainDesc,
            DeviceInitializationFlags initializationFlags,
            IFileSystem fileSystem)
        {
            var cAdapter = (CAdapter)adapter;
            var window = (ControlWindow)windowHandle;
            device = new WinformsDevice(factory, this, cAdapter, window, primarySwapChainDesc, initializationFlags, fileSystem);
            window.SetSwapChain(device.PrimarySwapChain);
            windows.Add(window);

            window.Control.Show();

            IsInitialized = true;
        }
示例#6
0
        public void Initialize(IAdapter adapter,
            IWindowHandle windowHandle, 
            SwapChainDescription primarySwapChainDesc,
            DeviceInitializationFlags initializationFlags,
            IFileSystem fileSystem)
        {
            if (adapter != adapters[0])
                throw new ArgumentException("Provided adapter is not on of this eye's adapters");

            device = new DefaultDevice(this, (CAdapter)adapter, initializationFlags, (WindowHandle)windowHandle, ref primarySwapChainDesc, fileSystem);

            initialized = true;
        }
示例#7
0
 public static OpenTK.Graphics.GraphicsContextFlags GraphicsContextFlags(DeviceInitializationFlags bFlags)
 {
     var glFlags = OpenTK.Graphics.GraphicsContextFlags.ForwardCompatible;
     if ((bFlags & DeviceInitializationFlags.Debug) != 0) glFlags |= OpenTK.Graphics.GraphicsContextFlags.Debug;
     return glFlags;
 }