Учебники

JOGL — Холст с AWT

В этой главе объясняется, как нарисовать базовый фрейм JOGL, используя Canvas с фреймом AWT. Здесь мы создадим кадр AWT и добавим объект canvas в кадр AWT, используя метод add () класса frame.

Ниже приведены шаги для написания программы, которая создает базовый фрейм JOGL с комбинацией класса Canvas JOGL и класса Frame AWT.

Шаг 1: Создание класса

Изначально создайте класс, который реализует интерфейс GlEventListener, и импортируйте пакет javax.media.opengl. Реализуйте все четыре метода display (), dispose (), reshape (), init (). Поскольку это базовый фрейм, обсуждались такие примитивные задачи, как создание класса canvas, добавление его в фрейм. Все методы интерфейса GLEVentListener остались не реализованными.

Шаг 2: Подготовка холста

(а) Построение объекта класса GLCanvas

final GLCanvas glcanvas = new GLCanvas( xxxxxxx );

//here capabilities obj should be passed as parameter

(б) Создание класса 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.

Давайте посмотрим на фрагмент кода для 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) Теперь добавьте 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 объекта Frame компонента 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 —