this is the important line
at com.jme3.renderer.opengl.GLRenderer.setMainFrameBufferSrgb(GLRenderer.java:3184)
(on current master i guess its line 3232)
It seems like jme uses the gl_ext_framebuffer_srgb way to see if the default framebuffer supports srgb.
if (!getBoolean(GLExt.GL_FRAMEBUFFER_SRGB_CAPABLE_EXT)) {
and to make sure this is only called if the gl implementation supports it, few lines earlier a check for the caps is made:
if (!caps.contains(Caps.Srgb) && enableSrgb) {
// Not supported, sorry.
logger.warning("sRGB framebuffer is not supported " +
"by video hardware, but was requested.");
return;
}
however this cap is initially added if the following condition is true:
if ( (hasExtension("GL_ARB_framebuffer_sRGB") && hasExtension("GL_EXT_texture_sRGB"))
|| caps.contains(Caps.OpenGL30) ) {
caps.add(Caps.Srgb);
}
but gl_arb_framebuffer_srgb changed the way of determining whether the default framebuffer supports srgb and thus no longer needs the constant
FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
which means for implementations that dont support gl_ext_framebuffer_srgb, this enum is always an invalid enum and will generate a gl error. usually this is not neccessarily a problem, the error can just be cleared, however jme seems to throw an exception (which it should if setGraphicsDebug is set to true). i wonder though why this exception is triggered in the first place if you do not setGraphicsDebug(true) because i though jme only calls glGetError in GLDebug
so your default framebuffer probably supports srgb, jme just doesnt check it the right way, however since enabling srgb didnt change from gl_ext_framebuffer_srgb to gl_arb_framebuffer_srgb, it can be enabled normally and will render as expected, as long as jme doesnt throw an exception
but in the meantime, especially since all the getBoolean(GLExt.GL_FRAMEBUFFER_SRGB_CAPABLE_EXT)) check does is log a message in case it returns false, i guess just commenting out the if block is fine
EDIT: to see if this is the case you can also print all extensions in the GLRenderer say in the initialize method around line 610 and see if it prints gl_ext_framebuffer_srgb, only gl_arb_framebuffer_srgb or none
EDIT: you can also check the value of settings.getRenderer() say in the simpleInit method of your app