JOGL and GLSL

I’m trying to use JOGL to access glCreateShaderObjectARB and it compiles fine, but when I run it I get a GLException, method not available.

I’m on a WinXp/GeForce 5900 with 71.84 drivers so I know it supports it (I can run GLSL demos and I can see the extension is supported in OpenGL Extension Viewer).

Any thoughts on what could be going wrong?

I had no problems creating shaders and linking them using JOGL on OS/X 10.3.8. Of course they do not run yet, but the calls worked. I even got compile and link errors where appropriate.

I don’t know about the current status of GLSL support in drivers, but what call is failing with the GLException? Could you post a stack trace? Have you tried dumping the GL_VENDOR and other information (as is done in the Gears demo) to make sure you’re getting hardware acceleration for the GLCapabilities you’ve selected? Have you tried using just the default settings in the GLCapabilities?

GL_VENDOR returns NVidia Corporation, calling isHardwareAccelerated returns true.
I am using the default GLCapabilities

I think the problem stems from a call to wglGetExtensionsStringEXT causing a GLException (method not available). This happens whenever I try to use isExtensionAvailable as the Procedural Texture demo does.

glGetString(GL_EXTENSIONS) does return the vertex and fragment shader extensions and I can see in the OpenGL Extension Viewer that wglGetExtensionsStringEXT is supported. The gears and procedural texture demo run on this computer as well.

Is there some initialization I’m missing?

Code looks as follows:
canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());

glu = canvas.getGLU();
gl = canvas.getGL();

String exts = gl.wglGetExtensionsStringEXT();

And the exception stack trace:
net.java.games.jogl.GLException:
Method “wglGetExtensionsStringEXT” not available
at net.java.games.jogl.impl.windows.WindowsGLImpl.wglGetExtensionsStringEXT(WindowsGLImpl.java:34155)
at VTShader.(VTShader.java:20)

You can only call methods on the GL object from within your GLEventListener’s callback methods – for example, init(). This means you will have to set up more infrastructure and actually show your GLCanvas and have it render before you can determine whether this function is available.

Check my example at http://www.furi.dk/java

If it runs, you could compare the source code to see what you’re doing wrong?