|
OpenTTD Source 20251104-master-g3befbdd52f
|
The OpenGL video driver for windows. More...
#include <sdl2_opengl_v.h>
Public Member Functions | |
| std::optional< std::string_view > | Start (const StringList ¶m) override |
| Start this driver. | |
| void | Stop () override |
| Stop this driver. | |
| bool | HasEfficient8Bpp () const override |
| Has this video driver an efficient code path for palette animated 8-bpp sprites? | |
| bool | UseSystemCursor () override |
| Get whether the mouse cursor is drawn by the video driver. | |
| void | ClearSystemSprites () override |
| Clear all cached sprites. | |
| void | PopulateSystemSprites () override |
| Populate all sprites in cache. | |
| bool | HasAnimBuffer () override |
| Does this video driver support a separate animation buffer in addition to the colour buffer? | |
| uint8_t * | GetAnimBuffer () override |
| Get a pointer to the animation buffer of the video back-end. | |
| void | ToggleVsync (bool vsync) override |
| Change the vsync setting. | |
| std::string_view | GetName () const override |
| Get the name of this driver. | |
Public Member Functions inherited from VideoDriver_SDL_Base | |
| VideoDriver_SDL_Base (bool uses_hardware_acceleration=false) | |
| void | MakeDirty (int left, int top, int width, int height) override |
| Mark a particular area dirty. | |
| void | MainLoop () override |
| Perform the actual drawing. | |
| bool | ChangeResolution (int w, int h) override |
| Change the resolution of the window. | |
| bool | ToggleFullscreen (bool fullscreen) override |
| Change the full screen setting. | |
| bool | AfterBlitterChange () override |
| Callback invoked after the blitter was changed. | |
| bool | ClaimMousePointer () override |
| void | EditBoxGainedFocus () override |
| This is called to indicate that an edit box has gained focus, text input mode should be enabled. | |
| void | EditBoxLostFocus () override |
| This is called to indicate that an edit box has lost focus, text input mode should be disabled. | |
| std::vector< int > | GetListOfMonitorRefreshRates () override |
| Get a list of refresh rates of each available monitor. | |
| std::string_view | GetInfoString () const override |
Public Member Functions inherited from VideoDriver | |
| VideoDriver (bool uses_hardware_acceleration=false) | |
| virtual bool | HasGUI () const |
| Whether the driver has a graphical user interface with the end user. | |
| void | QueueOnMainThread (std::function< void()> &&func) |
| Queue a function to be called on the main thread with game state lock held and video buffer locked. | |
| void | GameLoopPause () |
| Pause the game-loop for a bit, releasing the game-state lock. | |
Protected Member Functions | |
| bool | AllocateBackingStore (int w, int h, bool force=false) override |
| (Re-)create the backing store. | |
| void * | GetVideoPointer () override |
| Get a pointer to the video buffer. | |
| void | ReleaseVideoPointer () override |
| Hand video buffer back to the painting backend. | |
| void | Paint () override |
| Paint the window. | |
| bool | CreateMainWindow (uint w, uint h, uint flags) override |
| Create the main window. | |
Protected Member Functions inherited from VideoDriver_SDL_Base | |
| Dimension | GetScreenSize () const override |
| Get the resolution of the main screen. | |
| void | InputLoop () override |
| Handle input logic, is CTRL pressed, should we fast-forward, etc. | |
| bool | LockVideoBuffer () override |
| Make sure the video buffer is ready for drawing. | |
| void | UnlockVideoBuffer () override |
| Unlock a previously locked video buffer. | |
| void | CheckPaletteAnim () override |
| Process any pending palette animation. | |
| bool | PollEvent () override |
| Process a single system event. | |
| void | ClientSizeChanged (int w, int h, bool force) |
| Indicate to the driver the client-side might have changed. | |
Protected Member Functions inherited from VideoDriver | |
| void | UpdateAutoResolution () |
| Apply resolution auto-detection and clamp to sensible defaults. | |
| void | StartGameThread () |
| Start the loop for game-tick. | |
| void | StopGameThread () |
| Stop the loop for the game-tick. | |
| void | Tick () |
| Give the video-driver a tick. | |
| void | SleepTillNextTick () |
| Sleep till the next tick is about to happen. | |
| std::chrono::steady_clock::duration | GetGameInterval () |
| std::chrono::steady_clock::duration | GetDrawInterval () |
| void | DrainCommandQueue () |
| Execute all queued commands. | |
Private Member Functions | |
| std::optional< std::string_view > | AllocateContext () |
| void | DestroyContext () |
Private Attributes | |
| void * | gl_context |
| OpenGL context. | |
| uint8_t * | anim_buffer |
| Animation buffer from OpenGL back-end. | |
Additional Inherited Members | |
Public Types inherited from Driver | |
| enum | Type : uint8_t { DT_BEGIN = 0 , DT_MUSIC = 0 , DT_SOUND , DT_VIDEO , DT_END } |
| The type of driver. More... | |
Static Public Member Functions inherited from VideoDriver | |
| static VideoDriver * | GetInstance () |
| Get the currently active instance of the video driver. | |
| static std::string | GetCaption () |
| Get the caption to use for the game's title bar. | |
Static Protected Member Functions inherited from VideoDriver | |
| static void | GameThreadThunk (VideoDriver *drv) |
Protected Attributes inherited from VideoDriver_SDL_Base | |
| struct SDL_Window * | sdl_window = nullptr |
| Main SDL window. | |
| Palette | local_palette {} |
| Current palette to use for drawing. | |
| bool | buffer_locked = false |
| Video buffer was locked by the main thread. | |
| Rect | dirty_rect {} |
| Rectangle encompassing the dirty area of the video buffer. | |
| std::string | driver_info {} |
| Information string about selected driver. | |
Protected Attributes inherited from VideoDriver | |
| const uint | ALLOWED_DRIFT = 5 |
| How many times videodriver can miss deadlines without it being overly compensated. | |
| std::chrono::steady_clock::time_point | next_game_tick |
| std::chrono::steady_clock::time_point | next_draw_tick |
| bool | fast_forward_key_pressed |
| The fast-forward key is being pressed. | |
| bool | fast_forward_via_key |
| The fast-forward was enabled by key press. | |
| bool | is_game_threaded |
| std::thread | game_thread |
| std::mutex | game_state_mutex |
| std::mutex | game_thread_wait_mutex |
| bool | uses_hardware_acceleration |
The OpenGL video driver for windows.
Definition at line 13 of file sdl2_opengl_v.h.
|
inline |
Definition at line 15 of file sdl2_opengl_v.h.
|
overrideprotectedvirtual |
(Re-)create the backing store.
Implements VideoDriver_SDL_Base.
Definition at line 138 of file sdl2_opengl_v.cpp.
References CopyPalette(), VideoDriver_SDL_Base::dirty_rect, OpenGLBackend::Get(), GetVideoPointer(), gl_context, VideoDriver_SDL_Base::local_palette, ReleaseVideoPointer(), OpenGLBackend::Resize(), and VideoDriver_SDL_Base::sdl_window.
|
private |
Definition at line 107 of file sdl2_opengl_v.cpp.
|
overridevirtual |
Clear all cached sprites.
Reimplemented from VideoDriver.
Definition at line 133 of file sdl2_opengl_v.cpp.
References OpenGLBackend::ClearCursorCache(), and OpenGLBackend::Get().
|
overrideprotectedvirtual |
Create the main window.
Reimplemented from VideoDriver_SDL_Base.
Definition at line 50 of file sdl2_opengl_v.cpp.
References VideoDriver_SDL_Base::CreateMainWindow().
|
private |
Definition at line 92 of file sdl2_opengl_v.cpp.
|
inlineoverridevirtual |
Get a pointer to the animation buffer of the video back-end.
Reimplemented from VideoDriver.
Definition at line 30 of file sdl2_opengl_v.h.
References anim_buffer.
|
inlineoverridevirtual |
Get the name of this driver.
Implements Driver.
Definition at line 34 of file sdl2_opengl_v.h.
|
overrideprotectedvirtual |
Get a pointer to the video buffer.
Implements VideoDriver_SDL_Base.
Definition at line 157 of file sdl2_opengl_v.cpp.
References anim_buffer, OpenGLBackend::Get(), OpenGLBackend::GetAnimBuffer(), BlitterFactory::GetCurrentBlitter(), and OpenGLBackend::GetVideoBuffer().
Referenced by AllocateBackingStore().
|
inlineoverridevirtual |
Does this video driver support a separate animation buffer in addition to the colour buffer?
Reimplemented from VideoDriver.
Definition at line 29 of file sdl2_opengl_v.h.
|
inlineoverridevirtual |
Has this video driver an efficient code path for palette animated 8-bpp sprites?
Reimplemented from VideoDriver.
Definition at line 21 of file sdl2_opengl_v.h.
|
overrideprotectedvirtual |
Paint the window.
Reimplemented from VideoDriver.
Definition at line 173 of file sdl2_opengl_v.cpp.
References Blitter::Blitter, Palette::count_dirty, OpenGLBackend::DrawMouseCursor(), OpenGLBackend::Get(), BlitterFactory::GetCurrentBlitter(), VideoDriver_SDL_Base::local_palette, OpenGLBackend::Paint(), Palette::palette, Blitter::PaletteAnimate(), PFE_VIDEO, VideoDriver_SDL_Base::sdl_window, OpenGLBackend::UpdatePalette(), and Blitter::UsePaletteAnimation().
|
overridevirtual |
Populate all sprites in cache.
Reimplemented from VideoDriver.
Definition at line 128 of file sdl2_opengl_v.cpp.
References OpenGLBackend::Get().
|
overrideprotectedvirtual |
Hand video buffer back to the painting backend.
Implements VideoDriver_SDL_Base.
Definition at line 165 of file sdl2_opengl_v.cpp.
References anim_buffer, VideoDriver_SDL_Base::dirty_rect, OpenGLBackend::Get(), OpenGLBackend::ReleaseAnimBuffer(), and OpenGLBackend::ReleaseVideoBuffer().
Referenced by AllocateBackingStore(), and Start().
|
overridevirtual |
Start this driver.
| parm | Parameters passed to the driver. |
Reimplemented from VideoDriver_SDL_Base.
Definition at line 55 of file sdl2_opengl_v.cpp.
References VideoDriver_SDL_Base::ClientSizeChanged(), VideoDriver_SDL_Base::driver_info, OpenGLBackend::Get(), ReleaseVideoPointer(), VideoDriver_SDL_Base::sdl_window, VideoDriver_SDL_Base::Start(), and Stop().
|
overridevirtual |
Stop this driver.
Reimplemented from VideoDriver_SDL_Base.
Definition at line 86 of file sdl2_opengl_v.cpp.
References VideoDriver_SDL_Base::Stop().
Referenced by Start().
|
overridevirtual |
Change the vsync setting.
| vsync | The new setting. |
Reimplemented from VideoDriver.
Definition at line 102 of file sdl2_opengl_v.cpp.
|
inlineoverridevirtual |
Get whether the mouse cursor is drawn by the video driver.
Reimplemented from VideoDriver.
Definition at line 23 of file sdl2_opengl_v.h.
|
private |
Animation buffer from OpenGL back-end.
Definition at line 45 of file sdl2_opengl_v.h.
Referenced by GetAnimBuffer(), GetVideoPointer(), and ReleaseVideoPointer().
|
private |
OpenGL context.
Definition at line 44 of file sdl2_opengl_v.h.
Referenced by AllocateBackingStore().