Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Java OpenGL - Взаимодействие Java 2D и OpenGL10 июня 2011Оглавление: 1. Java OpenGL 2. Состояние разработки и стандартизация 3. Взаимодействие Java 2D и OpenGL 4. Инсталляция, подключение и использование Начиная с Java Standard Edition версии 1.6, Java 2D API и OpenGL могут взаимодействовать посредством JOGL:
3D Tetrahedron ExampleПрограмма показывает пример простейшей отрисовки тетраэдра с использованием JOGL. Класс
import javax.media.opengl.GL;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.glu.GLU;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class JavaRenderer
implements GLEventListener, KeyListener {
private float rotateT = 0.0f;
private static final GLU glu = new GLU;
public void display {
final GL gl = gLDrawable.getGL;
gl.glClear;
gl.glClear;
gl.glLoadIdentity;
gl.glTranslatef;
gl.glRotatef;
gl.glRotatef;
gl.glRotatef;
gl.glRotatef;
gl.glBegin;
// Front
gl.glColor3f;
gl.glVertex3f;
gl.glColor3f;
gl.glVertex3f;
gl.glColor3f;
gl.glVertex3f;
// Right Side Facing Front
gl.glColor3f;
gl.glVertex3f;
gl.glColor3f;
gl.glVertex3f;
gl.glColor3f;
gl.glVertex3f;
// Left Side Facing Front
gl.glColor3f;
gl.glVertex3f;
gl.glColor3f;
gl.glVertex3f;
gl.glColor3f;
gl.glVertex3f;
// Bottom
gl.glColor3f;
gl.glVertex3f;
gl.glColor3f;
gl.glVertex3f;
gl.glColor3f;
gl.glVertex3f;
gl.glEnd;
rotateT += 0.2f;
}
public void displayChanged(GLAutoDrawable gLDrawable,
boolean modeChanged, boolean deviceChanged) {
}
public void init {
final GL gl = gLDrawable.getGL;
gl.glShadeModel;
gl.glClearColor;
gl.glClearDepth;
gl.glEnable;
gl.glDepthFunc;
gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT,
GL.GL_NICEST);
gLDrawable.addKeyListener;
}
public void reshape(GLAutoDrawable gLDrawable, int x,
int y, int width, int height) {
final GL gl = gLDrawable.getGL;
if {
height = 1;
}
final float h = width / height;
gl.glMatrixMode;
gl.glLoadIdentity;
glu.gluPerspective;
gl.glMatrixMode;
gl.glLoadIdentity;
}
public void keyPressed {
if == KeyEvent.VK_ESCAPE) {
JavaDia.bQuit = true;
JavaDia.displayT = null;
System.exit;
}
}
public void keyReleased {
}
public void keyTyped {
}
}
import javax.media.opengl.GLCanvas;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class JavaDia implements Runnable {
static Thread displayT = new Thread);
static boolean bQuit = false;
public static void main {
displayT.start;
}
public void run {
Frame frame = new Frame;
GLCanvas canvas = new GLCanvas;
canvas.addGLEventListener);
frame.add;
frame.setSize;
frame.setUndecorated;
int size = frame.getExtendedState;
size |= Frame.MAXIMIZED_BOTH;
frame.setExtendedState;
frame.addWindowListener {
public void windowClosing {
bQuit = true;
}
});
frame.setVisible;
// frame.show;
canvas.requestFocus;
while {
canvas.display;
}
}
}
Просмотров: 4344
|