JOGL - Canvas với AWT

Chương này giải thích cho bạn cách vẽ một khung cơ bản JOGL bằng Canvas với khung AWT. Ở đây, chúng tôi sẽ tạo một Khung AWT và thêm đối tượng canvas vào khung AWT bằng cách sử dụngadd() phương thức của lớp khung.

Dưới đây là các bước để viết một chương trình tạo một khung cơ bản JOGL với sự kết hợp của lớp Canvas của JOGL và lớp Khung của AWT.

Bước 1: Tạo lớp học

Ban đầu tạo một lớp thực hiện GlEventListenergiao diện và nhập gói javax.media.opengl. Thực hiện tất cả bốn phương phápdisplay(), dispose(), reshape(), init().Vì đây là khung cơ bản nên các tác vụ ban đầu như tạo lớp canvas, thêm nó vào khung đã được thảo luận. Tất cảGLEVentListener các phương thức giao diện không được thực hiện.

Bước 2: Chuẩn bị Canvas

(a) Xây dựng GLCanvas đối tượng lớp

final GLCanvas glcanvas = new GLCanvas( xxxxxxx );

//here capabilities obj should be passed as parameter

(b) Khởi tạo GLCapabilities lớp học

GLCapabilities capabilities = new GLCapabilities( xxxxx );

//here profile obj should be passed as parameter

(c) Đang tạo GLProfile vật

Vì nó là phương thức tĩnh, nó được gọi bằng tên lớp. Vì hướng dẫn này là về JOGL2, chúng ta hãy tạo đối tượng giao diện GL2.

final GLProfile profile = GLProfile.get( GLProfile.GL2 );

// both, variable and method are static hence both are called using class name.

Hãy cho chúng tôi xem đoạn mã cho canvas.

//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) Bây giờ thêm GLEventListener vào canvas bằng phương pháp addGLEventListener(). Phương pháp này cần đối tượng củaGLEventListenergiao diện như tham số. Do đó, truyền đối tượng của một lớp triển khaiGLEventListener.

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

(e) Đặt kích thước của khung bằng phương thức setSize () được GLCanvas kế thừa từ javax.media.opengl.awt.AWTGLAutoDrawable.

glcanvas.setSize( 400, 400 );

Bây giờ bạn đã sẵn sàng với GLCanvas.

Bước 3: Tạo khung

Tạo khung bằng cách khởi tạo Frame lớp Đối tượng của thành phần khung JSE AWT.

Thêm canvas vào nó và làm cho khung hiển thị.

//creating frame
final Frame frame = new frame( " Basic Frame" );

//adding canvas to frame
frame.add( glcanvas );
frame.setVisible( true );

Bước 4: Xem khung hình ở chế độ toàn màn hình

Để xem khung toàn màn hình, hãy lấy kích thước màn hình mặc định bằng java.awt.Toolkitlớp học. Bây giờ, bằng cách sử dụng các kích thước kích thước màn hình mặc định đó, hãy đặt kích thước khung bằngsetSize() phương pháp.

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

Hãy để chúng tôi xem qua chương trình để tạo khung cơ bản bằng 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);
   }
	
}

Nếu bạn biên dịch và thực thi chương trình trên, kết quả sau sẽ được tạo. Nó cho thấy một khung cơ bản được hình thành khi chúng ta sử dụngGLCanvas lớp học với AWT -