LWJGL 자바 3D 개발 진행

컴퓨터 도형 학 은 줄곧 나의 영감 을 가장 자극 할 수 있 는 학과 로 나 는 그것 에 대해 매우 깊 은 흥 미 를 가지 고 있다.
이전에 C++/GLUT 로 입문 급 OpenGL 개발 을 했 는데 시간 이 오래 지 났 고 원래 의 프로그램 도 제 가 하드디스크 를 교체 하면 서 잃 어 버 렸 습 니 다.C++나
잘 못 배 워 서 요즘 다시 주 우 고 싶 지 않 아 요.지금 내 가 가장 많이 쓰 는 두 언어 는 바로 PHP 와 자바 이다.어제 우연히 인터넷 에서 두 개 를 보 았 다.
OpenGL 의 두 자바 클래스 바 인 딩 중 하 나 는 JOGL 이 고 하 나 는 LWJGL 입 니 다.이 밖 에 LWJGL 기반 게임 엔진 JME 도 있다.
JOGL 은 Sun 이 지원 하 는 OpenGL 의 자바 클래스 바 인 딩 입 니 다.그런데 지금 보니까 이 프로젝트 는 이미 죽 었 습 니 다.홈 페이지 에서 개발 가방 을 다운로드 할 수 없습니다.저 는...
그것 을 사용 하지 않 기로 결정 하 다.
LWJGL 은 전 칭 라이트 와 이 트 자바 게임 라 이브 러 리,즉 경량급 자바 게임 개발 라 이브 러 리 로 OpenGL,OpenAL 등 을 통합 했다.
강력 하고 안정 적 인 업데이트 라 고 할 수 있다.
JME 는 모두 JMonkey Engine 이 라 고 불 리 며 자바 게임 엔진 으로,하부 에는 LWJGL 을 기반 으로 하 며 앞으로 JOGL 을 지원 할 것 으로 보인다.
지금 문 제 는 LWJGL 과 JME 중 하 나 를 선택 하 는 것 입 니 다.이에 대해 저 는 두 개의 입문 절 차 를 비교 해 보 았 습 니 다.
우선 LWJGL 의:

import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.*;
 
public class Main {
    public Main() {
        try {
            Display.setTitle("Kame");
            Display.create();
            //Fullscreen,  
           // Display.setFullscreen(true);
            Display.setDisplayMode(new DisplayMode(800,600));
            Display.setVSyncEnabled(true);
           
        } catch (LWJGLException e) {
            e.printStackTrace();
        }
    }
   
 
    public void start() {
      GL11.glMatrixMode(GL11.GL_PROJECTION);
      GL11.glLoadIdentity();
      GL11.glOrtho(0, 800, 600, 0, 1, -1);
      GL11.glMatrixMode(GL11.GL_MODELVIEW);
        while (!Display.isCloseRequested()) {
         // Clear the screen and depth buffer
         GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); 
            
         // set the color of the quad (R,G,B,A)
         GL11.glColor3f(0.5f,0.5f,0.8f);
           
         // draw quad
         GL11.glBegin(GL11.GL_QUADS);
             GL11.glVertex2f(100,100);
             GL11.glVertex2f(100+200,100);
             GL11.glVertex2f(100+200,100+200);
             GL11.glVertex2f(100,100+200);
         GL11.glEnd();
            Display.update();
        }
       Display.destroy();
         
         }
 
    public static void main(String[] args) {
        new Main().start();
    }
}

그리고 JME 의:

import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.math.ColorRGBA;
public class MainEntry extends SimpleApplication {
public static void main(String[] args){
MainEntry app = new MainEntry();
app.start();
}
public void simpleInitApp() {
Box b = new Box(Vector3f.ZERO, 1, 1, 1);
Geometry geom = new Geometry("Box", b);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("m_Color", ColorRGBA.Blue);
geom.setMaterial(mat);
rootNode.attachChild(geom);
}
}

위의 두 가지 예 를 나 는 모두 성공 적 으로 컴 파일 하여 운행 하 였 으 며,환경 은 eclipse 이다.
LWJGL 의 입문 프로그램 때문에 나 는 그것 에 정사각형 을 넣 었 기 때문에 약 15 줄 의 코드 가 더 많아 졌 다.
전체적으로 보면 LWJGL 에서 사용 하 는 기본 은 OpenGL 의 변수 와 방법 이다.예 를 들 어 glBegin 등 은 원생 OpenGL 처럼 보인다.
이 점 은 GLUT 와 비슷 하지만 JME 는 LWJGL 위 에 한 겹 더 포 장 돼 있어 편리 하지만 이 를 위해 JME 를 배 울 수 밖 에 없다.
LWJGL 은 당연히 배 워 야 합 니 다.다만 이전에 OpenGL 을 사용 하여 개발 한 적 이 있다 면 LWJGL 은 사용 하 는 것 이 더 좋 을 것 입 니 다.
또 하 나 는 JME 컴 파일 된 프로그램 이 본 격 적 으로 실행 되 기 전에 JME 설정 창 이 나타 나 고 컴 파일 에 성공 하 더 라 도 프로그램 은 가끔 씩 나타 납 니 다.
정상적으로 작 동 하지 않 으 면 터미널 에 그래 픽 카드,사 운 드 장치 의 초기 화 정보 가 무더기로 나타 나 는데 왠 지 모 르 게 JME 가 준 느낌 은?
불안정 하고 통제 하기 어렵다.
결국 나 는 LWJGL 을 사용 하기 로 결정 했다.
전재 하 다http://blog.kiccp.com/341.html

좋은 웹페이지 즐겨찾기