Corrected bug in KRTextureTGA that caused it to assert on release builds (glDebug should only be called on debug builds).
--HG-- branch : nfb
This commit is contained in:
@@ -120,13 +120,9 @@ bool KRTextureTGA::uploadTexture(GLenum target, int lod_max_dim, int ¤t_lo
|
|||||||
pSource += 3;
|
pSource += 3;
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)converted_image);
|
GLDEBUG(glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)converted_image));
|
||||||
free(converted_image);
|
free(converted_image);
|
||||||
err = glGetError();
|
|
||||||
if (err != GL_NO_ERROR) {
|
|
||||||
m_pData->unlock();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
current_lod_max_dim = m_max_lod_max_dim;
|
current_lod_max_dim = m_max_lod_max_dim;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -146,17 +142,12 @@ bool KRTextureTGA::uploadTexture(GLenum target, int lod_max_dim, int ¤t_lo
|
|||||||
pSource += 4;
|
pSource += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)converted_image);
|
GLDEBUG(glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)converted_image));
|
||||||
free(converted_image);
|
free(converted_image);
|
||||||
} else {
|
} else {
|
||||||
glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)pData);
|
GLDEBUG(glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)pData));
|
||||||
}
|
}
|
||||||
|
|
||||||
err = glGetError();
|
|
||||||
if (err != GL_NO_ERROR) {
|
|
||||||
m_pData->unlock();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
current_lod_max_dim = m_max_lod_max_dim;
|
current_lod_max_dim = m_max_lod_max_dim;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -224,13 +215,8 @@ bool KRTextureTGA::uploadTexture(GLenum target, int lod_max_dim, int ¤t_lo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)converted_image);
|
GLDEBUG(glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)converted_image));
|
||||||
free(converted_image);
|
free(converted_image);
|
||||||
err = glGetError();
|
|
||||||
if (err != GL_NO_ERROR) {
|
|
||||||
m_pData->unlock();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
current_lod_max_dim = m_max_lod_max_dim;
|
current_lod_max_dim = m_max_lod_max_dim;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -264,13 +250,8 @@ bool KRTextureTGA::uploadTexture(GLenum target, int lod_max_dim, int ¤t_lo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)converted_image);
|
GLDEBUG(glTexImage2D(target, 0, internal_format, pHeader->width, pHeader->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)converted_image));
|
||||||
free(converted_image);
|
free(converted_image);
|
||||||
err = glGetError();
|
|
||||||
if (err != GL_NO_ERROR) {
|
|
||||||
m_pData->unlock();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
current_lod_max_dim = m_max_lod_max_dim;
|
current_lod_max_dim = m_max_lod_max_dim;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -333,18 +314,15 @@ KRTexture *KRTextureTGA::compress(bool premultiply_alpha)
|
|||||||
GLint compressed_size = 0;
|
GLint compressed_size = 0;
|
||||||
GLenum err = GL_NO_ERROR;
|
GLenum err = GL_NO_ERROR;
|
||||||
while(err == GL_NO_ERROR) {
|
while(err == GL_NO_ERROR) {
|
||||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, lod_level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compressed_size);
|
GLDEBUG(glGetTexLevelParameteriv(GL_TEXTURE_2D, lod_level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compressed_size));
|
||||||
err = glGetError();
|
KRDataBlock *new_block = new KRDataBlock();
|
||||||
if(err == GL_NO_ERROR) {
|
new_block->expand(compressed_size);
|
||||||
KRDataBlock *new_block = new KRDataBlock();
|
new_block->lock();
|
||||||
new_block->expand(compressed_size);
|
GLDEBUG(glGetCompressedTexImage(GL_TEXTURE_2D, lod_level, new_block->getStart()));
|
||||||
new_block->lock();
|
new_block->unlock();
|
||||||
GLDEBUG(glGetCompressedTexImage(GL_TEXTURE_2D, lod_level, new_block->getStart()));
|
blocks.push_back(new_block);
|
||||||
new_block->unlock();
|
|
||||||
blocks.push_back(new_block);
|
|
||||||
|
|
||||||
lod_level++;
|
lod_level++;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(err != GL_INVALID_VALUE) {
|
if(err != GL_INVALID_VALUE) {
|
||||||
// err will equal GL_INVALID_VALUE when
|
// err will equal GL_INVALID_VALUE when
|
||||||
|
|||||||
Reference in New Issue
Block a user