Codigo
Codigo
Codigo
KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import com.jogamp.opengl.GL;
import com.jogamp.opengl.GL2;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.awt.GLCanvas;
import com.jogamp.opengl.util.FPSAnimator;
import com.jogamp.opengl.util.texture.Texture;
import com.jogamp.opengl.util.texture.TextureIO;
import java.io.File;
import java.io.IOException;
public Principal() {
super("Facultad");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(this);
canvas.addKeyListener(this);
canvas.addMouseMotionListener(this);
getContentPane().add(canvas);
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
@Override
public void init(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
gl.glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 100.0);
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
}
@Override
public void display(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
drawRoom(gl);
drawSecondRoom(gl);
drawThirdRoom(gl);
}
Texture texture;
try {
gl.glEnable(GL2.GL_TEXTURE_2D);
gl.glTexEnvf(GL2.GL_TEXTURE_ENV, GL2.GL_TEXTURE_ENV_MODE, GL2.GL_MODULATE);
texture.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(5.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, -5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);
Texture texture1;
try {
texture1 = TextureIO.newTexture(new File("images/frontal1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
// Pared frontal
gl.glEnable(GL2.GL_TEXTURE_2D);
texture1.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, 5.0f, -5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(5.0f, 5.0f, -5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, -5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);
// Cargar la textura
Texture textureLeftFloor = null;
try {
textureLeftFloor = TextureIO.newTexture(new File("images/piso1.jpg"),
true);
} catch (IOException e) {
e.printStackTrace();
}
Texture texture2;
try {
texture2 = TextureIO.newTexture(new File("images/izqui1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture3;
try {
texture3 = TextureIO.newTexture(new File("images/derecha1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture4;
try {
texture4 = TextureIO.newTexture(new File("images/dere.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
// Pared derecha
gl.glEnable(GL2.GL_TEXTURE_2D);
texture4.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(5.0f, 5.0f, -5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(5.0f, 5.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, 5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);
Texture texture5;
try {
texture5 = TextureIO.newTexture(new File("images/piso1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture6;
try {
texture6 = TextureIO.newTexture(new File("images/paredizquierda2.png"),
true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture7;
try {
texture7 = TextureIO.newTexture(new File("images/paredderecha2.png"),
true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture8;
try {
texture8 = TextureIO.newTexture(new File("images/piso1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture9;
try {
texture9 = TextureIO.newTexture(new File("images/pisos.png"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture10;
try {
texture10 = TextureIO.newTexture(new File("images/venta.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture11;
try {
texture11 = TextureIO.newTexture(new File("images/venta2.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture12;
try {
texture12 = TextureIO.newTexture(new File("images/frontal5.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
Texture texture13;
try {
texture13 = TextureIO.newTexture(new File("images/froniz.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
@Override
public void keyTyped(KeyEvent e) {
// Implementa el código necesario aquí
}
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int
height) {
GL2 gl = drawable.getGL().getGL2();
gl.glViewport(0, 0, width, height);
}
@Override
public void dispose(GLAutoDrawable drawable) {
if (forwardPressed) {
cameraX += moveSpeed * Math.sin(Math.toRadians(cameraYaw));
cameraZ -= moveSpeed * Math.cos(Math.toRadians(cameraYaw));
}
if (backwardPressed) {
cameraX -= moveSpeed * Math.sin(Math.toRadians(cameraYaw));
cameraZ += moveSpeed * Math.cos(Math.toRadians(cameraYaw));
}
if (leftPressed) {
cameraX += moveSpeed * Math.sin(Math.toRadians(cameraYaw - 90));
cameraZ -= moveSpeed * Math.cos(Math.toRadians(cameraYaw - 90));
}
if (rightPressed) {
cameraX += moveSpeed * Math.sin(Math.toRadians(cameraYaw + 90));
cameraZ -= moveSpeed * Math.cos(Math.toRadians(cameraYaw + 90));
}
}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_W) {
forwardPressed = true;
} else if (key == KeyEvent.VK_S) {
backwardPressed = true;
} else if (key == KeyEvent.VK_A) {
leftPressed = true;
} else if (key == KeyEvent.VK_D) {
rightPressed = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_W) {
forwardPressed = false;
} else if (key == KeyEvent.VK_S) {
backwardPressed = false;
} else if (key == KeyEvent.VK_A) {
leftPressed = false;
} else if (key == KeyEvent.VK_D) {
rightPressed = false;
}
}
// @Override
// public void keyPressed(KeyEvent e) {
// int keyCode = e.getKeyCode();
// switch (keyCode) {
// case KeyEvent.VK_S:
// forwardPressed = true;
// break;
// case KeyEvent.VK_W:
// backwardPressed = true;
// break;
// case KeyEvent.VK_A:
// leftPressed = true;
// break;
// case KeyEvent.VK_D:
// rightPressed = true;
// break;
// }
// }
// @Override
// public void keyTyped(KeyEvent e) {
//
// }
// @Override
// public void keyReleased(KeyEvent e) {
// int keyCode = e.getKeyCode();
// switch (keyCode) {
// case KeyEvent.VK_S:
// forwardPressed = false;
// break;
// case KeyEvent.VK_W:
// backwardPressed = false;
// break;
// case KeyEvent.VK_A:
// leftPressed = false;
// break;
// case KeyEvent.VK_D:
// rightPressed = false;
// break;
// }
// }
// private void updateCameraPosition() {
// if (forwardPressed) {
// moveForward();
// }
// if (backwardPressed) {
// moveBackward();
// }
// if (leftPressed) {
// strafeLeft();
// }
// if (rightPressed) {
// strafeRight();
// }
// }
@Override
public void mouseDragged(MouseEvent e) {
int mouseX = e.getX();
int mouseY = e.getY();
prevMouseX = mouseX;
prevMouseY = mouseY;
}
@Override
public void mouseMoved(MouseEvent e) {
prevMouseX = e.getX();
prevMouseY = e.getY();
}