Hello,
I have developped an application with JOGL wich works fine under windows. I am trying to use it on solaris throught an XClient (Xming) and i have the following exception:
Exception in thread “Thread-30” javax.media.opengl.GLException: Unable to select one of the provided GLCapabilities
at javax.media.opengl.DefaultGLCapabilitiesChooser.chooseCapabilities(DefaultGLCapabilitiesChooser.java:218)
at com.sun.opengl.impl.x11.X11GLDrawableFactory.chooseGraphicsConfiguration(X11GLDrawableFactory.java:190)
at javax.media.opengl.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:520)
at javax.media.opengl.GLCanvas.(GLCanvas.java:131)
at javax.media.opengl.GLCanvas.(GLCanvas.java:90)
at animation3D.com.ComGLCanvas.(ComGLCanvas.java:42)
at animation3D.com.ComGLCanvas.(ComGLCanvas.java:55)
at task.TaskJAnimation3D.getComGLLoadingCanvas(TaskJAnimation3D.java:336)
at task.TaskJAnimation3D.initializeDisplay(TaskJAnimation3D.java:147)
Here are the information indicated on the logging about the machine
Architecture : sparc sun4u
O.S. : SunOS 5.8 Generic_117350-51
I am using the following libraries solaris_sparc version 1.1.1 (last release build)
I have looked at the code of the DefaultGLCapabilitiesChooser class and the code which generate the exception is the following:
// Ready to select. Choose score closest to 0.
int scoreClosestToZero = NO_SCORE;
int chosenIndex = -1;
for (int i = 0; i < scores.length; i++) {
int score = scores[i];
if (score == NO_SCORE) {
continue;
}
// Don’t substitute a positive score for a smaller negative score
if ((scoreClosestToZero == NO_SCORE) ||
(Math.abs(score) < Math.abs(scoreClosestToZero) &&
((sign(scoreClosestToZero) < 0) || (sign(score) > 0)))) {
scoreClosestToZero = score;
chosenIndex = i;
}
}
if (chosenIndex < 0) {
throw new GLException(“Unable to select one of the provided GLCapabilities”);
}
here is the code used to generate the canvas:
GL gl = gLDrawable.getGL();
textures.loadTextures();
// enables clearing values for the color buffers
gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
// select smooth shading
gl.glShadeModel(GL.GL_SMOOTH);
// enables clearing of the depth buffer
gl.glClearDepth(1.0);
// enables depth testing
gl.glEnable(GL.GL_DEPTH_TEST);
// the type of depth test to do
gl.glDepthFunc(GL.GL_LEQUAL);
// really nice perspective calculations
gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);
// enables double buffering
gl.glEnable(GL.GL_DOUBLEBUFFER);
// enables antialiasing
gl.glEnable(GL.GL_LINE_SMOOTH);
// enables lighting
gl.glEnable(GL.GL_LIGHTING);
// enables color material
gl.glEnable(GL.GL_COLOR_MATERIAL);
// enables texturing
gl.glEnable(GL.GL_TEXTURE_2D);
// Start initialization with kernel
((DataJAnimation3DXML)dataXml).getAnimation3D(false);
// switch load and display glcanvas
comGLLoadingCanvas.getAnimator().stop();
comGLLoadingCanvas.setVisible(false);
comGLDisplayCanvas.setVisible(true);
pack();
// animation3D will run
statusField.setText(ComResources.translateText(LanguageConstant.ANIMATION_STATUS) + " : "
+ ComResources.translateText(LanguageConstant.ANIMATION_RUNNING));
// animation3D is running, we can modify the light
comJToolBarAnimation3D.getComJSliderLight().setEnabled(true);
// now allowance to move the camera
mouseController.attach(gLDrawable);
thanks for the help