1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Java+openGL - wo liegt der Fehler?

  • Stephe
  • 11. August 2008 um 21:29
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Stephe
    Punkte
    6.038
    Beiträge
    968
    • 11. August 2008 um 21:29
    • #1

    Folgender Code aus einem JOGL-Tutorial soll einen texturierten rotierenden Würfel zeigen. Das Tutorial 1:1 übernommen funktioniert super, aber sobald ich den Code in meine eigene Anwendung einfüge bekomme ich einen Fehler, der mir rein garnichts sagt:

    Zitat


    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Illegally formatted version identifier: "null"
    at com.sun.opengl.impl.FunctionAvailabilityCache$Version.<init>(FunctionAvailabilityCache.java:354)
    at com.sun.opengl.impl.FunctionAvailabilityCache.initAvailableExtensions(FunctionAvailabilityCache.java:133)
    at com.sun.opengl.impl.FunctionAvailabilityCache.isExtensionAvailable(FunctionAvailabilityCache.java:104)
    at com.sun.opengl.impl.GLContextImpl.isExtensionAvailable(GLContextImpl.java:351)
    at com.sun.opengl.impl.GLImpl.isExtensionAvailable(GLImpl.java:30493)
    at com.sun.opengl.impl.GLImpl.initBufferObjectExtensionChecks(GLImpl.java:30638)
    at com.sun.opengl.impl.GLImpl.checkUnpackPBODisabled(GLImpl.java:30673)
    at com.sun.opengl.impl.GLImpl.glTexImage2D(GLImpl.java:21145)
    at renderplugins.tunnel.RenderPlugin_Tunnel.makeRGBTexture(RenderPlugin_Tunnel.java:169)
    at renderplugins.tunnel.RenderPlugin_Tunnel.setupScene(RenderPlugin_Tunnel.java:46)
    at midilive.Renderer.loadRenderPlugin(Renderer.java:83)
    at midilive.Main.loadRenderPreset(Main.java:169)
    at midilive.MainFrameOptions.jTable1MouseClicked(MainFrameOptions.java:248)
    at midilive.MainFrameOptions.access$200(MainFrameOptions.java:18)
    at midilive.MainFrameOptions$5.mouseClicked(MainFrameOptions.java:160)
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
    at java.awt.Component.processMouseEvent(Component.java:6044)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5806)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4413)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3995)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2440)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    Caused by: java.lang.NullPointerException
    at com.sun.opengl.impl.FunctionAvailabilityCache$Version.<init>(FunctionAvailabilityCache.java:309)
    ... 35 more

    Alles anzeigen

    Der Code: (der Fehler passiert in der letzten Befehlszeile, also bei gl.glTexImage2D(...))

    Code
    public class RenderPlugin_Tunnel implements IRenderPlugin
    {         
        private int texture;
        private GL gl;
        private GLU glu = new GLU();
        private boolean ready = false;
    
        private float xrot;                // X Rotation ( NEW )
        private float yrot;                // Y Rotation ( NEW )
        private float zrot;                // Z Rotation ( NEW )
    
        public void setupScene()
        { 
            gl.glShadeModel(GL.GL_SMOOTH);              // Enable Smooth Shading
            gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);    // Black Background
            gl.glClearDepth(1.0f);                      // Depth Buffer Setup
            gl.glEnable(GL.GL_DEPTH_TEST);                            // Enables Depth Testing
            gl.glDepthFunc(GL.GL_LEQUAL);                                // The Type Of Depth Testing To Do
            gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);    // Really Nice Perspective Calculations
            gl.glEnable(GL.GL_TEXTURE_2D);
            texture = genTexture();
            //gl.glBindTexture(GL.GL_TEXTURE_2D, texture);
            Texture tex = null;
            try 
            {
                tex = TextureReader.readTexture("nehe.png");
            }
            catch (Exception e)
            {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
            makeRGBTexture(glu, tex, GL.GL_TEXTURE_2D, false);
            gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
            gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
    
            ready = true;
        }
    
    
        public void update(XtendedMidiMessage midiMessage) {   
    
            if(midiMessage instanceof NoteMsg && midiMessage.getMidiChannel() == 3)
            {
                NoteMsg note = (NoteMsg)midiMessage;
    
                if(note.getVelocity()==0 && note.getNoteNumber()<88)
                {
    
                }
                else if(note.getVelocity()>0 && note.getNoteNumber()<88)
                {
    
                }  
            }
        }
    
    
        public void running()
        {
            if(ready)
            {
    
                gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
                gl.glLoadIdentity();                                    // Reset The View
                gl.glTranslatef(0.0f, 0.0f, -5.0f);
    
    
                gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f);
                gl.glRotatef(yrot, 0.0f, 1.0f, 0.0f);
                gl.glRotatef(zrot, 0.0f, 0.0f, 1.0f);
    
    
                gl.glBindTexture(GL.GL_TEXTURE_2D, texture);
    
    
                gl.glBegin(GL.GL_QUADS);
                // Front Face
                gl.glTexCoord2f(0.0f, 0.0f);
                gl.glVertex3f(-1.0f, -1.0f, 1.0f);
                gl.glTexCoord2f(1.0f, 0.0f);
                gl.glVertex3f(1.0f, -1.0f, 1.0f);
                gl.glTexCoord2f(1.0f, 1.0f);
                gl.glVertex3f(1.0f, 1.0f, 1.0f);
                gl.glTexCoord2f(0.0f, 1.0f);
                gl.glVertex3f(-1.0f, 1.0f, 1.0f);
                // Back Face
                gl.glTexCoord2f(1.0f, 0.0f);
                gl.glVertex3f(-1.0f, -1.0f, -1.0f);
                gl.glTexCoord2f(1.0f, 1.0f);
                gl.glVertex3f(-1.0f, 1.0f, -1.0f);
                gl.glTexCoord2f(0.0f, 1.0f);
                gl.glVertex3f(1.0f, 1.0f, -1.0f);
                gl.glTexCoord2f(0.0f, 0.0f);
                gl.glVertex3f(1.0f, -1.0f, -1.0f);
                // Top Face
                gl.glTexCoord2f(0.0f, 1.0f);
                gl.glVertex3f(-1.0f, 1.0f, -1.0f);
                gl.glTexCoord2f(0.0f, 0.0f);
                gl.glVertex3f(-1.0f, 1.0f, 1.0f);
                gl.glTexCoord2f(1.0f, 0.0f);
                gl.glVertex3f(1.0f, 1.0f, 1.0f);
                gl.glTexCoord2f(1.0f, 1.0f);
                gl.glVertex3f(1.0f, 1.0f, -1.0f);
                // Bottom Face
                gl.glTexCoord2f(1.0f, 1.0f);
                gl.glVertex3f(-1.0f, -1.0f, -1.0f);
                gl.glTexCoord2f(0.0f, 1.0f);
                gl.glVertex3f(1.0f, -1.0f, -1.0f);
                gl.glTexCoord2f(0.0f, 0.0f);
                gl.glVertex3f(1.0f, -1.0f, 1.0f);
                gl.glTexCoord2f(1.0f, 0.0f);
                gl.glVertex3f(-1.0f, -1.0f, 1.0f);
                // Right face
                gl.glTexCoord2f(1.0f, 0.0f);
                gl.glVertex3f(1.0f, -1.0f, -1.0f);
                gl.glTexCoord2f(1.0f, 1.0f);
                gl.glVertex3f(1.0f, 1.0f, -1.0f);
                gl.glTexCoord2f(0.0f, 1.0f);
                gl.glVertex3f(1.0f, 1.0f, 1.0f);
                gl.glTexCoord2f(0.0f, 0.0f);
                gl.glVertex3f(1.0f, -1.0f, 1.0f);
                // Left Face
                gl.glTexCoord2f(0.0f, 0.0f);
                gl.glVertex3f(-1.0f, -1.0f, -1.0f);
                gl.glTexCoord2f(1.0f, 0.0f);
                gl.glVertex3f(-1.0f, -1.0f, 1.0f);
                gl.glTexCoord2f(1.0f, 1.0f);
                gl.glVertex3f(-1.0f, 1.0f, 1.0f);
                gl.glTexCoord2f(0.0f, 1.0f);
                gl.glVertex3f(-1.0f, 1.0f, -1.0f);
                gl.glEnd();
    
    
                xrot += 0.3f;
                yrot += 0.2f;
                zrot += 0.4f;
            }      
        }
    
        public void kill()
        {         
            System.out.println(this.getClass().getName() + " killed.");
        }
    
    
        public void init(GL _gl)
        {
            gl = _gl;
        }
    
        private int genTexture()
        {
            final int[] tmp = new int[1];
            gl.glGenTextures(1, tmp, 0);
            return tmp[0];
        }
    
         private void makeRGBTexture(GLU glu, Texture img, int target, boolean mipmapped) {
            if (mipmapped) {
                glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB, GL.GL_UNSIGNED_BYTE, img.getPixels());
            } else {
                gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, img.getPixels());
            }
        }
    }
    Alles anzeigen
  • Stephe
    Punkte
    6.038
    Beiträge
    968
    • 11. August 2008 um 23:59
    • #2

    Schön langsam geb ichs auf in der Programmier-Ecke Fragen zu stellen. Die beantwort ich mir dann eh immer selber ;)

    Wayne's interessiert: Das Problem lag im gl-Objekt, das war teilweise "fehlerhaft" und lieferte bei gl.glGetString(gl.GL_VERSION_GL) null zurück, und das passt garnicht ;)

  • Schakal
    Punkte
    780
    Beiträge
    152
    • 12. August 2008 um 09:33
    • #3

    Sagt eh die erste Zeile :D.

    mfg Schakal

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum