OpenTTD Source 20241224-master-gee860a5c8e
|
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 |
Class that encapsulates a RGBA texture together with a paletted remap texture.
|
private |
OpenGLSprite::OpenGLSprite | ( | uint | width, |
uint | height, | ||
uint | levels, | ||
SpriteColourComponent | components | ||
) |
Create an OpenGL sprite with a palette remap part.
width | Width of the top-level texture. |
height | Height of the top-level texture. |
levels | Number of mip-map levels. |
components | Indicates 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 | ( | ) |
Definition at line 1456 of file opengl.cpp.
|
private |
Bind textures for rendering this sprite.
Definition at line 1526 of file opengl.cpp.
References tex, TEX_REMAP, and TEX_RGBA.
Referenced by OpenGLBackend::RenderOglSprite().
|
staticprivate |
Create all common resources for sprite rendering.
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().
|
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().
Query the sprite size at a certain zoom level.
level | The zoom level to query. |
Definition at line 1516 of file opengl.cpp.
References UnScaleByZoomLower().
Referenced by OpenGLBackend::RenderOglSprite().
void OpenGLSprite::Update | ( | uint | width, |
uint | height, | ||
uint | level, | ||
const SpriteLoader::CommonPixel * | data | ||
) |
Update a single mip-map level with new pixel data.
width | Width of the level. |
height | Height of the level. |
level | Mip-map level. |
data | New 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().
|
friend |
|
staticprivate |
|
staticprivate |
Identity texture mapping.
Definition at line 129 of file opengl.h.
Referenced by Create(), Destroy(), and OpenGLBackend::RenderOglSprite().
|
staticprivate |
Pixel buffer object for remap upload.
Definition at line 131 of file opengl.h.
Referenced by Create(), Destroy(), and OpenGLBackend::RenderOglSprite().
|
staticprivate |
Texture for palette remap.
Definition at line 130 of file opengl.h.
Referenced by Create(), Destroy(), and OpenGLBackend::RenderOglSprite().
|
private |
The texture objects.
Definition at line 125 of file opengl.h.
Referenced by BindTextures(), OpenGLSprite(), and Update().