Rename 'Tex' to 'TEX' for consistency
This commit is contained in:
parent
ba3b904f34
commit
b151a22f6e
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
struct BitmapPrivate
|
struct BitmapPrivate
|
||||||
{
|
{
|
||||||
TexFBO tex;
|
TEXFBO tex;
|
||||||
|
|
||||||
/* 'setPixel()' calls are cached and executed
|
/* 'setPixel()' calls are cached and executed
|
||||||
* in batches on 'flush()' */
|
* in batches on 'flush()' */
|
||||||
|
@ -57,8 +57,8 @@ struct BitmapPrivate
|
||||||
|
|
||||||
void bindTextureWithMatrix()
|
void bindTextureWithMatrix()
|
||||||
{
|
{
|
||||||
Tex::bind(tex.tex);
|
TEX::bind(tex.tex);
|
||||||
Tex::bindMatrix(tex.width, tex.height);
|
TEX::bindMatrix(tex.width, tex.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bindFBO()
|
void bindFBO()
|
||||||
|
@ -88,7 +88,7 @@ struct BitmapPrivate
|
||||||
if (pointArray.count() == 0)
|
if (pointArray.count() == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Tex::unbind();
|
TEX::unbind();
|
||||||
bindFBO();
|
bindFBO();
|
||||||
pushSetViewport();
|
pushSetViewport();
|
||||||
glState.blendMode.pushSet(BlendNone);
|
glState.blendMode.pushSet(BlendNone);
|
||||||
|
@ -139,7 +139,7 @@ Bitmap::Bitmap(const char *filename)
|
||||||
if (!imgSurf)
|
if (!imgSurf)
|
||||||
throw Exception(Exception::SDLError, "SDL: %s", SDL_GetError());
|
throw Exception(Exception::SDLError, "SDL: %s", SDL_GetError());
|
||||||
|
|
||||||
TexFBO tex;
|
TEXFBO tex;
|
||||||
|
|
||||||
p->ensureFormat(imgSurf, SDL_PIXELFORMAT_ABGR8888);
|
p->ensureFormat(imgSurf, SDL_PIXELFORMAT_ABGR8888);
|
||||||
|
|
||||||
|
@ -148,8 +148,8 @@ Bitmap::Bitmap(const char *filename)
|
||||||
p = new BitmapPrivate;
|
p = new BitmapPrivate;
|
||||||
p->tex = tex;
|
p->tex = tex;
|
||||||
|
|
||||||
Tex::bind(p->tex.tex);
|
TEX::bind(p->tex.tex);
|
||||||
Tex::uploadImage(p->tex.width, p->tex.height, imgSurf->pixels, GL_RGBA);
|
TEX::uploadImage(p->tex.width, p->tex.height, imgSurf->pixels, GL_RGBA);
|
||||||
|
|
||||||
SDL_FreeSurface(imgSurf);
|
SDL_FreeSurface(imgSurf);
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,7 @@ Bitmap::Bitmap(int width, int height)
|
||||||
if (width <= 0 || height <= 0)
|
if (width <= 0 || height <= 0)
|
||||||
throw Exception(Exception::RGSSError, "failed to create bitmap");
|
throw Exception(Exception::RGSSError, "failed to create bitmap");
|
||||||
|
|
||||||
TexFBO tex = gState->texPool().request(width, height);
|
TEXFBO tex = gState->texPool().request(width, height);
|
||||||
|
|
||||||
p = new BitmapPrivate;
|
p = new BitmapPrivate;
|
||||||
p->tex = tex;
|
p->tex = tex;
|
||||||
|
@ -237,7 +237,7 @@ void Bitmap::stretchBlt(const IntRect &destRect,
|
||||||
|
|
||||||
float normOpacity = (float) opacity / 255.0f;
|
float normOpacity = (float) opacity / 255.0f;
|
||||||
|
|
||||||
TexFBO &gpTex = gState->gpTexFBO(destRect.w, destRect.h);
|
TEXFBO &gpTex = gState->gpTexFBO(destRect.w, destRect.h);
|
||||||
|
|
||||||
FBO::bind(gpTex.fbo, FBO::Draw);
|
FBO::bind(gpTex.fbo, FBO::Draw);
|
||||||
FBO::bind(p->tex.fbo, FBO::Read);
|
FBO::bind(p->tex.fbo, FBO::Read);
|
||||||
|
@ -322,7 +322,7 @@ void Bitmap::gradientFillRect(const IntRect &rect,
|
||||||
|
|
||||||
quad.setPosRect(rect);
|
quad.setPosRect(rect);
|
||||||
|
|
||||||
Tex::unbind();
|
TEX::unbind();
|
||||||
p->bindFBO();
|
p->bindFBO();
|
||||||
p->pushSetViewport();
|
p->pushSetViewport();
|
||||||
|
|
||||||
|
@ -401,7 +401,7 @@ void Bitmap::hueChange(int hue)
|
||||||
|
|
||||||
flush();
|
flush();
|
||||||
|
|
||||||
TexFBO newTex = gState->texPool().request(width(), height());
|
TEXFBO newTex = gState->texPool().request(width(), height());
|
||||||
|
|
||||||
FloatRect texRect(rect());
|
FloatRect texRect(rect());
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ void Bitmap::hueChange(int hue)
|
||||||
shader.setInputTexture(p->tex.tex);
|
shader.setInputTexture(p->tex.tex);
|
||||||
|
|
||||||
FBO::bind(newTex.fbo);
|
FBO::bind(newTex.fbo);
|
||||||
Tex::bindMatrix(width(), height());
|
TEX::bindMatrix(width(), height());
|
||||||
p->pushSetViewport();
|
p->pushSetViewport();
|
||||||
|
|
||||||
p->blitQuad(quad);
|
p->blitQuad(quad);
|
||||||
|
@ -500,7 +500,7 @@ void Bitmap::drawText(const IntRect &rect, const char *str, int align)
|
||||||
{
|
{
|
||||||
/* Aquire a partial copy of the destination
|
/* Aquire a partial copy of the destination
|
||||||
* buffer we're about to render to */
|
* buffer we're about to render to */
|
||||||
TexFBO &gpTex2 = gState->gpTexFBO(posRect.w, posRect.h);
|
TEXFBO &gpTex2 = gState->gpTexFBO(posRect.w, posRect.h);
|
||||||
|
|
||||||
FBO::bind(gpTex2.fbo, FBO::Draw);
|
FBO::bind(gpTex2.fbo, FBO::Draw);
|
||||||
FBO::bind(p->tex.fbo, FBO::Read);
|
FBO::bind(p->tex.fbo, FBO::Read);
|
||||||
|
@ -519,8 +519,8 @@ void Bitmap::drawText(const IntRect &rect, const char *str, int align)
|
||||||
}
|
}
|
||||||
|
|
||||||
gState->bindTex();
|
gState->bindTex();
|
||||||
Tex::uploadSubImage(0, 0, txtSurf->w, txtSurf->h, txtSurf->pixels, GL_BGRA);
|
TEX::uploadSubImage(0, 0, txtSurf->w, txtSurf->h, txtSurf->pixels, GL_BGRA);
|
||||||
Tex::setSmooth(true);
|
TEX::setSmooth(true);
|
||||||
|
|
||||||
Quad &quad = gState->gpQuad();
|
Quad &quad = gState->gpQuad();
|
||||||
quad.setTexRect(FloatRect(0, 0, txtSurf->w, txtSurf->h));
|
quad.setTexRect(FloatRect(0, 0, txtSurf->w, txtSurf->h));
|
||||||
|
@ -563,7 +563,7 @@ void Bitmap::flush() const
|
||||||
p->flushPoints();
|
p->flushPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
TexFBO &Bitmap::getGLTypes()
|
TEXFBO &Bitmap::getGLTypes()
|
||||||
{
|
{
|
||||||
return p->tex;
|
return p->tex;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#include "sigc++/signal.h"
|
#include "sigc++/signal.h"
|
||||||
|
|
||||||
class Font;
|
class Font;
|
||||||
struct TexFBO;
|
struct TEXFBO;
|
||||||
|
|
||||||
struct BitmapPrivate;
|
struct BitmapPrivate;
|
||||||
// FIXME make this class use proper RGSS classes again
|
// FIXME make this class use proper RGSS classes again
|
||||||
|
@ -102,7 +102,7 @@ public:
|
||||||
|
|
||||||
/* <internal> */
|
/* <internal> */
|
||||||
void flush() const;
|
void flush() const;
|
||||||
TexFBO &getGLTypes();
|
TEXFBO &getGLTypes();
|
||||||
void bindTexWithMatrix();
|
void bindTexWithMatrix();
|
||||||
|
|
||||||
sigc::signal<void> modified;
|
sigc::signal<void> modified;
|
||||||
|
|
|
@ -46,7 +46,7 @@ struct ID \
|
||||||
} \
|
} \
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace Tex
|
namespace TEX
|
||||||
{
|
{
|
||||||
DEF_GL_ID
|
DEF_GL_ID
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ namespace FBO
|
||||||
bind(ID(0), mode);
|
bind(ID(0), mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void setTarget(Tex::ID target, unsigned colorAttach = 0)
|
inline void setTarget(TEX::ID target, unsigned colorAttach = 0)
|
||||||
{
|
{
|
||||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + colorAttach, GL_TEXTURE_2D, target.gl, 0);
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + colorAttach, GL_TEXTURE_2D, target.gl, 0);
|
||||||
}
|
}
|
||||||
|
@ -303,48 +303,48 @@ struct GenericBO
|
||||||
typedef struct GenericBO<GL_ARRAY_BUFFER> VBO;
|
typedef struct GenericBO<GL_ARRAY_BUFFER> VBO;
|
||||||
typedef struct GenericBO<GL_ELEMENT_ARRAY_BUFFER> IBO;
|
typedef struct GenericBO<GL_ELEMENT_ARRAY_BUFFER> IBO;
|
||||||
|
|
||||||
struct TexFBO
|
struct TEXFBO
|
||||||
{
|
{
|
||||||
Tex::ID tex;
|
TEX::ID tex;
|
||||||
FBO::ID fbo;
|
FBO::ID fbo;
|
||||||
int width, height;
|
int width, height;
|
||||||
|
|
||||||
TexFBO()
|
TEXFBO()
|
||||||
: tex(0), fbo(0), width(0), height(0)
|
: tex(0), fbo(0), width(0), height(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
bool operator==(const TexFBO &other) const
|
bool operator==(const TEXFBO &other) const
|
||||||
{
|
{
|
||||||
return (tex == other.tex) && (fbo == other.fbo);
|
return (tex == other.tex) && (fbo == other.fbo);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void init(TexFBO &obj)
|
static inline void init(TEXFBO &obj)
|
||||||
{
|
{
|
||||||
obj.tex = Tex::gen();
|
obj.tex = TEX::gen();
|
||||||
obj.fbo = FBO::gen();
|
obj.fbo = FBO::gen();
|
||||||
Tex::bind(obj.tex);
|
TEX::bind(obj.tex);
|
||||||
Tex::setRepeat(false);
|
TEX::setRepeat(false);
|
||||||
Tex::setSmooth(false);
|
TEX::setSmooth(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void allocEmpty(TexFBO &obj, int width, int height)
|
static inline void allocEmpty(TEXFBO &obj, int width, int height)
|
||||||
{
|
{
|
||||||
Tex::bind(obj.tex);
|
TEX::bind(obj.tex);
|
||||||
Tex::allocEmpty(width, height);
|
TEX::allocEmpty(width, height);
|
||||||
obj.width = width;
|
obj.width = width;
|
||||||
obj.height = height;
|
obj.height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void linkFBO(TexFBO &obj)
|
static inline void linkFBO(TEXFBO &obj)
|
||||||
{
|
{
|
||||||
FBO::bind(obj.fbo);
|
FBO::bind(obj.fbo);
|
||||||
FBO::setTarget(obj.tex);
|
FBO::setTarget(obj.tex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void fini(TexFBO &obj)
|
static inline void fini(TEXFBO &obj)
|
||||||
{
|
{
|
||||||
FBO::del(obj.fbo);
|
FBO::del(obj.fbo);
|
||||||
Tex::del(obj.tex);
|
TEX::del(obj.tex);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -76,10 +76,10 @@ struct GlobalStatePrivate
|
||||||
|
|
||||||
Font *defaultFont;
|
Font *defaultFont;
|
||||||
|
|
||||||
Tex::ID globalTex;
|
TEX::ID globalTex;
|
||||||
int globalTexW, globalTexH;
|
int globalTexW, globalTexH;
|
||||||
|
|
||||||
TexFBO gpTexFBO;
|
TEXFBO gpTexFBO;
|
||||||
|
|
||||||
Quad gpQuad;
|
Quad gpQuad;
|
||||||
|
|
||||||
|
@ -114,22 +114,22 @@ struct GlobalStatePrivate
|
||||||
globalTexW = 128;
|
globalTexW = 128;
|
||||||
globalTexH = 64;
|
globalTexH = 64;
|
||||||
|
|
||||||
globalTex = Tex::gen();
|
globalTex = TEX::gen();
|
||||||
Tex::bind(globalTex);
|
TEX::bind(globalTex);
|
||||||
Tex::setRepeat(false);
|
TEX::setRepeat(false);
|
||||||
Tex::setSmooth(false);
|
TEX::setSmooth(false);
|
||||||
Tex::allocEmpty(globalTexW, globalTexH);
|
TEX::allocEmpty(globalTexW, globalTexH);
|
||||||
|
|
||||||
TexFBO::init(gpTexFBO);
|
TEXFBO::init(gpTexFBO);
|
||||||
/* Reuse starting values */
|
/* Reuse starting values */
|
||||||
TexFBO::allocEmpty(gpTexFBO, globalTexW, globalTexH);
|
TEXFBO::allocEmpty(gpTexFBO, globalTexW, globalTexH);
|
||||||
TexFBO::linkFBO(gpTexFBO);
|
TEXFBO::linkFBO(gpTexFBO);
|
||||||
}
|
}
|
||||||
|
|
||||||
~GlobalStatePrivate()
|
~GlobalStatePrivate()
|
||||||
{
|
{
|
||||||
Tex::del(globalTex);
|
TEX::del(globalTex);
|
||||||
TexFBO::fini(gpTexFBO);
|
TEXFBO::fini(gpTexFBO);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -202,9 +202,9 @@ void GlobalState::bindQuadIBO()
|
||||||
|
|
||||||
void GlobalState::bindTex()
|
void GlobalState::bindTex()
|
||||||
{
|
{
|
||||||
Tex::bind(p->globalTex);
|
TEX::bind(p->globalTex);
|
||||||
Tex::allocEmpty(p->globalTexW, p->globalTexH);
|
TEX::allocEmpty(p->globalTexW, p->globalTexH);
|
||||||
Tex::bindMatrix(p->globalTexW, p->globalTexH);
|
TEX::bindMatrix(p->globalTexW, p->globalTexH);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GlobalState::ensureTexSize(int minW, int minH, Vec2 ¤tSizeOut)
|
void GlobalState::ensureTexSize(int minW, int minH, Vec2 ¤tSizeOut)
|
||||||
|
@ -218,7 +218,7 @@ void GlobalState::ensureTexSize(int minW, int minH, Vec2 ¤tSizeOut)
|
||||||
currentSizeOut = Vec2(p->globalTexW, p->globalTexH);
|
currentSizeOut = Vec2(p->globalTexW, p->globalTexH);
|
||||||
}
|
}
|
||||||
|
|
||||||
TexFBO &GlobalState::gpTexFBO(int minW, int minH)
|
TEXFBO &GlobalState::gpTexFBO(int minW, int minH)
|
||||||
{
|
{
|
||||||
bool needResize = false;
|
bool needResize = false;
|
||||||
|
|
||||||
|
@ -236,8 +236,8 @@ TexFBO &GlobalState::gpTexFBO(int minW, int minH)
|
||||||
|
|
||||||
if (needResize)
|
if (needResize)
|
||||||
{
|
{
|
||||||
Tex::bind(p->gpTexFBO.tex);
|
TEX::bind(p->gpTexFBO.tex);
|
||||||
Tex::allocEmpty(p->gpTexFBO.width, p->gpTexFBO.height);
|
TEX::allocEmpty(p->gpTexFBO.width, p->gpTexFBO.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
return p->gpTexFBO;
|
return p->gpTexFBO;
|
||||||
|
|
|
@ -32,7 +32,7 @@ struct RGSSThreadData;
|
||||||
struct GlobalIBO;
|
struct GlobalIBO;
|
||||||
struct mrb_state;
|
struct mrb_state;
|
||||||
struct SDL_Window;
|
struct SDL_Window;
|
||||||
struct TexFBO;
|
struct TEXFBO;
|
||||||
struct Quad;
|
struct Quad;
|
||||||
|
|
||||||
class Scene;
|
class Scene;
|
||||||
|
@ -100,7 +100,7 @@ struct GlobalState
|
||||||
void bindTex();
|
void bindTex();
|
||||||
void ensureTexSize(int minW, int minH, Vec2 ¤tSizeOut);
|
void ensureTexSize(int minW, int minH, Vec2 ¤tSizeOut);
|
||||||
|
|
||||||
TexFBO &gpTexFBO(int minW, int minH);
|
TEXFBO &gpTexFBO(int minW, int minH);
|
||||||
|
|
||||||
Quad &gpQuad();
|
Quad &gpQuad();
|
||||||
|
|
||||||
|
|
|
@ -216,7 +216,7 @@ struct CPUTimer
|
||||||
|
|
||||||
struct PingPong
|
struct PingPong
|
||||||
{
|
{
|
||||||
TexFBO rt[2];
|
TEXFBO rt[2];
|
||||||
unsigned srcInd, dstInd;
|
unsigned srcInd, dstInd;
|
||||||
int screenW, screenH;
|
int screenW, screenH;
|
||||||
|
|
||||||
|
@ -226,9 +226,9 @@ struct PingPong
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 2; ++i)
|
for (int i = 0; i < 2; ++i)
|
||||||
{
|
{
|
||||||
TexFBO::init(rt[i]);
|
TEXFBO::init(rt[i]);
|
||||||
TexFBO::allocEmpty(rt[i], screenW, screenH);
|
TEXFBO::allocEmpty(rt[i], screenW, screenH);
|
||||||
TexFBO::linkFBO(rt[i]);
|
TEXFBO::linkFBO(rt[i]);
|
||||||
glClearColor(0, 0, 0, 1);
|
glClearColor(0, 0, 0, 1);
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
|
@ -237,7 +237,7 @@ struct PingPong
|
||||||
~PingPong()
|
~PingPong()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 2; ++i)
|
for (int i = 0; i < 2; ++i)
|
||||||
TexFBO::fini(rt[i]);
|
TEXFBO::fini(rt[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Binds FBO of last good buffer for reading */
|
/* Binds FBO of last good buffer for reading */
|
||||||
|
@ -253,8 +253,8 @@ struct PingPong
|
||||||
screenH = height;
|
screenH = height;
|
||||||
for (int i = 0; i < 2; ++i)
|
for (int i = 0; i < 2; ++i)
|
||||||
{
|
{
|
||||||
Tex::bind(rt[i].tex);
|
TEX::bind(rt[i].tex);
|
||||||
Tex::allocEmpty(width, height);
|
TEX::allocEmpty(width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,8 +268,8 @@ struct PingPong
|
||||||
swapIndices();
|
swapIndices();
|
||||||
|
|
||||||
/* Discard dest buffer */
|
/* Discard dest buffer */
|
||||||
Tex::bind(rt[dstInd].tex);
|
TEX::bind(rt[dstInd].tex);
|
||||||
Tex::allocEmpty(screenW, screenH);
|
TEX::allocEmpty(screenW, screenH);
|
||||||
|
|
||||||
bind();
|
bind();
|
||||||
}
|
}
|
||||||
|
@ -288,7 +288,7 @@ struct PingPong
|
||||||
private:
|
private:
|
||||||
void bind()
|
void bind()
|
||||||
{
|
{
|
||||||
Tex::bindWithMatrix(rt[srcInd].tex, screenW, screenH, true);
|
TEX::bindWithMatrix(rt[srcInd].tex, screenW, screenH, true);
|
||||||
FBO::bind(rt[srcInd].fbo, FBO::Read);
|
FBO::bind(rt[srcInd].fbo, FBO::Read);
|
||||||
FBO::bind(rt[dstInd].fbo, FBO::Draw);
|
FBO::bind(rt[dstInd].fbo, FBO::Draw);
|
||||||
}
|
}
|
||||||
|
@ -352,7 +352,7 @@ public:
|
||||||
|
|
||||||
glState.blendMode.pushSet(BlendNone);
|
glState.blendMode.pushSet(BlendNone);
|
||||||
|
|
||||||
Tex::bindMatrix(geometry.rect.w, geometry.rect.h);
|
TEX::bindMatrix(geometry.rect.w, geometry.rect.h);
|
||||||
screenQuad.draw();
|
screenQuad.draw();
|
||||||
|
|
||||||
glState.blendMode.pop();
|
glState.blendMode.pop();
|
||||||
|
@ -466,8 +466,8 @@ struct GraphicsPrivate
|
||||||
CPUTimer cpuTimer;
|
CPUTimer cpuTimer;
|
||||||
|
|
||||||
bool frozen;
|
bool frozen;
|
||||||
TexFBO frozenScene;
|
TEXFBO frozenScene;
|
||||||
TexFBO currentScene;
|
TEXFBO currentScene;
|
||||||
Quad screenQuad;
|
Quad screenQuad;
|
||||||
RBOFBO transBuffer;
|
RBOFBO transBuffer;
|
||||||
|
|
||||||
|
@ -483,13 +483,13 @@ struct GraphicsPrivate
|
||||||
cpuTimer(frameRate),
|
cpuTimer(frameRate),
|
||||||
frozen(false)
|
frozen(false)
|
||||||
{
|
{
|
||||||
TexFBO::init(frozenScene);
|
TEXFBO::init(frozenScene);
|
||||||
TexFBO::allocEmpty(frozenScene, scRes.x, scRes.y);
|
TEXFBO::allocEmpty(frozenScene, scRes.x, scRes.y);
|
||||||
TexFBO::linkFBO(frozenScene);
|
TEXFBO::linkFBO(frozenScene);
|
||||||
|
|
||||||
TexFBO::init(currentScene);
|
TEXFBO::init(currentScene);
|
||||||
TexFBO::allocEmpty(currentScene, scRes.x, scRes.y);
|
TEXFBO::allocEmpty(currentScene, scRes.x, scRes.y);
|
||||||
TexFBO::linkFBO(currentScene);
|
TEXFBO::linkFBO(currentScene);
|
||||||
|
|
||||||
FloatRect screenRect(0, 0, scRes.x, scRes.y);
|
FloatRect screenRect(0, 0, scRes.x, scRes.y);
|
||||||
screenQuad.setTexPosRect(screenRect, screenRect);
|
screenQuad.setTexPosRect(screenRect, screenRect);
|
||||||
|
@ -501,8 +501,8 @@ struct GraphicsPrivate
|
||||||
|
|
||||||
~GraphicsPrivate()
|
~GraphicsPrivate()
|
||||||
{
|
{
|
||||||
TexFBO::fini(frozenScene);
|
TEXFBO::fini(frozenScene);
|
||||||
TexFBO::fini(currentScene);
|
TEXFBO::fini(currentScene);
|
||||||
|
|
||||||
RBOFBO::fini(transBuffer);
|
RBOFBO::fini(transBuffer);
|
||||||
}
|
}
|
||||||
|
@ -700,7 +700,7 @@ void Graphics::transition(int duration,
|
||||||
shader.setCurrentScene(p->currentScene.tex);
|
shader.setCurrentScene(p->currentScene.tex);
|
||||||
}
|
}
|
||||||
|
|
||||||
Tex::bindMatrix(p->scRes.x, p->scRes.y);
|
TEX::bindMatrix(p->scRes.x, p->scRes.y);
|
||||||
|
|
||||||
glState.blendMode.pushSet(BlendNone);
|
glState.blendMode.pushSet(BlendNone);
|
||||||
|
|
||||||
|
@ -784,10 +784,10 @@ void Graphics::resizeScreen(int width, int height)
|
||||||
|
|
||||||
p->screen.setResolution(width, height);
|
p->screen.setResolution(width, height);
|
||||||
|
|
||||||
Tex::bind(p->frozenScene.tex);
|
TEX::bind(p->frozenScene.tex);
|
||||||
Tex::allocEmpty(width, height);
|
TEX::allocEmpty(width, height);
|
||||||
Tex::bind(p->currentScene.tex);
|
TEX::bind(p->currentScene.tex);
|
||||||
Tex::allocEmpty(width, height);
|
TEX::allocEmpty(width, height);
|
||||||
|
|
||||||
FloatRect screenRect(0, 0, width, height);
|
FloatRect screenRect(0, 0, width, height);
|
||||||
p->screenQuad.setTexPosRect(screenRect, screenRect);
|
p->screenQuad.setTexPosRect(screenRect, screenRect);
|
||||||
|
|
|
@ -187,11 +187,11 @@ void Plane::draw()
|
||||||
|
|
||||||
p->bitmap->flush();
|
p->bitmap->flush();
|
||||||
p->bitmap->bindTexWithMatrix();
|
p->bitmap->bindTexWithMatrix();
|
||||||
Tex::setRepeat(true);
|
TEX::setRepeat(true);
|
||||||
|
|
||||||
p->quad.draw();
|
p->quad.draw();
|
||||||
|
|
||||||
Tex::setRepeat(false);
|
TEX::setRepeat(false);
|
||||||
FragShader::unbind();
|
FragShader::unbind();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ void FragShader::setVec4Uniform(GLint location, const Vec4 &vec)
|
||||||
glUniform4f(location, vec.x, vec.y, vec.z, vec.w);
|
glUniform4f(location, vec.x, vec.y, vec.z, vec.w);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FragShader::setTexUniform(GLint location, unsigned unitIndex, Tex::ID texture)
|
void FragShader::setTexUniform(GLint location, unsigned unitIndex, TEX::ID texture)
|
||||||
{
|
{
|
||||||
GLenum texUnit = GL_TEXTURE0 + unitIndex;
|
GLenum texUnit = GL_TEXTURE0 + unitIndex;
|
||||||
|
|
||||||
|
@ -108,17 +108,17 @@ TransShader::TransShader()
|
||||||
GET_U(vague);
|
GET_U(vague);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransShader::setCurrentScene(Tex::ID tex)
|
void TransShader::setCurrentScene(TEX::ID tex)
|
||||||
{
|
{
|
||||||
setTexUniform(u_currentScene, 0, tex);
|
setTexUniform(u_currentScene, 0, tex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransShader::setFrozenScene(Tex::ID tex)
|
void TransShader::setFrozenScene(TEX::ID tex)
|
||||||
{
|
{
|
||||||
setTexUniform(u_frozenScene, 1, tex);
|
setTexUniform(u_frozenScene, 1, tex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransShader::setTransMap(Tex::ID tex)
|
void TransShader::setTransMap(TEX::ID tex)
|
||||||
{
|
{
|
||||||
setTexUniform(u_transMap, 2, tex);
|
setTexUniform(u_transMap, 2, tex);
|
||||||
}
|
}
|
||||||
|
@ -144,12 +144,12 @@ SimpleTransShader::SimpleTransShader()
|
||||||
GET_U(prog);
|
GET_U(prog);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimpleTransShader::setCurrentScene(Tex::ID tex)
|
void SimpleTransShader::setCurrentScene(TEX::ID tex)
|
||||||
{
|
{
|
||||||
setTexUniform(u_currentScene, 0, tex);
|
setTexUniform(u_currentScene, 0, tex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimpleTransShader::setFrozenScene(Tex::ID tex)
|
void SimpleTransShader::setFrozenScene(TEX::ID tex)
|
||||||
{
|
{
|
||||||
setTexUniform(u_frozenScene, 1, tex);
|
setTexUniform(u_frozenScene, 1, tex);
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ void HueShader::setHueAdjust(float value)
|
||||||
glUniform1f(u_hueAdjust, value);
|
glUniform1f(u_hueAdjust, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HueShader::setInputTexture(Tex::ID tex)
|
void HueShader::setInputTexture(TEX::ID tex)
|
||||||
{
|
{
|
||||||
setTexUniform(u_inputTexture, 0, tex);
|
setTexUniform(u_inputTexture, 0, tex);
|
||||||
}
|
}
|
||||||
|
@ -254,7 +254,7 @@ void BltShader::setSource()
|
||||||
glUniform1i(u_source, 0);
|
glUniform1i(u_source, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BltShader::setDestination(const Tex::ID value)
|
void BltShader::setDestination(const TEX::ID value)
|
||||||
{
|
{
|
||||||
setTexUniform(u_destination, 1, value);
|
setTexUniform(u_destination, 1, value);
|
||||||
}
|
}
|
||||||
|
|
16
src/shader.h
16
src/shader.h
|
@ -38,7 +38,7 @@ protected:
|
||||||
void initFromFile(const char *filename);
|
void initFromFile(const char *filename);
|
||||||
|
|
||||||
void setVec4Uniform(GLint location, const Vec4 &vec);
|
void setVec4Uniform(GLint location, const Vec4 &vec);
|
||||||
void setTexUniform(GLint location, unsigned unitIndex, Tex::ID texture);
|
void setTexUniform(GLint location, unsigned unitIndex, TEX::ID texture);
|
||||||
|
|
||||||
GLuint shader;
|
GLuint shader;
|
||||||
GLuint program;
|
GLuint program;
|
||||||
|
@ -49,9 +49,9 @@ class TransShader : public FragShader
|
||||||
public:
|
public:
|
||||||
TransShader();
|
TransShader();
|
||||||
|
|
||||||
void setCurrentScene(Tex::ID tex);
|
void setCurrentScene(TEX::ID tex);
|
||||||
void setFrozenScene(Tex::ID tex);
|
void setFrozenScene(TEX::ID tex);
|
||||||
void setTransMap(Tex::ID tex);
|
void setTransMap(TEX::ID tex);
|
||||||
void setProg(float value);
|
void setProg(float value);
|
||||||
void setVague(float value);
|
void setVague(float value);
|
||||||
|
|
||||||
|
@ -64,8 +64,8 @@ class SimpleTransShader : public FragShader
|
||||||
public:
|
public:
|
||||||
SimpleTransShader();
|
SimpleTransShader();
|
||||||
|
|
||||||
void setCurrentScene(Tex::ID tex);
|
void setCurrentScene(TEX::ID tex);
|
||||||
void setFrozenScene(Tex::ID tex);
|
void setFrozenScene(TEX::ID tex);
|
||||||
void setProg(float value);
|
void setProg(float value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -95,7 +95,7 @@ public:
|
||||||
HueShader();
|
HueShader();
|
||||||
|
|
||||||
void setHueAdjust(float value);
|
void setHueAdjust(float value);
|
||||||
void setInputTexture(Tex::ID tex);
|
void setInputTexture(TEX::ID tex);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GLint u_hueAdjust, u_inputTexture;
|
GLint u_hueAdjust, u_inputTexture;
|
||||||
|
@ -108,7 +108,7 @@ public:
|
||||||
BltShader();
|
BltShader();
|
||||||
|
|
||||||
void setSource();
|
void setSource();
|
||||||
void setDestination(const Tex::ID value);
|
void setDestination(const TEX::ID value);
|
||||||
void setDestCoorF(const Vec2 &value);
|
void setDestCoorF(const Vec2 &value);
|
||||||
void setSubRect(const FloatRect &value);
|
void setSubRect(const FloatRect &value);
|
||||||
void setOpacity(float value);
|
void setOpacity(float value);
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
typedef QPair<uint16_t, uint16_t> Size;
|
typedef QPair<uint16_t, uint16_t> Size;
|
||||||
typedef QQueue<TexFBO> ObjList;
|
typedef QQueue<TEXFBO> ObjList;
|
||||||
|
|
||||||
static uint32_t byteCount(Size &s)
|
static uint32_t byteCount(Size &s)
|
||||||
{
|
{
|
||||||
|
@ -42,8 +42,8 @@ static uint32_t byteCount(Size &s)
|
||||||
|
|
||||||
struct CacheObject
|
struct CacheObject
|
||||||
{
|
{
|
||||||
TexFBO obj;
|
TEXFBO obj;
|
||||||
QLinkedList<TexFBO>::iterator prioIter;
|
QLinkedList<TEXFBO>::iterator prioIter;
|
||||||
|
|
||||||
bool operator==(const CacheObject &o)
|
bool operator==(const CacheObject &o)
|
||||||
{
|
{
|
||||||
|
@ -59,7 +59,7 @@ struct TexPoolPrivate
|
||||||
QHash<Size, CObjList> poolHash;
|
QHash<Size, CObjList> poolHash;
|
||||||
|
|
||||||
/* Contains all cached TexFBOs, sorted by release time */
|
/* Contains all cached TexFBOs, sorted by release time */
|
||||||
QLinkedList<TexFBO> priorityQueue;
|
QLinkedList<TEXFBO> priorityQueue;
|
||||||
|
|
||||||
/* Maximal allowed cache memory */
|
/* Maximal allowed cache memory */
|
||||||
const uint32_t maxMemSize;
|
const uint32_t maxMemSize;
|
||||||
|
@ -90,8 +90,8 @@ TexPool::~TexPool()
|
||||||
{
|
{
|
||||||
while (!p->priorityQueue.isEmpty())
|
while (!p->priorityQueue.isEmpty())
|
||||||
{
|
{
|
||||||
TexFBO obj = p->priorityQueue.takeFirst();
|
TEXFBO obj = p->priorityQueue.takeFirst();
|
||||||
TexFBO::fini(obj);
|
TEXFBO::fini(obj);
|
||||||
--p->objCount;
|
--p->objCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ TexPool::~TexPool()
|
||||||
delete p;
|
delete p;
|
||||||
}
|
}
|
||||||
|
|
||||||
TexFBO TexPool::request(int width, int height)
|
TEXFBO TexPool::request(int width, int height)
|
||||||
{
|
{
|
||||||
CacheObject cobj;
|
CacheObject cobj;
|
||||||
Size size(width, height);
|
Size size(width, height);
|
||||||
|
@ -131,20 +131,20 @@ TexFBO TexPool::request(int width, int height)
|
||||||
QByteArray::number(width), QByteArray::number(height));
|
QByteArray::number(width), QByteArray::number(height));
|
||||||
|
|
||||||
/* Nope, create it instead */
|
/* Nope, create it instead */
|
||||||
TexFBO::init(cobj.obj);
|
TEXFBO::init(cobj.obj);
|
||||||
TexFBO::allocEmpty(cobj.obj, width, height);
|
TEXFBO::allocEmpty(cobj.obj, width, height);
|
||||||
TexFBO::linkFBO(cobj.obj);
|
TEXFBO::linkFBO(cobj.obj);
|
||||||
|
|
||||||
// qDebug() << "TexPool: <?-> (" << width << height << ")";
|
// qDebug() << "TexPool: <?-> (" << width << height << ")";
|
||||||
|
|
||||||
return cobj.obj;
|
return cobj.obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TexPool::release(TexFBO &obj)
|
void TexPool::release(TEXFBO &obj)
|
||||||
{
|
{
|
||||||
if (obj.tex == Tex::ID(0) || obj.fbo == FBO::ID(0))
|
if (obj.tex == TEX::ID(0) || obj.fbo == FBO::ID(0))
|
||||||
{
|
{
|
||||||
TexFBO::fini(obj);
|
TEXFBO::fini(obj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ void TexPool::release(TexFBO &obj)
|
||||||
{
|
{
|
||||||
/* If we're disabled, delete without caching */
|
/* If we're disabled, delete without caching */
|
||||||
// qDebug() << "TexPool: <!#> (" << obj.width << obj.height << ")";
|
// qDebug() << "TexPool: <!#> (" << obj.width << obj.height << ")";
|
||||||
TexFBO::fini(obj);
|
TEXFBO::fini(obj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ void TexPool::release(TexFBO &obj)
|
||||||
bucket.removeOne(last);
|
bucket.removeOne(last);
|
||||||
p->priorityQueue.removeLast();
|
p->priorityQueue.removeLast();
|
||||||
|
|
||||||
TexFBO::fini(last.obj);
|
TEXFBO::fini(last.obj);
|
||||||
|
|
||||||
uint32_t removedMem = byteCount(removedSize);
|
uint32_t removedMem = byteCount(removedSize);
|
||||||
newMemSize -= removedMem;
|
newMemSize -= removedMem;
|
||||||
|
|
|
@ -32,8 +32,8 @@ public:
|
||||||
TexPool(uint32_t maxMemSize = 20000000 /* 20 MB */);
|
TexPool(uint32_t maxMemSize = 20000000 /* 20 MB */);
|
||||||
~TexPool();
|
~TexPool();
|
||||||
|
|
||||||
TexFBO request(int width, int height);
|
TEXFBO request(int width, int height);
|
||||||
void release(TexFBO &obj);
|
void release(TEXFBO &obj);
|
||||||
|
|
||||||
void disable();
|
void disable();
|
||||||
|
|
||||||
|
|
|
@ -194,7 +194,7 @@ struct TilemapPrivate
|
||||||
|
|
||||||
/* Tile atlas */
|
/* Tile atlas */
|
||||||
struct {
|
struct {
|
||||||
TexFBO gl;
|
TEXFBO gl;
|
||||||
bool animated;
|
bool animated;
|
||||||
int frameH;
|
int frameH;
|
||||||
int width;
|
int width;
|
||||||
|
@ -711,8 +711,8 @@ struct TilemapPrivate
|
||||||
|
|
||||||
void bindAtlasWithMatrix()
|
void bindAtlasWithMatrix()
|
||||||
{
|
{
|
||||||
Tex::bind(atlas.gl.tex);
|
TEX::bind(atlas.gl.tex);
|
||||||
Tex::bindMatrix(atlas.animated ? atlasFrameW * 4 : atlasFrameW, atlas.frameH,
|
TEX::bindMatrix(atlas.animated ? atlasFrameW * 4 : atlasFrameW, atlas.frameH,
|
||||||
atlas.frameIdx * atlasFrameW);
|
atlas.frameIdx * atlasFrameW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -196,7 +196,7 @@ struct WindowPrivate
|
||||||
ColorQuadArray baseQuadArray;
|
ColorQuadArray baseQuadArray;
|
||||||
|
|
||||||
/* Used when opacity < 255 */
|
/* Used when opacity < 255 */
|
||||||
TexFBO baseTex;
|
TEXFBO baseTex;
|
||||||
bool useBaseTex;
|
bool useBaseTex;
|
||||||
|
|
||||||
QuadChunk backgroundVert;
|
QuadChunk backgroundVert;
|
||||||
|
@ -414,9 +414,9 @@ struct WindowPrivate
|
||||||
void redrawBaseTex()
|
void redrawBaseTex()
|
||||||
{
|
{
|
||||||
/* Discard old buffer */
|
/* Discard old buffer */
|
||||||
Tex::bind(baseTex.tex);
|
TEX::bind(baseTex.tex);
|
||||||
Tex::allocEmpty(baseTex.width, baseTex.height);
|
TEX::allocEmpty(baseTex.width, baseTex.height);
|
||||||
Tex::unbind();
|
TEX::unbind();
|
||||||
|
|
||||||
FBO::bind(baseTex.fbo);
|
FBO::bind(baseTex.fbo);
|
||||||
glState.pushSetViewport(baseTex.width, baseTex.height);
|
glState.pushSetViewport(baseTex.width, baseTex.height);
|
||||||
|
@ -428,7 +428,7 @@ struct WindowPrivate
|
||||||
/* Repaint base */
|
/* Repaint base */
|
||||||
windowskin->flush();
|
windowskin->flush();
|
||||||
windowskin->bindTexWithMatrix();
|
windowskin->bindTexWithMatrix();
|
||||||
Tex::setSmooth(true);
|
TEX::setSmooth(true);
|
||||||
glState.pushSetViewport(baseTex.width, baseTex.height);
|
glState.pushSetViewport(baseTex.width, baseTex.height);
|
||||||
|
|
||||||
/* We need to blit the background without blending,
|
/* We need to blit the background without blending,
|
||||||
|
@ -445,7 +445,7 @@ struct WindowPrivate
|
||||||
|
|
||||||
glState.blendMode.pop();
|
glState.blendMode.pop();
|
||||||
glState.popViewport();
|
glState.popViewport();
|
||||||
Tex::setSmooth(false);
|
TEX::setSmooth(false);
|
||||||
|
|
||||||
glState.clearColor.pop();
|
glState.clearColor.pop();
|
||||||
glState.popViewport();
|
glState.popViewport();
|
||||||
|
@ -555,18 +555,18 @@ struct WindowPrivate
|
||||||
|
|
||||||
if (useBaseTex)
|
if (useBaseTex)
|
||||||
{
|
{
|
||||||
Tex::bindWithMatrix(baseTex.tex, baseTex.width, baseTex.height);
|
TEX::bindWithMatrix(baseTex.tex, baseTex.width, baseTex.height);
|
||||||
baseTexQuad.draw();
|
baseTexQuad.draw();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
windowskin->flush();
|
windowskin->flush();
|
||||||
windowskin->bindTexWithMatrix();
|
windowskin->bindTexWithMatrix();
|
||||||
Tex::setSmooth(true);
|
TEX::setSmooth(true);
|
||||||
|
|
||||||
baseQuadArray.draw();
|
baseQuadArray.draw();
|
||||||
|
|
||||||
Tex::setSmooth(false);
|
TEX::setSmooth(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
Loading…
Reference in New Issue