import net.java.games.jogl.*;
public class BeispielszeneView implements GLEventListener
{
@Override
public void display(GLDrawable arg0) {
GL gl = arg0.getGL();
GLU glu = arg0.getGLU();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glLoadIdentity();
glu.gluLookAt(0, 12, 15, 0, 0, 0, 0, 1, 0);
gl.glTranslated(0, 1, 0);
drawField(gl, glu);
gl.glColor3f(1f, 0f, 0f);
drawFigure(gl, glu, 1, 3);
gl.glColor3f(1f, 1f, 0f);
drawFigure(gl, glu, 0, 3);
gl.glColor3f(0f, 0f, 1f);
drawFigure(gl, glu, 1, 2);
gl.glColor3f(1f, 0f, 1f);
drawFigure(gl, glu, 0, 2);
}
private void drawFigure(GL gl, GLU glu, float x, float z) {
gl.glPushMatrix();
gl.glTranslated(x, 0, z);
GLUquadric qobjc = glu.gluNewQuadric();
glu.gluQuadricDrawStyle(qobjc, GLU.GLU_FILL);
glu.gluQuadricNormals(qobjc, GLU.GLU_SMOOTH);
glu.gluSphere(qobjc, 0.36f, 30, 30);
gl.glRotated(90, 1, 0, 0);
glu.gluQuadricDrawStyle(qobjc, GLU.GLU_FILL);
glu.gluQuadricNormals(qobjc, GLU.GLU_SMOOTH);
glu.gluCylinder(qobjc, 0.1, 0.4, 1.2, 30, 30);
gl.glTranslated(0, 0, 1.2f);
glu.gluQuadricDrawStyle(qobjc, GLU.GLU_FILL);
glu.gluQuadricNormals(qobjc, GLU.GLU_SMOOTH);
glu.gluCylinder(qobjc, 0.4, 0.4, 0.2, 30, 30);
gl.glPopMatrix();
}
private void drawField(GL gl, GLU glu) {
gl.glBegin(GL.GL_QUADS);
gl.glVertex3f(-6.5f, -1.5f, -6.5f);
gl.glVertex3f(-6.5f, -1.5f, 6.5f);
gl.glVertex3f(6.5f, -1.5f, 6.5f);
gl.glVertex3f(6.5f, -1.5f, -6.5f);
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();
GLU glu = arg0.getGLU();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
setCamera(gl, glu);
gl.glMatrixMode(GL.GL_MODELVIEW);
}
private void setCamera(GL gl, GLU glu){
int w = 500, h = 500;
gl.glViewport(0, 0, w, h);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(50.0, 1, 2.0, 40.0);
}
@Override
public void reshape(GLDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
// TODO Auto-generated method stub
}
}