Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

Draw a rectangle using the org eclipse opengl OpenGL binding

/*******************************************************************************  * Copyright (c) 2000, 2005 IBM Corporation and others.  * All rights reserved. This program and the accompanying materials  * are made available under the terms of the Eclipse Public License v1.0  * which accompanies this distribution, and is available at  * http://www.eclipse.org/legal/epl-v10.html  *  * Contributors:  *     Sebastian Davids - initial implementation  *     IBM Corporation  *******************************************************************************/ package org.eclipse.swt.snippets; /*  * SWT OpenGL snippet: draw a square  *   * This snippet requires the experimental org.eclipse.swt.opengl plugin, which  * is not included in swt by default.  For information on this plugin see  * http://www.eclipse.org/swt/opengl/opengl.html    *   * For a list of all SWT example snippets see  * http://www.eclipse.org/swt/snippets/  *   * @since 3.2  */ import org.eclipse.opengl.*; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.opengl.*; import org.eclipse.swt.widgets.*; public class Snippet174 { public static void main(String[] args) {     Display display = new Display();     Shell shell = new Shell(display);     shell.setText("OpenGL in SWT");     shell.setLayout(new FillLayout());     GLData data = new GLData();     data.doubleBuffer = true;     final GLCanvas canvas = new GLCanvas(shell, SWT.NO_BACKGROUND, data);     canvas.addControlListener(new ControlAdapter() {         public void controlResized(ControlEvent e) {             resize(canvas);         }     });     init(canvas);     new Runnable() {         public void run() {             if (canvas.isDisposed()) return;             render();             canvas.swapBuffers();             canvas.getDisplay().timerExec(50, this);         }     }.run();     shell.open();     while (!shell.isDisposed()) {         if (!display.readAndDispatch()) display.sleep();     }     display.dispose(); } static void init(GLCanvas canvas) {     canvas.setCurrent();     resize(canvas);     GL.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);     GL.glColor3f(0.0f, 0.0f, 0.0f);     GL.glClearDepth(1.0f);     GL.glEnable(GL.GL_DEPTH_TEST);     GL.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); } static void render() {     GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);     GL.glLoadIdentity();     GL.glTranslatef(0.0f, 0.0f, -6.0f);     GL.glBegin(GL.GL_QUADS);     GL.glVertex3f(-1.0f, 1.0f, 0.0f);     GL.glVertex3f(1.0f, 1.0f, 0.0f);     GL.glVertex3f(1.0f, -1.0f, 0.0f);     GL.glVertex3f(-1.0f, -1.0f, 0.0f);     GL.glEnd(); } static void resize(GLCanvas canvas) {     canvas.setCurrent();     Rectangle rect = canvas.getClientArea();     int width = rect.width;     int height = Math.max(rect.height, 1);     GL.glViewport(0, 0, width, height);     GL.glMatrixMode(GL.GL_PROJECTION);     GL.glLoadIdentity();     float aspect = (float) width / (float) height;     GLU.gluPerspective(45.0f, aspect, 0.5f, 400.0f);     GL.glMatrixMode(GL.GL_MODELVIEW);     GL.glLoadIdentity(); } }