Edit: Remove
Danke. Ich habe es immer unter Argumente und nicht unter JVM-Argumente platziert gehabt. Das war es.
Ich denke mal, dass der folgende Fehler noch mit meinen 3D Treiber zusammenhängt. Ich benutze den akmo-nvidia. Aber der müsste doch eigentlich 3D-Unterstützung mit liefern. Zumindestens sagt das nvidia-settings Programm, dass sehr viele ARM & Co. Erweiterungen verfügbar sind und ich kann dort auch die 3D Qualität einstellen. Komisch. Wieso findet Jogl kein GL?
Info: XInitThreads() called for concurrent Thread support
Exception in thread "main" java.lang.ExceptionInInitializerError
at test.jogl.GLInfo.init(GLInfo.java:22)
at test.jogl.GLInfo.runInThread(GLInfo.java:59)
at test.jogl.GLInfo.main(GLInfo.java:229)
Caused by: javax.media.opengl.GLException: No profile available: [GL2, GL3bc, GL4bc, GL2GL3, GL3, GL4, GL2ES2, GLES2, GL2ES1, GLES1], GLAvailability[Native[GL4bc false, GL4 false, GL3bc false, GL3 false, GL2 false, GL2ES1 false, GLES1 false, GL2ES2 false, GLES2 false], Profiles[, default null]]
at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:993)
... 3 more
Code: Es handelt sich um ein Orginal Beispiel:
Java:In die Zwischenablage kopieren
package test. jogl ;
import javax. media. opengl . *;
import javax. media. nativewindow . *;
import com. jogamp. newt . *;
import com. jogamp. newt. event . *;
import com. jogamp. newt. opengl . *;
public class GLInfo extends Thread implements GLEventListener {
private GLWindow window;
private GLProfile glp;
public GLInfo ( ) {
super ( ) ;
}
private void init ( String glprofile, int type) {
int width = 640 ;
int height = 480 ;
glp = GLProfile . get ( glprofile) ;
System . err. println ( glp+ " GLInfo.start()" ) ;
try {
GLCapabilities caps = new GLCapabilities ( glp) ;
caps. setRedBits ( 5 ) ;
caps. setGreenBits ( 6 ) ;
caps. setBlueBits ( 5 ) ;
caps. setDepthBits ( 16 ) ;
System . err. println ( glp+ " GLCapabilities PRE : " + caps) ;
Window nWindow = null ;
if ( 0 != ( type& USE_AWT) ) {
Display nDisplay = NewtFactory . createDisplay ( NativeWindowFactory . TYPE_AWT, null ) ;
Screen nScreen = NewtFactory . createScreen ( NativeWindowFactory . TYPE_AWT, nDisplay, 0 ) ;
nWindow = NewtFactory . createWindow ( NativeWindowFactory . TYPE_AWT, nScreen, caps, false ) ;
System . err. println ( glp+ " " + nWindow) ;
window = GLWindow . create ( nWindow) ;
} else {
window = GLWindow . create ( caps) ;
}
System . err. println ( glp+ " GLWindow : " + window) ;
window. addGLEventListener ( this ) ;
window. setSize ( width, height) ;
window. setVisible ( true ) ;
} catch ( Throwable t) {
t. printStackTrace ( ) ;
}
}
private void runInThread ( String glprofile, int type) {
init ( glprofile, type) ;
run ( ) ;
}
private void start ( String glprofile, int type) {
init ( glprofile, type) ;
start ( ) ;
}
public void run ( ) {
try {
System . err. println ( glp+ " GLInfo.run() 1" ) ;
System . err. println ( glp+ " GLInfo.run() 2" ) ;
window. display ( ) ;
System . err. println ( glp+ " GLInfo.run() 3" ) ;
try {
Thread . sleep ( 500 ) ;
} catch ( Exception e) { }
window. display ( ) ;
window. destroy ( true ) ;
System . out. println ( glp+ " GLInfo shut down cleanly." ) ;
} catch ( Throwable t) {
t. printStackTrace ( ) ;
}
}
public void init ( GLAutoDrawable drawable) {
GL gl = drawable. getGL ( ) ;
GLProfile glp = gl. getGLProfile ( ) ;
System . err. println ( glp+ " GL Profile Static: " + GLProfile . glAvailabilityToString ( ) ) ;
System . err. println ( glp+ " GL Profile Static - MaxFixedFunc: " + GLProfile . getMaxFixedFunc ( ) ) ;
System . err. println ( glp+ " GL Profile Static - MaxProgrammable: " + GLProfile . getMaxProgrammable ( ) ) ;
System . err. println ( glp+ " GLCapabilities POST: " + drawable. getChosenGLCapabilities ( ) ) ;
System . err. println ( glp+ " GL Profile: " + drawable. getGLProfile ( ) ) ;
System . err. println ( glp+ " GL:" + gl) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " Context GL Version: " + gl. getContext ( ) . getGLVersion ( ) ) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " GL_VERSION: " + gl. glGetString ( GL. GL_VERSION) ) ;
System . err. println ( glp+ " GL_EXTENSIONS: " ) ;
System . err. println ( glp+ " " + gl. glGetString ( GL. GL_EXTENSIONS) ) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " Platform EXTENSIONS: " ) ;
System . err. println ( glp+ " " + gl. getContext ( ) . getPlatformExtensionsString ( ) ) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " Availability Tests: " ) ;
System . err. println ( glp+ " glConvolutionFilter2D: " + gl. isFunctionAvailable ( "glConvolutionFilter2D" ) ) ;
System . err. println ( glp+ " Fixed: glBegin: " + gl. isFunctionAvailable ( "glBegin" ) ) ;
System . err. println ( glp+ " ES1 : glClearColorx: " + gl. isFunctionAvailable ( "glClearColorx" ) ) ;
System . err. println ( glp+ " GLSL : glUseProgram: " + gl. isFunctionAvailable ( "glUseProgram" ) ) ;
System . err. println ( glp+ " GL_ARB_vertex_array_object: " + gl. isExtensionAvailable ( "GL_ARB_vertex_array_object" ) ) ;
System . err. println ( glp+ " GL_ARB_vertex_array_object: glBindVertexArray: " + gl. isFunctionAvailable ( "glBindVertexArray" ) ) ;
System . err. println ( glp+ " GL_EXT_gpu_shader4: " + gl. isExtensionAvailable ( "GL_EXT_gpu_shader4" ) ) ;
System . err. println ( glp+ " GL_EXT_gpu_shader4: glBindFragDataLocation" + gl. isFunctionAvailable ( "glBindFragDataLocation" ) ) ;
System . err. println ( glp+ "" ) ;
boolean complete30 = gl. isExtensionAvailable ( "GL_VERSION_3_0" ) &&
gl. isExtensionAvailable ( "GL_ARB_framebuffer_object" ) &&
gl. isExtensionAvailable ( "GL_ARB_map_buffer_range" ) &&
gl. isExtensionAvailable ( "GL_ARB_vertex_array_object" ) ;
System . err. println ( glp+ " GL_VERSION_3_0: " + gl. isExtensionAvailable ( "GL_VERSION_3_0" ) + ", complete: " + complete30) ;
System . err. println ( glp+ " glBeginConditionalRender: " + gl. isFunctionAvailable ( "glBeginConditionalRender" ) ) ;
System . err. println ( glp+ " GL_ARB_framebuffer_object: " + gl. isExtensionAvailable ( "GL_ARB_framebuffer_object" ) ) ;
System . err. println ( glp+ " glIsRenderbuffer: " + gl. isFunctionAvailable ( "glIsRenderbuffer" ) ) ;
System . err. println ( glp+ " GL_ARB_map_buffer_range: " + gl. isExtensionAvailable ( "GL_ARB_map_buffer_range" ) ) ;
System . err. println ( glp+ " glMapBufferRange: " + gl. isFunctionAvailable ( "glMapBufferRange" ) ) ;
System . err. println ( glp+ " GL_ARB_vertex_array_object: " + gl. isExtensionAvailable ( "GL_ARB_vertex_array_object" ) ) ;
System . err. println ( glp+ " glBindVertexArray: " + gl. isFunctionAvailable ( "glBindVertexArray" ) ) ;
System . err. println ( glp+ "" ) ;
boolean complete31 = complete30 &&
gl. isExtensionAvailable ( "GL_VERSION_3_1" ) &&
gl. isExtensionAvailable ( "GL_ARB_uniform_buffer_object" ) &&
gl. isExtensionAvailable ( "GL_ARB_copy_buffer" ) ;
System . err. println ( glp+ " GL_VERSION_3_1: " + gl. isExtensionAvailable ( "GL_VERSION_3_1" ) + ", complete: " + complete31) ;
System . err. println ( glp+ " glDrawArraysInstanced: " + gl. isFunctionAvailable ( "glDrawArraysInstanced" ) ) ;
System . err. println ( glp+ " GL_ARB_uniform_buffer_object: " + gl. isExtensionAvailable ( "GL_ARB_uniform_buffer_object" ) ) ;
System . err. println ( glp+ " glGetUniformIndices: " + gl. isFunctionAvailable ( "glGetUniformIndices" ) ) ;
System . err. println ( glp+ " GL_ARB_copy_buffer: " + gl. isExtensionAvailable ( "GL_ARB_copy_buffer" ) ) ;
System . err. println ( glp+ " glCopyBufferSubData: " + gl. isFunctionAvailable ( "glCopyBufferSubData" ) ) ;
System . err. println ( glp+ "" ) ;
boolean complete32 = complete31 &&
gl. isExtensionAvailable ( "GL_VERSION_3_2" ) &&
gl. isExtensionAvailable ( "GL_ARB_vertex_array_bgra" ) &&
gl. isExtensionAvailable ( "GL_ARB_draw_elements_base_vertex" ) &&
gl. isExtensionAvailable ( "GL_ARB_fragment_coord_conventions" ) &&
gl. isExtensionAvailable ( "GL_ARB_provoking_vertex" ) &&
gl. isExtensionAvailable ( "GL_ARB_seamless_cube_map" ) &&
gl. isExtensionAvailable ( "GL_ARB_texture_multisample" ) &&
gl. isExtensionAvailable ( "GL_ARB_depth_clamp" ) &&
gl. isExtensionAvailable ( "GL_ARB_geometry_shader4" ) &&
gl. isExtensionAvailable ( "GL_ARB_sync" ) ;
System . err. println ( glp+ " GL_VERSION_3_2: " + gl. isExtensionAvailable ( "GL_VERSION_3_2" ) + ", complete: " + complete32) ;
System . err. println ( glp+ " GL_ARB_vertex_array_bgra: " + gl. isExtensionAvailable ( "GL_ARB_vertex_array_bgra" ) ) ;
System . err. println ( glp+ " GL_ARB_draw_elements_base_vertex: " + gl. isExtensionAvailable ( "GL_ARB_draw_elements_base_vertex" ) ) ;
System . err. println ( glp+ " glDrawElementsBaseVertex: " + gl. isFunctionAvailable ( "glDrawElementsBaseVertex" ) ) ;
System . err. println ( glp+ " GL_ARB_fragment_coord_conventions: " + gl. isExtensionAvailable ( "GL_ARB_fragment_coord_conventions" ) ) ;
System . err. println ( glp+ " GL_ARB_provoking_vertex: " + gl. isExtensionAvailable ( "GL_ARB_provoking_vertex" ) ) ;
System . err. println ( glp+ " glProvokingVertex: " + gl. isFunctionAvailable ( "glProvokingVertex" ) ) ;
System . err. println ( glp+ " GL_ARB_seamless_cube_map: " + gl. isExtensionAvailable ( "GL_ARB_seamless_cube_map" ) ) ;
System . err. println ( glp+ " GL_ARB_texture_multisample: " + gl. isExtensionAvailable ( "GL_ARB_texture_multisample" ) ) ;
System . err. println ( glp+ " glTexImage2DMultisample: " + gl. isFunctionAvailable ( "glTexImage2DMultisample" ) ) ;
System . err. println ( glp+ " GL_ARB_depth_clamp: " + gl. isExtensionAvailable ( "GL_ARB_depth_clamp" ) ) ;
System . err. println ( glp+ " GL_ARB_geometry_shader4: " + gl. isExtensionAvailable ( "GL_ARB_geometry_shader4" ) ) ;
System . err. println ( glp+ " glProgramParameteri: " + gl. isFunctionAvailable ( "glProgramParameteri" ) ) ;
System . err. println ( glp+ " GL_ARB_sync: " + gl. isExtensionAvailable ( "GL_ARB_sync" ) ) ;
System . err. println ( glp+ " glFenceSync: " + gl. isFunctionAvailable ( "glFenceSync" ) ) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " GL_AMD_vertex_shader_tessellator: " + gl. isExtensionAvailable ( "GL_AMD_vertex_shader_tessellator" ) ) ;
System . err. println ( glp+ " glTessellationFactorAMD: " + gl. isFunctionAvailable ( "glTessellationFactorAMD" ) ) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " EGL : eglCreateContext: " + gl. isFunctionAvailable ( "eglCreateContext" ) ) ;
System . err. println ( glp+ " EGLEx: eglCreateImage: " + gl. isFunctionAvailable ( "eglCreateImage" ) ) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " GLX : glXCreateWindow: " + gl. isFunctionAvailable ( "glXCreateWindow" ) ) ;
System . err. println ( glp+ " GLX_ARB_create_context: " + gl. isExtensionAvailable ( "GLX_ARB_create_context" ) ) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " WGL : wglCreateContext: " + gl. isFunctionAvailable ( "wglCreateContext" ) ) ;
System . err. println ( glp+ "" ) ;
System . err. println ( glp+ " CGL : CGLCreateContext: " + gl. isFunctionAvailable ( "CGLCreateContext" ) ) ;
}
public void reshape ( GLAutoDrawable drawable, int x, int y, int width, int height) {
}
public void dispose ( GLAutoDrawable drawable) {
GL gl = drawable. getGL ( ) ;
GLProfile glp = gl. getGLProfile ( ) ;
System . err. println ( glp+ " dispose" ) ;
}
public void display ( GLAutoDrawable drawable) {
GL gl = drawable. getGL ( ) ;
GLProfile glp = gl. getGLProfile ( ) ;
System . err. println ( glp+ " display: " + displayed) ;
displayed++ ;
}
int displayed = 0 ;
public void displayChanged ( GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
}
public static int USE_NEWT = 0 ;
public static int USE_AWT = 1 << 0 ;
public static void main ( String [ ] args) {
System . out. println ( System . getProperty ( "java.library.path" ) ) ;
String glprofile = null ;
int type = USE_NEWT ;
for ( int i= 0 ; i< args. length; i++ ) {
if ( args[ i] . equals ( "-awt" ) ) {
type |= USE_AWT;
}
if ( args[ i] . startsWith ( "-GL" ) ) {
if ( null != glprofile) {
new GLInfo ( ) . start ( glprofile, type) ;
}
glprofile= args[ i] . substring ( 1 ) ;
}
}
new GLInfo ( ) . runInThread ( glprofile, type) ;
}
}