lwjglを使用して3Dオブジェクトを作成する方法を調べるのに約2日間を費やしましたが、何も見つかりませんでした。私は簡単に2Dオブジェクトをレンダリングすることができます.3Dオブジェクトをレンダリングしようとすると、プログラムがクラッシュしたり、黒いスクリーンが開かれたりしました。今はEclipseを使用しています。それが問題かどうかは分かりません)。誰かが私に良いチュートリアルを指すことができ、あるいは私が間違っていることの説明を私に与えることができれば、それは感謝します。ここに私のコードは次のとおりです。Lightweight Java Game Library(LWJGL)を使用して3Dオブジェクトに必要なアドバイス
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
public class Objects {
public static void main(String[] args) {
Objects objects = new Objects();
objects.start();
}
public void start() {
try {
Display.setDisplayMode(new DisplayMode(800, 600));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
initGL();
while(!Display.isCloseRequested) {
Cube();
Display.update();
}
Display.destroy();
}
public void initGL() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 600, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
return;
}
public void cube() {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
//front face
GL11.glColor3d(0.0, 1.0, 1.0);
GL11.glVertex3d(1.0, 1.0, -1.0);
GL11.glVertex3d(-1.0, 1.0, -1.0);
GL11.glVertex3d(-1.0, -1.0, -1.0);
GL11.glVertex3d(1.0, -1.0, -1.0);
//side face
GL11.glColor3d(1.0, 0.0, 0.0);
GL11.glVertex3d(1.0, 1.0, -1.0);
GL11.glVertex3d(1.0, 1.0, -3.0);
GL11.glVertex3d(1.0, -1.0, -3.0);
GL11.glVertex3d(1.0, -1.0, -1.0);
...(I kept going like this for the rest of the faces)
return;
}
***************私は両方読んだEDIT ***************
は、あなたの答えの、及びそれに基づくJavaのLWJGLコードを作った、私はEclipse環境でそれを実行しようとしたときしかし、それは私にエラーを与えた:
usage:
XPMFile <file>
java.lang.ArrayIndexOutOfBoundsException: 0
at org.lwjgl.util.XPMFile.main(XPMFile.java:260)
だから、もう一度、ここに私のコードです:
package testing;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.GLU;
public class CubeRender {
public static void main(String[] args) {
CubeRender cube = new CubeRender();
cube.start();
}
public void start() {
try {
Display.setDisplayMode(new DisplayMode(800, 600));
Display.create();
} catch(LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
initGL();
while(!Display.isCloseRequested()) {
renderCube();
Display.update();
}
Display.destroy();
}
public void initGL() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GLU.gluPerspective(45, 100, 1, 100);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthFunc(GL11.GL_LEQUAL);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
}
public void renderCube() {
double x = 1;
double y = 1;
double z = -1;
//front face
GL11.glBegin(GL11.GL_QUADS);
GL11.glNormal3d(0, 0, 1);
GL11.glColor3d(0.0, 1.0, 1.0);
GL11.glVertex3d(x, y, z);
GL11.glVertex3d(x-2, y, z);
GL11.glVertex3d(x-2, y-2, z);
GL11.glVertex3d(x, y-2, z);
GL11.glEnd();
//right face
GL11.glBegin(GL11.GL_QUADS);
GL11.glNormal3d(-1, 0, 0);
GL11.glVertex3d(x, y, z);
GL11.glVertex3d(x, y, z-2);
GL11.glVertex3d(x, y-2, z-2);
GL11.glVertex3d(x, y-2, z);
GL11.glEnd();
return;
}
}
****** EDIT 2 ****** あなたはここの回答を投稿してください上記の回答のために貢献する何かを持っている場合:あなたは、2D正投影図を使用して How to import lwjgl_util
おかげで、私はそれを試してみましょう。 – JAW1025
さて、私はlwjglウェブサイトのgluPerspectiveを見て、4つの浮動小数点値が必要だと知っていますが、どのように使用していますか?浮動小数点値はどういう意味ですか? – JAW1025
私はこのリンクよりもよく説明できないと思うhttp://profs.sci.univr.it/~colombar/html_openGL_tutorial/en/03basic_transforms_018.html nearClipポイントの前とfarClipポイントの後のものは何ですかクリップされた(すなわち、描かれていない)アスペクトは、通常、スクリーンの比(すなわち、幅/高さ)であり、fovは、視野の角度である。 – Gavin