public string BackendToString(VideoBackend backend) { switch (backend) { case VideoBackend.Direct3D: return("direct3d"); case VideoBackend.OpenGL: return("opengl"); case VideoBackend.OpenGL_ES: return("opengles"); case VideoBackend.OpenGL_ES2: return("opengles2"); case VideoBackend.Metal: return("metal"); case VideoBackend.Software: return("software"); case VideoBackend.Auto: return("auto"); default: return("n/a"); } }
public void SetVideoBackend(VideoBackend backend) { if (_init) { throw new EngineException("Graphics module already initialized, cannot change video backend.", "GraphicsEngine.SetVideoBackend()"); } switch (backend) { case VideoBackend.Direct3D: SDL_SetHint(SDL_HINT_RENDER_DRIVER, "direct3d"); break; case VideoBackend.OpenGL: SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl"); SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_DEPTH_SIZE, 32); break; case VideoBackend.OpenGL_ES: SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengles"); break; case VideoBackend.OpenGL_ES2: SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengles2"); break; case VideoBackend.Metal: SDL_SetHint(SDL_HINT_RENDER_DRIVER, "metal"); break; case VideoBackend.Software: SDL_SetHint(SDL_HINT_RENDER_DRIVER, "software"); break; } _backend = backend; }
public string BackendToString(VideoBackend backend) { return(backend switch { VideoBackend.Direct3D => "direct3d", VideoBackend.OpenGL => "opengl", VideoBackend.OpenGL_ES => "opengles", VideoBackend.OpenGL_ES2 => "opengles2", VideoBackend.Metal => "metal", VideoBackend.Software => "software", VideoBackend.Auto => "auto", _ => "n/a", });
public bool IsRenderDriverAvailable(VideoBackend backend) { if (backend == VideoBackend.Auto) { return(true); } string[] drivers = GetAvailableRenderDrivers(); for (int i = 0; i < drivers.Length; ++i) { if (drivers[i] == BackendToString(backend)) { return(true); } } return(false); }
public GameEngine(EngineMode mode = EngineMode.Synchronous, VideoBackend backend = VideoBackend.Auto) { ResourcesLoaded = false; Properties = new EngineProperties(); _resource = new ResourceManager(IntPtr.Zero); //I don't know if this would work. _audio = new AudioEngine(_resource); if (!IsRenderDriverAvailable(backend)) { Debug.Log("GameEngine.GameEngine()", $"Render Driver '{BackendToString(backend)}' is not available. Switched to software fallback."); backend = VideoBackend.Software; } _graphics = new GraphicsEngine(backend); _input = new InputManager(); _scenes = new SceneManager(); _vBackend = backend; _input.WindowEvent += InputHandler_WindowEvent; _input.EngineEvent += _input_EngineEvent; }
public GameEngine(EngineMode mode = EngineMode.Synchronous, VideoBackend backend = VideoBackend.Auto) { SDL_SetHint(SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING, "1"); // 48px = 1 meter ConvertUnits.SetDisplayUnitToSimUnitRatio(48f); ResourcesLoaded = false; Properties = new EngineProperties(); _resource = new ResourceManager(); _audio = new AudioEngine(_resource); if (!IsRenderDriverAvailable(backend)) { Debug.Log("GameEngine.GameEngine()", $"Render Driver '{BackendToString(backend)}' is not available. Switched to software fallback."); backend = VideoBackend.Software; } _graphics = new GraphicsEngine(backend); _input = new InputManager(); _scenes = new SceneManager(); _vBackend = backend; _input.WindowEvent += InputHandler_WindowEvent; _input.EngineEvent += _input_EngineEvent; }
public GraphicsEngine(VideoBackend backend) { SetVideoBackend(backend); RenderClearColor = new ColorRGBA(140, 180, 200); BorderColor = new ColorRGBA(0, 40, 200); }