Чтобы начать работать с OpenGL нужно сначала скачать архив jogamp-all-platforms.7z с сайта:
https://jogamp.org/wiki/index.php/Downloading_and_installing_JOGL
После того как архив скачался, извлекаем в новую папку файлы:
- Файлы zip:
- jogl-java-src.zip
- gluegen-java-src.zip
- Из папки jar:
- jogl-all.jar
- jogl-all-natives-windows-amd64.jar
- jogl-all-natives-windows-i586.jar
- gluegen-rt.jar
- gluegen-rt-natives-windows-amd64.jar
- gluegen-rt-natives-windows-i586.jar
Далее запускаем IntelliJ IDEA и создаем проект или открываем готовый.
Заходим в меню File и нажимаем Project Structure.
Переходим в Modules и нажимаем на зеленый плюс справа.
Далее выбираем JARs os directories и затем из папки, в которую извлекли файлы, добавляем файлы с разрешением jar. Затем выбираем Library, а потом Java и добавляем файлы с разрешением zip. Отмечаем все что добавили галочками и нажимаем Apply и затем OK.
Все,OpenGL подключен. Если нажать на External Libraries, то можно увидеть все что мы подключили.
Теперь напишем пример для отрисовки фигуры(треугольника с градиентом)с помощью средств и библиотек OpenGL.
Код:
OneTriangle:
import com.jogamp.opengl.GL; import com.jogamp.opengl.GL2; import com.jogamp.opengl.GL2ES3; import com.jogamp.opengl.glu.GLU; public class OneTriangle { protected static void setup( GL2 gl2, int width, int height ) { gl2.glMatrixMode( GL2.GL_PROJECTION ); gl2.glLoadIdentity(); // начало системы координат в левом нижнем углу с шириной и высотой, как и окно GLU glu = new GLU(); glu.gluOrtho2D( 0.0f, width, 0.0f, height ); gl2.glMatrixMode( GL2.GL_MODELVIEW ); gl2.glLoadIdentity(); gl2.glViewport( 0, 0, width, height ); } protected static void render( GL2 gl2, int width, int height ) { gl2.glClear( GL.GL_COLOR_BUFFER_BIT ); //рисуем треугольник, заполняющий окно gl2.glLoadIdentity(); gl2.glBegin( GL2ES3.GL_QUADS ); gl2.glColor3f( 1, 0, 0 ); gl2.glVertex2f( 0, 0 ); gl2.glColor3f( 0, 1, 0 ); gl2.glVertex2f( width, 0 ); gl2.glColor3f( 0, 0, 1 ); gl2.glVertex2f( width / 2, height ); gl2.glColor3f( 0, 0, 1 ); gl2.glVertex2f( width / 2, height ); gl2.glEnd(); } }
OneTriangleAWT:
import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLEventListener; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.awt.GLCanvas; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class OneTriangleAWT { public static void main( String [] args ) { GLProfile glprofile = GLProfile.getDefault(); GLCapabilities glcapabilities = new GLCapabilities( glprofile ); final GLCanvas glcanvas = new GLCanvas( glcapabilities ); glcanvas.addGLEventListener( new GLEventListener() { @Override public void reshape( GLAutoDrawable glautodrawable, int x, int y, int width, int height ) { OneTriangle.setup( glautodrawable.getGL().getGL2(), width, height ); } @Override public void init( GLAutoDrawable glautodrawable ) { } @Override public void dispose( GLAutoDrawable glautodrawable ) { } @Override public void display( GLAutoDrawable glautodrawable ) { OneTriangle.render( glautodrawable.getGL().getGL2(), glautodrawable.getSurfaceWidth(), glautodrawable.getSurfaceHeight() ); } }); final Frame frame = new Frame( "One Triangle AWT" ); frame.add( glcanvas ); frame.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent windowevent ) { frame.remove( glcanvas ); frame.dispose(); System.exit( 0 ); } }); frame.setSize( 640, 480 ); frame.setVisible( true ); } }
Прикрепленный файл | Размер |
---|---|
Project1.zip | 11.04 кб |