JOGL - ผ้าใบพร้อม AWT

บทนี้จะอธิบายวิธีการวาดเฟรมพื้นฐาน JOGL โดยใช้ Canvas กับเฟรม AWT ที่นี่เราจะสร้าง AWT Frame และเพิ่มวัตถุผ้าใบลงในเฟรม AWT โดยใช้ไฟล์add() วิธีการของคลาสเฟรม

ด้านล่างนี้เป็นขั้นตอนในการเขียนโปรแกรมที่สร้างเฟรมพื้นฐาน JOGL โดยใช้คลาส Canvas ของ JOGL และคลาส Frame ของ AWT ร่วมกัน

ขั้นตอนที่ 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) ตอนนี้เพิ่ม GLEventListener ลงบนผืนผ้าใบโดยใช้วิธีการ addGLEventListener(). วิธีนี้ต้องการวัตถุGLEventListenerอินเทอร์เฟซเป็นพารามิเตอร์ ดังนั้นส่งผ่านวัตถุของคลาสที่ดำเนินการGLEventListener.

BasicFrame basicframe = newBasic Frame( );// class which implements
GLEventListener interface
glcanvas.addGLEventListener( basicframe );

(e) กำหนดขนาดของเฟรมโดยใช้เมธอด setSize () ที่ GLCanvas สืบทอดมาจาก javax.media.opengl.awt.AWTGLAutoDrawable

glcanvas.setSize( 400, 400 );

ตอนนี้คุณพร้อมแล้วกับ GLCanvas.

ขั้นตอนที่ 3: การสร้างเฟรม

สร้างเฟรมโดยสร้างอินสแตนซ์ไฟล์ Frame คลาส Object ของส่วนประกอบเฟรม JSE AWT

เพิ่มผืนผ้าใบลงไปและทำให้มองเห็นกรอบได้

//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 -