В этой главе объясняется, как нарисовать базовый фрейм 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 —