1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using System;
- using System.Collections.Generic;
- using System.Diagnostics.CodeAnalysis;
- using System.Drawing;
- using System.Linq;
- using System.Numerics;
- using System.Runtime.CompilerServices;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using Veldrid.Common.Tools;
- using System.Diagnostics;
- namespace Veldrid.Common
- {
- internal class GraphicsManger:IDisposable
- {
- private LineRange _Range = new LineRange(0, 10000, -4000, 4000);
- internal void SetLineRange(int minX,int maxX,int minY,int maxY)
- {
- _Range.MinX = minX;
- _Range.MinY = minY;
- _Range.MaxX = maxX;
- _Range.MaxY = maxY;
- }
- private GraphicsDevice graphicsDevice;
- private bool disposedValue;
- public Boolean IsDisposed => disposedValue;
- public Padding DefaultPadding { get; } = new Padding();
- public LineRange DefaultLineRange =>_Range;
- internal static Vector2 CursorFixedSize => new Vector2(46,56);
- public GraphicsDevice Device => graphicsDevice;
- public ResourceFactory ResourceFactory => Device.ResourceFactory;
- public GraphicsBackend Backend { get; }
- public Vector2 DPIScale { get; }
- public ShaderManger ShaderManger { get; private set; }
- internal CommandList CommandList { get; private set; }
- public Camera Camera { get; private set; }
- internal GraphicsManger(GraphicsBackend backend = GraphicsBackend.Direct3D11)
- {
- Backend = backend;
- GraphicsDeviceOptions options = new GraphicsDeviceOptions(false, null, true, ResourceBindingModel.Default, true, true, true);
- graphicsDevice = StartupUtilities.VeldridWindow.CreateGraphicsDevice(window, options,Backend);
- window.BorderVisible = false;
- window.Visible = false;
- CommandList = Device.ResourceFactory.CreateCommandList();
- GLSLManger.Default.Init();
- ShaderManger = new ShaderManger(Device);
- Camera = new Camera(Device,window);
- }
- internal void SetWindowSize()
- {
- Device.ResizeMainWindow((uint)window.Width, (uint)window.Height);
- Camera.WindowResized(window.Width, window.Height);
- }
- internal void Close()
- {
- Dispose();
- }
- protected virtual void Dispose(bool disposing)
- {
- if (!disposedValue)
- {
- if (disposing)
- {
- CommandList?.Dispose();
- ShaderManger?.Dispose();
- Device?.WaitForIdle();
- Device?.Dispose();
-
- // TODO: 释放托管状态(托管对象)
- }
- // TODO: 释放未托管的资源(未托管的对象)并重写终结器
- // TODO: 将大型字段设置为 null
- disposedValue = true;
- }
- }
- // // TODO: 仅当“Dispose(bool disposing)”拥有用于释放未托管资源的代码时才替代终结器
- // ~GraphicsManger()
- // {
- // // 不要更改此代码。请将清理代码放入“Dispose(bool disposing)”方法中
- // Dispose(disposing: false);
- // }
- public void Dispose()
- {
- // 不要更改此代码。请将清理代码放入“Dispose(bool disposing)”方法中
- Dispose(disposing: true);
- GC.SuppressFinalize(this);
- }
- }
- }
|