diff options
Diffstat (limited to 'examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/ReflectionTab.java')
-rw-r--r-- | examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/ReflectionTab.java | 556 |
1 files changed, 0 insertions, 556 deletions
diff --git a/examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/ReflectionTab.java b/examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/ReflectionTab.java deleted file mode 100644 index db654b1b90..0000000000 --- a/examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/ReflectionTab.java +++ /dev/null @@ -1,556 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.swt.opengl.examples; - - -import org.eclipse.opengl.*; -import org.eclipse.swt.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class ReflectionTab extends OpenGLTab { - private float ballY = 0.0f; - private float ballZ = 1.6666666f; - private float ballX = 0.0f; - private float ballRot = 0.0f; - private float cubeX = 2.5f; - private float cubeY = -2.0f; - private float cubeZ = 2.0f; - private float xPos = 0.0f; - private float yPos = 0.0f; - private float zPos = 22.0f; - private float ballRotSpeed = 0.0f; - private int quadratic; - private int[] textures = new int[3]; - private final static int - LIST_INDEX_BALL = 1,LIST_INDEX_BOX = 2, - LIST_INDEX_MIRROR = 3, LIST_INDEX_ROOM = 4; - private final static int - TEXTURE_INDEX_BALL = 0, TEXTURE_INDEX_FLOOR = 1, - TEXTURE_INDEX_BOX = 2; - private final static String[] IMAGES = { - "images/Ball.jpg", "images/Floor.jpg", "images/Box.bmp" }; - private final static int SLEEP_LENGTH = 50; - - /** - * Draws the ball - */ - void createBall() { - GL.glNewList(LIST_INDEX_BALL, GL.GL_COMPILE); - GL.glColor3f(1.0f, 1.0f, 1.0f); - GL.glBindTexture(GL.GL_TEXTURE_2D, textures[TEXTURE_INDEX_BALL]); - GLU.gluSphere(quadratic, 0.35f, 32, 16); - GL.glDisable(GL.GL_BLEND); - GL.glEndList(); - } - - /** - * Draws the box - */ - void createBox() { - float size = 1.0f; - GL.glNewList(LIST_INDEX_BOX, GL.GL_COMPILE); - GL.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - GL.glBindTexture(GL.GL_TEXTURE_2D, textures[TEXTURE_INDEX_BOX]); - GL.glBegin(GL.GL_QUADS); - // front - GL.glNormal3f(0.0f, 0.0f, 1.0f); - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-size, -size, size); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(size, -size, size); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(size, size, size); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(-size, size, size); - // back - GL.glNormal3f(0.0f, 0.0f, -1.0f); - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-size, -size, -size); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(size, -size, -size); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(size, size, -size); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(-size, size, -size); - // left - GL.glNormal3f(-1.0f, 0.0f, 0.0f); - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-size, -size, -size); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(-size, -size, size); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(-size, size, size); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(-size, size, -size); - // right - GL.glNormal3f(1.0f, 0.0f, 0.0f); - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(size, -size, -size); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(size, -size, size); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(size, size, size); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(size, size, -size); - // top - GL.glNormal3f(0.0f, 1.0f, 0.0f); - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(size, size, -size); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(-size, size, -size); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(-size, size, size); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(size, size, size); - // bottom - GL.glNormal3f(0.0f, -1.0f, 0.0f); - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(size, -size, -size); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(-size, -size, -size); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(-size, -size, size); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(size, -size, size); - GL.glEnd(); - GL.glEndList(); - } - - /** - * @see OpenGLTab#createControls(Composite) - */ - void createControls(Composite composite) { - Group ballTranslation = new Group(composite, SWT.NONE); - ballTranslation.setLayout(new GridLayout(2, false)); - ballTranslation.setText("Ball Translation"); - - new Label(ballTranslation, SWT.NONE).setText("X:"); - final Slider ballXPosSlider = new Slider(ballTranslation, SWT.NONE); - ballXPosSlider.setIncrement(1); - ballXPosSlider.setMaximum(38); - ballXPosSlider.setMinimum(0); - ballXPosSlider.setThumb(2); - ballXPosSlider.setPageIncrement(2); - ballXPosSlider.setSelection(18); - ballXPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - ballX = (float) (ballXPosSlider.getSelection() - 18) / 5; - } - }); - - new Label(ballTranslation, SWT.NONE).setText("Y:"); - final Slider ballYPosSlider = new Slider(ballTranslation, SWT.NONE); - ballYPosSlider.setIncrement(1); - ballYPosSlider.setMaximum(38); - ballYPosSlider.setMinimum(0); - ballYPosSlider.setThumb(2); - ballYPosSlider.setPageIncrement(2); - ballYPosSlider.setSelection(18); - ballYPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - ballY = (float) (ballYPosSlider.getSelection() - 18) / 5; - } - }); - - new Label(ballTranslation, SWT.NONE).setText("Z:"); - final Slider ballZPosSlider = new Slider(ballTranslation, SWT.NONE); - ballZPosSlider.setIncrement(1); - ballZPosSlider.setMaximum(24); - ballZPosSlider.setMinimum(0); - ballZPosSlider.setThumb(1); - ballZPosSlider.setPageIncrement(2); - ballZPosSlider.setSelection(4); - ballZPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - ballZ = (float) (ballZPosSlider.getSelection() + 1) / 3; - } - }); - - Group cubeTranslation = new Group(composite, SWT.NONE); - cubeTranslation.setLayout(new GridLayout(2, false)); - cubeTranslation.setText("Cube Translation"); - - new Label(cubeTranslation, SWT.NONE).setText("X:"); - final Slider cubeXPosSlider = new Slider(cubeTranslation, SWT.NONE); - cubeXPosSlider.setIncrement(1); - cubeXPosSlider.setMaximum(14); - cubeXPosSlider.setMinimum(0); - cubeXPosSlider.setThumb(2); - cubeXPosSlider.setPageIncrement(2); - cubeXPosSlider.setSelection(11); - cubeXPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - cubeX = (float) (cubeXPosSlider.getSelection() - 6) / 2; - } - }); - - new Label(cubeTranslation, SWT.NONE).setText("Y:"); - final Slider cubeYPosSlider = new Slider(cubeTranslation, SWT.NONE); - cubeYPosSlider.setIncrement(1); - cubeYPosSlider.setMaximum(14); - cubeYPosSlider.setMinimum(0); - cubeYPosSlider.setThumb(2); - cubeYPosSlider.setPageIncrement(2); - cubeYPosSlider.setSelection(2); - cubeYPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - cubeY = (float) (cubeYPosSlider.getSelection() - 6) / 2; - } - }); - - new Label(cubeTranslation, SWT.NONE).setText("Z:"); - final Slider cubeZPosSlider = new Slider(cubeTranslation, SWT.NONE); - cubeZPosSlider.setIncrement(1); - cubeZPosSlider.setMaximum(10); - cubeZPosSlider.setMinimum(1); - cubeZPosSlider.setThumb(1); - cubeZPosSlider.setPageIncrement(2); - cubeZPosSlider.setSelection(2); - cubeZPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - cubeZ = (float) (cubeZPosSlider.getSelection() + 2) / 2; - } - }); - - Group movementGroup = new Group(composite, SWT.NONE); - movementGroup.setLayout(new GridLayout(2, false)); - movementGroup.setText("Room Rotation"); - - new Label(movementGroup, SWT.NONE).setText("X:"); - final Slider screenXPosSlider = new Slider(movementGroup, SWT.NONE); - screenXPosSlider.setIncrement(1); - screenXPosSlider.setMaximum(42); - screenXPosSlider.setMinimum(0); - screenXPosSlider.setThumb(2); - screenXPosSlider.setPageIncrement(2); - screenXPosSlider.setSelection(20); - screenXPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - xPos = screenXPosSlider.getSelection() - 20; - } - }); - - new Label(movementGroup, SWT.NONE).setText("Y:"); - final Slider screenYPosSlider = new Slider(movementGroup, SWT.NONE); - screenYPosSlider.setIncrement(1); - screenYPosSlider.setMaximum(42); - screenYPosSlider.setMinimum(0); - screenYPosSlider.setThumb(2); - screenYPosSlider.setPageIncrement(2); - screenYPosSlider.setSelection(20); - screenYPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - yPos = screenYPosSlider.getSelection() - 20; - } - }); - - new Label(movementGroup, SWT.NONE).setText("Z:"); - final Slider screenZPosSlider = new Slider(movementGroup, SWT.NONE); - screenZPosSlider.setIncrement(1); - screenZPosSlider.setMaximum(42); - screenZPosSlider.setMinimum(0); - screenZPosSlider.setThumb(2); - screenZPosSlider.setPageIncrement(2); - screenZPosSlider.setSelection(20); - screenZPosSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - zPos = screenZPosSlider.getSelection() + 2; - } - }); - - new Label(composite, SWT.NONE).setText("Ball Rotation Speed:"); - final Slider ballRotSlider = new Slider(composite, SWT.NONE); - ballRotSlider.setIncrement(1); - ballRotSlider.setMaximum(22); - ballRotSlider.setMinimum(0); - ballRotSlider.setThumb(2); - ballRotSlider.setPageIncrement(2); - ballRotSlider.setSelection(0); - ballRotSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - ballRotSpeed = ballRotSlider.getSelection(); - } - }); - } - - /** - * Draws the mirror - */ - void createMirror() { - GL.glNewList(LIST_INDEX_MIRROR, GL.GL_COMPILE); - GL.glDisable(GL.GL_TEXTURE_2D); - GL.glColor4f(1.0f, 1.0f, 1.0f, 0.4f); - GL.glNormal3f(0.0f, 0.0f, 1.0f); - GL.glBegin(GL.GL_QUADS); - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-2.0f, 2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(-2.0f, -2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(2.0f, -2.0f, 0.0f); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(2.0f, 2.0f, 0.0f); - GL.glEnd(); - GL.glEnable(GL.GL_TEXTURE_2D); - GL.glEndList(); - } - - /** - * Draws the room - */ - void createRoom() { - GL.glNewList(LIST_INDEX_ROOM, GL.GL_COMPILE); - GL.glDisable(GL.GL_TEXTURE_2D); - GL.glBegin(GL.GL_QUADS); - // left wall - GL.glNormal3f(1.0f, 0.0f, 0.0f); - GL.glVertex3f(-4.0f, 4.0f, 0.0f); - GL.glVertex3f(-4.0f, 4.0f, 6.0f); - GL.glVertex3f(-4.0f, -4.0f, 6.0f); - GL.glVertex3f(-4.0f, -4.0f, 0.0f); - // right wall - GL.glNormal3f(-1.0f, 0.0f, 01.0f); - GL.glVertex3f(4.0f, 4.0f, 0.0f); - GL.glVertex3f(4.0f, 4.0f, 6.0f); - GL.glVertex3f(4.0f, -4.0f, 6.0f); - GL.glVertex3f(4.0f, -4.0f, 0.0f); - // ceiling - GL.glNormal3f(0.0f, -1.0f, 0.0f); - GL.glColor3f(0.9f, 0.9f, 0.9f); - GL.glVertex3f(-4.0f, 4.0f, 0.0f); - GL.glVertex3f(-4.0f, 4.0f, 6.0f); - GL.glVertex3f(4.0f, 4.0f, 6.0f); - GL.glVertex3f(4.0f, 4.0f, 0.0f); - GL.glEnd(); - // back wall with triangle strip to illiminate t-intersections - GL.glBegin(GL.GL_TRIANGLE_STRIP); - GL.glNormal3f(0.0f, 0.0f, 1.0f); - GL.glVertex3d(-4.0, -4.0, 0.0); - GL.glVertex3d(-2.2, -4.0, 0.0); - GL.glVertex3d(-2.2, -2.2, 0.0); - GL.glVertex3d(2.2, -4.0, 0.0); - GL.glVertex3d(2.2, -2.2, 0.0); - GL.glVertex3d(4.0, -4.0, 0.0); - GL.glVertex3d(2.2, -2.2, 0.0); - GL.glVertex3d(4.0, -2.2, 0.0); - GL.glVertex3d(2.2, 2.2, 0.0); - GL.glVertex3d(4.0, 2.2, 0.0); - GL.glVertex3d(2.2, 2.2, 0.0); - GL.glVertex3d(4.0, 4.0, 0.0); - GL.glVertex3d(2.2, 2.2, 0.0); - GL.glVertex3d(2.2, 4.0, 0.0); - GL.glVertex3d(-2.2, 2.2, 0.0); - GL.glVertex3d(-2.2, 4.0, 0.0); - GL.glVertex3d(-4.0, 4.0, 0.0); - GL.glVertex3d(-2.2, 2.2, 0.0); - GL.glVertex3d(-4.0, 2.2, 0.0); - GL.glVertex3d(-2.2, -2.2, 0.0); - GL.glVertex3d(-4.0, -2.2, 0.0); - GL.glVertex3d(-4.0, -4.0, 0.0); - GL.glEnd(); - GL.glEnable(GL.GL_TEXTURE_2D); - // draw floor - GL.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - GL.glBindTexture(GL.GL_TEXTURE_2D, textures[TEXTURE_INDEX_FLOOR]); - GL.glNormal3f(0.0f, 1.0f, 0.0f); - GL.glBegin(GL.GL_QUADS); - // floor - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-4.0f, -4.0f, 6.0f); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(-4.0f, -4.0f, 0.0f); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(4.0f, -4.0f, 0.0f); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(4.0f, -4.0f, 6.0f); - GL.glEnd(); - // draw mirror frame - GL.glBindTexture(GL.GL_TEXTURE_2D, textures[TEXTURE_INDEX_BOX]); - GL.glNormal3f(0.0f, 0.0f, 1.0f); - GL.glBegin(GL.GL_QUADS); - // top - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-2.2f, 2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(2.2f, 2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(2.2f, 2.2f, 0.0f); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(-2.2f, 2.2f, 0.0f); - // right - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(2.0f, 2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(2.0f, -2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(2.2f, -2.0f, 0.0f); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(2.2f, 2.0f, 0.0f); - // bottom - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-2.2f, -2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(2.2f, -2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(2.2f, -2.2f, 0.0f); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(-2.2f, -2.2f, 0.0f); - // left - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-2.0f, 2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(-2.0f, -2.0f, 0.0f); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(-2.2f, -2.0f, 0.0f); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(-2.2f, 2.0f, 0.0f); - GL.glEnd(); - GL.glEndList(); - } - - /** - * @see OpenGLTab#dispose() - */ - void dispose() { - super.dispose(); - GLU.gluDeleteQuadric(quadratic); - GL.glDeleteLists(LIST_INDEX_BALL, 1); - GL.glDeleteLists(LIST_INDEX_BOX, 1); - GL.glDeleteLists(LIST_INDEX_MIRROR, 1); - GL.glDeleteLists(LIST_INDEX_ROOM, 1); - } - - /** - * @see OpenGLTab#getSleepLength() - */ - int getSleepLength() { - return SLEEP_LENGTH; - } - - /** - * @see OpenGLTab#getTabText() - */ - String getTabText() { - return "Reflection"; - } - - /** - * @see OpenGLTab#init() - */ - void init() { - if (!hasStencilSupport()) return; - - GL.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); - GL.glClearDepth(1.0f); - GL.glClearStencil(0); - GL.glGenTextures(IMAGES.length, textures); - for (int i = 0; i < IMAGES.length; i++) { - loadTexture(getGlCanvas(), IMAGES[i], i, textures); - } - - GL.glShadeModel(GL.GL_SMOOTH); - quadratic = GLU.gluNewQuadric(); - GLU.gluQuadricNormals(quadratic, GL.GL_SMOOTH); - GLU.gluQuadricTexture(quadratic, true); - GL.glDepthFunc(GL.GL_LEQUAL); - GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); - GL.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); - - // set up the lights - float[] LightAmb = { 0.7f, 0.7f, 0.7f, 1.0f }; - float[] LightDif = { 1.0f, 1.0f, 1.0f, 1.0f }; - float[] lightsAmbient = { 0.5f, 0.5f, 0.5f, 1.0f }; - GL.glLightModelfv(GL.GL_LIGHT_MODEL_AMBIENT, lightsAmbient); - GL.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, LightAmb); - GL.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, LightDif); - - GL.glEnable(GL.GL_LIGHT0); - GL.glEnable(GL.GL_LIGHTING); - GL.glEnable(GL.GL_LINE_SMOOTH); - GL.glEnable(GL.GL_DEPTH_TEST); - GL.glEnable(GL.GL_TEXTURE_2D); - GL.glEnable(GL.GL_BLEND); - - createRoom(); - createBall(); - createBox(); - createMirror(); - } - - /** - * @see OpenGLTab#isStencilSupportNeeded - */ - boolean isStencilSupportNeeded() { - return true; - } - - /** - * @see OpenGLTab#renderScene() - */ - void renderScene() { - GL.glClear( - GL.GL_COLOR_BUFFER_BIT - | GL.GL_DEPTH_BUFFER_BIT - | GL.GL_STENCIL_BUFFER_BIT); - - GL.glLoadIdentity(); - GLU.gluLookAt(xPos, yPos, zPos, 0, 0, 0, 0, 1, 0); - // clip plane equation - double clipEquation[] = { 0.0f, 0.0f, -1.0f, 0.0f }; - float[] LightPos = { 0.0f, 2.0f, 7.0f, 1.0f }; - GL.glColorMask(false, false, false, false); - // enable stencil buffer for "marking" the mirror - GL.glEnable(GL.GL_STENCIL_TEST); - // set the stencil buffer to 1 where a polygon is drawn - GL.glStencilFunc(GL.GL_ALWAYS, 1, 1); - GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_REPLACE); - GL.glDisable(GL.GL_DEPTH_TEST); - GL.glCallList(LIST_INDEX_MIRROR); - GL.glEnable(GL.GL_DEPTH_TEST); - GL.glColorMask(true, true, true, true); - GL.glStencilFunc(GL.GL_EQUAL, 1, 1); - // draw where the stencil is 1 - GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); - GL.glEnable(GL.GL_CLIP_PLANE0); - GL.glClipPlane(GL.GL_CLIP_PLANE0, clipEquation); - GL.glPushMatrix(); - GL.glScalef(1.0f, 1.0f, -1.0f); - GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, LightPos); - GL.glCallList(LIST_INDEX_ROOM); // reflection - GL.glPushMatrix(); - GL.glTranslatef(cubeX, cubeY, cubeZ); - GL.glCallList(LIST_INDEX_BOX); // reflection - GL.glPopMatrix(); - GL.glTranslatef(ballX, ballY, ballZ); - GL.glRotatef(ballRot, 1.0f, 0.0f, 0.0f); - GL.glCallList(LIST_INDEX_BALL); // reflection - GL.glPopMatrix(); - GL.glDisable(GL.GL_CLIP_PLANE0); - GL.glDisable(GL.GL_STENCIL_TEST); - GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, LightPos); - GL.glEnable(GL.GL_BLEND); - GL.glDisable(GL.GL_LIGHTING); - GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); - GL.glCallList(LIST_INDEX_MIRROR); - GL.glEnable(GL.GL_LIGHTING); - GL.glDisable(GL.GL_BLEND); - GL.glCallList(LIST_INDEX_ROOM); - GL.glPushMatrix(); - GL.glTranslatef(cubeX, cubeY, cubeZ); - GL.glCallList(LIST_INDEX_BOX); - GL.glPopMatrix(); - GL.glTranslatef(ballX, ballY, ballZ); - GL.glRotatef(ballRot, 1.0f, 0.0f, 0.0f); - GL.glCallList(LIST_INDEX_BALL); - ballRot += ballRotSpeed; - } -} |