aboutsummaryrefslogtreecommitdiffstats
path: root/src/classes/com/sun/opengl/util/texture/Texture.java
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2006-05-20 14:23:41 +0000
committerKenneth Russel <[email protected]>2006-05-20 14:23:41 +0000
commit437584608fa8e479ba13f209ff42d609bda5c41d (patch)
tree7f10e8ace33a1e7bd1fb33b22fce285d8db6ddcd /src/classes/com/sun/opengl/util/texture/Texture.java
parentc87828368dbb9e31f402de14be76af2b9af08588 (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-xsrc/classes/com/sun/opengl/util/texture/Texture.java16
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;
}