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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

Рейтинг@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 кб