Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

dobryj den, popytalas otkryt prikreplionnyj fail ctoby posmotret kak rabotaet, no mne ego ne pokazyvaet vydajet osibku. Pochemu?
Очень интересно! ии сайт крутой жалко что умирает(
У Вас число превысит максимальное число int. Можно использовать в Вашем случае uint, но лучше все переписать на double.
Добавление к программе строки glutReshapeFunc(changeSize); приводит к тому, что треугольник перестаёт совсем отрисовываться.
Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Среда программирования: 
IntelliJ IDEA


Чтобы начать работать с OpenGL нужно сначала скачать архив jogamp-all-platforms.7z с сайта:
https://jogamp.org/wiki/index.php/Downloading_and_installing_JOGL
После того как архив скачался, извлекаем в новую папку файлы:

  1. Файлы zip:
    • jogl-java-src.zip
    • gluegen-java-src.zip
  2. Из папки 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.zip11.04 кб