void Texture2D::generateMipmaps()
{
- ASSERT(image[mBaseLevel]);
+ if(!image[mBaseLevel])
+ {
+ return; // Image unspecified. Not an error.
+ }
+
+ if(image[mBaseLevel]->getWidth() == 0 || image[mBaseLevel]->getHeight() == 0)
+ {
+ return; // Zero dimension. Not an error.
+ }
int maxsize = std::max(image[mBaseLevel]->getWidth(), image[mBaseLevel]->getHeight());
int p = log2(maxsize) + mBaseLevel;
void TextureCubeMap::generateMipmaps()
{
- ASSERT(isCubeComplete());
+ if(!isCubeComplete())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
int p = log2(image[0][mBaseLevel]->getWidth()) + mBaseLevel;
int q = std::min(p, mMaxLevel);
void Texture3D::generateMipmaps()
{
- ASSERT(image[mBaseLevel]);
+ if(!image[mBaseLevel])
+ {
+ return; // Image unspecified. Not an error.
+ }
+
+ if(image[mBaseLevel]->getWidth() == 0 || image[mBaseLevel]->getHeight() == 0 || image[mBaseLevel]->getDepth() == 0)
+ {
+ return; // Zero dimension. Not an error.
+ }
int maxsize = std::max(std::max(image[mBaseLevel]->getWidth(), image[mBaseLevel]->getHeight()), image[mBaseLevel]->getDepth());
int p = log2(maxsize) + mBaseLevel;
void Texture2DArray::generateMipmaps()
{
- ASSERT(image[mBaseLevel]);
+ if(!image[mBaseLevel])
+ {
+ return; // Image unspecified. Not an error.
+ }
+
+ if(image[mBaseLevel]->getWidth() == 0 || image[mBaseLevel]->getHeight() == 0 || image[mBaseLevel]->getDepth() == 0)
+ {
+ return; // Zero dimension. Not an error.
+ }
int depth = image[mBaseLevel]->getDepth();
int maxsize = std::max(image[mBaseLevel]->getWidth(), image[mBaseLevel]->getHeight());