Hi,
ich hab Probleme mit der Kameraperspektive in OpenGL. Ich benutze dafür Java und JOGL.
So funktioniert der Code, allerdings liegt die Kamera nicht da, wo ich will. Wenn ich eine der Auskommentierungen rausnehme ist das Bild schwarz. Aber warum raff ich nicht ... Wie gehts denn richtig?
mfg
serow
ich hab Probleme mit der Kameraperspektive in OpenGL. Ich benutze dafür Java und JOGL.
Code:
/*
* GLULookAtTest.java
*
* Created on May 8, 2007, 10:43 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package jogltesting;
import java.awt.*;
import java.awt.event.*;
import javax.media.opengl.glu.GLU;
import javax.media.opengl.*;
import com.sun.opengl.util.*;
import jogltesting.myglapi.element.sceneelement.Camera;
import jogltesting.myglapi.*;
import jogltesting.myglapi.geometry.*;
/**
*
* @author mathias
*/
public class GLULookAtTest implements GLEventListener {
/** Creates a new instance of GLULookAtTest */
public GLULookAtTest() {
}
/*
* GLEventListener
*/
public void init(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
GLU glu = new GLU();
gl.glEnable(GL.GL_LIGHTING);
gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] {2f, 2f, 2f, 0f}, 0);
gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, new float[] {1f, 0f, 0f, 1f}, 0);
gl.glEnable(GL.GL_LIGHT0);
gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE);
gl.glEnable(GL.GL_CULL_FACE);
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
GLU glu = new GLU();
float h = (float)height / (float)width;
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
//gl.glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
GLU glu = new GLU();
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
//glu.gluLookAt(2f, 2f, 0f, 0f, 0f, 0f, 0f, 0f, 1f);
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glPushMatrix();
gl.glRotatef(45f, 1f, 0f, 0f);
glu.gluSphere(glu.gluNewQuadric(), 0.5f, 30, 30);
gl.glPopMatrix();
}
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
}
public static void main(String[] args) {
final GLULookAtTest engine = new GLULookAtTest();
GLJPanel panel = new GLJPanel();
panel.addGLEventListener(engine);
Frame frame = new Frame();
frame.add(panel);
frame.setSize(600, 600);
frame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
}
);
frame.setVisible(true);
}
}
So funktioniert der Code, allerdings liegt die Kamera nicht da, wo ich will. Wenn ich eine der Auskommentierungen rausnehme ist das Bild schwarz. Aber warum raff ich nicht ... Wie gehts denn richtig?
mfg
serow