OberonCore
https://forum.oberoncore.ru/

SDL2 + OpenGL
https://forum.oberoncore.ru/viewtopic.php?f=47&t=6627
Страница 1 из 1

Автор:  kekc_leader [ Среда, 10 Июнь, 2020 20:14 ]
Заголовок сообщения:  SDL2 + OpenGL

Я собираюсь делать библиотеку для создания приложений, использующих OpenGL, на Обероне. Решил начать с ознакомления с OpenGL, в том числе с устройством шейдеров и т. п.

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

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

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

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

Вложения:
Комментарий к файлу: Раскрашенный прямоугольник на OpenGL (пример g004_rectangle)
01.png
01.png [ 845.19 КБ | Просмотров: 4255 ]

Автор:  Иван Денисов [ Среда, 10 Июнь, 2020 20:36 ]
Заголовок сообщения:  Re: SDL2 + OpenGL

Текстуры работают, а вот шейдеры не пробовал пока.

Автор:  kekc_leader [ Среда, 10 Июнь, 2020 20:38 ]
Заголовок сообщения:  Re: SDL2 + OpenGL

А в модуле OpenGL есть соответствующие процедуры? Например, ShaderSource.

Автор:  Иван Денисов [ Среда, 10 Июнь, 2020 20:53 ]
Заголовок сообщения:  Re: SDL2 + OpenGL

kekc_leader писал(а):
А в модуле OpenGL есть соответствующие процедуры? Например, ShaderSource.

Нету.

Автор:  kekc_leader [ Четверг, 11 Июнь, 2020 02:13 ]
Заголовок сообщения:  Re: SDL2 + OpenGL

Открыл Ютуб-канал и смешал уже две текстуры. Видео (пример №6):

Изображение

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

Автор:  kekc_leader [ Пятница, 12 Июнь, 2020 00:01 ]
Заголовок сообщения:  Re: SDL2 + OpenGL

Пошли трансформации, работа с матрицами, передача их на ГПУ.

Видео (пример №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;
}

Автор:  Иван Денисов [ Пятница, 12 Июнь, 2020 05:22 ]
Заголовок сообщения:  Re: SDL2 + OpenGL

Артур, может сразу пробуй на Обероне? Буду на КП повторять за тобой. Шейдеры хочется освоить.

Автор:  kekc_leader [ Пятница, 12 Июнь, 2020 11:42 ]
Заголовок сообщения:  Re: SDL2 + OpenGL

Хорошо, я постараюсь.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/