diff options
author | Kenneth Russel <[email protected]> | 2006-05-20 14:23:41 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2006-05-20 14:23:41 +0000 |
commit | 437584608fa8e479ba13f209ff42d609bda5c41d (patch) | |
tree | 7f10e8ace33a1e7bd1fb33b22fce285d8db6ddcd /src/classes/com/sun/opengl/util/texture/Texture.java | |
parent | c87828368dbb9e31f402de14be76af2b9af08588 (diff) |
Fixed bugs in handling of mipmapped compressed textures
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@771 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/classes/com/sun/opengl/util/texture/Texture.java')
-rwxr-xr-x | src/classes/com/sun/opengl/util/texture/Texture.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/classes/com/sun/opengl/util/texture/Texture.java b/src/classes/com/sun/opengl/util/texture/Texture.java index 641f994ce..c04f47c32 100755 --- a/src/classes/com/sun/opengl/util/texture/Texture.java +++ b/src/classes/com/sun/opengl/util/texture/Texture.java @@ -360,15 +360,23 @@ public class Texture { gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, align[0]); // restore align } } else { - gl.glTexImage2D(newTarget, 0, data.getInternalFormat(), - texWidth, texHeight, data.getBorder(), - data.getPixelFormat(), data.getPixelType(), null); Buffer[] mipmapData = data.getMipmapData(); if (mipmapData != null) { + int width = texWidth; + int height = texHeight; for (int i = 0; i < mipmapData.length; i++) { + // Allocate texture image at this level + gl.glTexImage2D(newTarget, i, data.getInternalFormat(), + width, height, data.getBorder(), + data.getPixelFormat(), data.getPixelType(), null); updateSubImageImpl(data, newTarget, i, 0, 0); + width /= 2; + height /= 2; } } else { + gl.glTexImage2D(newTarget, 0, data.getInternalFormat(), + texWidth, texHeight, data.getBorder(), + data.getPixelFormat(), data.getPixelType(), null); updateSubImageImpl(data, newTarget, 0, 0, 0); } } @@ -574,7 +582,7 @@ public class Texture { private void updateSubImageImpl(TextureData data, int newTarget, int mipmapLevel, int x, int y) throws GLException { Buffer buffer = data.getBuffer(); - if (buffer == null) { + if (buffer == null && data.getMipmapData() == null) { // Assume user just wanted to get the Texture object allocated return; } |