Esempio n. 1
0
        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");
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 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",
     });
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        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;
        }
Esempio n. 7
0
 public GraphicsEngine(VideoBackend backend)
 {
     SetVideoBackend(backend);
     RenderClearColor = new ColorRGBA(140, 180, 200);
     BorderColor      = new ColorRGBA(0, 40, 200);
 }