Advertisement
Guest User

Untitled

a guest
Oct 21st, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.71 KB | None | 0 0
  1. package org.yourorghere;
  2.  
  3. import com.sun.opengl.util.Animator;
  4. import java.awt.Frame;
  5. import java.awt.event.*;
  6. import javax.media.opengl.GL;
  7. import javax.media.opengl.GLAutoDrawable;
  8. import javax.media.opengl.GLCanvas;
  9. import javax.media.opengl.GLEventListener;
  10. import javax.media.opengl.glu.GLU;
  11.  
  12.  
  13.  
  14. /**
  15.  * SimpleJOGL.java <BR>
  16.  * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P>
  17.  *
  18.  * This version is equal to Brian Paul's version 1.2 1999/10/21
  19.  */
  20. public class SimpleJOGL implements GLEventListener {
  21.     private static float xrot = 0.0f, yrot = 0.0f;
  22.  
  23.     public static void main(String[] args) {
  24.         Frame frame = new Frame("Simple JOGL Application");
  25.         GLCanvas canvas = new GLCanvas();
  26.  
  27.         canvas.addGLEventListener(new SimpleJOGL());
  28.         frame.add(canvas);
  29.         frame.setSize(640, 480);
  30.         final Animator animator = new Animator(canvas);
  31.         frame.addWindowListener(new WindowAdapter() {
  32.  
  33.             @Override
  34.             public void windowClosing(WindowEvent e) {
  35.                 // Run this on another thread than the AWT event queue to
  36.                 // make sure the call to Animator.stop() completes before
  37.                 // exiting
  38.                 new Thread(new Runnable() {
  39.  
  40.                     public void run() {
  41.                         animator.stop();
  42.                         System.exit(0);
  43.                     }
  44.                 }).start();
  45.             }
  46.         });
  47.        
  48.                 //Obsługa klawiszy strzałek
  49.         frame.addKeyListener(new KeyListener()
  50.         {
  51.             public void keyPressed(KeyEvent e)
  52.             {
  53.                 if(e.getKeyCode() == KeyEvent.VK_UP)
  54.                 xrot -= 1.0f;
  55.                 if(e.getKeyCode() == KeyEvent.VK_DOWN)
  56.                 xrot +=1.0f;
  57.                 if(e.getKeyCode() == KeyEvent.VK_RIGHT)
  58.                 yrot += 1.0f;
  59.                 if(e.getKeyCode() == KeyEvent.VK_LEFT)
  60.                 yrot -=1.0f;
  61.             }
  62.             public void keyReleased(KeyEvent e){}
  63.             public void keyTyped(KeyEvent e){}
  64.         });
  65.         // Center frame
  66.         frame.setLocationRelativeTo(null);
  67.         frame.setVisible(true);
  68.         animator.start();
  69.     }
  70.  
  71.     public void init(GLAutoDrawable drawable) {
  72.         // Use debug pipeline
  73.         // drawable.setGL(new DebugGL(drawable.getGL()));
  74.  
  75.         GL gl = drawable.getGL();
  76.         System.err.println("INIT GL IS: " + gl.getClass().getName());
  77.  
  78.         // Enable VSync
  79.         gl.setSwapInterval(1);
  80.        
  81.        
  82.         //wartoci składowe owietlenia i koordynaty ródła wiatła
  83.         float ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f };//swiatło otaczajšce
  84.         float diffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f };//wiatło rozproszone
  85.         float specular[] = { 1.0f, 1.0f, 1.0f, 1.0f}; //wiatło odbite
  86.         float lightPos[] = { 0.0f, 150.0f, 150.0f, 1.0f };//pozycja wiatła
  87.         //(czwarty parametr okrela odległoć ródła:
  88.         //0.0f-nieskończona; 1.0f-okrelona przez pozostałe parametry)
  89.         gl.glEnable(GL.GL_LIGHTING); //uaktywnienie owietlenia
  90.         //ustawienie parametrów ródła wiatła nr. 0
  91.         gl.glLightfv(GL.GL_LIGHT0,GL.GL_AMBIENT,ambientLight,0); //swiatło otaczajšce
  92.         gl.glLightfv(GL.GL_LIGHT0,GL.GL_DIFFUSE,diffuseLight,0); //wiatło rozproszone
  93.         gl.glLightfv(GL.GL_LIGHT0,GL.GL_SPECULAR,specular,0); //wiatło odbite
  94.         gl.glLightfv(GL.GL_LIGHT0,GL.GL_POSITION,lightPos,0); //pozycja wiatła
  95.         gl.glEnable(GL.GL_LIGHT0); //uaktywnienie ródła wiatła nr. 0
  96.         gl.glEnable(GL.GL_COLOR_MATERIAL); //uaktywnienie ledzenia kolorów
  97.         //kolory będš ustalane za pomocš glColor
  98.         gl.glColorMaterial(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE);
  99.         //Ustawienie jasnoci i odblaskowoci obiektów
  100.         float specref[] = { 1.0f, 1.0f, 1.0f, 1.0f }; //parametry odblaskowoci
  101.         gl.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR,specref,0);
  102.        
  103.         gl.glMateriali(GL.GL_FRONT,GL.GL_SHININESS,128);
  104.  
  105.         gl.glEnable(GL.GL_DEPTH_TEST);
  106.         // Setup the drawing area and shading mode
  107.         gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
  108.         gl.glShadeModel(GL.GL_SMOOTH); // try setting this to GL_FLAT and see what happens.
  109.     }
  110.  
  111.     public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
  112.         GL gl = drawable.getGL();
  113.         GLU glu = new GLU();
  114.  
  115.         if (height <= 0) { // avoid a divide by zero error!
  116.        
  117.             height = 1;
  118.         }
  119.         final float h = (float) width / (float) height;
  120.         gl.glViewport(0, 0, width, height);
  121.         gl.glMatrixMode(GL.GL_PROJECTION);
  122.         gl.glLoadIdentity();
  123.         glu.gluPerspective(100.0f, h, 1.0, 20.0);
  124.         gl.glMatrixMode(GL.GL_MODELVIEW);
  125.         gl.glLoadIdentity();
  126.     }
  127.  
  128.     public void display(GLAutoDrawable drawable) {
  129.         GL gl = drawable.getGL();
  130.  
  131.         // Clear the drawing area
  132.         gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
  133.         // Reset the current matrix to the "identity"
  134.         gl.glLoadIdentity();
  135.  
  136.         gl.glTranslatef(0.0f, 0.0f, -6.0f); //przesunięcie o 6 jednostek
  137.         gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f); //rotacja wokół osi X
  138.         gl.glRotatef(yrot, 0.0f, 1.0f, 0.0f); //rotacja wokół osi Y
  139.  
  140.         gl.glBegin(GL.GL_QUADS);
  141. //ściana przednia
  142. //gl.glColor3f(1.0f,0.0f,0.0f);
  143. //gl.glVertex3f(-1.0f,-1.0f,1.0f);
  144. //gl.glVertex3f(1.0f,-1.0f,1.0f);
  145. //gl.glVertex3f(1.0f,1.0f,1.0f);
  146. //gl.glVertex3f(-1.0f,1.0f,1.0f);
  147. ////sciana tylnia
  148. //gl.glColor3f(0.0f,1.0f,0.0f);
  149. //gl.glVertex3f(-1.0f,1.0f,-1.0f);
  150. //gl.glVertex3f(1.0f,1.0f,-1.0f);
  151. //gl.glVertex3f(1.0f,-1.0f,-1.0f);
  152. //gl.glVertex3f(-1.0f,-1.0f,-1.0f);
  153. ////ściana lewa
  154. //gl.glColor3f(0.0f,0.0f,1.0f);
  155. //gl.glVertex3f(-1.0f,-1.0f,-1.0f);
  156. //gl.glVertex3f(-1.0f,-1.0f,1.0f);
  157. //gl.glVertex3f(-1.0f,1.0f,1.0f);
  158. //gl.glVertex3f(-1.0f,1.0f,-1.0f);
  159. ////ściana prawa
  160. //gl.glColor3f(1.0f,1.0f,0.0f);
  161. //gl.glVertex3f(1.0f,1.0f,-1.0f);
  162. //gl.glVertex3f(1.0f,1.0f,1.0f);
  163. //gl.glVertex3f(1.0f,-1.0f,1.0f);
  164. //gl.glVertex3f(1.0f,-1.0f,-1.0f);
  165. ////ściana gorna
  166. //gl.glColor3f(0.0f,0.0f,1.0f);
  167. //gl.glVertex3f(-1.0f,1.0f,1.0f);
  168. //gl.glVertex3f(-1.0f,1.0f,-1.0f);
  169. //gl.glVertex3f(1.0f,1.0f,-1.0f);
  170. //gl.glVertex3f(1.0f,1.0f,1.0f);
  171. //ściana dolna
  172. //gl.glColor3f(1.0f,0.0f,1.0f);
  173. //gl.glVertex3f(-1.0f,-1.0f,1.0f);
  174. //gl.glVertex3f(-1.0f,-1.0f,-1.0f);
  175. //gl.glVertex3f(1.0f,-1.0f,-1.0f);
  176. //gl.glVertex3f(1.0f,-1.0f,1.0f);
  177.  
  178.  
  179.  
  180. gl.glEnd();
  181.  
  182. gl.glBegin(GL.GL_TRIANGLES);
  183.  
  184. //gl.glColor3f(0.0f,0.0f,0.0f);
  185. //gl.glVertex3f(-1.0f,-1.0f,1.0f);
  186. //gl.glVertex3f(-1.0f,-1.0f,-1.0f);
  187. //gl.glVertex3f(0.0f,1.0f,0.0f);
  188. //
  189. //gl.glColor3f(0.0f,1.0f,0.0f);
  190. //gl.glVertex3f(-1.0f,-1.0f,-1.0f);
  191. //gl.glVertex3f(1.0f,-1.0f,-1.0f);
  192. //gl.glVertex3f(0.0f,1.0f,0.0f);
  193. //
  194. //gl.glColor3f(1.0f,1.0f,0.0f);
  195. //gl.glVertex3f(1.0f,-1.0f,-1.0f);
  196. //gl.glVertex3f(1.0f,-1.0f,1.0f);
  197. //gl.glVertex3f(0.0f,1.0f,0.0f);
  198. //
  199. //gl.glColor3f(1.0f,0.0f,1.0f);
  200. //gl.glVertex3f(1.0f,-1.0f,1.0f);
  201. //gl.glVertex3f(-1.0f,-1.0f,1.0f);
  202. //gl.glVertex3f(0.0f,1.0f,0.0f);
  203.  
  204. gl.glEnd();  
  205.  
  206. //float x,y,kat;
  207. //gl.glBegin(GL.GL_TRIANGLE_FAN);
  208. //gl.glColor3f(0.0f,1.0f,0.0f);
  209. //gl.glVertex3f(0.0f,0.0f,1.0f); //środek
  210. //for(kat = 0.0f; kat < (2.0f*Math.PI);
  211. //kat+=(Math.PI/32.0f))
  212. //{
  213. //x = 1.5f*(float)Math.sin(kat);
  214. //y = 1.5f*(float)Math.cos(kat);
  215. //gl.glVertex3f(x, y, 1.0f); //kolejne punkty
  216. //}
  217. //gl.glEnd();
  218. //
  219. //gl.glBegin(GL.GL_TRIANGLE_FAN);
  220. //gl.glVertex3f(0.0f,0.0f,-1.0f); //środek
  221. //for(kat = 0.0f; kat < (2.0f*Math.PI);
  222. //kat+=(Math.PI/32.0f))
  223. //{
  224. //x = 1.5f*(float)Math.sin(kat);
  225. //y = 1.5f*(float)Math.cos(kat);
  226. //gl.glVertex3f(x, y, -1.0f); //kolejne punkty
  227. //}
  228. //gl.glEnd();
  229. //
  230. //gl.glBegin(GL.GL_QUAD_STRIP);
  231. //gl.glColor3f(1.0f,0.0f,1.0f);
  232. //for(kat = 0.0f; kat < (2.0f*Math.PI);
  233. //kat+=(Math.PI/32.0f))
  234. //{
  235. //x = 1.5f*(float)Math.sin(kat);
  236. //y = 1.5f*(float)Math.cos(kat);
  237. //gl.glVertex3f(x, y, 1.0f); //kolejne punkty
  238. //gl.glVertex3f(x, y, -1.0f);
  239. //}
  240. //
  241. //gl.glEnd();
  242.  
  243. float x,y,kat;
  244. gl.glBegin(GL.GL_TRIANGLE_FAN);
  245. gl.glColor3f(1.0f,1.0f,0.0f);
  246. gl.glVertex3f(0.0f,0.0f,1.0f); //środek
  247. for(kat = 0.0f; kat < (2.0f*Math.PI);
  248. kat+=(Math.PI/32.0f))
  249. {
  250. x = 1.5f*(float)Math.sin(kat);
  251. y = 1.5f*(float)Math.cos(kat);
  252.  
  253. }
  254.  
  255. gl.glVertex3f(0.0f,0.0f,-1.0f); //środek
  256. for(kat = 0.0f; kat < (2.0f*Math.PI);
  257. kat+=(Math.PI/32.0f))
  258. {
  259. x = 1.5f*(float)Math.sin(kat);
  260. y = 1.5f*(float)Math.cos(kat);
  261. gl.glVertex3f(x, y, -1.0f); //kolejne punkty
  262. }
  263. gl.glEnd();
  264.  
  265.  
  266.  
  267.         // Flush all drawing operations to the graphics card
  268.         gl.glFlush();
  269.     }
  270.  
  271.     public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
  272.     }
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement