- try to see if this fixes an opengl bug, by retrying texture loading using older opengl API if newer fails

This commit is contained in:
Mark Vejvoda
2011-04-05 21:16:53 +00:00
parent c196e1ccfc
commit 5ce6c17f7d

View File

@@ -852,19 +852,17 @@ void Texture2DGl::init(Filter filter, int maxAnisotropy) {
glFormat, GL_UNSIGNED_BYTE, pixels); glFormat, GL_UNSIGNED_BYTE, pixels);
*/ */
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexImage2D(GL_TEXTURE_2D, 0, glCompressionFormat, glTexImage2D(GL_TEXTURE_2D, 0, glCompressionFormat,
pixmap.getW(), pixmap.getH(), 0, pixmap.getW(), pixmap.getH(), 0,
glFormat, GL_UNSIGNED_BYTE, pixels); glFormat, GL_UNSIGNED_BYTE, pixels);
GLint error= glGetError(); GLint error= glGetError();
// Now try without compression if we tried compression // Now try without compression if we tried compression
if(error != GL_NO_ERROR && glCompressionFormat != glInternalFormat) { if(error != GL_NO_ERROR && glCompressionFormat != glInternalFormat) {
glTexImage2D(GL_TEXTURE_2D, 0, glInternalFormat,
pixmap.getW(), pixmap.getH(), 0,
glFormat, GL_UNSIGNED_BYTE, pixels);
glTexImage2D(GL_TEXTURE_2D, 0, glInternalFormat, glTexImage2D(GL_TEXTURE_2D, 0, glInternalFormat,
pixmap.getW(), pixmap.getH(), 0, pixmap.getW(), pixmap.getH(), 0,
glFormat, GL_UNSIGNED_BYTE, pixels);
GLint error2= glGetError(); GLint error2= glGetError();
@@ -1109,18 +1107,19 @@ void TextureCubeGl::init(Filter filter, int maxAnisotropy) {
*/ */
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexImage2D(target, 0, glCompressionFormat, glTexImage2D(target, 0, glCompressionFormat,
currentPixmap->getW(), currentPixmap->getH(), 0, currentPixmap->getW(), currentPixmap->getH(), 0,
glFormat, GL_UNSIGNED_BYTE, pixels); glFormat, GL_UNSIGNED_BYTE, pixels);
int error = glGetError(); int error = glGetError();
// Now try without compression if we tried compression // Now try without compression if we tried compression
if(error != GL_NO_ERROR && glCompressionFormat != glInternalFormat) { if(error != GL_NO_ERROR && glCompressionFormat != glInternalFormat) {
if(error != GL_NO_ERROR && glCompressionFormat != glInternalFormat) { glTexImage2D(target, 0, glInternalFormat,
glTexImage2D(target, 0, glInternalFormat, currentPixmap->getW(), currentPixmap->getH(), 0,
currentPixmap->getW(), currentPixmap->getH(), 0,
glFormat, GL_UNSIGNED_BYTE, pixels); glFormat, GL_UNSIGNED_BYTE, pixels);
GLint error2= glGetError();
if(error2 == GL_NO_ERROR) { if(error2 == GL_NO_ERROR) {
error = GL_NO_ERROR; error = GL_NO_ERROR;