### Eclipse Workspace Patch 1.0 #P jME2 Index: src/com/jme/renderer/jogl/JOGLContextCapabilities.java =================================================================== --- src/com/jme/renderer/jogl/JOGLContextCapabilities.java (revision 4349) +++ src/com/jme/renderer/jogl/JOGLContextCapabilities.java (working copy) @@ -61,8 +61,22 @@ // TODO Due to JOGL buffer check, you can't use smaller sized // buffers (min_size = 16) for glGetFloat(). private final FloatBuffer floatBuf = BufferUtils.createFloatBuffer(16); + + public boolean GL_VERSION_1_1; public boolean GL_VERSION_1_2; + + public boolean GL_VERSION_1_3; + + public boolean GL_VERSION_1_4; + + public boolean GL_VERSION_1_5; + + public boolean GL_VERSION_2_0; + + public boolean GL_VERSION_2_1; + + public boolean GL_VERSION_3_0; public boolean GL_ARB_imaging; @@ -157,7 +171,14 @@ // See Renderer GL_ARB_vertex_buffer_object = gl .isExtensionAvailable("GL_ARB_vertex_buffer_object"); + GL_VERSION_1_1 = gl.isExtensionAvailable("GL_VERSION_1_1"); GL_VERSION_1_2 = gl.isExtensionAvailable("GL_VERSION_1_2"); + GL_VERSION_1_3 = gl.isExtensionAvailable("GL_VERSION_1_3"); + GL_VERSION_1_4 = gl.isExtensionAvailable("GL_VERSION_1_4"); + GL_VERSION_1_5 = gl.isExtensionAvailable("GL_VERSION_1_5"); + GL_VERSION_2_0 = gl.isExtensionAvailable("GL_VERSION_2_0"); + GL_VERSION_2_1 = gl.isExtensionAvailable("GL_VERSION_2_1"); + GL_VERSION_3_0 = gl.isExtensionAvailable("GL_VERSION_3_0"); // See BlendState GL_ARB_imaging = gl.isExtensionAvailable("GL_ARB_imaging"); Index: src/com/jme/image/Texture.java =================================================================== --- src/com/jme/image/Texture.java (revision 4349) +++ src/com/jme/image/Texture.java (working copy) @@ -501,6 +501,7 @@ */ Intensity, Alpha4, Alpha8, Alpha12, Alpha16, + Depth16, Depth24, Depth32, Luminance4, Luminance8, Luminance12, Luminance16, Luminance4Alpha4,Luminance6Alpha2, Luminance8Alpha8,Luminance12Alpha4, Luminance12Alpha12, Luminance16Alpha16, Index: src/com/jme/renderer/lwjgl/LWJGLPbufferTextureRenderer.java =================================================================== --- src/com/jme/renderer/lwjgl/LWJGLPbufferTextureRenderer.java (revision 4349) +++ src/com/jme/renderer/lwjgl/LWJGLPbufferTextureRenderer.java (working copy) @@ -286,152 +286,155 @@ LWJGLTextureState.doTextureBind(tex.getTextureId(), 0, Texture.Type.TwoDimensional); int source = GL11.GL_RGBA; - switch (tex.getRTTSource()) { - case RGBA: - case RGBA8: - break; - case RGB: - case RGB8: - source = GL11.GL_RGB; - break; - case Alpha: - case Alpha8: - source = GL11.GL_ALPHA; - break; - case Depth: - source = GL11.GL_DEPTH_COMPONENT; - break; - case Intensity: - case Intensity8: - source = GL11.GL_INTENSITY; - break; - case Luminance: - case Luminance8: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha: - case Luminance8Alpha8: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Alpha4: - source = GL11.GL_ALPHA; - break; - case Alpha12: - source = GL11.GL_ALPHA; - break; - case Alpha16: - source = GL11.GL_ALPHA; - break; - case Luminance4: - source = GL11.GL_LUMINANCE; - break; - case Luminance12: - source = GL11.GL_LUMINANCE; - break; - case Luminance16: - source = GL11.GL_LUMINANCE; - break; - case Luminance4Alpha4: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance6Alpha2: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance12Alpha4: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance12Alpha12: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance16Alpha16: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Intensity4: - source = GL11.GL_INTENSITY; - break; - case Intensity12: - source = GL11.GL_INTENSITY; - break; - case Intensity16: - source = GL11.GL_INTENSITY; - break; - case R3_G3_B2: - source = GL11.GL_RGB; - break; - case RGB4: - source = GL11.GL_RGB; - break; - case RGB5: - source = GL11.GL_RGB; - break; - case RGB10: - source = GL11.GL_RGB; - break; - case RGB12: - source = GL11.GL_RGB; - break; - case RGB16: - source = GL11.GL_RGB; - break; - case RGBA2: - source = GL11.GL_RGBA; - break; - case RGBA4: - source = GL11.GL_RGBA; - break; - case RGB5_A1: - source = GL11.GL_RGBA; - break; - case RGB10_A2: - source = GL11.GL_RGBA; - break; - case RGBA12: - source = GL11.GL_RGBA; - break; - case RGBA16: - source = GL11.GL_RGBA; - break; - case RGBA32F: - source = GL11.GL_RGBA; - break; - case RGB32F: - source = GL11.GL_RGB; - break; - case Alpha32F: - source = GL11.GL_ALPHA; - break; - case Intensity32F: - source = GL11.GL_INTENSITY; - break; - case Luminance32F: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha32F: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case RGBA16F: - source = GL11.GL_RGBA; - break; - case RGB16F: - source = GL11.GL_RGB; - break; - case Alpha16F: - source = GL11.GL_ALPHA; - break; - case Intensity16F: - source = GL11.GL_INTENSITY; - break; - case Luminance16F: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha16F: - source = GL11.GL_LUMINANCE_ALPHA; - break; - } - GL11.glCopyTexImage2D(GL11.GL_TEXTURE_2D, 0, source, 0, 0, width, - height, 0); - logger.info("setup tex" + tex.getTextureId() + ": " + width + "," - + height); + switch (tex.getRTTSource()) { + case RGBA: + case RGBA8: + break; + case RGB: + case RGB8: + source = GL11.GL_RGB; + break; + case Alpha: + case Alpha8: + source = GL11.GL_ALPHA; + break; + case Depth: + case Depth16: + case Depth24: + case Depth32: + source = GL11.GL_DEPTH_COMPONENT; + break; + case Intensity: + case Intensity8: + source = GL11.GL_INTENSITY; + break; + case Luminance: + case Luminance8: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha: + case Luminance8Alpha8: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Alpha4: + source = GL11.GL_ALPHA; + break; + case Alpha12: + source = GL11.GL_ALPHA; + break; + case Alpha16: + source = GL11.GL_ALPHA; + break; + case Luminance4: + source = GL11.GL_LUMINANCE; + break; + case Luminance12: + source = GL11.GL_LUMINANCE; + break; + case Luminance16: + source = GL11.GL_LUMINANCE; + break; + case Luminance4Alpha4: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance6Alpha2: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance12Alpha4: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance12Alpha12: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance16Alpha16: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Intensity4: + source = GL11.GL_INTENSITY; + break; + case Intensity12: + source = GL11.GL_INTENSITY; + break; + case Intensity16: + source = GL11.GL_INTENSITY; + break; + case R3_G3_B2: + source = GL11.GL_RGB; + break; + case RGB4: + source = GL11.GL_RGB; + break; + case RGB5: + source = GL11.GL_RGB; + break; + case RGB10: + source = GL11.GL_RGB; + break; + case RGB12: + source = GL11.GL_RGB; + break; + case RGB16: + source = GL11.GL_RGB; + break; + case RGBA2: + source = GL11.GL_RGBA; + break; + case RGBA4: + source = GL11.GL_RGBA; + break; + case RGB5_A1: + source = GL11.GL_RGBA; + break; + case RGB10_A2: + source = GL11.GL_RGBA; + break; + case RGBA12: + source = GL11.GL_RGBA; + break; + case RGBA16: + source = GL11.GL_RGBA; + break; + case RGBA32F: + source = GL11.GL_RGBA; + break; + case RGB32F: + source = GL11.GL_RGB; + break; + case Alpha32F: + source = GL11.GL_ALPHA; + break; + case Intensity32F: + source = GL11.GL_INTENSITY; + break; + case Luminance32F: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha32F: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case RGBA16F: + source = GL11.GL_RGBA; + break; + case RGB16F: + source = GL11.GL_RGB; + break; + case Alpha16F: + source = GL11.GL_ALPHA; + break; + case Intensity16F: + source = GL11.GL_INTENSITY; + break; + case Luminance16F: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha16F: + source = GL11.GL_LUMINANCE_ALPHA; + break; + } + GL11.glCopyTexImage2D(GL11.GL_TEXTURE_2D, 0, source, 0, 0, width, + height, 0); + logger.info("setup tex" + tex.getTextureId() + ": " + width + "," + + height); } public void render(Spatial spat, Texture tex) { @@ -591,149 +594,152 @@ int source = GL11.GL_RGBA; switch (tex.getRTTSource()) { - case RGBA: - case RGBA8: - break; - case RGB: - case RGB8: - source = GL11.GL_RGB; - break; - case Alpha: - case Alpha8: - source = GL11.GL_ALPHA; - break; - case Depth: - source = GL11.GL_DEPTH_COMPONENT; - break; - case Intensity: - case Intensity8: - source = GL11.GL_INTENSITY; - break; - case Luminance: - case Luminance8: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha: - case Luminance8Alpha8: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Alpha4: - source = GL11.GL_ALPHA; - break; - case Alpha12: - source = GL11.GL_ALPHA; - break; - case Alpha16: - source = GL11.GL_ALPHA; - break; - case Luminance4: - source = GL11.GL_LUMINANCE; - break; - case Luminance12: - source = GL11.GL_LUMINANCE; - break; - case Luminance16: - source = GL11.GL_LUMINANCE; - break; - case Luminance4Alpha4: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance6Alpha2: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance12Alpha4: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance12Alpha12: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance16Alpha16: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Intensity4: - source = GL11.GL_INTENSITY; - break; - case Intensity12: - source = GL11.GL_INTENSITY; - break; - case Intensity16: - source = GL11.GL_INTENSITY; - break; - case R3_G3_B2: - source = GL11.GL_RGB; - break; - case RGB4: - source = GL11.GL_RGB; - break; - case RGB5: - source = GL11.GL_RGB; - break; - case RGB10: - source = GL11.GL_RGB; - break; - case RGB12: - source = GL11.GL_RGB; - break; - case RGB16: - source = GL11.GL_RGB; - break; - case RGBA2: - source = GL11.GL_RGBA; - break; - case RGBA4: - source = GL11.GL_RGBA; - break; - case RGB5_A1: - source = GL11.GL_RGBA; - break; - case RGB10_A2: - source = GL11.GL_RGBA; - break; - case RGBA12: - source = GL11.GL_RGBA; - break; - case RGBA16: - source = GL11.GL_RGBA; - break; - case RGBA32F: - source = GL11.GL_RGBA; - break; - case RGB32F: - source = GL11.GL_RGB; - break; - case Alpha32F: - source = GL11.GL_ALPHA; - break; - case Intensity32F: - source = GL11.GL_INTENSITY; - break; - case Luminance32F: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha32F: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case RGBA16F: - source = GL11.GL_RGBA; - break; - case RGB16F: - source = GL11.GL_RGB; - break; - case Alpha16F: - source = GL11.GL_ALPHA; - break; - case Intensity16F: - source = GL11.GL_INTENSITY; - break; - case Luminance16F: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha16F: - source = GL11.GL_LUMINANCE_ALPHA; - break; - } - GL11.glCopyTexImage2D(GL11.GL_TEXTURE_2D, 0, source, 0, 0, width, - height, 0); + case RGBA: + case RGBA8: + break; + case RGB: + case RGB8: + source = GL11.GL_RGB; + break; + case Alpha: + case Alpha8: + source = GL11.GL_ALPHA; + break; + case Depth: + case Depth16: + case Depth24: + case Depth32: + source = GL11.GL_DEPTH_COMPONENT; + break; + case Intensity: + case Intensity8: + source = GL11.GL_INTENSITY; + break; + case Luminance: + case Luminance8: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha: + case Luminance8Alpha8: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Alpha4: + source = GL11.GL_ALPHA; + break; + case Alpha12: + source = GL11.GL_ALPHA; + break; + case Alpha16: + source = GL11.GL_ALPHA; + break; + case Luminance4: + source = GL11.GL_LUMINANCE; + break; + case Luminance12: + source = GL11.GL_LUMINANCE; + break; + case Luminance16: + source = GL11.GL_LUMINANCE; + break; + case Luminance4Alpha4: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance6Alpha2: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance12Alpha4: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance12Alpha12: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance16Alpha16: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Intensity4: + source = GL11.GL_INTENSITY; + break; + case Intensity12: + source = GL11.GL_INTENSITY; + break; + case Intensity16: + source = GL11.GL_INTENSITY; + break; + case R3_G3_B2: + source = GL11.GL_RGB; + break; + case RGB4: + source = GL11.GL_RGB; + break; + case RGB5: + source = GL11.GL_RGB; + break; + case RGB10: + source = GL11.GL_RGB; + break; + case RGB12: + source = GL11.GL_RGB; + break; + case RGB16: + source = GL11.GL_RGB; + break; + case RGBA2: + source = GL11.GL_RGBA; + break; + case RGBA4: + source = GL11.GL_RGBA; + break; + case RGB5_A1: + source = GL11.GL_RGBA; + break; + case RGB10_A2: + source = GL11.GL_RGBA; + break; + case RGBA12: + source = GL11.GL_RGBA; + break; + case RGBA16: + source = GL11.GL_RGBA; + break; + case RGBA32F: + source = GL11.GL_RGBA; + break; + case RGB32F: + source = GL11.GL_RGB; + break; + case Alpha32F: + source = GL11.GL_ALPHA; + break; + case Intensity32F: + source = GL11.GL_INTENSITY; + break; + case Luminance32F: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha32F: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case RGBA16F: + source = GL11.GL_RGBA; + break; + case RGB16F: + source = GL11.GL_RGB; + break; + case Alpha16F: + source = GL11.GL_ALPHA; + break; + case Intensity16F: + source = GL11.GL_INTENSITY; + break; + case Luminance16F: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha16F: + source = GL11.GL_LUMINANCE_ALPHA; + break; + } + GL11.glCopyTexImage2D(GL11.GL_TEXTURE_2D, 0, source, 0, 0, width, + height, 0); } private Camera oldCamera; Index: src/com/jme/renderer/jogl/JOGLTextureRenderer.java =================================================================== --- src/com/jme/renderer/jogl/JOGLTextureRenderer.java (revision 4349) +++ src/com/jme/renderer/jogl/JOGLTextureRenderer.java (working copy) @@ -32,6 +32,8 @@ package com.jme.renderer.jogl; +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; import java.nio.IntBuffer; import java.util.ArrayList; import java.util.LinkedList; @@ -90,10 +92,12 @@ private final JOGLRenderer parentRenderer; + private final GL gl; + public JOGLTextureRenderer(int width, int height, JOGLDisplaySystem display, JOGLRenderer parentRenderer) { - final GL gl = GLU.getCurrentGL(); + gl = GLU.getCurrentGL(); this.display = display; this.parentRenderer = parentRenderer; @@ -245,6 +249,241 @@ return; } + int components = GL.GL_RGBA8; + int format = GL.GL_RGBA; + int dataType = GL.GL_UNSIGNED_BYTE; + switch (tex.getRTTSource()) { + case RGBA: + case RGBA8: + break; + case RGB: + case RGB8: + format = GL.GL_RGB; + components = GL.GL_RGB8; + break; + case Alpha: + case Alpha8: + format = GL.GL_ALPHA; + components = GL.GL_ALPHA8; + break; + case Depth: + format = GL.GL_DEPTH_COMPONENT; + components = GL.GL_DEPTH_COMPONENT; + break; + case Depth16: + if (!gl.isExtensionAvailable("GL_VERSION_1_4")) { + logger.warning("Depth16 textures are not supported."); + isSupported = false; + return; + } + format = GL.GL_DEPTH_COMPONENT; + components = GL.GL_DEPTH_COMPONENT16_ARB; + break; + case Depth24: + if (!gl.isExtensionAvailable("GL_VERSION_1_4")) { + logger.warning("Depth24 textures are not supported."); + isSupported = false; + return; + } + format = GL.GL_DEPTH_COMPONENT; + components = GL.GL_DEPTH_COMPONENT24_ARB; + break; + case Depth32: + if (!gl.isExtensionAvailable("GL_VERSION_1_4")) { + logger.warning("Depth32 textures are not supported."); + isSupported = false; + return; + } + format = GL.GL_DEPTH_COMPONENT; + components = GL.GL_DEPTH_COMPONENT32_ARB; + break; + case Intensity: + case Intensity8: + format = GL.GL_INTENSITY; + components = GL.GL_INTENSITY8; + break; + case Luminance: + case Luminance8: + format = GL.GL_LUMINANCE; + components = GL.GL_LUMINANCE8; + break; + case LuminanceAlpha: + case Luminance8Alpha8: + format = GL.GL_LUMINANCE_ALPHA; + components = GL.GL_LUMINANCE8_ALPHA8; + break; + case Alpha4: + format = GL.GL_ALPHA; + components = GL.GL_ALPHA4; + break; + case Alpha12: + format = GL.GL_ALPHA; + components = GL.GL_ALPHA12; + break; + case Alpha16: + format = GL.GL_ALPHA; + components = GL.GL_ALPHA16; + break; + case Luminance4: + format = GL.GL_LUMINANCE; + components = GL.GL_LUMINANCE4; + break; + case Luminance12: + format = GL.GL_LUMINANCE; + components = GL.GL_LUMINANCE12; + break; + case Luminance16: + format = GL.GL_LUMINANCE; + components = GL.GL_LUMINANCE16; + break; + case Luminance4Alpha4: + format = GL.GL_LUMINANCE_ALPHA; + components = GL.GL_LUMINANCE4_ALPHA4; + break; + case Luminance6Alpha2: + format = GL.GL_LUMINANCE_ALPHA; + components = GL.GL_LUMINANCE6_ALPHA2; + break; + case Luminance12Alpha4: + format = GL.GL_LUMINANCE_ALPHA; + components = GL.GL_LUMINANCE12_ALPHA4; + break; + case Luminance12Alpha12: + format = GL.GL_LUMINANCE_ALPHA; + components = GL.GL_LUMINANCE12_ALPHA12; + break; + case Luminance16Alpha16: + format = GL.GL_LUMINANCE_ALPHA; + components = GL.GL_LUMINANCE16_ALPHA16; + break; + case Intensity4: + format = GL.GL_INTENSITY; + components = GL.GL_INTENSITY4; + break; + case Intensity12: + format = GL.GL_INTENSITY; + components = GL.GL_INTENSITY12; + break; + case Intensity16: + format = GL.GL_INTENSITY; + components = GL.GL_INTENSITY4; + break; + case R3_G3_B2: + format = GL.GL_RGB; + components = GL.GL_R3_G3_B2; + break; + case RGB4: + format = GL.GL_RGB; + components = GL.GL_RGB4; + break; + case RGB5: + format = GL.GL_RGB; + components = GL.GL_RGB5; + break; + case RGB10: + format = GL.GL_RGB; + components = GL.GL_RGB10; + break; + case RGB12: + format = GL.GL_RGB; + components = GL.GL_RGB12; + break; + case RGB16: + format = GL.GL_RGB; + components = GL.GL_RGB16; + break; + case RGBA2: + format = GL.GL_RGBA; + components = GL.GL_RGBA2; + break; + case RGBA4: + format = GL.GL_RGBA; + components = GL.GL_RGBA4; + break; + case RGB5_A1: + format = GL.GL_RGBA; + components = GL.GL_RGB5_A1; + break; + case RGB10_A2: + format = GL.GL_RGBA; + components = GL.GL_RGB10_A2; + break; + case RGBA12: + format = GL.GL_RGBA; + components = GL.GL_RGBA12; + break; + case RGBA16: + format = GL.GL_RGBA; + components = GL.GL_RGBA16; + break; + case RGBA32F: + format = GL.GL_RGBA; + components = GL.GL_RGBA32F_ARB; + dataType = GL.GL_FLOAT; + break; + case RGB32F: + format = GL.GL_RGB; + components = GL.GL_RGB32F_ARB; + dataType = GL.GL_FLOAT; + break; + case Alpha32F: + format = GL.GL_ALPHA; + components = GL.GL_ALPHA32F_ARB; + dataType = GL.GL_FLOAT; + break; + case Intensity32F: + format = GL.GL_INTENSITY; + components = GL.GL_INTENSITY32F_ARB; + dataType = GL.GL_FLOAT; + break; + case Luminance32F: + format = GL.GL_LUMINANCE; + components = GL.GL_LUMINANCE32F_ARB; + dataType = GL.GL_FLOAT; + break; + case LuminanceAlpha32F: + format = GL.GL_LUMINANCE_ALPHA; + components = GL.GL_LUMINANCE_ALPHA32F_ARB; + dataType = GL.GL_FLOAT; + break; + case RGBA16F: + format = GL.GL_RGBA; + components = GL.GL_RGBA16F_ARB; + dataType = GL.GL_FLOAT; + break; + case RGB16F: + format = GL.GL_RGB; + components = GL.GL_RGB16F_ARB; + dataType = GL.GL_FLOAT; + break; + case Alpha16F: + format = GL.GL_ALPHA; + components = GL.GL_ALPHA16F_ARB; + dataType = GL.GL_FLOAT; + break; + case Intensity16F: + format = GL.GL_INTENSITY; + components = GL.GL_INTENSITY16F_ARB; + dataType = GL.GL_FLOAT; + break; + case Luminance16F: + format = GL.GL_LUMINANCE; + components = GL.GL_LUMINANCE16F_ARB; + dataType = GL.GL_FLOAT; + break; + case LuminanceAlpha16F: + format = GL.GL_LUMINANCE_ALPHA; + components = GL.GL_LUMINANCE_ALPHA16F_ARB; + dataType = GL.GL_FLOAT; + break; + } + if (dataType == GL.GL_FLOAT + && !gl.isExtensionAvailable("GL_ARB_texture_float")) { + logger.warning("Float textures are not supported."); + isSupported = false; + return; + } + IntBuffer ibuf = BufferUtils.createIntBuffer(1); if (tex.getTextureId() != 0) { @@ -260,213 +499,15 @@ .getTextureId()); JOGLTextureState.doTextureBind(tex.getTextureId(), 0, - Texture.Type.TwoDimensional); - int components = GL.GL_RGBA8; - int format = GL.GL_RGBA; - int dataType = GL.GL_UNSIGNED_BYTE; - switch (tex.getRTTSource()) { - case RGBA: - case RGBA8: - break; - case RGB: - case RGB8: - format = GL.GL_RGB; - components = GL.GL_RGB8; - break; - case Alpha: - case Alpha8: - format = GL.GL_ALPHA; - components = GL.GL_ALPHA8; - break; - case Depth: - format = GL.GL_DEPTH_COMPONENT; - components = GL.GL_DEPTH_COMPONENT; - break; - case Intensity: - case Intensity8: - format = GL.GL_INTENSITY; - components = GL.GL_INTENSITY8; - break; - case Luminance: - case Luminance8: - format = GL.GL_LUMINANCE; - components = GL.GL_LUMINANCE8; - break; - case LuminanceAlpha: - case Luminance8Alpha8: - format = GL.GL_LUMINANCE_ALPHA; - components = GL.GL_LUMINANCE8_ALPHA8; - break; - case Alpha4: - format = GL.GL_ALPHA; - components = GL.GL_ALPHA4; - break; - case Alpha12: - format = GL.GL_ALPHA; - components = GL.GL_ALPHA12; - break; - case Alpha16: - format = GL.GL_ALPHA; - components = GL.GL_ALPHA16; - break; - case Luminance4: - format = GL.GL_LUMINANCE; - components = GL.GL_LUMINANCE4; - break; - case Luminance12: - format = GL.GL_LUMINANCE; - components = GL.GL_LUMINANCE12; - break; - case Luminance16: - format = GL.GL_LUMINANCE; - components = GL.GL_LUMINANCE16; - break; - case Luminance4Alpha4: - format = GL.GL_LUMINANCE_ALPHA; - components = GL.GL_LUMINANCE4_ALPHA4; - break; - case Luminance6Alpha2: - format = GL.GL_LUMINANCE_ALPHA; - components = GL.GL_LUMINANCE6_ALPHA2; - break; - case Luminance12Alpha4: - format = GL.GL_LUMINANCE_ALPHA; - components = GL.GL_LUMINANCE12_ALPHA4; - break; - case Luminance12Alpha12: - format = GL.GL_LUMINANCE_ALPHA; - components = GL.GL_LUMINANCE12_ALPHA12; - break; - case Luminance16Alpha16: - format = GL.GL_LUMINANCE_ALPHA; - components = GL.GL_LUMINANCE16_ALPHA16; - break; - case Intensity4: - format = GL.GL_INTENSITY; - components = GL.GL_INTENSITY4; - break; - case Intensity12: - format = GL.GL_INTENSITY; - components = GL.GL_INTENSITY12; - break; - case Intensity16: - format = GL.GL_INTENSITY; - components = GL.GL_INTENSITY4; - break; - case R3_G3_B2: - format = GL.GL_RGB; - components = GL.GL_R3_G3_B2; - break; - case RGB4: - format = GL.GL_RGB; - components = GL.GL_RGB4; - break; - case RGB5: - format = GL.GL_RGB; - components = GL.GL_RGB5; - break; - case RGB10: - format = GL.GL_RGB; - components = GL.GL_RGB10; - break; - case RGB12: - format = GL.GL_RGB; - components = GL.GL_RGB12; - break; - case RGB16: - format = GL.GL_RGB; - components = GL.GL_RGB16; - break; - case RGBA2: - format = GL.GL_RGBA; - components = GL.GL_RGBA2; - break; - case RGBA4: - format = GL.GL_RGBA; - components = GL.GL_RGBA4; - break; - case RGB5_A1: - format = GL.GL_RGBA; - components = GL.GL_RGB5_A1; - break; - case RGB10_A2: - format = GL.GL_RGBA; - components = GL.GL_RGB10_A2; - break; - case RGBA12: - format = GL.GL_RGBA; - components = GL.GL_RGBA12; - break; - case RGBA16: - format = GL.GL_RGBA; - components = GL.GL_RGBA16; - break; - case RGBA32F: - format = GL.GL_RGBA; - components = GL.GL_RGBA32F_ARB; - dataType = GL.GL_FLOAT; - break; - case RGB32F: - format = GL.GL_RGB; - components = GL.GL_RGB32F_ARB; - dataType = GL.GL_FLOAT; - break; - case Alpha32F: - format = GL.GL_ALPHA; - components = GL.GL_ALPHA32F_ARB; - dataType = GL.GL_FLOAT; - break; - case Intensity32F: - format = GL.GL_INTENSITY; - components = GL.GL_INTENSITY32F_ARB; - dataType = GL.GL_FLOAT; - break; - case Luminance32F: - format = GL.GL_LUMINANCE; - components = GL.GL_LUMINANCE32F_ARB; - dataType = GL.GL_FLOAT; - break; - case LuminanceAlpha32F: - format = GL.GL_LUMINANCE_ALPHA; - components = GL.GL_LUMINANCE_ALPHA32F_ARB; - dataType = GL.GL_FLOAT; - break; - case RGBA16F: - format = GL.GL_RGBA; - components = GL.GL_RGBA16F_ARB; - dataType = GL.GL_FLOAT; - break; - case RGB16F: - format = GL.GL_RGB; - components = GL.GL_RGB16F_ARB; - dataType = GL.GL_FLOAT; - break; - case Alpha16F: - format = GL.GL_ALPHA; - components = GL.GL_ALPHA16F_ARB; - dataType = GL.GL_FLOAT; - break; - case Intensity16F: - format = GL.GL_INTENSITY; - components = GL.GL_INTENSITY16F_ARB; - dataType = GL.GL_FLOAT; - break; - case Luminance16F: - format = GL.GL_LUMINANCE; - components = GL.GL_LUMINANCE16F_ARB; - dataType = GL.GL_FLOAT; - break; - case LuminanceAlpha16F: - format = GL.GL_LUMINANCE_ALPHA; - components = GL.GL_LUMINANCE_ALPHA16F_ARB; - dataType = GL.GL_FLOAT; - break; - } + Texture.Type.TwoDimensional); // Initialize our texture with some default data. - gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, components, width, height, 0, - format, dataType, null); - + if (dataType == GL.GL_FLOAT) + gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, components, width, height, 0, + format, dataType, (FloatBuffer) null); + else + gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, components, width, height, 0, + format, dataType, (ByteBuffer) null); // Initialize mipmapping for this texture, if requested if (tex.getMinificationFilter().usesMipMapLevels()) { gl.glGenerateMipmapEXT(GL.GL_TEXTURE_2D); @@ -577,7 +618,10 @@ LinkedList colors = new LinkedList(); for (int i = 0; i < texs.size(); i++) { Texture tex = texs.get(i); - if (tex.getRTTSource() == Texture.RenderToTextureType.Depth) { + if (tex.getRTTSource() == Texture.RenderToTextureType.Depth || + tex.getRTTSource() == Texture.RenderToTextureType.Depth16 || + tex.getRTTSource() == Texture.RenderToTextureType.Depth24 || + tex.getRTTSource() == Texture.RenderToTextureType.Depth32) { depths.add(tex); } else { colors.add(tex); @@ -649,7 +693,10 @@ JOGLTextureState.doTextureBind(tex.getTextureId(), 0, Texture.Type.TwoDimensional); - if (tex.getRTTSource() == Texture.RenderToTextureType.Depth) { + if (tex.getRTTSource() == Texture.RenderToTextureType.Depth || + tex.getRTTSource() == Texture.RenderToTextureType.Depth16 || + tex.getRTTSource() == Texture.RenderToTextureType.Depth24 || + tex.getRTTSource() == Texture.RenderToTextureType.Depth32) { // Setup depth texture into FBO gl.glFramebufferTexture2DEXT( GL.GL_FRAMEBUFFER_EXT, @@ -786,151 +833,155 @@ JOGLTextureState.doTextureBind(tex.getTextureId(), 0, Texture.Type.TwoDimensional); - int source = GL.GL_RGBA; - switch (tex.getRTTSource()) { - case RGBA: - case RGBA8: - break; - case RGB: - case RGB8: - source = GL.GL_RGB; - break; - case Alpha: - case Alpha8: - source = GL.GL_ALPHA; - break; - case Depth: - source = GL.GL_DEPTH_COMPONENT; - break; - case Intensity: - case Intensity8: - source = GL.GL_INTENSITY; - break; - case Luminance: - case Luminance8: - source = GL.GL_LUMINANCE; - break; - case LuminanceAlpha: - case Luminance8Alpha8: - source = GL.GL_LUMINANCE_ALPHA; - break; - case Alpha4: - source = GL.GL_ALPHA; - break; - case Alpha12: - source = GL.GL_ALPHA; - break; - case Alpha16: - source = GL.GL_ALPHA; - break; - case Luminance4: - source = GL.GL_LUMINANCE; - break; - case Luminance12: - source = GL.GL_LUMINANCE; - break; - case Luminance16: - source = GL.GL_LUMINANCE; - break; - case Luminance4Alpha4: - source = GL.GL_LUMINANCE_ALPHA; - break; - case Luminance6Alpha2: - source = GL.GL_LUMINANCE_ALPHA; - break; - case Luminance12Alpha4: - source = GL.GL_LUMINANCE_ALPHA; - break; - case Luminance12Alpha12: - source = GL.GL_LUMINANCE_ALPHA; - break; - case Luminance16Alpha16: - source = GL.GL_LUMINANCE_ALPHA; - break; - case Intensity4: - source = GL.GL_INTENSITY; - break; - case Intensity12: - source = GL.GL_INTENSITY; - break; - case Intensity16: - source = GL.GL_INTENSITY; - break; - case R3_G3_B2: - source = GL.GL_RGB; - break; - case RGB4: - source = GL.GL_RGB; - break; - case RGB5: - source = GL.GL_RGB; - break; - case RGB10: - source = GL.GL_RGB; - break; - case RGB12: - source = GL.GL_RGB; - break; - case RGB16: - source = GL.GL_RGB; - break; - case RGBA2: - source = GL.GL_RGBA; - break; - case RGBA4: - source = GL.GL_RGBA; - break; - case RGB5_A1: - source = GL.GL_RGBA; - break; - case RGB10_A2: - source = GL.GL_RGBA; - break; - case RGBA12: - source = GL.GL_RGBA; - break; - case RGBA16: - source = GL.GL_RGBA; - break; - case RGBA32F: - source = GL.GL_RGBA; - break; - case RGB32F: - source = GL.GL_RGB; - break; - case Alpha32F: - source = GL.GL_ALPHA; - break; - case Intensity32F: - source = GL.GL_INTENSITY; - break; - case Luminance32F: - source = GL.GL_LUMINANCE; - break; - case LuminanceAlpha32F: - source = GL.GL_LUMINANCE_ALPHA; - break; - case RGBA16F: - source = GL.GL_RGBA; - break; - case RGB16F: - source = GL.GL_RGB; - break; - case Alpha16F: - source = GL.GL_ALPHA; - break; - case Intensity16F: - source = GL.GL_INTENSITY; - break; - case Luminance16F: - source = GL.GL_LUMINANCE; - break; - case LuminanceAlpha16F: - source = GL.GL_LUMINANCE_ALPHA; - break; - } - gl.glCopyTexImage2D(GL.GL_TEXTURE_2D, 0, source, 0, 0, width, - height, 0); + int source = GL.GL_RGBA; + switch (tex.getRTTSource()) { + case RGBA: + case RGBA8: + break; + case RGB: + case RGB8: + source = GL.GL_RGB; + break; + case Alpha: + case Alpha8: + source = GL.GL_ALPHA; + break; + case Depth: + case Depth16: + case Depth24: + case Depth32: + source = GL.GL_DEPTH_COMPONENT; + break; + case Intensity: + case Intensity8: + source = GL.GL_INTENSITY; + break; + case Luminance: + case Luminance8: + source = GL.GL_LUMINANCE; + break; + case LuminanceAlpha: + case Luminance8Alpha8: + source = GL.GL_LUMINANCE_ALPHA; + break; + case Alpha4: + source = GL.GL_ALPHA; + break; + case Alpha12: + source = GL.GL_ALPHA; + break; + case Alpha16: + source = GL.GL_ALPHA; + break; + case Luminance4: + source = GL.GL_LUMINANCE; + break; + case Luminance12: + source = GL.GL_LUMINANCE; + break; + case Luminance16: + source = GL.GL_LUMINANCE; + break; + case Luminance4Alpha4: + source = GL.GL_LUMINANCE_ALPHA; + break; + case Luminance6Alpha2: + source = GL.GL_LUMINANCE_ALPHA; + break; + case Luminance12Alpha4: + source = GL.GL_LUMINANCE_ALPHA; + break; + case Luminance12Alpha12: + source = GL.GL_LUMINANCE_ALPHA; + break; + case Luminance16Alpha16: + source = GL.GL_LUMINANCE_ALPHA; + break; + case Intensity4: + source = GL.GL_INTENSITY; + break; + case Intensity12: + source = GL.GL_INTENSITY; + break; + case Intensity16: + source = GL.GL_INTENSITY; + break; + case R3_G3_B2: + source = GL.GL_RGB; + break; + case RGB4: + source = GL.GL_RGB; + break; + case RGB5: + source = GL.GL_RGB; + break; + case RGB10: + source = GL.GL_RGB; + break; + case RGB12: + source = GL.GL_RGB; + break; + case RGB16: + source = GL.GL_RGB; + break; + case RGBA2: + source = GL.GL_RGBA; + break; + case RGBA4: + source = GL.GL_RGBA; + break; + case RGB5_A1: + source = GL.GL_RGBA; + break; + case RGB10_A2: + source = GL.GL_RGBA; + break; + case RGBA12: + source = GL.GL_RGBA; + break; + case RGBA16: + source = GL.GL_RGBA; + break; + case RGBA32F: + source = GL.GL_RGBA; + break; + case RGB32F: + source = GL.GL_RGB; + break; + case Alpha32F: + source = GL.GL_ALPHA; + break; + case Intensity32F: + source = GL.GL_INTENSITY; + break; + case Luminance32F: + source = GL.GL_LUMINANCE; + break; + case LuminanceAlpha32F: + source = GL.GL_LUMINANCE_ALPHA; + break; + case RGBA16F: + source = GL.GL_RGBA; + break; + case RGB16F: + source = GL.GL_RGB; + break; + case Alpha16F: + source = GL.GL_ALPHA; + break; + case Intensity16F: + source = GL.GL_INTENSITY; + break; + case Luminance16F: + source = GL.GL_LUMINANCE; + break; + case LuminanceAlpha16F: + source = GL.GL_LUMINANCE_ALPHA; + break; + } + gl + .glCopyTexImage2D(GL.GL_TEXTURE_2D, 0, source, 0, 0, width, + height, 0); } private Camera oldCamera; Index: src/com/jme/renderer/lwjgl/LWJGLTextureRenderer.java =================================================================== --- src/com/jme/renderer/lwjgl/LWJGLTextureRenderer.java (revision 4349) +++ src/com/jme/renderer/lwjgl/LWJGLTextureRenderer.java (working copy) @@ -44,6 +44,7 @@ import org.lwjgl.opengl.ARBTextureFloat; import org.lwjgl.opengl.EXTFramebufferObject; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; import org.lwjgl.opengl.GLContext; import com.jme.image.Texture; @@ -246,6 +247,239 @@ return; } + int format = GL11.GL_RGBA; + int components = GL11.GL_RGBA8; + int dataType = GL11.GL_UNSIGNED_BYTE; + switch (tex.getRTTSource()) { + case RGBA: + case RGBA8: + break; + case RGB: + case RGB8: + format = GL11.GL_RGB; + components = GL11.GL_RGB8; + break; + case Alpha: + case Alpha8: + format = GL11.GL_ALPHA; + components = GL11.GL_ALPHA8; + break; + case Depth: + format = GL11.GL_DEPTH_COMPONENT; + components = GL11.GL_DEPTH_COMPONENT; + break; + case Depth16: + if (!GLContext.getCapabilities().OpenGL14) { + logger.warning("Depth16 textures are not supported."); + isSupported = false; + return; + } + format = GL11.GL_DEPTH_COMPONENT; + components = GL14.GL_DEPTH_COMPONENT16; + break; + case Depth24: + if (!GLContext.getCapabilities().OpenGL14) { + logger.warning("Depth24 textures are not supported."); + isSupported = false; + return; + } + format = GL11.GL_DEPTH_COMPONENT; + components = GL14.GL_DEPTH_COMPONENT24; + break; + case Depth32: + if (!GLContext.getCapabilities().OpenGL14) { + logger.warning("Depth32 textures are not supported."); + isSupported = false; + return; + } + format = GL11.GL_DEPTH_COMPONENT; + components = GL14.GL_DEPTH_COMPONENT32; + break; + case Intensity: + case Intensity8: + format = GL11.GL_INTENSITY; + components = GL11.GL_INTENSITY8; + break; + case Luminance: + case Luminance8: + format = GL11.GL_LUMINANCE; + components = GL11.GL_LUMINANCE8; + break; + case LuminanceAlpha: + case Luminance8Alpha8: + format = GL11.GL_LUMINANCE_ALPHA; + components = GL11.GL_LUMINANCE8_ALPHA8; + break; + case Alpha4: + format = GL11.GL_ALPHA; + components = GL11.GL_ALPHA4; + break; + case Alpha12: + format = GL11.GL_ALPHA; + components = GL11.GL_ALPHA12; + break; + case Alpha16: + format = GL11.GL_ALPHA; + components = GL11.GL_ALPHA16; + break; + case Luminance4: + format = GL11.GL_LUMINANCE; + components = GL11.GL_LUMINANCE4; + break; + case Luminance12: + format = GL11.GL_LUMINANCE; + components = GL11.GL_LUMINANCE12; + break; + case Luminance16: + format = GL11.GL_LUMINANCE; + components = GL11.GL_LUMINANCE16; + break; + case Luminance4Alpha4: + format = GL11.GL_LUMINANCE_ALPHA; + components = GL11.GL_LUMINANCE4_ALPHA4; + break; + case Luminance6Alpha2: + format = GL11.GL_LUMINANCE_ALPHA; + components = GL11.GL_LUMINANCE6_ALPHA2; + break; + case Luminance12Alpha4: + format = GL11.GL_LUMINANCE_ALPHA; + components = GL11.GL_LUMINANCE12_ALPHA4; + break; + case Luminance12Alpha12: + format = GL11.GL_LUMINANCE_ALPHA; + components = GL11.GL_LUMINANCE12_ALPHA12; + break; + case Luminance16Alpha16: + format = GL11.GL_LUMINANCE_ALPHA; + components = GL11.GL_LUMINANCE16_ALPHA16; + break; + case Intensity4: + format = GL11.GL_INTENSITY; + components = GL11.GL_INTENSITY4; + break; + case Intensity12: + format = GL11.GL_INTENSITY; + components = GL11.GL_INTENSITY12; + break; + case Intensity16: + format = GL11.GL_INTENSITY; + components = GL11.GL_INTENSITY4; + break; + case R3_G3_B2: + format = GL11.GL_RGB; + components = GL11.GL_R3_G3_B2; + break; + case RGB4: + format = GL11.GL_RGB; + components = GL11.GL_RGB4; + break; + case RGB5: + format = GL11.GL_RGB; + components = GL11.GL_RGB5; + break; + case RGB10: + format = GL11.GL_RGB; + components = GL11.GL_RGB10; + break; + case RGB12: + format = GL11.GL_RGB; + components = GL11.GL_RGB12; + break; + case RGB16: + format = GL11.GL_RGB; + components = GL11.GL_RGB16; + break; + case RGBA2: + format = GL11.GL_RGBA; + components = GL11.GL_RGBA2; + break; + case RGBA4: + format = GL11.GL_RGBA; + components = GL11.GL_RGBA4; + break; + case RGB5_A1: + format = GL11.GL_RGBA; + components = GL11.GL_RGB5_A1; + break; + case RGB10_A2: + format = GL11.GL_RGBA; + components = GL11.GL_RGB10_A2; + break; + case RGBA12: + format = GL11.GL_RGBA; + components = GL11.GL_RGBA12; + break; + case RGBA16: + format = GL11.GL_RGBA; + components = GL11.GL_RGBA16; + break; + case RGBA32F: + format = GL11.GL_RGBA; + components = ARBTextureFloat.GL_RGBA32F_ARB; + dataType = GL11.GL_FLOAT; + break; + case RGB32F: + format = GL11.GL_RGB; + components = ARBTextureFloat.GL_RGB32F_ARB; + dataType = GL11.GL_FLOAT; + break; + case Alpha32F: + format = GL11.GL_ALPHA; + components = ARBTextureFloat.GL_ALPHA32F_ARB; + dataType = GL11.GL_FLOAT; + break; + case Intensity32F: + format = GL11.GL_INTENSITY; + components = ARBTextureFloat.GL_INTENSITY32F_ARB; + dataType = GL11.GL_FLOAT; + break; + case Luminance32F: + format = GL11.GL_LUMINANCE; + components = ARBTextureFloat.GL_LUMINANCE32F_ARB; + dataType = GL11.GL_FLOAT; + break; + case LuminanceAlpha32F: + format = GL11.GL_LUMINANCE_ALPHA; + components = ARBTextureFloat.GL_LUMINANCE_ALPHA32F_ARB; + dataType = GL11.GL_FLOAT; + break; + case RGBA16F: + format = GL11.GL_RGBA; + components = ARBTextureFloat.GL_RGBA16F_ARB; + dataType = GL11.GL_FLOAT; + break; + case RGB16F: + format = GL11.GL_RGB; + components = ARBTextureFloat.GL_RGB16F_ARB; + dataType = GL11.GL_FLOAT; + break; + case Alpha16F: + format = GL11.GL_ALPHA; + components = ARBTextureFloat.GL_ALPHA16F_ARB; + dataType = GL11.GL_FLOAT; + break; + case Intensity16F: + format = GL11.GL_INTENSITY; + components = ARBTextureFloat.GL_INTENSITY16F_ARB; + dataType = GL11.GL_FLOAT; + break; + case Luminance16F: + format = GL11.GL_LUMINANCE; + components = ARBTextureFloat.GL_LUMINANCE16F_ARB; + dataType = GL11.GL_FLOAT; + break; + case LuminanceAlpha16F: + format = GL11.GL_LUMINANCE_ALPHA; + components = ARBTextureFloat.GL_LUMINANCE_ALPHA16F_ARB; + dataType = GL11.GL_FLOAT; + break; + } + if (dataType == GL11.GL_FLOAT + && !GLContext.getCapabilities().GL_ARB_texture_float) { + logger.warning("Float textures are not supported."); + return; + } IntBuffer ibuf = BufferUtils.createIntBuffer(1); if (tex.getTextureId() != 0) { @@ -254,224 +488,29 @@ ibuf.clear(); } + if (dataType == GL11.GL_FLOAT + && !GLContext.getCapabilities().GL_ARB_texture_float) { + logger.warning("Float textures are not supported."); + isSupported = false; + return; + } + // Create the texture GL11.glGenTextures(ibuf); tex.setTextureId(ibuf.get(0)); TextureManager.registerForCleanup(tex.getTextureKey(), tex .getTextureId()); - LWJGLTextureState.doTextureBind(tex.getTextureId(), 0, Texture.Type.TwoDimensional); - int format = GL11.GL_RGBA; - int components = GL11.GL_RGBA8; - int dataType = GL11.GL_UNSIGNED_BYTE; - switch (tex.getRTTSource()) { - case RGBA: - case RGBA8: - break; - case RGB: - case RGB8: - format = GL11.GL_RGB; - components = GL11.GL_RGB8; - break; - case Alpha: - case Alpha8: - format = GL11.GL_ALPHA; - components = GL11.GL_ALPHA8; - break; - case Depth: - format = GL11.GL_DEPTH_COMPONENT; - components = GL11.GL_DEPTH_COMPONENT; - break; - case Intensity: - case Intensity8: - format = GL11.GL_INTENSITY; - components = GL11.GL_INTENSITY8; - break; - case Luminance: - case Luminance8: - format = GL11.GL_LUMINANCE; - components = GL11.GL_LUMINANCE8; - break; - case LuminanceAlpha: - case Luminance8Alpha8: - format = GL11.GL_LUMINANCE_ALPHA; - components = GL11.GL_LUMINANCE8_ALPHA8; - break; - case Alpha4: - format = GL11.GL_ALPHA; - components = GL11.GL_ALPHA4; - break; - case Alpha12: - format = GL11.GL_ALPHA; - components = GL11.GL_ALPHA12; - break; - case Alpha16: - format = GL11.GL_ALPHA; - components = GL11.GL_ALPHA16; - break; - case Luminance4: - format = GL11.GL_LUMINANCE; - components = GL11.GL_LUMINANCE4; - break; - case Luminance12: - format = GL11.GL_LUMINANCE; - components = GL11.GL_LUMINANCE12; - break; - case Luminance16: - format = GL11.GL_LUMINANCE; - components = GL11.GL_LUMINANCE16; - break; - case Luminance4Alpha4: - format = GL11.GL_LUMINANCE_ALPHA; - components = GL11.GL_LUMINANCE4_ALPHA4; - break; - case Luminance6Alpha2: - format = GL11.GL_LUMINANCE_ALPHA; - components = GL11.GL_LUMINANCE6_ALPHA2; - break; - case Luminance12Alpha4: - format = GL11.GL_LUMINANCE_ALPHA; - components = GL11.GL_LUMINANCE12_ALPHA4; - break; - case Luminance12Alpha12: - format = GL11.GL_LUMINANCE_ALPHA; - components = GL11.GL_LUMINANCE12_ALPHA12; - break; - case Luminance16Alpha16: - format = GL11.GL_LUMINANCE_ALPHA; - components = GL11.GL_LUMINANCE16_ALPHA16; - break; - case Intensity4: - format = GL11.GL_INTENSITY; - components = GL11.GL_INTENSITY4; - break; - case Intensity12: - format = GL11.GL_INTENSITY; - components = GL11.GL_INTENSITY12; - break; - case Intensity16: - format = GL11.GL_INTENSITY; - components = GL11.GL_INTENSITY4; - break; - case R3_G3_B2: - format = GL11.GL_RGB; - components = GL11.GL_R3_G3_B2; - break; - case RGB4: - format = GL11.GL_RGB; - components = GL11.GL_RGB4; - break; - case RGB5: - format = GL11.GL_RGB; - components = GL11.GL_RGB5; - break; - case RGB10: - format = GL11.GL_RGB; - components = GL11.GL_RGB10; - break; - case RGB12: - format = GL11.GL_RGB; - components = GL11.GL_RGB12; - break; - case RGB16: - format = GL11.GL_RGB; - components = GL11.GL_RGB16; - break; - case RGBA2: - format = GL11.GL_RGBA; - components = GL11.GL_RGBA2; - break; - case RGBA4: - format = GL11.GL_RGBA; - components = GL11.GL_RGBA4; - break; - case RGB5_A1: - format = GL11.GL_RGBA; - components = GL11.GL_RGB5_A1; - break; - case RGB10_A2: - format = GL11.GL_RGBA; - components = GL11.GL_RGB10_A2; - break; - case RGBA12: - format = GL11.GL_RGBA; - components = GL11.GL_RGBA12; - break; - case RGBA16: - format = GL11.GL_RGBA; - components = GL11.GL_RGBA16; - break; - case RGBA32F: - format = GL11.GL_RGBA; - components = ARBTextureFloat.GL_RGBA32F_ARB; - dataType = GL11.GL_FLOAT; - break; - case RGB32F: - format = GL11.GL_RGB; - components = ARBTextureFloat.GL_RGB32F_ARB; - dataType = GL11.GL_FLOAT; - break; - case Alpha32F: - format = GL11.GL_ALPHA; - components = ARBTextureFloat.GL_ALPHA32F_ARB; - dataType = GL11.GL_FLOAT; - break; - case Intensity32F: - format = GL11.GL_INTENSITY; - components = ARBTextureFloat.GL_INTENSITY32F_ARB; - dataType = GL11.GL_FLOAT; - break; - case Luminance32F: - format = GL11.GL_LUMINANCE; - components = ARBTextureFloat.GL_LUMINANCE32F_ARB; - dataType = GL11.GL_FLOAT; - break; - case LuminanceAlpha32F: - format = GL11.GL_LUMINANCE_ALPHA; - components = ARBTextureFloat.GL_LUMINANCE_ALPHA32F_ARB; - dataType = GL11.GL_FLOAT; - break; - case RGBA16F: - format = GL11.GL_RGBA; - components = ARBTextureFloat.GL_RGBA16F_ARB; - dataType = GL11.GL_FLOAT; - break; - case RGB16F: - format = GL11.GL_RGB; - components = ARBTextureFloat.GL_RGB16F_ARB; - dataType = GL11.GL_FLOAT; - break; - case Alpha16F: - format = GL11.GL_ALPHA; - components = ARBTextureFloat.GL_ALPHA16F_ARB; - dataType = GL11.GL_FLOAT; - break; - case Intensity16F: - format = GL11.GL_INTENSITY; - components = ARBTextureFloat.GL_INTENSITY16F_ARB; - dataType = GL11.GL_FLOAT; - break; - case Luminance16F: - format = GL11.GL_LUMINANCE; - components = ARBTextureFloat.GL_LUMINANCE16F_ARB; - dataType = GL11.GL_FLOAT; - break; - case LuminanceAlpha16F: - format = GL11.GL_LUMINANCE_ALPHA; - components = ARBTextureFloat.GL_LUMINANCE_ALPHA16F_ARB; - dataType = GL11.GL_FLOAT; - break; - } + LWJGLTextureState.doTextureBind(tex.getTextureId(), 0, + Texture.Type.TwoDimensional); + // Initialize our texture with some default data. + if (dataType == GL11.GL_FLOAT) + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, components, width, height, + 0, format, dataType, (FloatBuffer) null); + else + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, components, width, height, + 0, format, dataType, (ByteBuffer) null); - // Initialize our texture with some default data. - if (dataType == GL11.GL_UNSIGNED_BYTE) { - GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, components, width, height, - 0, format, dataType, (ByteBuffer) null); - } else { - GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, components, width, height, - 0, format, dataType, (FloatBuffer) null); - } - // Initialize mipmapping for this texture, if requested if (tex.getMinificationFilter().usesMipMapLevels()) { EXTFramebufferObject.glGenerateMipmapEXT(GL11.GL_TEXTURE_2D); @@ -580,7 +619,10 @@ LinkedList colors = new LinkedList(); for (int i = 0; i < texs.size(); i++) { Texture tex = texs.get(i); - if (tex.getRTTSource() == Texture.RenderToTextureType.Depth) { + if (tex.getRTTSource() == Texture.RenderToTextureType.Depth || + tex.getRTTSource() == Texture.RenderToTextureType.Depth16 || + tex.getRTTSource() == Texture.RenderToTextureType.Depth24 || + tex.getRTTSource() == Texture.RenderToTextureType.Depth32) { depths.add(tex); } else { colors.add(tex); @@ -651,7 +693,10 @@ LWJGLTextureState.doTextureBind(tex.getTextureId(), 0, Texture.Type.TwoDimensional); - if (tex.getRTTSource() == Texture.RenderToTextureType.Depth) { + if (tex.getRTTSource() == Texture.RenderToTextureType.Depth || + tex.getRTTSource() == Texture.RenderToTextureType.Depth16 || + tex.getRTTSource() == Texture.RenderToTextureType.Depth24 || + tex.getRTTSource() == Texture.RenderToTextureType.Depth32) { // Setup depth texture into FBO EXTFramebufferObject.glFramebufferTexture2DEXT( EXTFramebufferObject.GL_FRAMEBUFFER_EXT, @@ -777,149 +822,152 @@ int source = GL11.GL_RGBA; switch (tex.getRTTSource()) { - case RGBA: - case RGBA8: - break; - case RGB: - case RGB8: - source = GL11.GL_RGB; - break; - case Alpha: - case Alpha8: - source = GL11.GL_ALPHA; - break; - case Depth: - source = GL11.GL_DEPTH_COMPONENT; - break; - case Intensity: - case Intensity8: - source = GL11.GL_INTENSITY; - break; - case Luminance: - case Luminance8: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha: - case Luminance8Alpha8: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Alpha4: - source = GL11.GL_ALPHA; - break; - case Alpha12: - source = GL11.GL_ALPHA; - break; - case Alpha16: - source = GL11.GL_ALPHA; - break; - case Luminance4: - source = GL11.GL_LUMINANCE; - break; - case Luminance12: - source = GL11.GL_LUMINANCE; - break; - case Luminance16: - source = GL11.GL_LUMINANCE; - break; - case Luminance4Alpha4: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance6Alpha2: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance12Alpha4: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance12Alpha12: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Luminance16Alpha16: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case Intensity4: - source = GL11.GL_INTENSITY; - break; - case Intensity12: - source = GL11.GL_INTENSITY; - break; - case Intensity16: - source = GL11.GL_INTENSITY; - break; - case R3_G3_B2: - source = GL11.GL_RGB; - break; - case RGB4: - source = GL11.GL_RGB; - break; - case RGB5: - source = GL11.GL_RGB; - break; - case RGB10: - source = GL11.GL_RGB; - break; - case RGB12: - source = GL11.GL_RGB; - break; - case RGB16: - source = GL11.GL_RGB; - break; - case RGBA2: - source = GL11.GL_RGBA; - break; - case RGBA4: - source = GL11.GL_RGBA; - break; - case RGB5_A1: - source = GL11.GL_RGBA; - break; - case RGB10_A2: - source = GL11.GL_RGBA; - break; - case RGBA12: - source = GL11.GL_RGBA; - break; - case RGBA16: - source = GL11.GL_RGBA; - break; - case RGBA32F: - source = GL11.GL_RGBA; - break; - case RGB32F: - source = GL11.GL_RGB; - break; - case Alpha32F: - source = GL11.GL_ALPHA; - break; - case Intensity32F: - source = GL11.GL_INTENSITY; - break; - case Luminance32F: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha32F: - source = GL11.GL_LUMINANCE_ALPHA; - break; - case RGBA16F: - source = GL11.GL_RGBA; - break; - case RGB16F: - source = GL11.GL_RGB; - break; - case Alpha16F: - source = GL11.GL_ALPHA; - break; - case Intensity16F: - source = GL11.GL_INTENSITY; - break; - case Luminance16F: - source = GL11.GL_LUMINANCE; - break; - case LuminanceAlpha16F: - source = GL11.GL_LUMINANCE_ALPHA; - break; - } - GL11.glCopyTexImage2D(GL11.GL_TEXTURE_2D, 0, source, 0, 0, width, - height, 0); + case RGBA: + case RGBA8: + break; + case RGB: + case RGB8: + source = GL11.GL_RGB; + break; + case Alpha: + case Alpha8: + source = GL11.GL_ALPHA; + break; + case Depth: + case Depth16: + case Depth24: + case Depth32: + source = GL11.GL_DEPTH_COMPONENT; + break; + case Intensity: + case Intensity8: + source = GL11.GL_INTENSITY; + break; + case Luminance: + case Luminance8: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha: + case Luminance8Alpha8: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Alpha4: + source = GL11.GL_ALPHA; + break; + case Alpha12: + source = GL11.GL_ALPHA; + break; + case Alpha16: + source = GL11.GL_ALPHA; + break; + case Luminance4: + source = GL11.GL_LUMINANCE; + break; + case Luminance12: + source = GL11.GL_LUMINANCE; + break; + case Luminance16: + source = GL11.GL_LUMINANCE; + break; + case Luminance4Alpha4: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance6Alpha2: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance12Alpha4: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance12Alpha12: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Luminance16Alpha16: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case Intensity4: + source = GL11.GL_INTENSITY; + break; + case Intensity12: + source = GL11.GL_INTENSITY; + break; + case Intensity16: + source = GL11.GL_INTENSITY; + break; + case R3_G3_B2: + source = GL11.GL_RGB; + break; + case RGB4: + source = GL11.GL_RGB; + break; + case RGB5: + source = GL11.GL_RGB; + break; + case RGB10: + source = GL11.GL_RGB; + break; + case RGB12: + source = GL11.GL_RGB; + break; + case RGB16: + source = GL11.GL_RGB; + break; + case RGBA2: + source = GL11.GL_RGBA; + break; + case RGBA4: + source = GL11.GL_RGBA; + break; + case RGB5_A1: + source = GL11.GL_RGBA; + break; + case RGB10_A2: + source = GL11.GL_RGBA; + break; + case RGBA12: + source = GL11.GL_RGBA; + break; + case RGBA16: + source = GL11.GL_RGBA; + break; + case RGBA32F: + source = GL11.GL_RGBA; + break; + case RGB32F: + source = GL11.GL_RGB; + break; + case Alpha32F: + source = GL11.GL_ALPHA; + break; + case Intensity32F: + source = GL11.GL_INTENSITY; + break; + case Luminance32F: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha32F: + source = GL11.GL_LUMINANCE_ALPHA; + break; + case RGBA16F: + source = GL11.GL_RGBA; + break; + case RGB16F: + source = GL11.GL_RGB; + break; + case Alpha16F: + source = GL11.GL_ALPHA; + break; + case Intensity16F: + source = GL11.GL_INTENSITY; + break; + case Luminance16F: + source = GL11.GL_LUMINANCE; + break; + case LuminanceAlpha16F: + source = GL11.GL_LUMINANCE_ALPHA; + break; + } + GL11.glCopyTexImage2D(GL11.GL_TEXTURE_2D, 0, source, 0, 0, width, + height, 0); } private Camera oldCamera;