Difference between revisions 1302 and 1303 on hiwikiversity⏎ === Orthographic projection example === <source lang="java"> import javax.media.opengl.GL; import javax.media.opengl.GL2; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLProfile; import javax.media.opengl.awt.GLCanvas; import javax.media.opengl.fixedfunc.GLMatrixFunc; import javax.swing.JFrame; import com.jogamp.opengl.util.Animator; public class MainFrame extends JFrame implements GLEventListener { private GLCanvas canvas; private Animator animator; // For specifying the positions of the clipping planes (increase/decrease the distance) modify this variable. // It is used by the glOrtho method. private double v_size = 1.0; // Application main entry point public static void main(String args[]) { new MainFrame(); } // Default constructor public MainFrame() { super("Java OpenGL"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(800, 600); this.initializeJogl(); this.setVisible(true); } private void initializeJogl() { // Creating a new GL profile. GLProfile glprofile = GLProfile.getDefault(); // Creating an object to manipulate OpenGL parameters. GLCapabilities capabilities = new GLCapabilities(glprofile); // Setting some OpenGL parameters. capabilities.setHardwareAccelerated(true); capabilities.setDoubleBuffered(true); // Try to enable 2x anti aliasing. It should be supported on most hardware. capabilities.setNumSamples(2); capabilities.setSampleBuffers(true); // Creating an OpenGL display widget -- canvas. this.canvas = new GLCanvas(capabilities); // Adding the canvas in the center of the frame. this.getContentPane().add(this.canvas); // Adding an OpenGL event listener to the canvas. this.canvas.addGLEventListener(this); // Creating an animator that will redraw the scene 40 times per second. this.animator = new Animator(this.canvas); // Starting the animator. this.animator.start(); } public void init(GLAutoDrawable canvas) { // Obtaining the GL instance associated with the canvas. GL2 gl = canvas.getGL().getGL2(); // Setting the clear color -- the color which will be used to erase the canvas. gl.glClearColor(0, 0, 0, 0); // Selecting the modelview matrix. gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); } public void display(GLAutoDrawable canvas) { GL2 gl = canvas.getGL().getGL2(); // Erasing the canvas -- filling it with the clear color. gl.glClear(GL.GL_COLOR_BUFFER_BIT); // Add your scene code here // Forcing the scene to be rendered. gl.glFlush(); } public void reshape(GLAutoDrawable canvas, int left, int top, int width, int height) { GL2 gl = canvas.getGL().getGL2(); // Selecting the viewport -- the display area -- to be the entire widget. gl.glViewport(0, 0, width, height); // Determining the width to height ratio of the widget. double ratio = (double) width / (double) height; // Selecting the projection matrix. gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION); gl.glLoadIdentity(); // Selecting the view volume to be x from 0 to 1, y from 0 to 1, z from -1 to 1. // But we are careful to keep the aspect ratio and enlarging the width or the height. if (ratio < 1) gl.glOrtho(-v_size, v_size, -v_size, v_size / ratio, -1, 1); else gl.glOrtho(-v_size, v_size * ratio, -v_size, v_size, -1, 1); // Selecting the modelview matrix. gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); } public void displayChanged(GLAutoDrawable canvas, boolean modeChanged, boolean deviceChanged) { return; } @Override public void dispose(GLAutoDrawable arg0) { // TODO Auto-generated method stub } } </source> === Perspective projection example === <source lang="java"> import javax.media.opengl.GL; import javax.media.opengl.GL2; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLProfile; import javax.media.opengl.awt.GLCanvas; import javax.media.opengl.fixedfunc.GLMatrixFunc; import javax.media.opengl.glu.GLU; import javax.swing.JFrame; import com.jogamp.opengl.util.Animator; public class MainFrame extends JFrame implements GLEventListener { private GLCanvas canvas; private Animator animator; private GLU glu; // Application main entry point public static void main(String args[]) { new MainFrame(); } // Default constructor; public MainFrame() { super("Java OpenGL"); // Registering a window event listener to handle the closing event. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(800, 600); this.initializeJogl(); this.setVisible(true); } private void initializeJogl() { // Creating a new GL profile. GLProfile glprofile = GLProfile.getDefault(); // Creating an object to manipulate OpenGL parameters. GLCapabilities capabilities = new GLCapabilities(glprofile); // Setting some OpenGL parameters. capabilities.setHardwareAccelerated(true); capabilities.setDoubleBuffered(true); // Try to enable 2x anti aliasing. It should be supported on most hardware. capabilities.setNumSamples(2); capabilities.setSampleBuffers(true); // Creating an OpenGL display widget -- canvas. this.canvas = new GLCanvas(capabilities); // Adding the canvas in the center of the frame. this.getContentPane().add(this.canvas); // Adding an OpenGL event listener to the canvas. this.canvas.addGLEventListener(this); // Creating an animator that will redraw the scene 40 times per second. this.animator = new Animator(this.canvas); // Registering the canvas to the animator. this.animator.add(this.canvas); // Starting the animator. this.animator.start(); } public void init(GLAutoDrawable canvas) { // Obtaining the GL instance associated with the canvas. GL2 gl = canvas.getGL().getGL2(); // Initialize GLU. We'll need it for perspective and camera setup. this.glu = GLU.createGLU(); // Setting the clear color -- the color which will be used to erase the canvas. gl.glClearColor(0, 0, 0, 0); // Selecting the modelview matrix. gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); } public void display(GLAutoDrawable canvas) { GL2 gl = canvas.getGL().getGL2(); // Erasing the canvas -- filling it with the clear color. gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glLoadIdentity(); // Add your scene code here // Forcing the scene to be rendered. gl.glFlush(); } public void reshape(GLAutoDrawable canvas, int left, int top, int width, int height) { GL2 gl = canvas.getGL().getGL2(); // Selecting the viewport -- the display area -- to be the entire widget. gl.glViewport(0, 0, width, height); // Determining the width to height ratio of the widget. double ratio = (double) width / (double) height; // Selecting the projection matrix. gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION); gl.glLoadIdentity(); glu.gluPerspective (38, ratio, 0.1, 100); // Selecting the modelview matrix. gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); } public void displayChanged(GLAutoDrawable canvas, boolean modeChanged, boolean deviceChanged) { return; } @Override public void dispose(GLAutoDrawable arg0) { // TODO Auto-generated method stub } } </source>⏎ ⏎ [[Category:HI]] All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://hi.wikiversity.org/w/index.php?diff=prev&oldid=1303.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|