Swing图形编程--------JOGL(OpenGL绑定)

原创 2013年12月03日 23:13:40

Swing+JOGL是Java进行OpenGL开发的方式。

1.  依赖文件

jogl-all.jar

jogl-all-natives-windows-i586.jar

gluegen-rt.jar

gluegen-rt-natives-windows-i586.jar

相关的src和doc

2.  HelloWorld

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;

import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;
 
class Renderer implements GLEventListener 
{
    private GLU glu = new GLU();
 
    public void display(GLAutoDrawable gLDrawable) 
    {
        final GL2 gl = gLDrawable.getGL().getGL2();
        gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
        gl.glLoadIdentity();
        gl.glTranslatef(-1.5f, 0.0f, -6.0f);
        gl.glBegin(GL2.GL_TRIANGLES);		
        gl.glVertex3f(0.0f, 1.0f, 0.0f);	
        gl.glVertex3f(-1.0f, -1.0f, 0.0f);	
        gl.glVertex3f(1.0f, -1.0f, 0.0f);	
        gl.glEnd();				
        gl.glTranslatef(3.0f, 0.0f, 0.0f);
        gl.glBegin(GL2.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();				
        gl.glFlush();
    }
 
 
    public void displayChanged(GLAutoDrawable gLDrawable, boolean modeChanged, boolean deviceChanged) 
    {
    	System.out.println("displayChanged called");
    }
 
    public void init(GLAutoDrawable gLDrawable) 
    {
    	System.out.println("init() called");
        GL2 gl = gLDrawable.getGL().getGL2();
        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        gl.glShadeModel(GL2.GL_FLAT);
    }
 
    public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) 
    {
    	System.out.println("reshape() called: x = "+x+", y = "+y+", width = "+width+", height = "+height);
        final GL2 gl = gLDrawable.getGL().getGL2();
 
        if (height <= 0) // avoid a divide by zero error!
        {
            height = 1;
        }
 
        final float h = (float) width / (float) height;
 
        gl.glViewport(0, 0, width, height);
        gl.glMatrixMode(GL2.GL_PROJECTION);
        gl.glLoadIdentity();
        glu.gluPerspective(45.0f, h, 1.0, 20.0);
        gl.glMatrixMode(GL2.GL_MODELVIEW);
        gl.glLoadIdentity();
    }
 
 
	public void dispose(GLAutoDrawable arg0) 
	{
		System.out.println("dispose() called");
	}
}
public class JoglApp 
{
    public static void main(String[] args) 
    {
    	// setup OpenGL Version 2
    	GLProfile profile = GLProfile.get(GLProfile.GL2);
    	GLCapabilities capabilities = new GLCapabilities(profile);
 
    	// The canvas is the widget that's drawn in the JFrame
    	GLCanvas glcanvas = new GLCanvas(capabilities);
    	glcanvas.addGLEventListener(new Renderer());
    	glcanvas.setSize( 300, 300 );
 
        JFrame frame = new JFrame( "Hello World" );
        frame.getContentPane().add( glcanvas);
 
        // shutdown the program on windows close event
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent ev) {
                System.exit(0);
            }
        });
 
        frame.setSize( frame.getContentPane().getPreferredSize() );
        frame.setVisible( true );
    }
}


相关文章推荐

JOGL - Java与OpenGl的绑定

Java也许是最流行的真正的面向对象的编程语言。有许多用Java去结合OpenGL的尝试,但是第一个被大家认可并注意的是Java对于OpenGl的绑定(Java Bindings for OpenGL...

JAVA的OPENGL,JOGL入门例子----碰撞移动的正方体

第一步:到https://jogl.dev.java.net/  下载 jogl-1.1.2-pre-20080523-windows-i586.zip   解压缩到随意文件夹里,如:C:/Pro...
  • xxyy888
  • xxyy888
  • 2012年11月22日 11:15
  • 8250

JAVA Swing图形化编程(一)文件选择器JFileChooser

这两天做一个图形化软件需要选择文件并进行文件读取,因此需要使用到JAVA Spring中的文件选择框。查阅相关资料发现FileChooser是一个不错的选择,在此记录一下使用过程和心得。 拿到一种新...

**JAVA** GUI图形界面编程-Swing的使用

>GUI组件介绍 >>分类 控制组件:button,label 容器:能容纳和排列组件的组件。 >>界面的构成:(分析一个代码的结构层次) 一个顶层容器(主窗口) 顶层容器包含若干个中间容器 ...

java基础学习——Swing图形化用户界面编程

GUI概述 早期计算机系统中,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。...

**JAVA** GUI图形界面编程-swing的使用

>中间容器的嵌套使用  中间容器的使用  对窗体、窗格、面板的理解。  窗体Frame是包括放大、关闭按钮的整个可视化界面  窗格Pane是一种对面的分割工具,能够将洁面按照不同的要求分割...

Java笔记(六)——Swing图形界面编程之布局管理器

1.Java提供布局管理器,控制组件在容器中的布局,通过容器的getContentPane获取Container对象,调用其setLayout方法来设置布局管理对象;   2.FlowLayout...

Java笔记(五)——Swing图形界面编程之组件与容器

1.早期J2SE中是AWT图形用户界面,AWT平台相关性较强,缺少对剪贴板和打印的支持。在AWT基础上形成了Swing,Swing的系统相关性小,功能丰富,成为Java图形界面的主流;   2.小...

jogl:在SWT中使用OpenGL的模板(SWT_AWT桥接)

/******************************************************************************* * Copyright (c) 20...
  • sidihuo
  • sidihuo
  • 2015年04月08日 14:40
  • 456

JAVA的OPENGL,JOGL入门例子----不断变色的点阵(2D)

ECLIPSE环境下 JOGL的配置请参照第一章。 package com.jogl.first; import java.awt.BorderLayout; import java.awt...
  • xxyy888
  • xxyy888
  • 2012年11月22日 11:20
  • 1913
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swing图形编程--------JOGL(OpenGL绑定)
举报原因:
原因补充:

(最多只允许输入30个字)