diff options
Diffstat (limited to 'src/demos/vertexProgRefract')
-rw-r--r-- | src/demos/vertexProgRefract/VertexProgRefract.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/demos/vertexProgRefract/VertexProgRefract.java b/src/demos/vertexProgRefract/VertexProgRefract.java index cee2054..9698413 100644 --- a/src/demos/vertexProgRefract/VertexProgRefract.java +++ b/src/demos/vertexProgRefract/VertexProgRefract.java @@ -508,6 +508,7 @@ public class VertexProgRefract { private void makeRGBTexture(GL gl, GLU glu, BufferedImage img, int target, boolean mipmapped) { ByteBuffer dest = null; + switch (img.getType()) { case BufferedImage.TYPE_3BYTE_BGR: case BufferedImage.TYPE_CUSTOM: { @@ -530,9 +531,24 @@ public class VertexProgRefract { throw new RuntimeException("Unsupported image type " + img.getType()); } + + // ByteBuffer destScaled = ByteBuffer.allocateDirect(dest.capacity() / 4); + ByteBuffer destScaled = ByteBuffer.allocateDirect(dest.capacity()); + destScaled.order(ByteOrder.nativeOrder()); + int res = glu.gluScaleImage(GL.GL_RGB, + img.getWidth(), img.getHeight(), GL.GL_UNSIGNED_BYTE, dest, + img.getWidth(), img.getHeight(), GL.GL_UNSIGNED_BYTE, destScaled); + // System.out.println("gluScaleImage: result = " + res); + + + + if (mipmapped) { + // glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB, + // GL.GL_UNSIGNED_BYTE, dest); + glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB, - GL.GL_UNSIGNED_BYTE, dest); + GL.GL_UNSIGNED_BYTE, destScaled); } else { gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, dest); |