J'ai passé environ 2 jours à essayer de trouver des objets 3D en utilisant lwjgl, et je n'ai rien trouvé. Je peux facilement rendre des objets 2D, et quand j'ai essayé de rendre des objets 3D, soit le programme s'est écrasé, soit un écran noir a été ouvert, en ce moment, j'utilise Eclipse, et je le lance dans cet environnement (je ne sais pas Je ne sais pas si c'est le problème). Si quelqu'un pouvait me diriger vers un bon tutoriel, ou simplement me donner une explication de ce que je fais de mal, ce serait apprécié. Voici mon code:Conseils nécessaires pour les objets 3D utilisant la bibliothèque de jeux Java légère (LWJGL)
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 ***************
J'ai lu à la fois de vos réponses, et ont fait un code de LWJGL java sur cette base, mais quand j'ai essayé de le lancer dans l'environnement Eclipse, il m'a donné l'erreur:
usage:
XPMFile <file>
java.lang.ArrayIndexOutOfBoundsException: 0
at org.lwjgl.util.XPMFile.main(XPMFile.java:260)
Alors, encore une fois, voici mon code:
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 si vous avez quelque chose à contribuer à la réponse ci-dessus s'il vous plaît poster des réponses ici: How to import lwjgl_util
Merci pour la réponse, je vais essayer. – JAW1025
Okay, j'ai regardé le gluPerspective sur le site Web de lwjgl, et je sais qu'il veut quatre valeurs de flotteur, mais comment l'employez-vous?, Et que signifient les valeurs de flotteur? – JAW1025
ne pense pas que je serai en mesure de l'expliquer mieux que ce lien http://profs.sci.univr.it/~colombar/html_openGL_tutorial/fr/03basic_transforms_018.html Tout ce qui précède le point nearClip et après le point farClip est écrêté (c'est-à-dire non tracé), aspect est généralement le rapport de l'écran (c'est-à-dire largeur/hauteur), et fov est l'angle du champ de vision. – Gavin