1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2025-02-03 18:14:01 +00:00

set GL textures to always repeat to avoid unnecessary calls to glTexParameteri()

Shouldn't have any visual changes because edge clamp is never actually used
This commit is contained in:
fgenesis 2023-08-25 00:38:36 +02:00
parent 17452f175e
commit d31d320719
5 changed files with 7 additions and 26 deletions

View file

@ -33,7 +33,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
bool RenderObject::renderCollisionShape = false;
size_t RenderObject::lastTextureApplied = 0;
bool RenderObject::lastTextureRepeat = false;
bool RenderObject::renderPaths = false;
void RenderObject::toggleAlpha(float t)
@ -482,20 +481,18 @@ nofollow:
{
if (texture)
{
if (texture->gltexid != lastTextureApplied || repeatTexture != lastTextureRepeat)
if (texture->gltexid != lastTextureApplied)
{
texture->apply(repeatTexture);
lastTextureRepeat = repeatTexture;
texture->apply();
lastTextureApplied = texture->gltexid;
}
}
else
{
if (lastTextureApplied != 0 || repeatTexture != lastTextureRepeat)
if (lastTextureApplied != 0)
{
glBindTexture(GL_TEXTURE_2D, 0);
lastTextureApplied = 0;
lastTextureRepeat = repeatTexture;
}
}

View file

@ -223,7 +223,6 @@ public:
static bool renderCollisionShape;
static bool renderPaths;
static size_t lastTextureApplied;
static bool lastTextureRepeat;
//--------------------------

View file

@ -49,7 +49,6 @@ Texture::Texture()
gltexid = 0;
width = height = 0;
_repeating = false;
ow = oh = -1;
_mipmap = false;
success = false;
@ -98,16 +97,9 @@ void Texture::unload()
}
static const GLenum repeatLUT[] = { GL_CLAMP_TO_EDGE, GL_REPEAT };
void Texture::apply(bool repeat) const
void Texture::apply() const
{
glBindTexture(GL_TEXTURE_2D, gltexid);
/*if(repeat != _repeating)
{
_repeating = repeat;
GLenum rep = repeatLUT[repeat];
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, rep);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, rep);
}*/
}
struct GlTexFormat
@ -142,7 +134,6 @@ bool Texture::upload(const ImageData& img, bool mipmap)
glBindTexture(GL_TEXTURE_2D, gltexid);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
_repeating = false;
const GlTexFormat& f = formatLUT[img.channels - 1];

View file

@ -47,7 +47,7 @@ public:
Texture();
~Texture();
void apply(bool repeat = false) const;
void apply() const;
void unload();
unsigned gltexid;
@ -67,8 +67,6 @@ protected:
int ow, oh;
bool _mipmap;
private:
mutable bool _repeating; // modified during rendering
};
#define UNREFTEX(x) {x = NULL;}

View file

@ -59,7 +59,6 @@ void TileRender::onRender(const RenderState& rs) const
const Vector M1 = Vector(1,1) - M;
const Vector T = C * (1 - F);
unsigned lastTexRepeat = false;
unsigned lastTexId = 0;
const bool renderExtras = renderBorders || RenderObject::renderCollisionShape;
@ -92,12 +91,10 @@ void TileRender::onRender(const RenderState& rs) const
if(const Texture * const tex = et->tex.content())
{
unsigned texid = tex->gltexid;
unsigned rep = tile.flags & TILEFLAG_REPEAT;
if(texid != lastTexId || rep != lastTexRepeat)
if(texid != lastTexId)
{
lastTexId = texid;
lastTexRepeat = rep;
tex->apply(!!rep);
tex->apply();
}
}
else
@ -210,7 +207,6 @@ void TileRender::onRender(const RenderState& rs) const
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
RenderObject::lastTextureApplied = lastTexId;
RenderObject::lastTextureRepeat = !!lastTexRepeat;
}
void TileRender::onUpdate(float dt)