Ich versuche verzweifelt eine Texture auf ein Objekt zu bekommen.
Ich habe mir das Tutorial von http://www.jogl.info/ durchgelesen und die Programme auch laufen lassen was auch bis zur Lektion 4 funktioniert.
Ich musste allerdings einiges am Quellcode ändern damit das Programm läuft.
Was ich geändert habe bei Lektion 4.
In der Klasse Beispielszene
Ich nehme import net.java.games.jogl.*; raus dafür import javax.media.opengl.*; rein.
Ich bekomme bei
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(glcaps);
die Fehlermeldung createGLCanvas is undifiend for the type GLDrawableFactory
deshalb ersetze ich es durch
GLCanvas canvas = canvas = new GLCanvas();
In der Klasse BeispielszeneView
Ich ersetze wieder
import net.java.games.jogl.*;
und füge noch
import javax.media.opengl.glu.*;
ein.
Ich bekomme die Fehlermeödung
The type BeispielszeneView must implement the inherited abstract method
GLEventListener.init(GLAutoDrawable)
Ich ersetze also
GLDrawable durch GLAutoDrawable
Als nächstes ersetze ich
GLU glu = arg0.getGLU(); durch GLU glu = new GLU();
Bei
gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_pos);
bekomme ich die Fehlermeldung
The method glLightfv(int, int, float[], int)in the type GL is not applicable for
arguments (int, int, float)
Ich füge einen int wert hinzu
gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, light_color_am, 0);
Bei
gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, mat_ambient);
das selbe.
Ich ersetze durch
gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, mat_ambient, 0);
Dann erst laeuft das Programm.
Bei Lektion 5 ist es das selbe.
Ich füge erst einmal
import javax.media.opengl.*;
import javax.media.opengl.glu.*;
ein.
Dann bekomme ich bei
dest = ByteBuffer.allocateDirect(data.length * BufferUtils.SIZEOF_INT);
die Fehlermeldung
BufferUtils canot be resolved
Ich ändere in
BufferUtil
und füge
import com.sun.opengl.util.BufferUtil;
ein.
Die nächste Fehlermeldung bei
gl.glGenTextures(1, tmp);
lautet
The method glGenTextures(int, in[], int) in the type GL is not applicable for the arguments (int, int[])
Ich ersetze also durch
gl.glGenTextures(1, tmp, 1);
Damit sind dann alle Fehlermeldungen verschwunden und ich starte das Programm.
Das Fenster erscheint bleibt aber leer und ich bekomme folgende Fehlermeldung.
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Required 786432 remaining bytes in buffer, only had 0
at com.sun.gluegen.runtime.BufferFactory.rangeCheckBytes(BufferFactory.java:274)
at com.sun.opengl.impl.GLImpl.glTexImage2D(GLImpl.java:21147)
at TextureGenerator.makeRGBTexture(TextureGenerator.java:90)
at BeispielszeneView.defineTexture(BeispielszeneView.java:235)
at BeispielszeneView.init(BeispielszeneView.java:27)
at com.sun.opengl.impl.GLDrawableHelper.init(GLDrawableHelper.java:72)
at javax.media.opengl.GLCanvas$InitAction.run(GLCanvas.java:271)
at com.sun.opengl.impl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:189)
at javax.media.opengl.GLCanvas.maybeDoSingleThreadedWorkaround(GLCanvas.java:265)
at javax.media.opengl.GLCanvas.display(GLCanvas.java:130)
at javax.media.opengl.GLCanvas.paint(GLCanvas.java:142)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Ich benutze Windows Xp Professional SP2
Java: JRE 1.6.0_01
Jogl: jogl-1.1.0-rc3
Was mache ich denn falsch.
magma
Ich habe mir das Tutorial von http://www.jogl.info/ durchgelesen und die Programme auch laufen lassen was auch bis zur Lektion 4 funktioniert.
Ich musste allerdings einiges am Quellcode ändern damit das Programm läuft.
Was ich geändert habe bei Lektion 4.
In der Klasse Beispielszene
Ich nehme import net.java.games.jogl.*; raus dafür import javax.media.opengl.*; rein.
Ich bekomme bei
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(glcaps);
die Fehlermeldung createGLCanvas is undifiend for the type GLDrawableFactory
deshalb ersetze ich es durch
GLCanvas canvas = canvas = new GLCanvas();
In der Klasse BeispielszeneView
Ich ersetze wieder
import net.java.games.jogl.*;
und füge noch
import javax.media.opengl.glu.*;
ein.
Ich bekomme die Fehlermeödung
The type BeispielszeneView must implement the inherited abstract method
GLEventListener.init(GLAutoDrawable)
Ich ersetze also
GLDrawable durch GLAutoDrawable
Als nächstes ersetze ich
GLU glu = arg0.getGLU(); durch GLU glu = new GLU();
Bei
gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_pos);
bekomme ich die Fehlermeldung
The method glLightfv(int, int, float[], int)in the type GL is not applicable for
arguments (int, int, float)
Ich füge einen int wert hinzu
gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, light_color_am, 0);
Bei
gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, mat_ambient);
das selbe.
Ich ersetze durch
gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, mat_ambient, 0);
Dann erst laeuft das Programm.
Bei Lektion 5 ist es das selbe.
Ich füge erst einmal
import javax.media.opengl.*;
import javax.media.opengl.glu.*;
ein.
Dann bekomme ich bei
dest = ByteBuffer.allocateDirect(data.length * BufferUtils.SIZEOF_INT);
die Fehlermeldung
BufferUtils canot be resolved
Ich ändere in
BufferUtil
und füge
import com.sun.opengl.util.BufferUtil;
ein.
Die nächste Fehlermeldung bei
gl.glGenTextures(1, tmp);
lautet
The method glGenTextures(int, in[], int) in the type GL is not applicable for the arguments (int, int[])
Ich ersetze also durch
gl.glGenTextures(1, tmp, 1);
Damit sind dann alle Fehlermeldungen verschwunden und ich starte das Programm.
Das Fenster erscheint bleibt aber leer und ich bekomme folgende Fehlermeldung.
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Required 786432 remaining bytes in buffer, only had 0
at com.sun.gluegen.runtime.BufferFactory.rangeCheckBytes(BufferFactory.java:274)
at com.sun.opengl.impl.GLImpl.glTexImage2D(GLImpl.java:21147)
at TextureGenerator.makeRGBTexture(TextureGenerator.java:90)
at BeispielszeneView.defineTexture(BeispielszeneView.java:235)
at BeispielszeneView.init(BeispielszeneView.java:27)
at com.sun.opengl.impl.GLDrawableHelper.init(GLDrawableHelper.java:72)
at javax.media.opengl.GLCanvas$InitAction.run(GLCanvas.java:271)
at com.sun.opengl.impl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:189)
at javax.media.opengl.GLCanvas.maybeDoSingleThreadedWorkaround(GLCanvas.java:265)
at javax.media.opengl.GLCanvas.display(GLCanvas.java:130)
at javax.media.opengl.GLCanvas.paint(GLCanvas.java:142)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Ich benutze Windows Xp Professional SP2
Java: JRE 1.6.0_01
Jogl: jogl-1.1.0-rc3
Was mache ich denn falsch.
magma