public void Dispose() { if (_disposed) { return; } DeviceManager.Dispose(); MaterialManager.Dispose(); TextureResourceManager.Dispose(); TextureSamplerManager.Dispose(); BlendStateManager.Dispose(); RasterizerStateManager.Dispose(); _disposed = true; }
public GraphicsContext(Lazy<IFileStore> files, IInputContext input) { var deviceManager = new DeviceManager(); DeviceManager = deviceManager; TextureResourceManager = new TextureResourceManager(deviceManager, files); TextureSamplerManager = new TextureSamplerManager(deviceManager); MaterialManager = new MaterialManager(this); BlendStateManager = new BlendStateManager(deviceManager); RasterizerStateManager = new RasterizerStateManager(deviceManager); RenderTargetFactory = new RenderTargetFactory(this, input); VertexBufferManagerFactory = new VertexBufferManagerFactory(deviceManager); IndexBufferManagerFactory = new IndexBufferManagerFactory(deviceManager); ConstantBufferManagerFactory = new ConstantBufferManagerFactory(deviceManager); }
public void GfxCleanup() { GpuFetchManager.Cleanup(); MeshPrimitivesManager.Cleanup(); MeshManager.Cleanup(); DepthStencilStateManager.Cleanup(); RasterizerStateManager.Cleanup(); BlendStateManager.Cleanup(); SamplerStateManager.Cleanup(); if (mRenderContext != null) { mRenderContext.Cleanup(); mRenderContext = null; } RenderSystem.Cleanup(); base.Cleanup(); }
public GraphicsContext(Lazy <IFileStore> files, IInputContext input) { var deviceManager = new DeviceManager(); DeviceManager = deviceManager; TextureResourceManager = new TextureResourceManager(deviceManager, files); TextureSamplerManager = new TextureSamplerManager(deviceManager); MaterialManager = new MaterialManager(this); BlendStateManager = new BlendStateManager(deviceManager); RasterizerStateManager = new RasterizerStateManager(deviceManager); RenderTargetFactory = new RenderTargetFactory(this, input); VertexBufferManagerFactory = new VertexBufferManagerFactory(deviceManager); IndexBufferManagerFactory = new IndexBufferManagerFactory(deviceManager); ConstantBufferManagerFactory = new ConstantBufferManagerFactory(deviceManager); }
/// <summary> /// RenderContextの初期化処理 /// </summary> public ScreenContext Initialize(Control targetControl) { InitializeDevices(); Timer = new MotionTimer(this); BlendingManager = new BlendStateManager(this); BlendingManager.SetBlendState(BlendStateManager.BlendStates.Alignment); //Matrixの初期化 var matrixManager = InitializeMatricies(); ScreenContext primaryContext = new ScreenContext(targetControl, this, matrixManager); screenContexts.Add(targetControl, primaryContext); CurrentTargetContext = primaryContext; //PhysicsManager=new PhysicsManager(this); ResetTargets(); return(primaryContext); }
public void Initialize() { DeviceManager.Initialize(); if (!TextureSamplerManager.Exists("default")) { TextureSamplerManager.Create("default", TextureSamplerSettings.Default()).Activate(0); } if (!BlendStateManager.Exists("none")) { BlendStateManager.Create("none", BlendSettings.None()).Activate(); } if (!BlendStateManager.Exists("default")) { BlendStateManager.Create("default", BlendSettings.DefaultEnabled()); } if (!RasterizerStateManager.Exists("default")) { RasterizerStateManager.Create("default", RasterizerSettings.Default()).Activate(); } }
public static void Init(DeviceConfiguration config, HWND windowHandle) { if (IsInitialized) { throw new InvalidOperationException($"{nameof(GraphicsDevice)} has already been initialized."); } var deviceCreationFlags = D3D11_CREATE_DEVICE_FLAG.UNSPECIFIED; if (config.Debug) { deviceCreationFlags |= D3D11_CREATE_DEVICE_FLAG.D3D11_CREATE_DEVICE_DEBUG; } if (config.Stats) { deviceCreationFlags |= D3D11_CREATE_DEVICE_FLAG.D3D11_CREATE_DEVICE_BGRA_SUPPORT; } var featureLevel = D3D_FEATURE_LEVEL.D3D_FEATURE_LEVEL_11_1; var desc = new DXGI_SWAP_CHAIN_DESC { BufferCount = 2, BufferDesc = new DXGI_MODE_DESC { Width = config.Width, Height = config.Height, RefreshRate = new DXGI_RATIONAL { Denominator = config.RefreshRate }, Scaling = DXGI_MODE_SCALING_UNSPECIFIED, ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED, Format = DXGI_FORMAT_B8G8R8A8_UNORM }, SampleDesc = new DXGI_SAMPLE_DESC { //Count = 2, // TODO: look into how we should use AA/Multi Sampling in Titan Count = 1, Quality = 0 }, BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT, OutputWindow = windowHandle, //SwapEffect = DXGI_SWAP_EFFECT_SEQUENTIAL, SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD, Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH, Windowed = config.Windowed }; Logger.Trace <ID3D11Device>("Creating device"); CheckAndThrow(D3D11CreateDeviceAndSwapChain(null, D3D_DRIVER_TYPE.D3D_DRIVER_TYPE_HARDWARE, 0, deviceCreationFlags, null, 0, D3D11_SDK_VERSION, &desc, _swapChain.GetAddressOf(), _device.GetAddressOf(), null, _context.GetAddressOf()), nameof(D3D11CreateDeviceAndSwapChain)); Logger.Trace <ID3D11Device>("Device created"); #if DEBUG Logger.Trace <ID3D11Device>("Sampling quality levels"); uint qualityLevel = 0; for (var sampleCount = 1u; sampleCount <= 16u; ++sampleCount) { var result = _device.Get()->CheckMultisampleQualityLevels(DXGI_FORMAT_B8G8R8A8_UNORM, sampleCount, &qualityLevel); if (SUCCEEDED(result)) { Logger.Debug($"Sample count {sampleCount} supports quality level {qualityLevel}", typeof(GraphicsDevice)); } else { Logger.Debug($"Sample count {sampleCount} failed with HRESULT {result}", typeof(GraphicsDevice)); } } #endif SwapChain = new SwapChain(_swapChain.Get(), config); ImmediateContext = new Context(_context.Get()); BufferManager = new BufferManager(_device); TextureManager = new TextureManager(_device.Get(), SwapChain); SamplerManager = new SamplerManager(_device.Get()); ShaderManager = new ShaderManager(_device.Get()); RasterizerManager = new RasterizerManager(_device.Get()); BlendStateManager = new BlendStateManager(_device.Get()); InitBackbuffer(); IsInitialized = true; }