OpenTTD Source 20241224-master-gee860a5c8e
OpenGLSprite Class Reference

Class that encapsulates a RGBA texture together with a paletted remap texture. More...

#include <opengl.h>

Public Member Functions

 OpenGLSprite (uint width, uint height, uint levels, SpriteColourComponent components)
 Create an OpenGL sprite with a palette remap part.
 
void Update (uint width, uint height, uint level, const SpriteLoader::CommonPixel *data)
 Update a single mip-map level with new pixel data.
 
Dimension GetSize (ZoomLevel level) const
 Query the sprite size at a certain zoom level.
 

Private Types

enum  Texture { TEX_RGBA , TEX_REMAP , NUM_TEX }
 Enum of all used OpenGL texture objects. More...
 

Private Member Functions

bool BindTextures ()
 Bind textures for rendering this sprite.
 

Static Private Member Functions

static bool Create ()
 Create all common resources for sprite rendering.
 
static void Destroy ()
 Free all common resources for sprite rendering.
 

Private Attributes

Dimension dim
 
GLuint tex [NUM_TEX]
 The texture objects.
 

Static Private Attributes

static GLuint dummy_tex [NUM_TEX] = { 0, 0 }
 1x1 dummy textures to substitute for unused sprite components.
 
static GLuint pal_identity = 0
 Identity texture mapping.
 
static GLuint pal_tex = 0
 Texture for palette remap.
 
static GLuint pal_pbo = 0
 Pixel buffer object for remap upload.
 

Friends

class OpenGLBackend
 

Detailed Description

Class that encapsulates a RGBA texture together with a paletted remap texture.

Definition at line 115 of file opengl.h.

Member Enumeration Documentation

◆ Texture

enum OpenGLSprite::Texture
private

Enum of all used OpenGL texture objects.

Enumerator
TEX_RGBA 

RGBA texture part.

TEX_REMAP 

Remap texture part.

Definition at line 118 of file opengl.h.

Constructor & Destructor Documentation

◆ OpenGLSprite()

OpenGLSprite::OpenGLSprite ( uint  width,
uint  height,
uint  levels,
SpriteColourComponent  components 
)

Create an OpenGL sprite with a palette remap part.

Parameters
widthWidth of the top-level texture.
heightHeight of the top-level texture.
levelsNumber of mip-map levels.
componentsIndicates which sprite components are used.

Definition at line 1415 of file opengl.cpp.

References MemSetT(), SCC_PAL, tex, TEX_REMAP, and TEX_RGBA.

◆ ~OpenGLSprite()

OpenGLSprite::~OpenGLSprite ( )

Definition at line 1456 of file opengl.cpp.

Member Function Documentation

◆ BindTextures()

bool OpenGLSprite::BindTextures ( )
private

Bind textures for rendering this sprite.

Returns
True if the sprite has RGBA data.

Definition at line 1526 of file opengl.cpp.

References tex, TEX_REMAP, and TEX_RGBA.

Referenced by OpenGLBackend::RenderOglSprite().

◆ Create()

bool OpenGLSprite::Create ( )
staticprivate

Create all common resources for sprite rendering.

Returns
True if no error occurred.

Definition at line 1339 of file opengl.cpp.

References dummy_tex, pal_identity, pal_pbo, pal_tex, TEX_REMAP, and TEX_RGBA.

Referenced by OpenGLBackend::Init().

◆ Destroy()

void OpenGLSprite::Destroy ( )
staticprivate

Free all common resources for sprite rendering.

Definition at line 1400 of file opengl.cpp.

References dummy_tex, pal_identity, pal_pbo, and pal_tex.

Referenced by OpenGLBackend::~OpenGLBackend().

◆ GetSize()

Dimension OpenGLSprite::GetSize ( ZoomLevel  level) const
inline

Query the sprite size at a certain zoom level.

Parameters
levelThe zoom level to query.
Returns
Sprite size at the given zoom level.

Definition at line 1516 of file opengl.cpp.

References UnScaleByZoomLower().

Referenced by OpenGLBackend::RenderOglSprite().

◆ Update()

void OpenGLSprite::Update ( uint  width,
uint  height,
uint  level,
const SpriteLoader::CommonPixel data 
)

Update a single mip-map level with new pixel data.

Parameters
widthWidth of the level.
heightHeight of the level.
levelMip-map level.
dataNew pixel data.

Definition at line 1468 of file opengl.cpp.

References SpriteLoader::CommonPixel::a, Align(), ReusableBuffer< T >::Allocate(), Colour::b, SpriteLoader::CommonPixel::b, SpriteLoader::CommonPixel::g, ReusableBuffer< T >::GetBuffer(), SpriteLoader::CommonPixel::m, SpriteLoader::CommonPixel::r, tex, TEX_REMAP, and TEX_RGBA.

Referenced by OpenGLBackend::Encode().

Friends And Related Symbol Documentation

◆ OpenGLBackend

friend class OpenGLBackend
friend

Definition at line 145 of file opengl.h.

Field Documentation

◆ dim

Dimension OpenGLSprite::dim
private

Definition at line 124 of file opengl.h.

◆ dummy_tex

GLuint OpenGLSprite::dummy_tex = { 0, 0 }
staticprivate

1x1 dummy textures to substitute for unused sprite components.

Definition at line 1330 of file opengl.h.

Referenced by Create(), and Destroy().

◆ pal_identity

GLuint OpenGLSprite::pal_identity = 0
staticprivate

Identity texture mapping.

Definition at line 129 of file opengl.h.

Referenced by Create(), Destroy(), and OpenGLBackend::RenderOglSprite().

◆ pal_pbo

GLuint OpenGLSprite::pal_pbo = 0
staticprivate

Pixel buffer object for remap upload.

Definition at line 131 of file opengl.h.

Referenced by Create(), Destroy(), and OpenGLBackend::RenderOglSprite().

◆ pal_tex

GLuint OpenGLSprite::pal_tex = 0
staticprivate

Texture for palette remap.

Definition at line 130 of file opengl.h.

Referenced by Create(), Destroy(), and OpenGLBackend::RenderOglSprite().

◆ tex

GLuint OpenGLSprite::tex[NUM_TEX]
private

The texture objects.

Definition at line 125 of file opengl.h.

Referenced by BindTextures(), OpenGLSprite(), and Update().


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