Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lwjgl02;
- import org.lwjgl.Sys;
- import org.lwjgl.LWJGLException;
- import org.lwjgl.opengl.Display;
- import org.lwjgl.opengl.DisplayMode;
- import org.lwjgl.input.Keyboard;
- import static org.lwjgl.opengl.GL11.*;
- public class LWJGL02 {
- public static void main(String[] args) {
- LWJGL02 lw = new LWJGL02();
- lw.start();
- }
- final int SCREEN_WIDTH = 640; // Screen width
- final int SCREEN_HEIGHT = 480; // Screen height
- final int SCREEN_DEPTH = 50; // Screen Depth
- final int SCALE = 3; // Screen Scale
- long lastFrame;
- long lastFPS;
- int fps;
- public void start() {
- try {
- Display.setDisplayMode(new DisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT));
- Display.setVSyncEnabled(true);
- Display.create();
- } catch (LWJGLException e) {
- e.printStackTrace();
- System.exit(0);
- }
- lastFPS = getTime(); // Init FPS
- getDelta(); // init last frame
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-4 * SCALE, 4 * SCALE, -3 * SCALE, 3 * SCALE, SCREEN_DEPTH, -SCREEN_DEPTH);
- glMatrixMode(GL_MODELVIEW);
- float x_flag = 0;
- float y_flag = 0;
- float z_flag = 0;
- float angle = 0;
- // Loop begin ~
- while (!Display.isCloseRequested()) {
- if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
- x_flag += 1;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
- x_flag -= 1;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
- y_flag += 1;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
- y_flag -= 1;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_Q)){
- z_flag += 1;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_W)){
- z_flag -= 1;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_1)){
- angle += 1;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_2)){
- angle -= 1;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_X)){
- x_flag = 0;
- y_flag = 0;
- z_flag = 0;
- angle = 0;
- }
- clear_screen();
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glPushMatrix();
- System.out.printf("%2f:%2f:%2f:%2f\n",angle,x_flag,y_flag,z_flag);
- glRotated(angle,x_flag,y_flag,z_flag);
- // glRotated(angle,1,1,0);
- trapesium(6,5 ,0 ,2 ,0,1, true,true);
- trapesium(6,5 ,0 ,2 ,5,1, true,true);
- trapesium(5,4.5,0.3,1.4,1,4, true,false);
- glTranslated(1,0,0);
- trapesium(2.5 ,2.0 ,1.4 ,3 ,1.7 ,2.7, false,false);
- trapesium(1.0 ,0.5 ,3 ,3.5 ,2 ,1 , false,false);
- trapesium2(-2.4, -2.1, 1.4 + 0.4, 3 - 0.4, -5, 2.3,1.3);
- glPopMatrix();
- Display.update();
- Display.sync(60);
- updateFPS();
- }
- Display.destroy();
- }
- void clear_screen() {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- }
- long getTime() {
- return (Sys.getTime() * 1000) / Sys.getTimerResolution();
- }
- long getDelta(){
- long time = getTime();
- int delta = (int)(time - lastFrame);
- lastFrame = time;
- return delta;
- }
- void updateFPS(){
- if(getTime() - lastFPS > 1000){
- Display.setTitle("FPS: " + fps);
- fps = 0;
- lastFPS += 1000;
- }
- fps++;
- }
- void trapesium(double x1, double x2, double y1, double y2,
- double depth, double depth_plus, boolean mirror, boolean reduce){
- double depth2 = depth + depth_plus;
- glBegin(GL_QUADS);
- glVertex3d(-x1,y1,depth);
- glVertex3d(x1,y1,depth);
- glVertex3d(x2,y2,depth);
- glVertex3d(-x2,y2,depth);
- glVertex3d(-x1,y1,depth);
- glVertex3d(-x2,y2,depth);
- glVertex3d(-x2,y2,depth2);
- glVertex3d(-x1,y1,depth2);
- glVertex3d(x1,y1,depth);
- glVertex3d(x2,y2,depth);
- glVertex3d(x2,y2,depth2);
- glVertex3d(x1,y1,depth2);
- glVertex3d(-x1,y1,depth2);
- glVertex3d(x1,y1,depth2);
- glVertex3d(x2,y2,depth2);
- glVertex3d(-x2,y2,depth2);
- if (mirror){
- if (reduce){
- x1 -= 1;
- x2 -= 0.75;
- }
- y2 -= 0.5;
- y2 = -y2;
- glVertex3d(-x1,y1,depth);
- glVertex3d(x1,y1,depth);
- glVertex3d(x2,y2,depth);
- glVertex3d(-x2,y2,depth);
- glVertex3d(-x1,y1,depth);
- glVertex3d(-x2,y2,depth);
- glVertex3d(-x2,y2,depth2);
- glVertex3d(-x1,y1,depth2);
- glVertex3d(x1,y1,depth);
- glVertex3d(x2,y2,depth);
- glVertex3d(x2,y2,depth2);
- glVertex3d(x1,y1,depth2);
- glVertex3d(-x1,y1,depth2);
- glVertex3d(x1,y1,depth2);
- glVertex3d(x2,y2,depth2);
- glVertex3d(-x2,y2,depth2);
- }
- glEnd();
- }
- void trapesium2(double x1, double x2, double y1, double y2, double length,
- double depth, double depth_plus){
- double depth2 = depth + depth_plus;
- glBegin(GL_QUADS);
- glVertex3d(x1,y1,depth);
- glVertex3d(x2,y2,depth);
- glVertex3d(x1 + length,y2,depth);
- glVertex3d(x1 + length,y1,depth);
- glVertex3d(x1,y1,depth);
- glVertex3d(x2,y2,depth);
- glVertex3d(x2,y2,depth2);
- glVertex3d(x1,y1,depth2);
- glVertex3d(x1 + length,y1,depth);
- glVertex3d(x1 + length,y2,depth);
- glVertex3d(x1 + length,y2,depth2);
- glVertex3d(x1 + length,y1,depth2);
- glVertex3d(x1,y1,depth2);
- glVertex3d(x2,y2,depth2);
- glVertex3d(x1 + length,y2,depth2);
- glVertex3d(x1 + length,y1,depth2);
- glEnd();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment