本章介绍如何使用带有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 类时形成的基本框架;