22#ifndef BACKENDS_GRAPHICS_OPENGL_TEXTURE_H
23#define BACKENDS_GRAPHICS_OPENGL_TEXTURE_H
25#include "graphics/opengl/system_headers.h"
26#include "graphics/opengl/context.h"
27#include "graphics/opengl/texture.h"
29#include "graphics/pixelformat.h"
30#include "graphics/surface.h"
31#include "graphics/blit.h"
33#include "common/rect.h"
34#include "common/rotationmode.h"
78 virtual void allocate(uint width, uint height) = 0;
110 void flagDirty() { _allDirty =
true; }
111 virtual bool isDirty()
const {
return _allDirty || !_dirtyArea.
isEmpty(); }
113 virtual uint getWidth()
const = 0;
114 virtual uint getHeight()
const = 0;
137 virtual void setPalette(uint start, uint colors,
const byte *palData) {}
139 virtual void setScaler(uint scalerIndex,
int scaleFactor) {}
151 void clearDirty() { _allDirty =
false; _dirtyArea =
Common::Rect(); }
186 uint getWidth()
const override {
return _userPixelData.
w; }
187 uint getHeight()
const override {
return _userPixelData.
h; }
221 bool hasPalette()
const override {
return (_palette !=
nullptr); }
224 void setPalette(uint start, uint colors,
const byte *palData)
override;
235 Graphics::FastBlitFunc _blitFunc;
244 ~ScaledTextureSurface()
override;
246 void allocate(uint width, uint height)
override;
248 uint getWidth()
const override {
return _rgbData.w; }
249 uint getHeight()
const override {
return _rgbData.h; }
252 bool hasPalette()
const override {
return (_palette !=
nullptr); }
257 void updateGLTexture()
override;
259 void setScaler(uint scalerIndex,
int scaleFactor)
override;
271class CLUT8LookUpPipeline;
287 bool isDirty()
const override {
return _paletteDirty || Surface::isDirty(); }
289 uint getWidth()
const override {
return _userPixelData.
w; }
290 uint getHeight()
const override {
return _userPixelData.
h; }
297 void setPalette(uint start, uint colors,
const byte *palData)
override;
305 static bool isSupportedByContext() {
306 return OpenGLContext.shadersSupported
307 && OpenGLContext.multitextureSupported
308 && OpenGLContext.framebufferObjectSupported
310 && OpenGLContext.textureLookupPrecision > 8;
321 GLfloat _clut8Vertices[4*2];
326 byte _palette[4 * 256];
Definition: texture.h:211
void updateGLTexture() override
void setMask(const byte *mask) override
void setColorKey(uint colorKey) override
Graphics::PixelFormat getFormat() const override
Definition: texture.h:219
void allocate(uint width, uint height) override
bool hasPalette() const override
Definition: texture.h:221
virtual void enableLinearFiltering(bool enable)=0
virtual bool hasPalette() const
Definition: texture.h:127
void copyRectToTexture(uint x, uint y, uint w, uint h, const void *src, uint srcPitch)
virtual void setMask(const byte *mask)
Definition: texture.h:85
virtual void setColorKey(uint colorKey)
Definition: texture.h:136
virtual void recreate()=0
virtual Graphics::PixelFormat getFormat() const =0
virtual void updateGLTexture()=0
virtual const Texture & getGLTexture() const =0
virtual void setRotation(Common::RotationMode rotation)=0
virtual void allocate(uint width, uint height)=0
Definition: texture.h:273
const Texture & getGLTexture() const override
void allocate(uint width, uint height) override
void setColorKey(uint colorKey) override
Graphics::PixelFormat getFormat() const override
void setRotation(Common::RotationMode rotation) override
void enableLinearFiltering(bool enable) override
void updateGLTexture() override
bool hasPalette() const override
Definition: texture.h:294
Definition: texture.h:164
void enableLinearFiltering(bool enable) override
Graphics::PixelFormat getFormat() const override
Definition: texture.h:192
void allocate(uint width, uint height) override
void updateGLTexture() override
void setRotation(Common::RotationMode rotation) override
const Texture & getGLTexture() const override
Definition: texture.h:198
TextureSurface(GLenum glIntFormat, GLenum glFormat, GLenum glType, const Graphics::PixelFormat &format)
Definition: framebuffer.h:203
Definition: scalerplugin.h:28
RotationMode
Definition: rotationmode.h:44
bool isEmpty() const
Definition: rect.h:385
int16 h
Definition: surface.h:76
int16 w
Definition: surface.h:71