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 на Обероне? Я помню, Иван делал вращающуюся сферу на Блекбоксе, но там не было текстур, шейдеров и прочего.
|
Автор: | Иван Денисов [ Среда, 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/ |