Segitiga 3D dengan Library LWJGL di JAVA
Buatlah project baru ( File > New Project > Java > Java Application ) beri nama misal Segitiga3D,
Centang kosongkan Create Main Kelas ( Jangan membuat dulu 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.
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 BelajarLWJGL (Klik Kanan [Nama Project] > New > Java Class).
Copas coding berikut :
package Segitiga3D;
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;
/**
* Belajar Java dengan Library LWJGL
* @author o9ie.blogspot.com
*/
public class BelajarLWJGL {
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) {
BelajarLWJGL main = null;
try {
main = new BelajarLWJGL();
main.create();
main.run();
}catch(Exception e){}
if(main != null) {
main.destroy();
}
}
public BelajarLWJGL() {
//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 dan jika berhasil maka tampilannya akan seperti berikut :



Comments
Tapi pas aku Run, ko gak keluar apa-apa ya??
run:
BUILD SUCCESSFUL (total time: 0 seconds)
Cuma keluar ini aja, gak ada form yang muncul 1 pun..
Kira" apa masalahnya ya??
Kalau mengikutinya dengan sama persis harusnya muncul seperti yang saya lakukan.
Nanti saya upload source saya kalau kamu mau.
Post a Comment
Tulis Komentar