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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.