added DEBUG_GL_ERROR debug functionality
git-svn-id: svn://anubis/misc/TextureCache@214 bd8a9e45-a331-0410-811e-c64571078777
This commit is contained in:
parent
9b853cfb21
commit
e61910ab9d
@ -9,6 +9,23 @@
|
|||||||
#include "FileLoader/FileLoader.h"
|
#include "FileLoader/FileLoader.h"
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
//#define DEBUG_GL_ERROR
|
||||||
|
#ifdef DEBUG_GL_ERROR
|
||||||
|
#define checkGLError() checkGLErrorLine(__FUNCTION__, __LINE__)
|
||||||
|
#else
|
||||||
|
#define checkGLError()
|
||||||
|
#endif
|
||||||
|
static void checkGLErrorLine(const char * function, int line)
|
||||||
|
{
|
||||||
|
GLenum err = glGetError();
|
||||||
|
if (err != 0)
|
||||||
|
{
|
||||||
|
cerr << "gl error in " << function
|
||||||
|
<< ": " << err << " (0x" << hex << err << ") at line "
|
||||||
|
<< dec << line << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TextureCache::~TextureCache()
|
TextureCache::~TextureCache()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -34,6 +51,7 @@ GLuint TextureCache::loadTexture(const FileLoader::Path & path,
|
|||||||
FileLoader & fileLoader, bool mipmaps,
|
FileLoader & fileLoader, bool mipmaps,
|
||||||
int mode, int quality)
|
int mode, int quality)
|
||||||
{
|
{
|
||||||
|
checkGLError();
|
||||||
GLuint texture;
|
GLuint texture;
|
||||||
FileLoader::Buffer buff = fileLoader.load(path);
|
FileLoader::Buffer buff = fileLoader.load(path);
|
||||||
if (buff.size <= 0)
|
if (buff.size <= 0)
|
||||||
@ -80,32 +98,43 @@ GLuint TextureCache::loadTexture(const FileLoader::Path & path,
|
|||||||
srcOffset += texsurf->w;
|
srcOffset += texsurf->w;
|
||||||
}
|
}
|
||||||
glGenTextures(1, &texture);
|
glGenTextures(1, &texture);
|
||||||
|
checkGLError();
|
||||||
glBindTexture(GL_TEXTURE_2D, texture);
|
glBindTexture(GL_TEXTURE_2D, texture);
|
||||||
|
checkGLError();
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, 4, texsurf->w, texsurf->h, 0,
|
glTexImage2D(GL_TEXTURE_2D, 0, 4, texsurf->w, texsurf->h, 0,
|
||||||
GL_RGBA, GL_UNSIGNED_BYTE, pixels);
|
GL_RGBA, GL_UNSIGNED_BYTE, pixels);
|
||||||
|
|
||||||
if (quality > 0)
|
if (quality > 0)
|
||||||
{
|
{
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
|
checkGLError();
|
||||||
mipmaps ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR);
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
||||||
mipmaps ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR);
|
mipmaps ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR);
|
||||||
|
checkGLError();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
|
checkGLError();
|
||||||
mipmaps ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST);
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
||||||
mipmaps ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST);
|
mipmaps ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST);
|
||||||
|
checkGLError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkGLError();
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, mode);
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, mode);
|
||||||
|
checkGLError();
|
||||||
|
|
||||||
if (mipmaps)
|
if (mipmaps)
|
||||||
|
{
|
||||||
|
checkGLError();
|
||||||
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA,
|
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA,
|
||||||
texsurf->w, texsurf->h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
|
texsurf->w, texsurf->h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
|
||||||
|
checkGLError();
|
||||||
|
}
|
||||||
|
|
||||||
SDL_FreeSurface(texsurf);
|
SDL_FreeSurface(texsurf);
|
||||||
delete[] pixels;
|
delete[] pixels;
|
||||||
|
checkGLError();
|
||||||
return texture;
|
return texture;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user