Я пытаюсь сделать два метода для создания куба. Дело в том, что если я рисую куб вручную, освещение не отображается. Я новичок, так что это может быть тривиально, но я в недоумении. Что показывает в моем окне это:Освещение OpenGL, не действующее на некоторые фигуры
Куб, который делает шоу оттенков является один я сделал с GLUT, другие два я сделал вручную рисуя каждое лицо. Вот мой метод отображения: (., Так как это, как предполагается, будет масштабироваться, текстурированные, и стать частью стены ... в случае, если Вы задавались вопросом)
public void display(GLAutoDrawable glautodrawable) {
GL2 gl2 = glautodrawable.getGL().getGL2();
gl2.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
gl2.glMatrixMode(GL2.GL_MODELVIEW);
// gl2.glLoadIdentity();
gl2.glPushMatrix();
gl2.glTranslatef(2f, -2f, -4f);
gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_AMBIENT, FloatBuffer.wrap(QA_WHITE));
gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_DIFFUSE, FloatBuffer.wrap(QA_WHITE));
gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SPECULAR, FloatBuffer.wrap(QA_WHITE));
gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SHININESS, FloatBuffer.wrap(new float[]{50f}));
wallUnit(glautodrawable);
gl2.glPopMatrix();
gl2.glPushMatrix();
gl2.glTranslatef(-2f, -2f, -10f);
wallUnit(glautodrawable);
gl2.glPopMatrix();
gl2.glPushMatrix();
gl2.glTranslatef(-4.5f, -2.5f, -10f);
glut.glutSolidCube(2f);
gl2.glPopMatrix();
gl2.glFlush();
}
И мой wallUnit() метод
private static void wallUnit(GLAutoDrawable glAutoDrawable) {
GL2 gl2 = glAutoDrawable.getGL().getGL2();
gl2.glBegin(gl2.GL_QUADS);
// Back face
gl2.glColor3f(1,0,0);
gl2.glVertex3f(-1.0f, -1.0f, -1.0f);
gl2.glVertex3f(1.0f, -1.0f, -1.0f);
gl2.glVertex3f(1.0f, 1f, -1.0f);
gl2.glVertex3f(-1.0f, 1f, -1.0f);
// Bottom face
gl2.glColor3f(0,1,0);
gl2.glVertex3f(-1.0f, -1.0f, -1.0f);
gl2.glVertex3f(1.0f, -1.0f, -1.0f);
gl2.glVertex3f(1.0f, -1.0f, 1.0f);
gl2.glVertex3f(-1.0f, -1.0f, 1.0f);
// Right side
gl2.glVertex3f(1.0f, -1.0f, -1.0f);
gl2.glVertex3f(1.0f, -1.0f, 1.0f);
gl2.glVertex3f(1.0f, 1.0f, 1.0f);
gl2.glVertex3f(1.0f, 1f, -1.0f);
// Top face
gl2.glVertex3f(1.0f, 1.0f, 1.0f);
gl2.glVertex3f(1.0f, 1f, -1.0f);
gl2.glVertex3f(-1.0f, 1f, -1.0f);
gl2.glVertex3f(-1.0f, 1f, 1.0f);
// Left side
gl2.glVertex3f(-1.0f, -1.0f, -1.0f);
gl2.glVertex3f(-1.0f, -1.0f, 1.0f);
gl2.glVertex3f(-1.0f, 1.0f, 1.0f);
gl2.glVertex3f(-1.0f, 1f, -1.0f);
// Front face
gl2.glColor3f(1,0,0);
gl2.glVertex3f(-1.0f, -1.0f, 1.0f);
gl2.glVertex3f(1.0f, -1.0f, 1.0f);
gl2.glVertex3f(1.0f, 1f, 1.0f);
gl2.glVertex3f(-1.0f, 1f, 1.0f);
gl2.glEnd();
}
Awesome, работает как шарм. Благодаря! – Snowflake