Начало работы с проблемой куба JOGL - PullRequest
1 голос
/ 15 января 2012

Я новичок в JOGL, но у меня проблемы с основами. Я думаю, что это связано с углом обзора камеры, но я не уверен. Я даже не знаю, нужен ли весь этот код или мне нужно больше.

Позволяет последним нарисованным сторонам перекрывать первые (если задняя сторона была вытянута впереди, задняя часть перекрывает фронт). Это может быть связано с глубиной или обновлением переменной после каждого кадра.

Предполагается, что оси проходят через центр куба, но куб почему-то обрезается и неправильно отображает стороны. Координаты в верхней части - это положение «глаза» камеры (число с плавающей точкой, относящееся к первым 3 параметрам gluLookAt ()). Куб имеет размер .5X.5X.5 с центром около 0,0,0 (следовательно, он простирается на 0,25 от каждой оси).

Я пока не могу опубликовать фотографии, вот мои скриншоты: http://www.flickr.com/photos/64158328@N02/sets/72157628882982925/

Я расширяю JFrame и внедряю GLEventListener. Это мой код OpenGL от моего конструктора:

GLCapabilities caps = new GLCapabilities(null);
caps.setRedBits(8);
caps.setGreenBits(8);
caps.setBlueBits(8);
caps.setAlphaBits(8);
caps.setDoubleBuffered(false);
caps.setHardwareAccelerated(true);

GLCanvas canvas = new GLCanvas(caps);
canvas.addGLEventListener(this);
canvas.addKeyListener(this);
add(canvas, BorderLayout.CENTER);

anim = new FPSAnimator(canvas, 60);
anim.setUpdateFPSFrames(10, null);
anim.start();

метод отображения (вместе с кубом и кодом оси):

GL2 gl = drawable.getGL().getGL2();
gl.glLoadIdentity();
GLU glu = new GLU();
glu.gluLookAt(eyeX, eyeY, eyeZ, 0, 0, 0, 0, 1, 0); // sets camera angle
gl.glClear(GL.GL_COLOR_BUFFER_BIT);

Метод инициализации:

GL2 gl = drawable.getGL().getGL2();
gl.glClearColor(0, 0, 0, 0);
gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-1, 1, -1, 1, -1, 1);

метод изменения формы:

GL2 gl = drawable.getGL().getGL2();
gl.glViewport(0, 0, width, height);

1 Ответ

2 голосов
/ 17 января 2012

Я понял, мне нужно включить GL_DEPTH_TEST и мне нужно вращать мир вокруг камеры, используя glRotatef() и glTranslatef() вместо использования gluLookAt() для перемещения камеры по всему миру.

...