لتنزيل ال Package إذهب إلى
كيفية كتابة برامج ال OpenGL في ال Java, خطوات التنزيل و روابط....
المثال كما وعدتكم:
import java.awt.*;
import java.awt.event.*;
import net.java.games.jogl.*;
public class Lesson02
{
static class Renderer
implements GLEventListener,
KeyListener
{
public void display(GLDrawable gLDrawable)
{هنا يمكنك وضع أوامر الرسم بنفس الطريقة التي كنت تعمل بها في السي
فقط قم بتعريف Object gl
ثم إستدعي ال Function
من خلال ال gl
مثلاَ: بدلا من
()glLoadIdentity
() gl.glLoadIdentity
و كذلك بالنسبة لل glu
و كما تعوّدت في السي !!!
ملاحظة مهمة للإخوة الذين يعملون على نسخة Java 1.5.0 الجديدة
يمكنك عمل improt static net.games.jogl.*;
و على ما أظن يمكنك العمل دون تعريف ال Object gl
final GL gl = gLDrawable.getGL(); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); gl.glLoadIdentity(); gl.glTranslatef(-1.5f, 0.0f, -6.0f); gl.glBegin(GL.GL_TRIANGLES); // Drawing Using Triangles gl.glVertex3f( 0.0f, 1.0f, 0.0f); // Top gl.glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left gl.glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right gl.glEnd(); // Finished Drawing The Triangle gl.glTranslatef(3.0f, 0.0f, 0.0f); gl.glBegin(GL.GL_QUADS); // Draw A Quad gl.glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left gl.glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right gl.glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right gl.glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left gl.glEnd(); // Done Drawing The Quad gl.glFlush(); }
فقط إكتب ال Function
كما هو
public void displayChanged(GLDrawable gLDrawable, boolean modeChanged, boolean deviceChanged)
{
}هذا ال Function
يقوم بعمل إنشاء لل OpenGL
وتجهيز إستقبال الأحداث من keyboard
public void init(GLDrawable gLDrawable)
{
final GL gl = gLDrawable.getGL();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glShadeModel(GL.GL_FLAT);
gLDrawable.addKeyListener(this);
}تجهيز العرض من هنا
public void reshape(GLDrawable gLDrawable, int x, int y, int width, int height)
{{
final GL gl = gLDrawable.getGL();
final GLU glu = gLDrawable.getGLU();
if (height <= 0) // avoid a divide by zero error!
height = 1;
final float h = (float)width / (float)height;
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(45.0f, h, 1.0, 20.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}} public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
System.exit(0);
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
/** Program's main entry point
* @param args command line arguments.
*/
public static void main(String[] args)
{تجهيز ال Window
Frame frame = new Frame("Lesson 2: Your First Polygon");
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
canvas.addGLEventListener(new Renderer());
frame.add(canvas);
frame.setSize(640, 480);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.show();
canvas.requestFocus();
}
}