package Actualitzacions; import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; import static org.lwjgl.opengl.GL11.GL_MODELVIEW; import static org.lwjgl.opengl.GL11.GL_PROJECTION; import static org.lwjgl.opengl.GL11.GL_QUADS; import static org.lwjgl.opengl.GL11.glBegin; import static org.lwjgl.opengl.GL11.glClear; import static org.lwjgl.opengl.GL11.glClearColor; import static org.lwjgl.opengl.GL11.glColor3f; import static org.lwjgl.opengl.GL11.glEnd; import static org.lwjgl.opengl.GL11.glLoadIdentity; import static org.lwjgl.opengl.GL11.glMatrixMode; import static org.lwjgl.opengl.GL11.glOrtho; import static org.lwjgl.opengl.GL11.glPopMatrix; import static org.lwjgl.opengl.GL11.glPushMatrix; import static org.lwjgl.opengl.GL11.glRotatef; import static org.lwjgl.opengl.GL11.glTranslatef; import static org.lwjgl.opengl.GL11.glVertex2d; import org.lwjgl.LWJGLException; import org.lwjgl.Sys; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; public class SenseLimit { private static long tempsUltimFrame; private static float rotacio,x = 300f,y = 200f; private static double passat = 0; public static void main(String args[]) { try { Display.setDisplayMode(new DisplayMode(600,400)); Display.setTitle("Actualitzacions"); Display.create(); } catch(LWJGLException e) { e.printStackTrace(); } getDelta(); iniciar(); while(!Display.isCloseRequested()) { double delta = getDelta(); passat += delta;//nem afegin els segons que passen per cada frame System.out.println(passat); if(passat >= 1000.0/60.0)//si els segons que han passat son mes o iguals que els qe tenen qe //pasar perqe hi hagin 60 actualitzacions per segon, actualitzem { System.out.println("ya"); actualitzar(passat);//actualitzem depenen dels segons qe hagin passat, per tindre velocitat constant passat = 0; } renderitzar(); Display.update(); } Display.destroy(); } public static int getDelta()//obte quants milisegons han passat desde l'ultim frame { long tempsms = (Sys.getTime() * 1000) / Sys.getTimerResolution();//obté temps en milisegons int delta = (int) (tempsms - tempsUltimFrame); tempsUltimFrame = tempsms; return delta; } public static void iniciar() { glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,600,0,400,1,-1); glMatrixMode(GL_MODELVIEW); glClearColor(0,0,0,0); } public static void actualitzar(double delta) { if(Keyboard.isKeyDown(Keyboard.KEY_UP)) //rotacio += 0.1f * delta; y += 0.5f * delta; if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)) //rotacio -= 0.1f * delta; y -= 0.5f * delta; } public static void renderitzar() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.f,0.5f,1.0f); glPushMatrix(); glTranslatef(x,y,0); glRotatef(rotacio, 0f, 0f, 1f); glTranslatef(-x,-y,0); glBegin(GL_QUADS); glVertex2d(x-50,y-50); glVertex2d(x+50,y-50); glVertex2d(x+50,y+50); glVertex2d(x-50,y+50); glEnd(); glPopMatrix(); } }