Akhirnya setelah sekian lama muncul post baru juga, ini mumpung lagi nganggur dan kecewa, jadi bisa posting lagi di sini. Langsung saja ke topik!! Kali ini kita akan belajar teknologi 3D di Java, di sini saya memakai Library LWJGL. LWJGL (Lightweight Java Game Library) adalah sebuah library untuk graphics 3D di atas plathform Java yang berdasarkan pada OpenGL. Walaupun berjalan di atas java, performa yang dihasilkan tidak lemot kok,, hampir sama dengan OpenGL dengan C++ atau lainnya..., ini saya kasih screen shoot contoh nya
Untuk mengembangkan aplikasi dengan library ini pertama harus install dan setting dulu library LWJG, tutorial lengkap buat setting nya ada di halaman installation di website LWJGL, tapi di sini saya jelaskan instalasi untuk memakai Netbeans IDE.
1. Download Dulu Library JWGL dari Alamat sourceforge ini (*lihat gambar di bawah) di situ ada 4 file, untuk tutorial ini silakan download 3 file yang paling atas.
3. Kalau sudah ter-download, buat folder LWJGL di drive C:/ ato mana saja yang penting mudah diingat, kemudian ekstrak file lwjgl-2.8.2.zip dan lwjgl-source-2.8.2.zip ke dalamnya., sehingga struktur foldernya menjadi seperti pada gambar:
4. Selanjutnya buka Netbeans IDE. dan setting Library lewat menu Tools --> Libraries
5. Pada jendela Libraries, buat Class Library baru, misal dengan nama LWJGL,
6. Setelah library kosongan terbentuk, pada Tab Classpath, klik tombol Add Jar/Folder dan cari pada folder jar hasil ekstrak tadi misal C:/LWJGL/lwjgl-2.8.2/jar, tambahkan file jinput.jar, lwjgl.jar, dan lwjgl_util.jar (tekan Ctrl untuk memilih 3 file tersebut sekaligus)
7. Kemuadian pada Tab Sources, klik Add Jar/Folder dan cari pada folder hasil ekstrak yang C:/LWJGL/ lwjgl-source-2.8.2/src/ tambahkan Folder generated dan java.
8. Dan terakhir pada Tab Javadoc tambahkan file lwjgl-docs-2.8.2.zip cari pada folder C:/LWJGL/, jika semua sudah ditambahkan. Klik Ok untuk mulai membuat project baru dengan library LWJGL ini.
Setelah library LWJG di Netbeans sudah terbentuk, silakan membuat project baru (File --> New Project --> Java --> Java Application) beri nama misal BelajarLWJGL, (kosongkan centang Create Main Class) --> Finish
Sebelum memulai coding, tambahkan dahulu Library pada project yang telah kita buat (Klik Kanan [Nama Project] --> Properties --> Libraries), pada tab Compile, klik Add Library, cari library LWJGL yang sebelumnya telah kita buat.
Kemudian setting dulu path native library LWJGL pada Property project. (Klik Kanan [Nama Project] --> Properties --> Run) tambahkan parameter pada baris VM Options :
-Djava.library.path="C:/LWJGL/lwjgl-2.8.2/lwjgl-2.8.2/native/windows"
Parameter tersebut untuk memberitahu Netbeans Letak Eksternal Native library yang dipakai oleh LWJGL, cek/eksplore pada folder tersebut untuk memastikan file dll ada. Untuk selain windows, folder native library yang dipakai menyesuaikan.
Project terbentuk dan buatlah class baru, misal dengan nama LWJGLMain (Klik Kanan [Nama Project] --> New --> Java Class). Untuk sekedar ngetes apakah library sudah bisa digunakan, bisa copas kode berikut, biar cepet:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author ffred */ import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.util.glu.GLU.*; import org.lwjgl.LWJGLException; import org.lwjgl.Sys; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; public class LWJGLMain { public static final int DISPLAY_HEIGHT = 480; public static final int DISPLAY_WIDTH = 640; private float rtri; private long lastTime; private int fps; public static void main(String[] args) { LWJGLMain main = null; try { main = new LWJGLMain(); main.create(); main.run(); }catch(Exception e){} if(main != null) { main.destroy(); } } public LWJGLMain() { //tambahkan inisiasi sesukanya } public void create() throws LWJGLException { Display.setDisplayMode(new DisplayMode(DISPLAY_WIDTH, DISPLAY_HEIGHT)); Display.setTitle("Belajar LWJGL"); Display.setFullscreen(false); Display.create(); initGL(); resizeGL(); } public void destroy() { Display.destroy(); } public void initGL() { glShadeModel(GL_SMOOTH); // Enables Smooth Shading glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Black Background glClearDepth(1.0f); // Depth Buffer Setup glEnable(GL_DEPTH_TEST); // Enables Depth Testing glDepthFunc(GL_LEQUAL); // The Type Of Depth Test To Do glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations lastTime = Sys.getTime(); } public void resizeGL() { glViewport(0,0,DISPLAY_WIDTH,DISPLAY_HEIGHT); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix // Calculate The Aspect Ratio Of The Window gluPerspective(45.0f,(float)DISPLAY_WIDTH/(float)DISPLAY_HEIGHT,0.1f,100.0f); glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glLoadIdentity(); // Reset The Modelview Matrix } public void render() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslated(0.0f,0.0f,-5.0f); // Translasi piramid ke belakang glRotatef(rtri,0.0f,1.0f,0.0f); // Rotate The Pyramid On It's Y Axis glBegin(GL_TRIANGLES); // Start Drawing The Pyramid glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Front) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f(-1.0f,-1.0f, 1.0f); // Left Of Triangle (Front) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f( 1.0f,-1.0f, 1.0f); // Right Of Triangle (Front) glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Right) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f( 1.0f,-1.0f, 1.0f); // Left Of Triangle (Right) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f( 1.0f,-1.0f, -1.0f); // Right Of Triangle (Right) glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Back) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f( 1.0f,-1.0f, -1.0f); // Left Of Triangle (Back) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f(-1.0f,-1.0f, -1.0f); // Right Of Triangle (Back) glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Left) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f(-1.0f,-1.0f,-1.0f); // Left Of Triangle (Left) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f(-1.0f,-1.0f, 1.0f); // Right Of Triangle (Left) glEnd(); // Done Drawing The Pyramid rtri+=0.2f; } public void run() { while(!Display.isCloseRequested() && !Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) { if(Display.isVisible()) { update(); render(); } else { if(Display.isDirty()) { render(); } try { Thread.sleep(100); } catch(InterruptedException ex) { } } Display.update(); Display.sync(60); //fps --> 60 } } public void update() { updateFPS(); } public void updateFPS(){ if(Sys.getTime()-lastTime>1000){ Display.setTitle("Belajar LWJGL fps: "+fps); fps = 0; lastTime = Sys.getTime(); } fps++; } }
Silakan klik Run (Tekan F6). dan jika berhasil maka akan muncul!
4 komentar:
Terima Kasih atas tutorial. Sangat membantu dan mudah diikuti :)
Terimakasih juga untuk kunjungannya. Salam kenal..
mas mohon maaf sebelumnya saya ucapkan terima kasih,
saya menggunakan NB 7.0 dan ini semua panambhaan file jar di library udah semua dan maksud dari istilah VM yang ini apa
"-Djava.library.path="C:/LWJGL/lwjgl-2.8.2/lwjgl-2.8.2/native/windows"
apakah harus membuat peth library di folder c atau gimana, sebab di project saya muncul begini run:
Error: Could not find or load main class C:\LWJGL\lwjgl-2.8.2\native
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
mohon bantuannya, dan sekali lagi terima kasih.
Kalo untuk eclipse ada tutorialnya tidak kak? Soalnya saya pakai eclipse.
Posting Komentar