OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 03 Июль, 2020 17:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: SDL2 + OpenGL
СообщениеДобавлено: Среда, 10 Июнь, 2020 20:14 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 188
Откуда: г. Рига, Латвийская ССР
Я собираюсь делать библиотеку для создания приложений, использующих OpenGL, на Обероне. Решил начать с ознакомления с OpenGL, в том числе с устройством шейдеров и т. п.

Своё ознакомление с OpenGL я решил проводить на языке Go и тщательно документировать, для чего создал открытый репозиторий:
GitHub kekcleader/goAndOberonOpenGL

Сейчас там четыре программки, одна из которых — прямоугольник с анимированной текстурой (см. видео, исходник). Изменение цвета происходит через шейдеры и «глобальную переменную» (в OpenGL такие переменные, передаваемые на ГПУ называются uniform), значение которой изменяется по синусойде от 0 до 1, в зависимости от времени.

Дальше планируется эти примеры переносить на Оберон, постепенно расширяя набор необходимых для этого библиотечных процедур.

А что у нас сейчас с OpenGL на Обероне? Я помню, Иван делал вращающуюся сферу на Блекбоксе, но там не было текстур, шейдеров и прочего.


Вложения:
Комментарий к файлу: Раскрашенный прямоугольник на OpenGL (пример g004_rectangle)
01.png
01.png [ 845.19 КБ | Просмотров: 219 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDL2 + OpenGL
СообщениеДобавлено: Среда, 10 Июнь, 2020 20:36 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2756
Текстуры работают, а вот шейдеры не пробовал пока.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDL2 + OpenGL
СообщениеДобавлено: Среда, 10 Июнь, 2020 20:38 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 188
Откуда: г. Рига, Латвийская ССР
А в модуле OpenGL есть соответствующие процедуры? Например, ShaderSource.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDL2 + OpenGL
СообщениеДобавлено: Среда, 10 Июнь, 2020 20:53 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2756
kekc_leader писал(а):
А в модуле OpenGL есть соответствующие процедуры? Например, ShaderSource.

Нету.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDL2 + OpenGL
СообщениеДобавлено: Четверг, 11 Июнь, 2020 02:13 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 188
Откуда: г. Рига, Латвийская ССР
Открыл Ютуб-канал и смешал уже две текстуры. Видео (пример №6):

Изображение

Это всё ещё на Go, на рано или поздно начну переводить на Оберон.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDL2 + OpenGL
СообщениеДобавлено: Пятница, 12 Июнь, 2020 00:01 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 188
Откуда: г. Рига, Латвийская ССР
Пошли трансформации, работа с матрицами, передача их на ГПУ.

Видео (пример №7):

Изображение

Исходник: g007_transform.go

Вот так это выглядит на Go:
Код:
import (
  "github.com/go-gl/gl/v3.3-core/gl"
  "github.com/go-gl/mathgl/mgl32"
)
/*...*/
var shaderProg uint32
var transformLocation int32
var transform mgl32.Mat4
/*...*/
transformLocation = gl.GetUniformLocation(shaderProg, gl.Str("transform\x00"))
gl.UniformMatrix4fv(transformLocation, 1, false, &transform[0])

На Обероне было бы как-то так:
Код:
IMPORT GL, M := MGL;
(*...*)
VAR shaderProg: INTEGER;
  transformLocation: INTEGER;
  transform: M.Mat4;
BEGIN
  (*...*)
  transformLocation := GL.GetUniformLocation(shaderProg, "transform"))
  GL.UniformMatrix4fv(transformLocation, 1, FALSE, transform)

А на стороне вершинного шейдера матрица принимается и используется так:
Код:
uniform mat4 transform;

void main()
{
  gl_Position = transform * vec4(aPos, 1.0);
  ourColor = aColor;
  texCoord = aTexCoord;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDL2 + OpenGL
СообщениеДобавлено: Пятница, 12 Июнь, 2020 05:22 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2756
Артур, может сразу пробуй на Обероне? Буду на КП повторять за тобой. Шейдеры хочется освоить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDL2 + OpenGL
СообщениеДобавлено: Пятница, 12 Июнь, 2020 11:42 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 188
Откуда: г. Рига, Латвийская ССР
Хорошо, я постараюсь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB