OpenTTD Source 20241224-master-gf74b0cf984
VideoDriver_SDL_OpenGL Class Reference

The OpenGL video driver for windows. More...

#include <sdl2_opengl_v.h>

Inheritance diagram for VideoDriver_SDL_OpenGL:
VideoDriver_SDL_Base VideoDriver Driver

Public Member Functions

std::optional< std::string_view > Start (const StringList &param) 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.
 
virtual int GetSuggestedUIScale ()
 Get a suggested default GUI scale taking screen DPI into account.
 
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
virtual float GetDPIScale ()
 Get DPI scaling factor of the screen OTTD is displayed on.
 
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 {
  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 VideoDriverGetInstance ()
 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
 Main SDL window.
 
Palette local_palette
 Current palette to use for drawing.
 
bool buffer_locked
 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
 

Detailed Description

The OpenGL video driver for windows.

Definition at line 13 of file sdl2_opengl_v.h.

Constructor & Destructor Documentation

◆ VideoDriver_SDL_OpenGL()

VideoDriver_SDL_OpenGL::VideoDriver_SDL_OpenGL ( )
inline

Definition at line 15 of file sdl2_opengl_v.h.

Member Function Documentation

◆ AllocateBackingStore()

bool VideoDriver_SDL_OpenGL::AllocateBackingStore ( int  w,
int  h,
bool  force = false 
)
overrideprotectedvirtual

◆ AllocateContext()

std::optional< std::string_view > VideoDriver_SDL_OpenGL::AllocateContext ( )
private

Definition at line 108 of file sdl2_opengl_v.cpp.

◆ ClearSystemSprites()

void VideoDriver_SDL_OpenGL::ClearSystemSprites ( )
overridevirtual

Clear all cached sprites.

Reimplemented from VideoDriver.

Definition at line 134 of file sdl2_opengl_v.cpp.

References OpenGLBackend::ClearCursorCache(), and OpenGLBackend::Get().

◆ CreateMainWindow()

bool VideoDriver_SDL_OpenGL::CreateMainWindow ( uint  w,
uint  h,
uint  flags 
)
overrideprotectedvirtual

Create the main window.

Reimplemented from VideoDriver_SDL_Base.

Definition at line 51 of file sdl2_opengl_v.cpp.

References VideoDriver_SDL_Base::CreateMainWindow().

◆ DestroyContext()

void VideoDriver_SDL_OpenGL::DestroyContext ( )
private

Definition at line 93 of file sdl2_opengl_v.cpp.

◆ GetAnimBuffer()

uint8_t * VideoDriver_SDL_OpenGL::GetAnimBuffer ( )
inlineoverridevirtual

Get a pointer to the animation buffer of the video back-end.

Returns
Pointer to the buffer or nullptr if no animation buffer is supported.

Reimplemented from VideoDriver.

Definition at line 30 of file sdl2_opengl_v.h.

References anim_buffer.

◆ GetName()

std::string_view VideoDriver_SDL_OpenGL::GetName ( ) const
inlineoverridevirtual

Get the name of this driver.

Returns
The name of the driver.

Implements Driver.

Definition at line 34 of file sdl2_opengl_v.h.

◆ GetVideoPointer()

void * VideoDriver_SDL_OpenGL::GetVideoPointer ( )
overrideprotectedvirtual

◆ HasAnimBuffer()

bool VideoDriver_SDL_OpenGL::HasAnimBuffer ( )
inlineoverridevirtual

Does this video driver support a separate animation buffer in addition to the colour buffer?

Returns
True if a separate animation buffer is supported.

Reimplemented from VideoDriver.

Definition at line 29 of file sdl2_opengl_v.h.

◆ HasEfficient8Bpp()

bool VideoDriver_SDL_OpenGL::HasEfficient8Bpp ( ) const
inlineoverridevirtual

Has this video driver an efficient code path for palette animated 8-bpp sprites?

Returns
True if the driver has an efficient code path for 8-bpp.

Reimplemented from VideoDriver.

Definition at line 21 of file sdl2_opengl_v.h.

◆ Paint()

◆ PopulateSystemSprites()

void VideoDriver_SDL_OpenGL::PopulateSystemSprites ( )
overridevirtual

Populate all sprites in cache.

Reimplemented from VideoDriver.

Definition at line 129 of file sdl2_opengl_v.cpp.

References OpenGLBackend::Get().

◆ ReleaseVideoPointer()

void VideoDriver_SDL_OpenGL::ReleaseVideoPointer ( )
overrideprotectedvirtual

Hand video buffer back to the painting backend.

Implements VideoDriver_SDL_Base.

Definition at line 166 of file sdl2_opengl_v.cpp.

References anim_buffer, VideoDriver_SDL_Base::dirty_rect, OpenGLBackend::Get(), MemSetT(), OpenGLBackend::ReleaseAnimBuffer(), and OpenGLBackend::ReleaseVideoBuffer().

Referenced by AllocateBackingStore(), and Start().

◆ Start()

std::optional< std::string_view > VideoDriver_SDL_OpenGL::Start ( const StringList parm)
overridevirtual

Start this driver.

Parameters
parmParameters passed to the driver.
Returns
std::nullopt if everything went okay, otherwise an error message.

Reimplemented from VideoDriver_SDL_Base.

Definition at line 56 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().

◆ Stop()

void VideoDriver_SDL_OpenGL::Stop ( )
overridevirtual

Stop this driver.

Reimplemented from VideoDriver_SDL_Base.

Definition at line 87 of file sdl2_opengl_v.cpp.

References VideoDriver_SDL_Base::Stop().

Referenced by Start().

◆ ToggleVsync()

void VideoDriver_SDL_OpenGL::ToggleVsync ( bool  vsync)
overridevirtual

Change the vsync setting.

Parameters
vsyncThe new setting.

Reimplemented from VideoDriver.

Definition at line 103 of file sdl2_opengl_v.cpp.

◆ UseSystemCursor()

bool VideoDriver_SDL_OpenGL::UseSystemCursor ( )
inlineoverridevirtual

Get whether the mouse cursor is drawn by the video driver.

Returns
True if cursor drawing is done by the video driver.

Reimplemented from VideoDriver.

Definition at line 23 of file sdl2_opengl_v.h.

Field Documentation

◆ anim_buffer

uint8_t* VideoDriver_SDL_OpenGL::anim_buffer
private

Animation buffer from OpenGL back-end.

Definition at line 45 of file sdl2_opengl_v.h.

Referenced by GetAnimBuffer(), GetVideoPointer(), and ReleaseVideoPointer().

◆ gl_context

void* VideoDriver_SDL_OpenGL::gl_context
private

OpenGL context.

Definition at line 44 of file sdl2_opengl_v.h.

Referenced by AllocateBackingStore().


The documentation for this class was generated from the following files: