JOGL - холст с AWT
В этой главе объясняется, как нарисовать базовый фрейм JOGL, используя Canvas с фреймом AWT. Здесь мы создадим фрейм AWT и добавим объект холста в фрейм AWT, используяadd() метод класса кадра.
Ниже приведены шаги для написания программы, которая создает базовый фрейм JOGL с комбинацией класса JOGL Canvas и класса AWT Frame.
Шаг 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 Объект класса 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 -