Guest User

Untitled

a guest
Aug 2nd, 2013
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.67 KB | None | 0 0
  1. package boilerplate.core;
  2.  
  3. import static org.lwjgl.opengl.GL11.GL_BLEND;
  4. import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
  5. import static org.lwjgl.opengl.GL11.GL_CULL_FACE;
  6. import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
  7. import static org.lwjgl.opengl.GL11.GL_DEPTH_TEST;
  8. import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA;
  9. import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA;
  10. import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
  11. import static org.lwjgl.opengl.GL11.glBlendFunc;
  12. import static org.lwjgl.opengl.GL11.glClear;
  13. import static org.lwjgl.opengl.GL11.glEnable;
  14. import static org.lwjgl.opengl.GL11.glViewport;
  15.  
  16. import java.io.File;
  17.  
  18. import net.jmatrix.Vector3;
  19.  
  20. import org.lwjgl.LWJGLException;
  21. import org.lwjgl.LWJGLUtil;
  22. import org.lwjgl.Sys;
  23. import org.lwjgl.input.Keyboard;
  24. import org.lwjgl.input.Mouse;
  25. import org.lwjgl.opengl.Display;
  26. import org.lwjgl.opengl.DisplayMode;
  27.  
  28. public class Main {
  29.  
  30. static {
  31. System.setProperty("org.lwjgl.librarypath", new File(new File(System.getProperty("user.dir"), "native"),
  32. LWJGLUtil.getPlatformName()).getAbsolutePath());
  33. }
  34.  
  35. public static final int WIDTH = 400, HEIGHT = 300;
  36.  
  37. private VertexBuffer testBuffer;
  38.  
  39. private float pitch, yaw;
  40. private float x, y, z;
  41.  
  42. private int FPS;
  43. private long lastFPS, lastFrame;
  44.  
  45. private int ticks;
  46.  
  47. private void start() {
  48. try {
  49. Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
  50. Display.create();
  51. } catch (LWJGLException e) {
  52. e.printStackTrace();
  53. System.exit(0);
  54. }
  55.  
  56. initGL();
  57. getDelta();
  58. lastFPS = getTime();
  59.  
  60. //Mouse.setGrabbed(true);
  61.  
  62. while (!Display.isCloseRequested()) {
  63. int delta = getDelta();
  64.  
  65. update(delta);
  66. renderGL();
  67.  
  68. Display.update();
  69. Display.sync(60);
  70. }
  71.  
  72. Display.destroy();
  73. }
  74.  
  75. private void update(int delta) {
  76. updateFPS();
  77. }
  78.  
  79. private void initGL() {
  80. glEnable(GL_DEPTH_TEST);
  81. glEnable(GL_CULL_FACE);
  82. glEnable(GL_TEXTURE_2D);
  83. glEnable(GL_BLEND);
  84. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  85.  
  86. testBuffer = new VertexBuffer(new Vertex[] {
  87. // 1st quad
  88. new Vertex(0.25f, -0.25f, 0, 0x6D91DA, 1, 0.5f), new Vertex(-0.25f, 0.25f, 0, 0x6D91DA, 0.5f, 1),
  89. new Vertex(0.25f, 0.25f, 0, 0x6D91DA, 1, 1), new Vertex(0.25f, -0.25f, 0, 0x6D91DA, 1, 0.5f),
  90. new Vertex(-0.25f, -0.25f, 0, 0x6D91DA, 0.5f, 0.5f), new Vertex(-0.25f, 0.25f, 0, 0x6D91DA, 0.5f, 1) });
  91. }
  92.  
  93. private void renderGL() {
  94. glViewport(0, 0, WIDTH, HEIGHT);
  95. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  96.  
  97. Renderer.instance.setPerspective();
  98.  
  99. ticks++;
  100.  
  101. yaw -= Mouse.getDX() / 100f;
  102. pitch += Mouse.getDY() / 100f;
  103.  
  104. pitch = pitch > 1 ? 1 : pitch < -1 ? -1 : pitch;
  105.  
  106. if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
  107. x += Math.sin(yaw) / 20f;
  108. z += Math.cos(yaw) / 20f;
  109. }
  110. if (Keyboard.isKeyDown(Keyboard.KEY_S)) {
  111. x -= Math.sin(yaw) / 20f;
  112. z -= Math.cos(yaw) / 20f;
  113. }
  114. if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
  115. x += Math.cos(-yaw) / 20f;
  116. z += Math.sin(-yaw) / 20f;
  117. }
  118. if (Keyboard.isKeyDown(Keyboard.KEY_D)) {
  119. x -= Math.cos(-yaw) / 20f;
  120. z -= Math.sin(-yaw) / 20f;
  121. }
  122. if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
  123. y += 1 / 20f;
  124. }
  125. if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) {
  126. y -= 1 / 20f;
  127. }
  128. if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
  129. if (Mouse.isGrabbed()) {
  130. Mouse.setGrabbed(false);
  131. }
  132. }
  133.  
  134. System.out.println(((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024));
  135.  
  136. Renderer.instance.setCamera(Vector3.fromValues(x, y, z), Vector3.fromValues(pitch, yaw, 0));
  137.  
  138. cubeAt(0, 0, 0);
  139. cubeAt(0.5f, 0.5f, 1.5f);
  140. cubeAt(0.5f, 1.0f, 0);
  141. cubeAt(0, 0, 0.5f);
  142. cubeAt(0, 1.5f, 0);
  143. cubeAt(0.5f, 0, 0);
  144. cubeAt(3.5f, 0.5f, 1.5f);
  145. cubeAt(3.5f, 1.0f, 0);
  146. cubeAt(3, 0, 0.5f);
  147. cubeAt(3, 1.5f, 0);
  148. cubeAt(3.5f, 0, 0);
  149. }
  150.  
  151. private void cubeAt(float x, float y, float z) {
  152. Vector3 t = Vector3.fromValues(x, y, z);
  153. Vector3 s = Vector3.fromValues(0, 0, -0.25f);
  154. Renderer.instance.identity();
  155.  
  156. Renderer.instance.translate(t);
  157. Renderer.instance.translate(s);
  158. Renderer.instance.drawBuffer(testBuffer);
  159.  
  160. Renderer.instance.identity();
  161.  
  162. Renderer.instance.translate(t);
  163. Renderer.instance.rotate(Renderer.Y1, Math.PI * 0.5f);
  164. Renderer.instance.translate(s);
  165. Renderer.instance.drawBuffer(testBuffer);
  166.  
  167. Renderer.instance.identity();
  168.  
  169. Renderer.instance.translate(t);
  170. Renderer.instance.rotate(Renderer.Y1, Math.PI);
  171. Renderer.instance.translate(s);
  172. Renderer.instance.drawBuffer(testBuffer);
  173.  
  174. Renderer.instance.identity();
  175.  
  176. Renderer.instance.translate(t);
  177. Renderer.instance.rotate(Renderer.Y1, Math.PI * 1.5f);
  178. Renderer.instance.translate(s);
  179. Renderer.instance.drawBuffer(testBuffer);
  180.  
  181. Renderer.instance.identity();
  182.  
  183. Renderer.instance.translate(t);
  184. Renderer.instance.rotate(Renderer.X1, Math.PI * 0.5f);
  185. Renderer.instance.translate(s);
  186. Renderer.instance.drawBuffer(testBuffer);
  187.  
  188. Renderer.instance.identity();
  189.  
  190. Renderer.instance.translate(t);
  191. Renderer.instance.rotate(Renderer.X1, Math.PI * 1.5f);
  192. Renderer.instance.translate(s);
  193. Renderer.instance.drawBuffer(testBuffer);
  194. }
  195.  
  196. private int getDelta() {
  197. long time = getTime();
  198. int delta = (int) (time - lastFrame);
  199. lastFrame = time;
  200.  
  201. return delta;
  202. }
  203.  
  204. private long getTime() {
  205. return (Sys.getTime() * 1000) / Sys.getTimerResolution();
  206. }
  207.  
  208. private void updateFPS() {
  209. if (getTime() - lastFPS > 1000) {
  210. Display.setTitle("FPS: " + FPS);
  211. FPS = 0;
  212. lastFPS += 1000;
  213. }
  214.  
  215. FPS++;
  216. }
  217.  
  218. public static void main(String[] argv) {
  219. Main timerExample = new Main();
  220. timerExample.start();
  221. }
  222. }
Advertisement
Add Comment
Please, Sign In to add comment