1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Java+openGL - wo liegt der Fehler?

  • Stephe
  • 11. August 2008 um 21:29
  • Unerledigt
  • Stephe
    24
    Stephe
    Mitglied
    Reaktionen
    43
    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
    24
    Stephe
    Mitglied
    Reaktionen
    43
    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 :winking_face:

    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 :winking_face:

  • Schakal
    9
    Schakal
    Mitglied
    Reaktionen
    5
    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern