Check texture params before updateing them

Signed-off-by: Ryan Houdek <Sonicadvance1@gmail.com>
This commit is contained in:
degasus 2012-12-12 16:57:00 +01:00 committed by Ryan Houdek
parent 61836f8c51
commit 09274e2483
3 changed files with 10 additions and 5 deletions

View File

@ -17,8 +17,6 @@
#include "GLUtil.h" #include "GLUtil.h"
#include <string.h>
#include "RasterFont.h" #include "RasterFont.h"
// globals // globals
@ -150,7 +148,6 @@ static const char *s_fragment_shader =
RasterFont::RasterFont() RasterFont::RasterFont()
{ {
// generate the texture // generate the texture
glEnable(GL_TEXTURE_RECTANGLE);
glGenTextures(1, &texture); glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_RECTANGLE, texture); glBindTexture(GL_TEXTURE_RECTANGLE, texture);
u32* texture_data = new u32[char_width*char_count*char_height]; u32* texture_data = new u32[char_width*char_count*char_height];
@ -281,7 +278,6 @@ void RasterFont::printMultilineText(const char *text, double start_x, double sta
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO); glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO);
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_RECTANGLE, texture); glBindTexture(GL_TEXTURE_RECTANGLE, texture);
glEnable(GL_TEXTURE_RECTANGLE);
glDrawArrays(GL_TRIANGLES, 0, usage/4); glDrawArrays(GL_TRIANGLES, 0, usage/4);
glUseProgram(0); glUseProgram(0);

View File

@ -113,6 +113,8 @@ TextureCache::TCacheEntry::~TCacheEntry()
TextureCache::TCacheEntry::TCacheEntry() TextureCache::TCacheEntry::TCacheEntry()
{ {
glGenTextures(1, &texture); glGenTextures(1, &texture);
currmode.hex = 0;
currmode1.hex = 0;
GL_REPORT_ERRORD(); GL_REPORT_ERRORD();
} }
@ -125,7 +127,9 @@ void TextureCache::TCacheEntry::Bind(unsigned int stage)
// TODO: is this already done somewhere else? // TODO: is this already done somewhere else?
TexMode0 &tm0 = bpmem.tex[stage >> 2].texMode0[stage & 3]; TexMode0 &tm0 = bpmem.tex[stage >> 2].texMode0[stage & 3];
TexMode1 &tm1 = bpmem.tex[stage >> 2].texMode1[stage & 3]; TexMode1 &tm1 = bpmem.tex[stage >> 2].texMode1[stage & 3];
SetTextureParameters(tm0, tm1);
if(currmode.hex != tm0.hex || currmode1.hex != tm1.hex)
SetTextureParameters(tm0, tm1);
} }
bool TextureCache::TCacheEntry::Save(const char filename[], unsigned int level) bool TextureCache::TCacheEntry::Save(const char filename[], unsigned int level)
@ -404,6 +408,9 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
void TextureCache::TCacheEntry::SetTextureParameters(const TexMode0 &newmode, const TexMode1 &newmode1) void TextureCache::TCacheEntry::SetTextureParameters(const TexMode0 &newmode, const TexMode1 &newmode1)
{ {
currmode = newmode;
currmode1 = newmode1;
// TODO: not used anywhere // TODO: not used anywhere
TexMode0 mode = newmode; TexMode0 mode = newmode;
//mode1 = newmode1; //mode1 = newmode1;

View File

@ -67,6 +67,8 @@ private:
private: private:
void SetTextureParameters(const TexMode0 &newmode, const TexMode1 &newmode1); void SetTextureParameters(const TexMode0 &newmode, const TexMode1 &newmode1);
TexMode0 currmode;
TexMode1 currmode1;
}; };
~TextureCache(); ~TextureCache();