
- JOGL 圖形形狀
- JOGL - 繪圖基礎
- JOGL - 使用GL_Lines繪圖
- JOGL - 預定義形狀
- JOGL 3D圖形
- JOGL - 3D基礎
- JOGL - 3D三角形
- JOGL - 3D立方體
- JOGL - 附錄
- JOGL 有用資源
- JOGL - 快速指南
- JOGL - 有用資源
- JOGL - 討論
JOGL - 使用AWT的畫布
本章解釋如何使用帶有AWT框架的畫布繪製JOGL基本框架。在這裡,我們將構建一個AWT框架,並使用框架類的add()方法將畫布物件新增到AWT框架。
下面是編寫程式的步驟,該程式建立了一個結合了JOGL的Canvas類和AWT的Frame類的JOGL基本框架。
步驟1:建立類
首先建立一個實現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類
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) 使用從javax.media.opengl.awt.AWTGLAutoDrawable繼承的GLCanvas的setSize()方法設定框架的大小。
glcanvas.setSize( 400, 400 );
現在您已經準備好GLCanvas了。
步驟3:建立框架
透過例項化JSE AWT框架元件的Frame類物件來建立框架。
將畫布新增到其中,並使框架可見。
//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時形成的基本框架:
