- JOGL Tutorial
- JOGL - Home
- JOGL - Overview
- JOGL - Installation
- JOGL Basic Templates
- JOGL - API for Basic Templates
- JOGL - Canvas with AWT
- JOGL - Canvas with Swing
- JOGL - GLJPanel Class
- JOGL Graphical Shapes
- JOGL - Drawing Basics
- JOGL - Drawing with GL_Lines
- JOGL - Pre-defined shapes
- JOGL Effects & Transformation
- JOGL - Transformation
- JOGL - Coloring
- JOGL - Scaling
- JOGL - Rotation
- JOGL - Lighting
- JOGL 3D Graphics
- JOGL - 3D Basics
- JOGL - 3D Triangle
- JOGL - 3D Cube
- JOGL - Appendix
- JOGL Useful Resources
- JOGL - Quick Guide
- JOGL - Useful Resources
- JOGL - Discussion
JOGL - 带 AWT 的画布
本章介绍如何使用 Canvas 和 AWT 框架绘制 JOGL 基本框架。在这里,我们将构造一个 AWT 框架,并使用框架类的add()方法将画布对象添加到 AWT 框架中。
下面给出的是编写一个程序的步骤,该程序结合 JOGL 的 Canvas 类和 AWT 的 Frame 类来创建 JOGL 基本框架。
第一步:创建类
最初创建一个实现GlEventListener接口的类并导入包 javax.media.opengl。实现所有四个方法display()、dispose()、 reshape()、init()。由于这是基本框架,因此讨论了创建画布类、将其添加到框架等基本任务。所有GLEVentListener接口方法均未实现。
第二步:准备画布
(a)构造GLCanvas类对象
final GLCanvas glcanvas = new GLCanvas( xxxxxxx ); //here capabilities obj should be passed as parameter
(b)实例化GLCapability类
GLCapabilities capabilities = new GLCapabilities( xxxxx ); //here profile obj should be passed as parameter
(c)生成GLProfile对象
由于它是静态方法,因此使用类名调用它。由于本教程是关于 JOGL2 的,所以让我们生成 GL2 接口对象。
final GLProfile profile = GLProfile.get( GLProfile.GL2 ); // both, variable and method are static hence both are called using class name.
让我们看看画布的代码片段。
//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);
(d)现在使用addGLEventListener()方法将GLEventListener添加到画布。该方法需要GLEventListener接口的对象作为参数。因此,传递实现GLEventListener的类的对象。
BasicFrame basicframe = newBasic Frame( );// class which implements GLEventListener interface glcanvas.addGLEventListener( basicframe );
(e)使用 GLCanvas 从 javax.media.opengl.awt.AWTGLAutoDrawable 继承的 setSize() 方法设置帧的大小。
glcanvas.setSize( 400, 400 );
现在您已经准备好使用GLCanvas了。
第三步:创建框架
通过实例化 JSE AWT 框架组件的Frame类 Object来创建框架。
向其中添加画布并使框架可见。
//creating frame final Frame frame = new frame( " Basic Frame" ); //adding canvas to 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); } }
如果编译并执行上述程序,将生成以下输出。它显示了当我们将GLCanvas类与 AWT 一起使用时形成的基本框架-