public GlRenderer(Switch device, GraphicsDebugLevel glLogLevel) : base(GetGraphicsMode(), 3, 3, glLogLevel == GraphicsDebugLevel.None ? GraphicsContextFlags.ForwardCompatible : GraphicsContextFlags.ForwardCompatible | GraphicsContextFlags.Debug) { WaitEvent = new ManualResetEvent(false); _device = device; this.Initialized += GLRenderer_Initialized; this.Destroyed += GLRenderer_Destroyed; this.ShuttingDown += GLRenderer_ShuttingDown; Initialize(); _chrono = new System.Diagnostics.Stopwatch(); _ticksPerFrame = System.Diagnostics.Stopwatch.Frequency / TargetFps; AddEvents((int)(EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask | EventMask.KeyPressMask | EventMask.KeyReleaseMask)); this.Shown += Renderer_Shown; _dsuClient = new Client(); _glLogLevel = glLogLevel; }
public RendererWidgetBase(InputManager inputManager, GraphicsDebugLevel glLogLevel) { _inputManager = inputManager; NpadManager = _inputManager.CreateNpadManager(); _keyboardInterface = (IKeyboard)_inputManager.KeyboardDriver.GetGamepad("0"); NpadManager.ReloadConfiguration(ConfigurationState.Instance.Hid.InputConfig.Value.ToList()); WaitEvent = new ManualResetEvent(false); _glLogLevel = glLogLevel; Destroyed += Renderer_Destroyed; _chrono = new Stopwatch(); _ticksPerFrame = Stopwatch.Frequency / TargetFps; AddEvents((int)(EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask | EventMask.KeyPressMask | EventMask.KeyReleaseMask)); Shown += Renderer_Shown; _exitEvent = new ManualResetEvent(false); _hideCursorOnIdle = ConfigurationState.Instance.HideCursorOnIdle; _lastCursorMoveTime = Stopwatch.GetTimestamp(); ConfigurationState.Instance.HideCursorOnIdle.Event += HideCursorStateChanged; }
public void Initialize(GraphicsDebugLevel glLogLevel) { Debugger.Initialize(glLogLevel); PrintGpuInformation(); _counters.Initialize(); }
/// <summary> /// Initialize the GPU emulation context. /// </summary> /// <param name="logLevel">The log level required.</param> public void Initialize(GraphicsDebugLevel logLevel) { HostInitalized.WaitOne(); Renderer.Initialize(logLevel); Methods.ShaderCache.Initialize(); ReadyEvent.Set(); }
public RendererControl(GraphicsDebugLevel graphicsDebugLevel) { DebugLevel = graphicsDebugLevel; IObservable <Rect> resizeObservable = this.GetObservable(BoundsProperty); resizeObservable.Subscribe(Resized); Focusable = true; }
public void Initialize(GraphicsDebugLevel glLogLevel) { Debugger.Initialize(glLogLevel); PrintGpuInformation(); if (HwCapabilities.SupportsParallelShaderCompile) { GL.Arb.MaxShaderCompilerThreads(Math.Min(Environment.ProcessorCount, 8)); } _counters.Initialize(); }
public WindowBase(InputManager inputManager, GraphicsDebugLevel glLogLevel, AspectRatio aspectRatio, bool enableMouse) { MouseDriver = new SDL2MouseDriver(); _inputManager = inputManager; _inputManager.SetMouseDriver(MouseDriver); NpadManager = _inputManager.CreateNpadManager(); TouchScreenManager = _inputManager.CreateTouchScreenManager(); _keyboardInterface = (IKeyboard)_inputManager.KeyboardDriver.GetGamepad("0"); _glLogLevel = glLogLevel; _chrono = new Stopwatch(); _ticksPerFrame = Stopwatch.Frequency / TargetFps; _exitEvent = new ManualResetEvent(false); _aspectRatio = aspectRatio; _enableMouse = enableMouse; SDL2Driver.Instance.Initialize(); }
private static void SetupOpenGLAttributes(bool sharedContext, GraphicsDebugLevel debugLevel) { SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_CONTEXT_MINOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_CONTEXT_PROFILE_MASK, SDL_GLprofile.SDL_GL_CONTEXT_PROFILE_COMPATIBILITY); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_CONTEXT_FLAGS, debugLevel != GraphicsDebugLevel.None ? (int)SDL_GLcontext.SDL_GL_CONTEXT_DEBUG_FLAG : 0); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_SHARE_WITH_CURRENT_CONTEXT, sharedContext ? 1 : 0); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_ACCELERATED_VISUAL, 1); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_ALPHA_SIZE, 8); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_STENCIL_SIZE, 0); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_STEREO, 0); }
public GlRenderer(Switch device, InputManager inputManager, GraphicsDebugLevel glLogLevel) : base(GetGraphicsMode(), 3, 3, glLogLevel == GraphicsDebugLevel.None ? OpenGLContextFlags.Compat : OpenGLContextFlags.Compat | OpenGLContextFlags.Debug) { _inputManager = inputManager; NpadManager = _inputManager.CreateNpadManager(); _keyboardInterface = (IKeyboard)_inputManager.KeyboardDriver.GetGamepad("0"); NpadManager.ReloadConfiguration(ConfigurationState.Instance.Hid.InputConfig.Value.ToList()); WaitEvent = new ManualResetEvent(false); _device = device; Initialized += GLRenderer_Initialized; Destroyed += GLRenderer_Destroyed; ShuttingDown += GLRenderer_ShuttingDown; Initialize(); _chrono = new Stopwatch(); _ticksPerFrame = Stopwatch.Frequency / TargetFps; AddEvents((int)(EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask | EventMask.KeyPressMask | EventMask.KeyReleaseMask)); Shown += Renderer_Shown; _glLogLevel = glLogLevel; _exitEvent = new ManualResetEvent(false); _hideCursorOnIdle = ConfigurationState.Instance.HideCursorOnIdle; _lastCursorMoveTime = Stopwatch.GetTimestamp(); ConfigurationState.Instance.HideCursorOnIdle.Event += HideCursorStateChanged; }
internal unsafe static void CreateDebugCallbacks( Vk api, GraphicsDebugLevel logLevel, Instance instance, out ExtDebugReport debugReport, out DebugReportCallbackEXT debugReportCallback) { debugReport = default; if (logLevel != GraphicsDebugLevel.None) { if (!api.TryGetInstanceExtension(instance, out debugReport)) { debugReportCallback = default; return; } var flags = logLevel switch { GraphicsDebugLevel.Error => DebugReportFlagsEXT.DebugReportErrorBitExt, GraphicsDebugLevel.Slowdowns => DebugReportFlagsEXT.DebugReportErrorBitExt | DebugReportFlagsEXT.DebugReportPerformanceWarningBitExt, GraphicsDebugLevel.All => DebugReportFlagsEXT.DebugReportInformationBitExt | DebugReportFlagsEXT.DebugReportWarningBitExt | DebugReportFlagsEXT.DebugReportPerformanceWarningBitExt | DebugReportFlagsEXT.DebugReportErrorBitExt | DebugReportFlagsEXT.DebugReportDebugBitExt, _ => throw new ArgumentException($"Invalid log level \"{logLevel}\".") }; var debugReportCallbackCreateInfo = new DebugReportCallbackCreateInfoEXT() { SType = StructureType.DebugReportCallbackCreateInfoExt, Flags = flags, PfnCallback = new PfnDebugReportCallbackEXT(DebugReport) }; debugReport.CreateDebugReportCallback(instance, in debugReportCallbackCreateInfo, null, out debugReportCallback).ThrowOnError(); } else { debugReportCallback = default; } }
public void Initialize(GraphicsDebugLevel glLogLevel) { Debugger.Initialize(glLogLevel); PrintGpuInformation(); if (HwCapabilities.SupportsParallelShaderCompile) { GL.Arb.MaxShaderCompilerThreads(Math.Min(Environment.ProcessorCount, 8)); } _pipeline.Initialize(this); _counters.Initialize(); // This is required to disable [0, 1] clamping for SNorm outputs on compatibility profiles. // This call is expected to fail if we're running with a core profile, // as this clamp target was deprecated, but that's fine as a core profile // should already have the desired behaviour were outputs are not clamped. GL.ClampColor(ClampColorTarget.ClampFragmentColor, ClampColorMode.False); }
public GlRenderer(Switch device, GraphicsDebugLevel glLogLevel) : base(GetGraphicsMode(), 3, 3, glLogLevel == GraphicsDebugLevel.None ? GraphicsContextFlags.ForwardCompatible : GraphicsContextFlags.ForwardCompatible | GraphicsContextFlags.Debug) { WaitEvent = new ManualResetEvent(false); _device = device; Initialized += GLRenderer_Initialized; Destroyed += GLRenderer_Destroyed; ShuttingDown += GLRenderer_ShuttingDown; Initialize(); _chrono = new Stopwatch(); _ticksPerFrame = Stopwatch.Frequency / TargetFps; AddEvents((int)(EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask | EventMask.KeyPressMask | EventMask.KeyReleaseMask)); Shown += Renderer_Shown; _dsuClient = new Client(); _glLogLevel = glLogLevel; _exitEvent = new ManualResetEvent(false); _hideCursorOnIdle = ConfigurationState.Instance.HideCursorOnIdle; _lastCursorMoveTime = Stopwatch.GetTimestamp(); ConfigurationState.Instance.HideCursorOnIdle.Event += HideCursorStateChanged; }
public RendererWidgetBase(InputManager inputManager, GraphicsDebugLevel glLogLevel) { var mouseDriver = new GTK3MouseDriver(this); _inputManager = inputManager; _inputManager.SetMouseDriver(mouseDriver); NpadManager = _inputManager.CreateNpadManager(); TouchScreenManager = _inputManager.CreateTouchScreenManager(); _keyboardInterface = (IKeyboard)_inputManager.KeyboardDriver.GetGamepad("0"); WaitEvent = new ManualResetEvent(false); _glLogLevel = glLogLevel; Destroyed += Renderer_Destroyed; _chrono = new Stopwatch(); _ticksPerFrame = Stopwatch.Frequency / TargetFps; AddEvents((int)(EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask | EventMask.ScrollMask | EventMask.EnterNotifyMask | EventMask.LeaveNotifyMask | EventMask.KeyPressMask | EventMask.KeyReleaseMask)); _exitEvent = new ManualResetEvent(false); _gpuCancellationTokenSource = new CancellationTokenSource(); _hideCursorOnIdle = ConfigurationState.Instance.HideCursorOnIdle; _lastCursorMoveTime = Stopwatch.GetTimestamp(); ConfigurationState.Instance.HideCursorOnIdle.Event += HideCursorStateChanged; }
public static void Initialize(GraphicsDebugLevel logLevel) { // Disable everything GL.DebugMessageControl(DebugSourceControl.DontCare, DebugTypeControl.DontCare, DebugSeverityControl.DontCare, 0, (int[])null, false); if (logLevel == GraphicsDebugLevel.None) { GL.Disable(EnableCap.DebugOutputSynchronous); GL.DebugMessageCallback(null, IntPtr.Zero); return; } GL.Enable(EnableCap.DebugOutputSynchronous); if (logLevel == GraphicsDebugLevel.Error) { GL.DebugMessageControl(DebugSourceControl.DontCare, DebugTypeControl.DebugTypeError, DebugSeverityControl.DontCare, 0, (int[])null, true); } else if (logLevel == GraphicsDebugLevel.Slowdowns) { GL.DebugMessageControl(DebugSourceControl.DontCare, DebugTypeControl.DebugTypeError, DebugSeverityControl.DontCare, 0, (int[])null, true); GL.DebugMessageControl(DebugSourceControl.DontCare, DebugTypeControl.DebugTypePerformance, DebugSeverityControl.DontCare, 0, (int[])null, true); } else { GL.DebugMessageControl(DebugSourceControl.DontCare, DebugTypeControl.DontCare, DebugSeverityControl.DontCare, 0, (int[])null, true); } _counter = 0; _debugCallback = GLDebugHandler; GL.DebugMessageCallback(_debugCallback, IntPtr.Zero); Logger.Warning?.Print(LogClass.Gpu, "OpenGL Debugging is enabled. Performance will be negatively impacted."); }
public void Initialize(GraphicsDebugLevel logLevel) { SetupContext(logLevel); PrintGpuInformation(); }
public VulkanRendererControl(GraphicsDebugLevel graphicsDebugLevel) : base(graphicsDebugLevel) { _platformInterface = AvaloniaLocator.Current.GetService <VulkanPlatformInterface>(); _imagesInFlight = new ConcurrentQueue <PresentImageInfo>(); }
public OpenGLRendererControl(int major, int minor, GraphicsDebugLevel graphicsDebugLevel) : base(graphicsDebugLevel) { Major = major; Minor = minor; }
internal static Instance CreateInstance(Vk api, GraphicsDebugLevel logLevel, string[] requiredExtensions, out ExtDebugReport debugReport, out DebugReportCallbackEXT debugReportCallback) { var enabledLayers = new List <string>(); void AddAvailableLayer(string layerName) { uint layerPropertiesCount; api.EnumerateInstanceLayerProperties(&layerPropertiesCount, null).ThrowOnError(); LayerProperties[] layerProperties = new LayerProperties[layerPropertiesCount]; fixed(LayerProperties *pLayerProperties = layerProperties) { api.EnumerateInstanceLayerProperties(&layerPropertiesCount, layerProperties).ThrowOnError(); for (int i = 0; i < layerPropertiesCount; i++) { string currentLayerName = Marshal.PtrToStringAnsi((IntPtr)pLayerProperties[i].LayerName); if (currentLayerName == layerName) { enabledLayers.Add(layerName); return; } } } Logger.Warning?.Print(LogClass.Gpu, $"Missing layer {layerName}"); } if (logLevel != GraphicsDebugLevel.None) { AddAvailableLayer("VK_LAYER_KHRONOS_validation"); } var enabledExtensions = requiredExtensions.Append(ExtDebugReport.ExtensionName).ToArray(); var appName = Marshal.StringToHGlobalAnsi(AppName); var applicationInfo = new ApplicationInfo { PApplicationName = (byte *)appName, ApplicationVersion = 1, PEngineName = (byte *)appName, EngineVersion = 1, ApiVersion = Vk.Version12.Value }; IntPtr *ppEnabledExtensions = stackalloc IntPtr[enabledExtensions.Length]; IntPtr *ppEnabledLayers = stackalloc IntPtr[enabledLayers.Count]; for (int i = 0; i < enabledExtensions.Length; i++) { ppEnabledExtensions[i] = Marshal.StringToHGlobalAnsi(enabledExtensions[i]); } for (int i = 0; i < enabledLayers.Count; i++) { ppEnabledLayers[i] = Marshal.StringToHGlobalAnsi(enabledLayers[i]); } var instanceCreateInfo = new InstanceCreateInfo { SType = StructureType.InstanceCreateInfo, PApplicationInfo = &applicationInfo, PpEnabledExtensionNames = (byte **)ppEnabledExtensions, PpEnabledLayerNames = (byte **)ppEnabledLayers, EnabledExtensionCount = (uint)enabledExtensions.Length, EnabledLayerCount = (uint)enabledLayers.Count }; api.CreateInstance(in instanceCreateInfo, null, out var instance).ThrowOnError(); Marshal.FreeHGlobal(appName); for (int i = 0; i < enabledExtensions.Length; i++) { Marshal.FreeHGlobal(ppEnabledExtensions[i]); } for (int i = 0; i < enabledLayers.Count; i++) { Marshal.FreeHGlobal(ppEnabledLayers[i]); } CreateDebugCallbacks(api, logLevel, instance, out debugReport, out debugReportCallback); return(instance); }
private void SetupContext(GraphicsDebugLevel logLevel) { var api = Vk.GetApi(); Api = api; _instance = VulkanInitialization.CreateInstance(api, logLevel, GetRequiredExtensions(), out ExtDebugReport debugReport, out _debugReportCallback); DebugReportApi = debugReport; if (api.TryGetInstanceExtension(_instance, out KhrSurface surfaceApi)) { SurfaceApi = surfaceApi; } _surface = GetSurface(_instance, api); _physicalDevice = VulkanInitialization.FindSuitablePhysicalDevice(api, _instance, _surface); FormatCapabilities = new FormatCapabilities(api, _physicalDevice); var queueFamilyIndex = VulkanInitialization.FindSuitableQueueFamily(api, _physicalDevice, _surface, out uint maxQueueCount); var supportedExtensions = VulkanInitialization.GetSupportedExtensions(api, _physicalDevice); _device = VulkanInitialization.CreateDevice(api, _physicalDevice, queueFamilyIndex, supportedExtensions, maxQueueCount); Capabilities = new HardwareCapabilities( supportedExtensions.Contains(ExtConditionalRendering.ExtensionName), supportedExtensions.Contains(ExtExtendedDynamicState.ExtensionName)); SupportsIndexTypeUint8 = supportedExtensions.Contains("VK_EXT_index_type_uint8"); SupportsCustomBorderColor = supportedExtensions.Contains("VK_EXT_custom_border_color"); SupportsIndirectParameters = supportedExtensions.Contains(KhrDrawIndirectCount.ExtensionName); if (api.TryGetDeviceExtension(_instance, _device, out KhrSwapchain swapchainApi)) { SwapchainApi = swapchainApi; } if (api.TryGetDeviceExtension(_instance, _device, out ExtConditionalRendering conditionalRenderingApi)) { ConditionalRenderingApi = conditionalRenderingApi; } if (api.TryGetDeviceExtension(_instance, _device, out ExtExtendedDynamicState extendedDynamicStateApi)) { ExtendedDynamicStateApi = extendedDynamicStateApi; } if (api.TryGetDeviceExtension(_instance, _device, out ExtTransformFeedback transformFeedbackApi)) { TransformFeedbackApi = transformFeedbackApi; } if (api.TryGetDeviceExtension(_instance, _device, out KhrDrawIndirectCount drawIndirectCountApi)) { DrawIndirectCountApi = drawIndirectCountApi; } api.GetDeviceQueue(_device, queueFamilyIndex, 0, out var queue); Queue = queue; if (maxQueueCount >= 2) { api.GetDeviceQueue(_device, queueFamilyIndex, 1, out var backgroundQueue); BackgroundQueue = backgroundQueue; BackgroundQueueLock = new object(); } Api.GetPhysicalDeviceProperties(_physicalDevice, out var properties); MemoryAllocator = new MemoryAllocator(api, _device, properties.Limits.MaxMemoryAllocationCount); CommandBufferPool = VulkanInitialization.CreateCommandBufferPool(api, _device, queue, queueFamilyIndex); DescriptorSetManager = new DescriptorSetManager(_device); PipelineLayoutCache = new PipelineLayoutCache(); BufferManager = new BufferManager(this, _physicalDevice, _device); _syncManager = new SyncManager(this, _device); _pipeline = new PipelineFull(this, _device); HelperShader = new HelperShader(this, _device); _counters = new Counters(this, _device, _pipeline); _window = new Window(this, _surface, _physicalDevice, _device); }
public static Instance CreateInstance(Vk api, GraphicsDebugLevel logLevel, string[] requiredExtensions, out ExtDebugReport debugReport, out DebugReportCallbackEXT debugReportCallback) { var enabledLayers = new List <string>(); void AddAvailableLayer(string layerName) { uint layerPropertiesCount; api.EnumerateInstanceLayerProperties(&layerPropertiesCount, null).ThrowOnError(); LayerProperties[] layerProperties = new LayerProperties[layerPropertiesCount]; fixed(LayerProperties *pLayerProperties = layerProperties) { api.EnumerateInstanceLayerProperties(&layerPropertiesCount, layerProperties).ThrowOnError(); for (int i = 0; i < layerPropertiesCount; i++) { string currentLayerName = Marshal.PtrToStringAnsi((IntPtr)pLayerProperties[i].LayerName); if (currentLayerName == layerName) { enabledLayers.Add(layerName); return; } } } Logger.Warning?.Print(LogClass.Gpu, $"Missing layer {layerName}"); } if (logLevel == GraphicsDebugLevel.Slowdowns || logLevel == GraphicsDebugLevel.All) { AddAvailableLayer("VK_LAYER_KHRONOS_validation"); } var enabledExtensions = requiredExtensions.Append(ExtDebugReport.ExtensionName).ToArray(); var appName = Marshal.StringToHGlobalAnsi(AppName); var applicationInfo = new ApplicationInfo { PApplicationName = (byte *)appName, ApplicationVersion = 1, PEngineName = (byte *)appName, EngineVersion = 1, ApiVersion = Vk.Version12.Value }; IntPtr *ppEnabledExtensions = stackalloc IntPtr[enabledExtensions.Length]; IntPtr *ppEnabledLayers = stackalloc IntPtr[enabledLayers.Count]; for (int i = 0; i < enabledExtensions.Length; i++) { ppEnabledExtensions[i] = Marshal.StringToHGlobalAnsi(enabledExtensions[i]); } for (int i = 0; i < enabledLayers.Count; i++) { ppEnabledLayers[i] = Marshal.StringToHGlobalAnsi(enabledLayers[i]); } var instanceCreateInfo = new InstanceCreateInfo { SType = StructureType.InstanceCreateInfo, PApplicationInfo = &applicationInfo, PpEnabledExtensionNames = (byte **)ppEnabledExtensions, PpEnabledLayerNames = (byte **)ppEnabledLayers, EnabledExtensionCount = (uint)enabledExtensions.Length, EnabledLayerCount = (uint)enabledLayers.Count }; api.CreateInstance(in instanceCreateInfo, null, out var instance).ThrowOnError(); Marshal.FreeHGlobal(appName); for (int i = 0; i < enabledExtensions.Length; i++) { Marshal.FreeHGlobal(ppEnabledExtensions[i]); } for (int i = 0; i < enabledLayers.Count; i++) { Marshal.FreeHGlobal(ppEnabledLayers[i]); } if (!api.TryGetInstanceExtension(instance, out debugReport)) { throw new Exception(); // TODO: Exception. } if (logLevel != GraphicsDebugLevel.None) { var flags = logLevel switch { GraphicsDebugLevel.Error => DebugReportFlagsEXT.DebugReportErrorBitExt, GraphicsDebugLevel.Slowdowns => DebugReportFlagsEXT.DebugReportErrorBitExt | DebugReportFlagsEXT.DebugReportPerformanceWarningBitExt, GraphicsDebugLevel.All => DebugReportFlagsEXT.DebugReportInformationBitExt | DebugReportFlagsEXT.DebugReportWarningBitExt | DebugReportFlagsEXT.DebugReportPerformanceWarningBitExt | DebugReportFlagsEXT.DebugReportErrorBitExt | DebugReportFlagsEXT.DebugReportDebugBitExt, _ => throw new NotSupportedException() }; var debugReportCallbackCreateInfo = new DebugReportCallbackCreateInfoEXT() { SType = StructureType.DebugReportCallbackCreateInfoExt, Flags = flags, PfnCallback = new PfnDebugReportCallbackEXT(DebugReport) }; debugReport.CreateDebugReportCallback(instance, in debugReportCallbackCreateInfo, null, out debugReportCallback).ThrowOnError(); } else { debugReportCallback = default; } return(instance); }
public OpenGLWindow(InputManager inputManager, GraphicsDebugLevel glLogLevel, AspectRatio aspectRatio, bool enableMouse) : base(inputManager, glLogLevel, aspectRatio, enableMouse) { _glLogLevel = glLogLevel; }
public void Initialize(GraphicsDebugLevel logLevel) { SetupContext(logLevel, _requiredExtensions); PrintGpuInformation(); }
public GlRenderer(InputManager inputManager, GraphicsDebugLevel glLogLevel) : base(inputManager, glLogLevel) { _glLogLevel = glLogLevel; }
public VKRenderer(InputManager inputManager, GraphicsDebugLevel glLogLevel) : base(inputManager, glLogLevel) { }