Рубрики
Без рубрики

OpenGL Python графический проектирование с использованием OpenGL и Python [новичками]

Что такое OpenGL, GLUT и PYOPENGL? Opengl. (Открытая графическая библиотека) – это кросс-язык, CRO … Теги с Python, OpenGL, графическим, начинающим.

Что такое OpenGL, GLUT и PYOPENGL?

OpenGL (Открытая графическая библиотека) – это перекрестный, кроссплатформенный интерфейс программирования приложений (API) для рендеринга 2D и 3D векторной графики. И GLUT – это инструментарий утилиты OpenGL, независимый от того, чтобы написать программы OpenGL. Он реализует простую обмоточную API для OpenGL. GLUT делает его значительно легче узнать и изучить программирование OpenGL. И, наконец, Pyopengl является наиболее распространенной перекрестной платформой Python Binding для OpenGL и связанных с ними API. (Определения от OpenGL Docs Несомненно

Установка

  1. Создайте новый каталог и откройте его. mkdir opengl-surve && cd opengl-surve

  2. Создайте виртуальную среду. (Просто чтобы быть в безопасности!) python3 -m venv opengl-tut

  3. Активируйте виртуальную среду. Источник OpenGL-TUT/BIN/ACTIVATE

  4. Установите библиотеки. PIP Установить Pyopengl Pyopengl_accelreate

Что мы будем делать?

  1. Сначала мы создадим окно со следующими свойствами.

    • Высота: 500 шток, ширина: 500 пикселей
    • Цвет фона: RGB (1,1,0)
    • Положение окна: (100, 100)
    • Цвет объектов: RGB (0,2, 0,5, 0,4)
    • Название: «Мой код OpenGL»
  2. Создайте две точки в следующих координатах.

    • P1 (100,100)
    • P2 (300, 200)
    • Размер точки: 10px.
  3. Нарисуйте прямоугольник.

    • Высота: 100px.
    • Ширина: 200px.
    • Отправная точка; (100, 100)
  4. Нарисуйте треугольник 10px над данным прямоугольником.

Давай код

Шаг 1 Сначала откройте пустой файл и назовите его как Drawing.py (Используйте любое имя, которое вы хотите). Тогда вы должны импортировать библиотеки.

from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *

Шаг 2 Сначала нам нужно инициировать блюду.

glutInit()

Тогда вы можете видеть в наших свойствах Windows, цвета приведены в формате RGB. Поэтому нам нужно инициировать режим отображения с RGB.

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)

Здесь Glut_single Относится к буферным контексте. Одинокий Значит только один кадр, который используется для рисования и отображения содержимого. Просто, что вы рисуете более или менее непосредственно на экран.

Шаг 3 Далее нам нужно установить размер окна и положение окна. Это в значительной степени прямой вперед. Сама команда объясняет, что это так.

glutInitWindowSize(500, 500)  #(height, width)
glutInitWindowPosition(100, 100) #(x pos, y pos)

Шаг 4 Теперь с данной базовой конфигурацией мы можем создать окно с любое имя, которое мы хотим.

glutCreateWindow("My OpenGL Code") #Use any name you want

Шаг 5. Далее нам нужно добавить дополнительные настройки для окна, которое мы только что создали. Сначала нам нужно создать новую функцию. Я называю это минит () . Внутри этой функции я устанавливаю цвет фона и цвет переднего плана. Определите эту функцию до glutinit () Отказ

def myInit():
   glClearColor(1.0, 1.0, 0.0, 1.0); #RGBA
   glColor3f(0.2, 0.5, 0.4); #RGB

glclearcolor Устанавливает цвет фона в RGBA (красный, зеленый, синий, синий, альфа-формат и glcolor3f Устанавливает цвет для наших объектов в формате RGB.

И тогда мы можем идти вперед и вызвать эту функцию и инициировать.

Так вот и это для базовой настройки. Теперь мы можем увидеть наш код так.

from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *

def myInit():
    glClearColor(1.0, 1.0, 0.0, 1.0)
    glColor3f(0.2, 0.5, 0.4)


glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)  

glutInitWindowSize(500, 500)
glutInitWindowPosition(100, 100) 

glutCreateWindow("My OpenGL Code") 

myInit()

Теперь мы создадим два очка. OpenGL рисует объекты с использованием координат. Так же, как вы нарисовали фигуры в картезианском самолете (කාටිසීය තලය, ඛණ්ඩාංක තලය в Sinhala), когда вы были ребенком. Прежде чем делать что-либо, нам нужно определить матрицу проекции. Здесь мы используем матрицу орфографической проекции. Ортографическая проекция означает, что представляют трехмерные объекты в двух измерениях. Для получения дополнительной информации о орфографических прогнозах см. Видео Джона Уайта на ютубе.

