Login  Register

Loading half float textures using JOGL - possible bug?

Posted by mpleasance on Jun 14, 2012; 8:07pm
URL: https://forum.jogamp.org/Loading-half-float-textures-using-JOGL-possible-bug-tp4025221.html

I have texture data in half float format that I would like to load into textures.
The call to glTexImage2D fails using GL2.GL_HALF_FLOAT as the type.
Below is the complete call that I make:

                   gl.glTexImage2D(this.texture_[index].getTarget(),
                                   0,
                                   GL2.GL_LUMINANCE16F,
                                   width,
                                   height,
                                   0,
                                   GL.GL_LUMINANCE,
                                   GL2.GL_HALF_FLOAT,
                                   buffer);                  

Calling glGetError afterwards indicates that an invalid enum is being used.
I checked the enum values and GL2.GL_HALF_FLOAT = 36193 (0x8D61).
This corresponds to HALF_FLOAT_OES tokens defined in the OES_vertex_half_float and OES_texture_float extensions against OpenGL 2.0 ES.
http://www.khronos.org/registry/gles/extensions/OES/OES_vertex_half_float.txt
http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt

I believe that the type I want to be using is HALF_FLOAT_ARB which is specified in the ARB_half_float_pixel extension (extension specific to using half float as pixel data).  The value of this token is 5131 (0x140B).
http://www.opengl.org/registry/specs/ARB/half_float_pixel.txt

In JOGL, this value is defined by GL2.GL_HALF_APPLE, but when I try to use this for the type parameter in glTexImage2D I get the following exception:

Caused by: javax.media.opengl.GLException: type 0x140b/format 0x1909 not supported [yet], pls notify the maintainer in case this is our bug.
        at com.jogamp.opengl.util.GLBuffers.sizeof(GLBuffers.java:505)
        at jogamp.opengl.gl4.GL4bcImpl.imageSizeInBytes(GL4bcImpl.java:34462)
        at jogamp.opengl.gl4.GL4bcImpl.glTexImage2D(GL4bcImpl.java:25283)

Inspecting GLBuffers.java, GL2.GL_HALF_APPLE is not in the list of accepted types in the sizeof function.

If I convert my half float data to float and use GL_FLOAT for the type, everything works as expected.
If I keep the data in half float and specify unsigned short, then the call to glTexImage2D works, but it isn't really what I need.

I'm using jogamp 2.0-rc8 and all of the relevant float/half float extensions are present.

Am I doing something wrong or is this a bug?