开发手册 欢迎您!
软件开发者资料库

JOGL - 使用AWT的画布

JOGL Canvas with AWT - 使用这个初学者教程,简单易学地学习JOGL,包括基本到高级知识,从简介,概述,安装,基本模板,带有AWT的画布,Swing,GLJPanel类,图形形状,对象转换,着色,缩放,旋转,照明,3D图形,附录。

本章介绍如何使用带有AWT帧的Canvas绘制JOGL基本帧.在这里,我们将构造一个AWT框架,并使用框架类的 add()方法将画布对象添加到AWT框架.

下面给出的是编写一个程序的步骤,该程序使用JOGL的Canvas类和AWT的Frame类的组合创建JOGL基本框架.

Step1:创建类

最初创建一个实现 GlEventListener 接口的类,并导入包javax.media.opengl.实现所有四种方法 display(),dispose(), reshape(),init().由于这是基本框架,原始任务如创建画布类,添加讨论了它到框架.所有 GLEVentListener 接口方法都未实现.

步骤2:准备画布

(a)构造 GLCanvas 类对象

final GLCanvas glcanvas = new GLCanvas( xxxxxxx );//here capabilities obj should be passed as parameter

(b)实例化 GLCapabilities class

GLCapabilities capabilities = new GLCapabilities( xxxxx );//here profile obj should be passed as parameter

(c)生成 GLProfile 对象

因为它是静态方法,所以使用类名调用它.由于本教程是关于JOGL2的,让我们生成GL2接口对象.

final GLProfile profile = GLProfile.get(GLProfile.GL2); //两者,变量和方法都是静态的,因此两者都是使用类名调用的.

让我们看一下画布的代码片段.

//获取GL2配置文件的功能对象 final GLProfile profile = GLProfile.get(GLProfile.GL2);  GLCapabilities capabilities = new GLCapabilities(profile); //画布 final GLCanvas glcanvas = new GLCanvas(capabilities);

(d)现在使用 addGLEventListener()方法将 GLEventListener 添加到画布的.此方法需要 GLEventListener 接口的对象作为参数.因此,传递实现 GLEventListener 的类的对象.

BasicFrame basicframe = newBasic Frame();//class它实现GLEventListener interfaceglcanvas.addGLEventListener(basicframe);

(e)使用GLCanvas从javax.media.opengl.awt继承的setSize()方法设置帧的大小. AWTGLAutoDrawable.

glcanvas.setSize(400,400);

现在你准备好了 GLCanvas .

Step3:创建框架

通过实例化JSE AWT框架组件的 Frame 类对象来创建框架.

添加画布并制作框架可见.

//创建帧 final Frame frame = new frame( " Basic Frame" );//将画布添加到帧 frame.add(glcanvas);  frame.setVisible(true);

步骤4:全屏查看框架

要全屏查看框架,请获取默认屏幕使用 java.awt.Toolkit 类的大小.现在,使用这些默认屏幕尺寸尺寸,使用 setSize()方法设置框架尺寸.

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();frame.setSize(screenSize.width, screenSize.height);

让我们通过程序使用AWT : 来生成基本框架;

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.swing.JFrame;public class BasicFrame implements GLEventListener {   @Override   public void display(GLAutoDrawable arg0) {      // method body   }   @Override   public void dispose(GLAutoDrawable arg0) {      //method body   }   @Override   public void init(GLAutoDrawable arg0) {      // method body   }   @Override   public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {      // method body   }   public static void main(String[] args) {         //getting the capabilities object of GL2 profile      final GLProfile profile = GLProfile.get(GLProfile.GL2);      GLCapabilities capabilities = new GLCapabilities(profile);              // The canvas      final GLCanvas glcanvas = new GLCanvas(capabilities);      BasicFrame b = new BasicFrame();      glcanvas.addGLEventListener(b);              glcanvas.setSize(400, 400);              //creating frame      final Frame frame = new Frame (" Basic Frame");              //adding canvas to frame      frame.add(glcanvas);      frame.setSize( 640, 480 );      frame.setVisible(true);   }}

如果编译并执行上述程序,则会生成以下输出.
它显示了当我们使用带有AWT : 的 GLCanvas 类时形成的基本框架;

基本框架