关闭

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

782人阅读 评论(0) 收藏 举报
分类:

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 );
    }
}


0
0
查看评论

JAVA的OPENGL,JOGL入门实例----不断变色的点阵 (源代码)

不断变色的点阵 (源代码) 第一个类 package test1.opengl; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.Headle...
  • sidihuo
  • sidihuo
  • 2015-03-03 10:34
  • 1397

jogl+swing+javafx学习与实战2

1.写一个窗口 需要创建一个类,这个类需要实现GLEVentListener接口, public interface GLEventListenerextends EventListener ****对于此接口的描述**** Declares events which client co...
  • SATC153R
  • SATC153R
  • 2017-03-30 20:02
  • 116

JAVA的OPENGL,JOGL入门实例----碰撞移动的正方体 (配置+源代码)

我的配置方法: 下载jogl-1.1.1a-windows-i586.zip,(http://download.java.net/media/jogl/builds/archive/jsr-231-1.1.1a/)解压后找出lib中的四个dll文件,复制到C盘windows/system32下面(其...
  • sidihuo
  • sidihuo
  • 2015-03-03 10:02
  • 6128

《jogl简明教程》学习笔记1

jogl的资料是在是太少了,找了将近一个月,几乎看到的都是《jogl简明教程》,中文的教程完全就没有 是在没有办法只能硬着头皮用这本书了。不过在看jogl之前看看opengl的书(推荐《红宝书》)还是非常有用的 这里对《jogl简明教程》书里的内容做一些学习记录 首先创建一个窗口,opengl的...
  • alan19931103
  • alan19931103
  • 2015-09-16 21:34
  • 1295

jogl 纹理贴图

用到了nehe的common中的TextureReader类 package test.d717; * Copyright (c) 2015, 2015 Technologies Corporation. import java.awt.FlowLayout; import jav...
  • sidihuo
  • sidihuo
  • 2015-07-17 16:22
  • 1351

opengl常量表

想在java里玩玩opengl,没想到搞了半天jogl,发现没有GL_PROJECTION,简直惊了,用0x1701代替发现无异常,因此从glew.h里把所有常量扒了出来,一共参考: package com.myclass; public interface OpenglEnum { p...
  • qwesdfok
  • qwesdfok
  • 2015-07-20 22:43
  • 549

opengl es 2.0游戏与图形编程——2.设置图形投影

注意:本文是读书笔记,代码是使用书中sdk的,主要掌握重点知识,别在意小细节 1.两种投影:正交投影(2d,但可使用z,只是透视完全基于当前屏幕比),透视投影(3d) 2.初始设置矩阵   模型视图矩阵:物体空间 -> (模型)世界空间 ->(视图) 摄像机空间  ...
  • adfansong
  • adfansong
  • 2015-08-24 21:19
  • 1334

JOGL学习-1 JOGL配置方法(zz)

 1.准备工作 (1)安装JDK1.6      下载地址:http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-...
  • msh1216
  • msh1216
  • 2010-05-13 16:54
  • 4492

jogl使用VBO

jogl使用VBO,可以把绘图的顶点数据(点坐标、颜色。。。。)传给显卡,避免CPU遍历数据一个一个的传,极大提升性能(在图元极大的时候很明显) 以下例子,利用vbo技术画三角形package test.array; package test.array; import java.awt.Flo...
  • sidihuo
  • sidihuo
  • 2015-04-17 17:51
  • 986

OpenGL三维图形编程技术【转】

人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics Library)三维图形库表现尤为突出,它易于使用且功能强大。随着计算机技术的迅速发展,GL已经进一步发展成为OpenGL,现在OpenGL被认为是高性能图形和交互式视景处理...
  • HOT_Destiny
  • HOT_Destiny
  • 2015-11-25 21:05
  • 1901
    个人资料
    • 访问:93534次
    • 积分:1919
    • 等级:
    • 排名:千里之外
    • 原创:100篇
    • 转载:7篇
    • 译文:2篇
    • 评论:3条
    最新评论