以下は私の Windows マシンで動作しますが、Linux のフォーマット (コロンとセミコロン) に合わせてシェル コマンドを調整しました。
ディレクトリ構造を次のように設定します。
/HelloWorld.java
/lib/jwjgl.jar
/lib/jinput.jar
/lib/jwjgl_util.jar
/native/linux/... (all your native files)
コンパイル:
シェルから、HelloWorld.java を含む親ディレクトリに移動し、次のように入力します。
javac -cp .:lib/* HelloWorld.java
-cp
プログラムをコンパイルするための .java ファイルと .class ファイルが .
(現在のディレクトリ) と のjar
下の任意のファイルの両方にあることを指定しますlib/
。.jar
ファイル-cp .:lib/lwjgl.jar:lib/jinput.jar
などを手動で指定できることに注意してください*
。
走る:
親ディレクトリから次のコマンドを実行します。
java -cp .:lib/* -Djava.library.path=native/linux HelloWorld
ここでも、-cp
コンパイル済み.class
ファイルが現在のディレクトリとその/lib
ディレクトリの下の任意の jar 内にあることを指定します。-Djava.library.path=
ネイティブ ファイルが見つかる場所を指定します。/
の前に行頭を付けていないことに注意してくださいnative
。先頭の を省略することにより、ディレクトリが現在の作業ディレクトリに相対的なサブディレクトリである/
ことを java に伝えます。native
誤って を含めると/
、native が絶対ディレクトリとして扱われます。
現在の作業ディレクトリの外にあるネイティブ ファイルの場所を指定しても問題ありません。これを行うには、絶対的な場所を指定する必要があります。たとえば、Windows では次のようになります。
-Djava.library.path=C:\jwjgl-2.8.4\native\windows
これだけで、IDE やビルド スクリプトを使わずに起動して実行することができます。
ファイナルノート
書かれているように、のHelloWorld.java
動作は不十分です (画面がロックアップし、プロセスを強制終了する必要があります)。次のコードをHelloWorld.java
. 楽しみ!
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.input.Keyboard;
public class HelloWorld{
public void start() {
try {
Display.setDisplayMode(new DisplayMode(640, 480));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
// Init OpenGL
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(-3.2, 3.2, -2.4, 2.4, -1, 1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
boolean quit = false;
while (!quit) {
// Clear the screen.
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
// Begin drawing
GL11.glBegin(GL11.GL_TRIANGLES);
// Top & Red
GL11.glColor3f(1.0f, 0.0f, 0.0f);
GL11.glVertex2f(0.0f, 1.0f);
// Right & Green
GL11.glColor3f(0.0f, 1.0f, 0.0f);
GL11.glVertex2f(1.0f, 1.0f);
// Left & Blue
GL11.glColor3f(0.0f, 0.0f, 1.0f);
GL11.glVertex2f(1.0f, -1.0f);
GL11.glEnd();
Display.update();
if (Display.isCloseRequested() || Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))
quit = true;
}
Display.destroy();
}
public static void main(String args[]) {
HelloWorld application = new HelloWorld();
application.start();
}
}