Swing图形编程--------JOGL(OpenGL绑定)
来源:互联网 发布:linux c 线程同步机制 编辑:程序博客网 时间:2024/05/17 23:32
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 ); }}
- Swing图形编程--------JOGL(OpenGL绑定)
- 你好,JOGL-Java与OpenGl的绑定
- JOGL - Java与OpenGl的绑定
- “你好,JOGL - Java与OpenGl的绑定”的升级
- Swing图形编程---------Java2D
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL 图形编程(一)
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL基础图形编程
- OpenGL基础图形编程
- 简易的javascript遮罩层弹框,支持ie(7~10),ff,goole
- 关于自动更新
- mysql 优化 实现命中率100%
- IIS应用程序池的介绍
- C#编写聊天程序系列笔记(一)原理
- Swing图形编程--------JOGL(OpenGL绑定)
- MySQL五大类参数设置
- Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
- ubuntu下获取对应内核源码的方法
- 【mysql】关于mysql的基本使用
- PHP概率算法(适用于抽奖、随机广告)
- 如何删除windows服务
- js获取 本周,本月,本季度,本年,上月,上周,上季度,去年
- BMP位图格式详解<一>