Hi zusammen,
ich hab hier was zusammen getippt um ein paar erste Schritte mit JOGL zu wagen.
Problem ist jetzt, das eine Seite eigentlich Rot sein sollte, die wird aber gar nicht gezeigt. Außerdem ist der Würfel beim Rotieren an manchen Seiten zu bestimmten Winkeln durchsichtig.
Kann mir jemand erklären wieso?
Außerdem frage ich mich, wieso der awt MouseListerner nicht geht :/
Hoffe mir kann jmd. helfen.
Danke schonmal!
Hier der Code:
ich hab hier was zusammen getippt um ein paar erste Schritte mit JOGL zu wagen.
Problem ist jetzt, das eine Seite eigentlich Rot sein sollte, die wird aber gar nicht gezeigt. Außerdem ist der Würfel beim Rotieren an manchen Seiten zu bestimmten Winkeln durchsichtig.
Kann mir jemand erklären wieso?
Außerdem frage ich mich, wieso der awt MouseListerner nicht geht :/
Hoffe mir kann jmd. helfen.
Danke schonmal!
Hier der Code:
Java:
import java.awt.Frame;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import net.java.games.jogl.Animator;
import net.java.games.jogl.GL;
import net.java.games.jogl.GLCanvas;
import net.java.games.jogl.GLCapabilities;
import net.java.games.jogl.GLDrawable;
import net.java.games.jogl.GLDrawableFactory;
import net.java.games.jogl.GLEventListener;
public class NewJOGL {
private static float angle = 0;
private static final int SIZE = 160;
public static void main(String[] args) {
new NewJOGL();
}
public NewJOGL() {
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(
new GLCapabilities());
JOGLImpl jogl = new JOGLImpl();
canvas.addGLEventListener(jogl);
Animator animator = new Animator(canvas);
addCanvasToFrame(canvas, animator, jogl);
animator.start();
}
private void addCanvasToFrame(GLCanvas canvas, final Animator animator, JOGLImpl jogl) {
Frame f = new Frame();
f.setSize(500, 500);
f.add(canvas);
f.setVisible(true);
f.addMouseListener(jogl);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
animator.stop();
System.exit(0);
}
});
}
class JOGLImpl implements GLEventListener, MouseListener {
@Override
public void display(GLDrawable arg0) {
GL gl = arg0.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
angle++;
// System.out.println(angle);
gl.glRotatef(angle / 120, 1, 1, 0);
drawCenteredCube(gl);
}
private void drawCenteredCube(GL gl) {
gl.glColor4f(1, 0, 0, 0);
drawSquareFace(gl);
gl.glColor4f(1, 1, 0, 0);
gl.glRotatef(90, 1, 0, 0);
drawSquareFace(gl);
gl.glColor4f(0, 0, 1, 0);
gl.glRotatef(90, 1, 0, 0);
drawSquareFace(gl);
gl.glColor4f(0, 1, 0, 0);
gl.glRotatef(90, 1, 0, 0);
drawSquareFace(gl);
gl.glColor4f(0, 1, 1, 0);
gl.glRotatef(90, 0, 1, 0);
drawSquareFace(gl);
gl.glColor4f(1, 0, 1, 0);
gl.glRotatef(180, 0, 1, 0);
drawSquareFace(gl);
}
private void drawSquareFace(GL gl) {
gl.glBegin(GL.GL_QUADS);
gl.glVertex3f(-SIZE / 2, -SIZE / 2, SIZE / 2);
gl.glVertex3f(-SIZE / 2, SIZE / 2, SIZE / 2);
gl.glVertex3f(SIZE / 2, SIZE / 2, SIZE / 2);
gl.glVertex3f(SIZE / 2, -SIZE / 2, SIZE / 2);
gl.glEnd();
}
@Override
public void displayChanged(GLDrawable arg0, boolean arg1, boolean arg2) {
// TODO Auto-generated method stub
}
@Override
public void init(GLDrawable arg0) {
GL gl = arg0.getGL();
gl.glClearColor(0, 0, 0, 1);
gl.glColor3f(0, 0, 0);
}
@Override
public void reshape(GLDrawable drawable, int x, int y, int width,
int height) {
GL gl = drawable.getGL();
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-width, width, -height, height, -160, 160);
// TODO
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("clicked");
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("entered");
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("exit");
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("pressed");
}
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("released");
}
}
}