Перейти к твоему Минит Функция и определить свою матрицу, как это.

gluOrtho2D(0, 500, 0, 500) // left, right, bottom, top

Это создаст матрицу проекции, которая отображает 0 на левую границу кадра, 500 справа от 0 до дна и 500 к вершине.

Затем он говорит, что размер точки составляет 10 пикселей. Давайте также определим это. Снова внутри вашего Минит Функция, определить размер точки как 10px. Убедитесь, что вы проходите поплавок!

glPointSize(10.0)

Теперь, когда установка сделана, мы можем выделить точки на матрице. Для этого я собираюсь создать новую функцию под названием отображать . Это Дисплей Функция проведет код, который используется для того, чтобы сделать что-либо внутри нашего кадра.

def display():

Начнем с очистки текущего цветового буфера.

glClear(GL_COLOR_BUFFER_BIT)

Затем мы определяем начальную точку того, что мы собираемся рисовать

glBegin(GL_POINTS)

Gl_points означает, что мы собираемся рисовать очки в этом разделе. Теперь мы можем выделить первую координату (вершина). В списке выше его свойств он говорит, что первая координата представляет собой P1 (100,100). Мы сделаем это первым.

glVertex2f(100, 100)

Вторая координата P2 (300, 200) происходит так же.

glVertex2f(300, 300)

Затем наконец, отметьте конец

glEnd()
glFlush()

GLFLUSH () очистит буфер. Теперь нам нужно называть это Дисплей () Функция для того, чтобы нарисовать точки на нашем кадре. Для этого у нас есть функция по имени glutdisplayfunc () в библиотеке GluT.

glutDisplayFunc(display) 

И сразу после этого нам нужно установить цикл для работы программы. Эта функциональная петля внутри себя, обработка событий и запускает ваши функции обратного вызова при необходимости.

glutMainLoop()

Так что полный код на сегодняшний день будет выглядеть так.

from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *

def myInit():
    glClearColor(1.0, 1.0, 0.0, 1.0) 
    glColor3f(0.2, 0.5, 0.4)
    glPointSize(10.0)
    gluOrtho2D(0, 500, 0, 500)

def display():
    glClear(GL_COLOR_BUFFER_BIT)

    glBegin(GL_POINTS)
    glVertex2f(100, 100)
    glVertex2f(300, 200)
    glEnd()

    glFlush()


glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)   
glutInitWindowSize(500, 500)  
glutInitWindowPosition(100, 100)  
glutCreateWindow("My OpenGL Code")
myInit()
glutDisplayFunc(display) 
glutMainLoop()

Вы можете запустить файл, выполнив Python Drawing.py в вашей командной строке.

Теперь давайте перейдем на второй объект. Прямоугольник. Перейти к Дисплей () функция и после Глинина () Функция, мы должны написать код для прямоугольника.

Перед записью любого кода я нарисовал свой прямоугольник с заданной исходной координатой и измерениями для ширины и высоты на бумаге. Поэтому отправная точка – это (100,100) и высота составляет 100px, а ширина 200px. Это даст вам что-то подобное.

Так что теперь давайте установим эту координаты в коде.

glBegin( GL_QUADS ) 
glVertex2f( 100.0, 100.0 ) 
glVertex2f( 300.0, 100.0 ) 
glVertex2f( 300.0, 200.0 ) 
glVertex2f( 100.0, 200.0 ) 
glEnd()

Здесь вы должны определить Gl_quads. как параметр для ГЛБЕГИН () Отказ Gl_quads будет относиться к каждой группе из четырех вершин (координат) как независимый четырехугольник.

Затем мы перейдем к треугольной части. В разделе свойств он говорит, что треугольник должен будет расположить 10px над прямоугольником. Так как предыдущее время я нарисовал это на бумаге.

Теперь код. Здесь вы должны пройти GL_TRIANGLE_STRIP в ГЛБЕГИН () Так что это будет группировать 3 вершины в качестве треугольника.

glBegin(GL_TRIANGLE_STRIP) 
glVertex2f(100.0, 210.0) 
glVertex2f(300.0, 210.0) 
glVertex2f(300.0, 310.0) 
glEnd()

Вот и все! Теперь вы можете запустить код и увидеть следующий вывод.

Полный код: https://gist.github.com/suvink/fe5837701c62761d2e9661dfaaae7b84.

Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать в разделе комментариев. Спасибо!

Оригинал: “https://dev.to/suvink/graphic-designing-using-opengl-and-python-beginners-1i4f”