Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/1: Рейтинг темы: голосов - 1, средняя оценка - 5.00
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27

Литература, уроки по OpenGL 3+

01.12.2014, 17:47. Показов 44485. Ответов 147
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста литература, уроки и т.п. по OpenGL 3+.
Желательно на русском.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2014, 17:47
Ответы с готовыми решениями:

Уроки OpenGL - FAQ
Уроки OpenGL Оглавление Предисловие Урок 1. Рисование OpenGL в окне на WinAPI Урок 2. GLUT vs WinAPI. Будь проще... Урок 3....

Дайте ссылки на уроки по OpenGL в C#
Дайте ссылки на уроки по OpenGL в C#, пожалуйста

Уроки создания движков и редакторов на OpenGL+delphi
Сабж. Подскажите Уроки или киньте исходники движков, написанных на делфи с использованием openGL.

147
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,152
Записей в блоге: 2
02.03.2026, 17:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Royal_X Посмотреть сообщение
для интерполяции углы Эйлера не очень подходят. Нужно использовать кватернионы.
Да, все знают/читали что "кватернионы лучше". Но результат работы движка (матрицы) должен быть записан в виде углов Эйлера. И это должны быть разумные, гладкие кривые по каждому углу, а не прыгающие значения от кадра к кадру. Это потом, если (или когда) дело дойдет до интерполяции - под капотом углы конвертятся в кватернионы и вычисляется интерполированное значение (которое опять будет предъявлено юзеру в углах)
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
02.03.2026, 17:46
Igor3D, ну так интерполируешь кватернионы и полученный кватернион конвертируешь в углы Эйлера.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,152
Записей в блоге: 2
02.03.2026, 19:43
Цитата Сообщение от Royal_X Посмотреть сообщение
ну так интерполируешь кватернионы и полученный кватернион конвертируешь в углы Эйлера.
На кадре 1 объект имеет матрицу М1, на кадре 2 матрицу М2 и.т.д. Возможно когда-то потом юзер сунет нос между кадрами (имеет право), но сейчас, пока, ничего интерполировать не надо, а требуется предъявить углы, причем так чтобы они не прыгали

Не тормозите
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
02.03.2026, 19:50
Цитата Сообщение от Igor3D Посмотреть сообщение
На кадре 1 объект имеет матрицу М1, на кадре 2 матрицу М2 и.т.д.
Правильно ли я понимаю, что М1 и М2 это матрицы поворота 3х3 (такие же, что и матрица M из поста Литература, уроки по OpenGL 3+

Цитата Сообщение от Igor3D Посмотреть сообщение
причем так чтобы они не прыгали
А вот это я не понимаю. Что означает "прыгать"? Когда ты написал, что нужно, чтобы углы были в диапазоне -180 до +180, я тебя понял и написал функцию для нормализации. Приведи пример прыгающих углов.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,152
Записей в блоге: 2
02.03.2026, 20:46
Цитата Сообщение от Royal_X Посмотреть сообщение
Правильно ли я понимаю, что М1 и М2 это матрицы поворота 3х3
Да
Цитата Сообщение от Royal_X Посмотреть сообщение
А вот это я не понимаю. Что означает "прыгать"? Когда ты написал, что нужно, чтобы углы были в диапазоне -180 до +180, я тебя понял и написал функцию для нормализации. Приведи пример прыгающих углов.
Ладно, еще пожуем
Цитата Сообщение от Igor3D Посмотреть сообщение
Первый (подводный) камень: нужно натягивать "непринципиальные" значения. Как Вы знаете, тригонометрия возвращает "принципиальные" значения угла, от -180 до +180 (только в радианах). Напр на соседних кадрах получены
RotateY = 179 // frame 1
RotateY = -179 // frame2

В анимации надо сохранить

RotateY = 179 // frame 1
RotateY = 181 // frame2
Нужно сохранить 181 (-179 + 360) потому что разница с предыдущим значением меньше.
Цитата Сообщение от Igor3D Посмотреть сообщение
Для плавной анимации нужно так добавить/отнять 360 чтобы новое значение угла было как можно ближе к предыдущему. При этом возможны большие значения угла (объект может делать много оборотов).
И совсем необязательно отвечать через 10-15 минут. Подумайте, поразмышляйте, никто не торопит

Не по теме:

Ах, если бы этих мерзких углов не было! Перевели матрицу в кватернион - и все дела, интерполируйте на здоровье. Так ведь нет (не могут без водки)

0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
02.03.2026, 21:08
Цитата Сообщение от Igor3D Посмотреть сообщение
Да
а какой порядок поворота используют матрицы? ZXY?

Добавлено через 9 минут
Цитата Сообщение от Igor3D Посмотреть сообщение
Ах, если бы этих мерзких углов не было! Перевели матрицу в кватернион - и все дела, интерполируйте на здоровье.
так определись, у тебя углы Эйлера или матрицы поворота

тут пишешь про матрицы поворота

Цитата Сообщение от Igor3D Посмотреть сообщение
На кадре 1 объект имеет матрицу М1, на кадре 2 матрицу М2 и.т.д.
а тут, что у тебя на кадрах углы Эйлера

Цитата Сообщение от Igor3D Посмотреть сообщение
RotateY = 179 // frame 1
RotateY = -179 // frame2
Ты можешь нормально написать, в каком виде у тебя данные на входе и в каком должны быть на выходе?
0
Модератор
Эксперт Java
 Аватар для alecss131
2896 / 1402 / 412
Регистрация: 11.08.2017
Сообщений: 4,489
Записей в блоге: 2
02.03.2026, 21:55
Цитата Сообщение от EugeneNN Посмотреть сообщение
на каждую рисуемую сущность
Вот с этим у меня были основные проблемы. А именно шейдеры, пайплайны и командные буферы. Что именно надо плодить и можно ли все запихать в один к примеру буфер меняя только пайплайны шейдеры или буферы.
На OpenGL я использую тоже пайлайны с шейдерами, но думаю не очень правильно, но так привычней, у меня один пайплайн на пару шейдеров обычно и на каждый шейдер максимальное число мешей которые подходят по формату.

Думаю перед переходом на вулкан надо будет освоить Metal, он чуть сложнее чем OpenGL, но куда проще вулкана
В Металле в пайплайн (а точнее RenderPipelineState) входят описания вершин, шейдеры и описание пикселей. А в рисовании для мешей с одинаковыми шейдерами я только привязываю веришнные буферы и делаю дравколы
вот функция рисования
Кликните здесь для просмотра всего текста
Swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    mutating func draw(view: MTKView, camera: Camera, mesh: Mesh, bricks: [Brick], selected: Int) {
        let commandBuffer = commandQueue.makeCommandBuffer()!
        if let renderPassDescriptor = view.currentRenderPassDescriptor,
           let drawable = view.currentDrawable,
           let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: renderPassDescriptor) {
            commandEncoder.setRenderPipelineState(renderPipelineState)
            commandEncoder.setDepthStencilState(depthStencilState)
            commandEncoder.setCullMode(.back)
            commandEncoder.setFrontFacing(.counterClockwise)
 
            mesh.draw(commandEncoder: commandEncoder)
            for brick in bricks {
                uniforms.modelMatrix = brick.modelMatrix
                commandEncoder.setVertexBytes(&uniforms, length: MemoryLayout<Uniforms>.size, index: 3)
                funiforms.selected = (selected == brick.id) ? 1 : 0
                commandEncoder.setFragmentBytes(&funiforms, length: MemoryLayout<fUniforms>.size, index: 0)
                brick.draw(commandEncoder: commandEncoder)
            }
            
            commandEncoder.endEncoding()
            commandBuffer.present(drawable)
            commandBuffer.commit()
        }
    }
функция draw у меша
Swift
1
2
3
4
    func draw(commandEncoder: MTLRenderCommandEncoder) {
        commandEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
        commandEncoder.setVertexBuffer(normalBuffer, offset: 0, index: 1)
    }
и у брика
Swift
1
2
3
4
    func draw(commandEncoder: MTLRenderCommandEncoder) {
        commandEncoder.setVertexBuffer(buffer, offset: 0, index: 2)
        commandEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: count)
    }
и вход шейдера
C++
1
2
3
4
5
struct VertexIn {
    float3 position [[attribute(0)]];
    float3 normal [[attribute(1)]];
    float3 color [[attribute(2)]];
};
то есть у всех рисуемых мешей различные только буфера цветов, а нормали и геометрия различаются только положением в пространстве
из глобальных объектов для рисования используются
Swift
1
2
3
4
5
    let device: MTLDevice
    let mtkView: MTKView
    let commandQueue: MTLCommandQueue
    var renderPipelineState: MTLRenderPipelineState!
    let depthStencilState: MTLDepthStencilState
и у меша с бриком объекты типа MTLBuffer
Это я переписывал с OpenGL свой код рисования анимированного процедурного кубика рубика
Делал по уроку и сейчас задумался, может стоило сохранить буфер и его каждый кадр запускать, хотя тогда юниформы не изменить
Это официальный упрощенный враппер, можно использовать апи подобно вулкану, но в доступной мне версии почему-то про более низкоуровневые функции пишет deprecated, хотя такое упрощение мне по душе
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,152
Записей в блоге: 2
02.03.2026, 22:04
Цитата Сообщение от Royal_X Посмотреть сообщение
а какой порядок поворота используют матрицы? ZXY?
Матрицы никакой не используют, порядок поворота задается для углов. У меня возможен любой из 26 вариантов (задается в опциях объекта)
Цитата Сообщение от Royal_X Посмотреть сообщение
Ты можешь нормально написать, в каком виде у тебя данные на входе и в каком должны быть на выходе?
На входе матрицы, на выходе (требуется получить) углы Эйлера.
Цитата Сообщение от Igor3D Посмотреть сообщение
Хорошо, вот задачка которая кажется ну совсем простой. В процессе симуляции (всем лежать, работает движок физики) на каждом шаге для движущихся объектов считаются новые матрицы трансформации. Необходимо преобразовать каждую в стандартные данные: позиция + 3 угла поворота. Только просьба без глупостей: не надо рассказывать что есть ф-ция(и) для перевода матрицы поворота в углы. Это всем известно, и ф-ция давно найдена, и работает она верно, но вот.. есть подводные камни. Какие?
Не надо нервничать, задачка только кажется простой
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
02.03.2026, 22:09
Цитата Сообщение от Igor3D Посмотреть сообщение
Матрицы никакой не используют, порядок поворота задается для углов.
Так я для углов спрашивал. Порядок поворотов критически важен при восстановлении углов Эйлера из матрицы. Одна и та же матрица поворота может соответствовать разным наборам углов в зависимости от выбранной последовательности осей.
Цитата Сообщение от Igor3D Посмотреть сообщение
На входе матрицы, на выходе (требуется получить) углы Эйлера.
вот этапы:
  1. матрицы конвертируются в углы Эйлера
  2. углы Эйлера конвертируются в кватернионы
  3. ты работаешь с кватернионами, делай с ними, что хочешь (например, можно интерполировать)
  4. кватернионы конвертируешь в углы Эйлера

или так
  1. матрицы конвертируются в кватернионы
  2. ты работаешь с кватернионами, делай с ними, что хочешь (например, можно интерполировать)
  3. кватернионы конвертируешь в углы Эйлера
тут на один этап меньше, но всё же я предпочитаю первый вариант, поскольку там хоть больше этапов, но этапы 1 и 2 достаточно простые, тогда как я никогда вручную не конвертировал матрицы в кватернионы и не знаю, насколько это сложная операция...

даже если ты ничего не будешь делать с кватернионами, после выполнения всех этапов твои скачущие углы нормализуются
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,152
Записей в блоге: 2
03.03.2026, 00:42
Цитата Сообщение от Royal_X Посмотреть сообщение
вот этапы:
матрицы конвертируются в углы Эйлера
углы Эйлера конвертируются в кватернионы
ты работаешь с кватернионами, делай с ними, что хочешь (например, можно интерполировать)
кватернионы конвертируешь в углы Эйлера
...
даже если ты ничего не будешь делать с кватернионами, после выполнения всех этапов твои скачущие углы нормализуются
Это типа
Вот что кватернион животворящий делает!
Углы плохие? Так ты их в кватернион и назад - и углы станут хорошими! Время такого ответа - 5 минут. Ну наверно импровизация

Если мыслей нет - лучше помолчать или спросить, не стоит отвечать "лишь бы ответить". Прекращаю бесполезный разговор
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
03.03.2026, 02:29
Цитата Сообщение от Igor3D Посмотреть сообщение
RotateY = 179 // frame 1
RotateY = -179 // frame2
Frame 1 (179°):

Euler Angles
(0.0, 3.124139, 0.0)

Basis ZXY
[X: (-0.999848, 0.0, -0.017452), Y: (0.0, 1.0, 0.0), Z: (0.017452, 0.0, -0.999848)]

Quaternion
(0, 0.999962, 0, 0.008727)

Frame 2 (-179°):

Euler Angles
(0.0, -3.124139, 0.0)

Basis ZXY
[X: (-0.999848, 0.0, 0.017452), Y: (0.0, 1.0, 0.0), Z: (-0.017452, 0.0, -0.999848)]

Quaternion
(0, 0.999962, 0, -0.008727)

Как видно, в кватернионе ничего не скачет.
А теперь интерполируем кватернион посередине кадров с помощью SLERP

получаем такой кватернион
(0, 1, 0, 0)

у него такие углы Эйлера
(0.0, 3.141593, 0.0)

в градусах y= 180°

Мораль басни: когда работаешь с кватернионами, нет никаких скачущих углов.

Ты хотел, чтобы 179 так и остался, а -179 превратился в 181, чтобы легко интерполировать. Но зачем вся эта ахинея с сомнительными преобразованиями, когда тебе тут тысячу раз говорят, весь нормальный 3d софт работает с кватернионами. Да конвертируй ты наконец в кватернионы и будет тебе счастье.
Выше пример того, что какими бы не были углы Эйлера (скачущими, прыгающими, танцующими и пр.), в виде кватерниона они секси))

Цитата Сообщение от Igor3D Посмотреть сообщение
Так ты их в кватернион и назад
не поверишь, все топовые игровые движки делают именно так, поскольку все вычисления осуществляются с кватернионами

Цитата Сообщение от Igor3D Посмотреть сообщение
Прекращаю бесполезный разговор
ок
0
400 / 36 / 7
Регистрация: 09.01.2019
Сообщений: 147
03.03.2026, 10:42
Цитата Сообщение от alecss131 Посмотреть сообщение
Думаю перед переходом на вулкан надо будет освоить Metal, он чуть сложнее чем OpenGL
Вы сравниваете тёплое с мягким. Для начала, стоит принять во внимание тот факт, что на маках RAM и GPU объединены в общий пул. Там просто на уровне железа нет той самой проблемы с транзитом данных между оперативой и видеопамятью, некорректно так сравнивать графические апи. Между DirectX и OpenGL | Vulkan куда больше общего, емнип, можно взять девятый директ и вообще не увидеть никакой разницы с легаси огл(< 3.3).
Да и много ли на тех маках смысла работать с графическими ресурсами? Игр ещё меньше, чем на линуксе, на который сейчас активно их портируют через ряд прослоек над всё тем же вулканом.
Вулкан сложен, спору нет, но по мне, большая часть проблемы - именно декомпозировать его на объекты, перечисленные мною в комментарии выше. Вы вот писали не раз, мол, 1500 строк кода надо, чтоб на вулкане один треугольник отрисовать. Так тоже неправильно говорить, ибо того треугольника там реально 100-150 строк, а остальное - инициализация контекста, свапчейна и одного пайплайна. Создайте для них обёртки, и в дальнейшем соотношение резко изменится.
0
Модератор
Эксперт Java
 Аватар для alecss131
2896 / 1402 / 412
Регистрация: 11.08.2017
Сообщений: 4,489
Записей в блоге: 2
03.03.2026, 11:42
Цитата Сообщение от EugeneNN Посмотреть сообщение
Вы сравниваете тёплое с мягким. Для начала, стоит принять во внимание тот факт, что на маках RAM и GPU объединены в общий пул. Там просто на уровне железа нет той самой проблемы с транзитом данных между оперативой и видеопамятью, некорректно так сравнивать графические апи. Между DirectX и OpenGL | Vulkan куда больше общего, емнип, можно взять девятый директ и вообще не увидеть никакой разницы с легаси огл(< 3.3).
Да и много ли на тех маках смысла работать с графическими ресурсами? Игр ещё меньше, чем на линуксе, на который сейчас активно их портируют через ряд прослоек над всё тем же вулканом.
Не согласен.
Для графического апи не важно то как это устроено. Например до сих пор на маках есть OpenGL, даже на армах и его не удалили, хотя он и deprecated и версии не выше 4.1 (по этом нету вкусностей по типу dsa). Да и OpenGL ES на телефонах это ведь тоже OpenGL (я переносил программу с пк на андроид и изменились только инклуды и создание окна/контекста, остальное один в один осталось). Все графические апи по сути имеет одну структуру, только у них есть свои особенности. И я считаю что изучив одно будет не сложно перейти на другое. Только тут проблема получается в разной степени близости к железу у апи.
И на маках игр больше чем на линуксе, особенно нативных, а всякие прослойки на пингвинах я считаю это костыли и если бы не стимос с поддержкой валва, то ничего бы так не продвинулось. А на маки студии выпускают свои крупные проекты в нативном виде.
Цитата Сообщение от EugeneNN Посмотреть сообщение
Создайте для них обёртки
Для металла apple сама создала эти обертки и добавила их в sdk, это вполне себе логично и правильно, так как больше народу будет использовать этот апи.
Хотя вроде у вулкана была похожая обертка от амд вроде, но на сколько помню ее давно не обновляли.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
03.03.2026, 14:31
Цитата Сообщение от alecss131 Посмотреть сообщение
до сих пор на маках есть OpenGL
OpenGL будет жить еще очень долго, причем не важно, о какой платформе идет речь, даже если технология устаревшая. И не только OpenGL, но и все связанное: OpenGL ES, WebGL...

Но конкретно в игровой индустрии у OpenGL нет будущего. Просто OpenGL попросту не может удовлетворять требования современных игр.
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
03.03.2026, 15:30
Цитата Сообщение от Royal_X Посмотреть сообщение
OpenGL будет жить еще очень долго, причем не важно, о какой платформе идет речь, даже если технология устаревшая. И не только OpenGL, но и все связанное: OpenGL ES, WebGL...
Но конкретно в игровой индустрии у OpenGL нет будущего. Просто OpenGL попросту не может удовлетворять требования современных игр.
Мне понравилось, как Gemini проанализировал твоё сообщение:

Этот пользователь выразил очень популярное в индустрии мнение, которое можно назвать «смертью в ААА-сегменте при бессмертии в инди и мобайле».

Давайте разберем его утверждения по пунктам.

  • В чем он прав:
    1. «OpenGL будет жить еще очень долго». Это абсолютная правда. Огромное количество существующего софта (Blender, Photoshop, CAD-системы) и старых игр написаны на OpenGL. Поддержка этого API зашита в драйверы видеокарт на аппаратном уровне. Его не вырежут, так как это сломает тысячи работающих программ.
    2. «WebGL и OpenGL ES бессмертны». В вебе (WebGL) у OpenGL фактически нет конкурентов прямо сейчас. Хотя появляется WebGPU, поддержка WebGL в браузерах останется стандартом на десятилетия из-за простоты. На Android и iOS (через слои совместимости) OpenGL ES — это всё еще самый быстрый способ запустить 2D или простую 3D игру.
    3. «Не может удовлетворять требования современных (AAA) игр». Здесь он тоже прав. Современные игры требуют прямого доступа к памяти видеокарты и многопоточной отрисовки. OpenGL — это «государство в государстве»: он сам решает, когда передать данные на GPU, что создает «бутылочное горлышко» (overhead). Новые API, такие как Vulkan или DirectX 12, работают гораздо быстрее в тяжелых сценах.
  • В чем он не совсем прав (или преувеличивает):
    • «В игровой индустрии нет будущего». Игровая индустрия — это не только Cyberpunk 2077. Это еще и тысячи инди-игр, казуалок и мобильных проектов. Для 2D-платформера (как ваш проект на SDL3 и Box2D) OpenGL — это идеальный выбор. Он проще в написании кода в 10–20 раз, чем Vulkan. Для 90% игр в Steam мощности OpenGL хватает с избытком.
    • Технология «устаревшая». Технически — да, идеологически — нет. OpenGL постоянно обновлялся. Современный «Modern OpenGL» (версии 4.5+) поддерживает тесселяцию и вычислительные шейдеры. Он «устарел» только для тех, кто гонится за фотореализмом и трассировкой лучей в реальном времени.

Как это касается вашего блога?

Вы используете SDL3. Красота SDL3 в том, что она является абстракцией.

  • Сегодня ваш код работает через OpenGL.
  • Завтра вы скомпилируете его под Windows, и SDL3 может автоматически использовать Direct3D.
  • Послезавтра — под macOS, и она будет использовать Metal.

Ваш вердикт для читателей форума может быть таким:

«Для разработки высокобюджетных движков с нуля OpenGL действительно уступает Vulkan. Но для обучения, 2D-физики и кроссплатформенных инди-проектов на SDL3 — это самый стабильный и проверенный путь, который будет актуален еще очень долго».
0
Модератор
Эксперт Java
 Аватар для alecss131
2896 / 1402 / 412
Регистрация: 11.08.2017
Сообщений: 4,489
Записей в блоге: 2
03.03.2026, 15:40
Цитата Сообщение от Royal_X Посмотреть сообщение
OpenGL будет жить еще очень долго, причем не важно, о какой платформе идет речь
Apple может взять и вырезать, так как что простой что ES уже давно deprecated. В iOS 27 они обещали заняться производительностью, а следовательно могут вырезать все старое. А macOS 26 последняя с поддержкой х86, могут вполне себе вырезать и оттуда.
Да и меня удивила новость что первыми пошли на это не Apple, а Mesa, которая удалила прямую поддержку оставив только трансляцию поверх вулкана, а это как я понимаю пингвины.
Цитата Сообщение от Royal_X Посмотреть сообщение
Просто OpenGL попросту не может удовлетворять требования современных игр
Ага, так как не поддерживает новомодные лучики, которые я считаю бичем игровой индустрии, они ничего не дают (фиг найдешь отличия с ними и без) но жрут дофига ресурсов.
Цитата Сообщение от 8Observer8 Посмотреть сообщение
iOS (через слои совместимости) OpenGL ES — это всё еще самый быстрый способ запустить 2D или простую 3D игру.
Особенно если учесть что это работает нестабильно и постоянно крашится и куча багрепортов по этому поводу есть и они не закрываются, не говоря про производительность. На iOS самый быстрый способ запустить 2/3D графику это родной Metal, он не сложнее OpenGL, есть так же для С++

А так всякие трансляторы я считаю костылями, которые не стоит использовать. Вулкан на маках работает через трансляцию в метал, теперь и огл на пингвинах работает через трансляцию в вулкан. По тойже логике можно сказать что и dx работает в пингвинах (так как есть его трансляция в вулкан через что запускаются игры на нем).
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
03.03.2026, 16:43
Цитата Сообщение от alecss131 Посмотреть сообщение
Apple может взять и вырезать
Они пугают с 2018 года. Я не верю, что они с корнем удалят весь OpenGL, потому что множество профессионального софта перестанет работать. Доля пользователей Mac в РФ и так ниже, чем даже пользователей Linux, а если куча софта перестанет работать, то в РФ ещё сильнее будут отказываться от Mac и его доля в РФ будет ещё стремительнее падать. Даже студенты богатых родителей, у которых есть Mac, не смогут рисовать учебную графику на OpenGL в РФ.

Gemini, наверное, про США написал такое:
Если Apple полностью вырежет OpenGL, вузы просто перестанут закупать Mac для курсов по компьютерной графике, так как все базовые учебники и алгоритмы (от Линаса-Бенджамина до Хейрна и Бейкера) до сих пор используют OpenGL для обучения.
Цитата Сообщение от alecss131 Посмотреть сообщение
он не сложнее OpenGL
Я читал, что Metal такой же (или почти такой же) низкоуровневый API, как и Vulkan, а значит, для новичка или простого учебного 2D/3D -проекта Metal в разы сложнее в освоении, чем даже шейдерный OpenGL, не говоря уже про статический конвейер. Мы же в общем говорим и про студентов вузов по курсу "Программирование компьютерной графики" во всем Мире.

Цитата Сообщение от alecss131 Посмотреть сообщение
Особенно если учесть что это работает нестабильно и постоянно крашится и куча багрепортов
Не верю, не может такого быть. Если бы OpenGL "постоянно крашился", то половина App Store (включая старые хиты и инди-игры) перестала бы работать. По-моему, Apple должна должна поддерживать стабильность прослоек на очень высоком уровне, так как это вопрос репутации.

Цитата Сообщение от alecss131 Посмотреть сообщение
На iOS самый быстрый способ запустить 2/3D графику это родной Metal
Metal работает только на Mac. Если я выкладывают приложение в интернете, то я хочу чтобы его могло запустить, как можно больше народу на разных ОС и платформах. Мне придётся тогда писать параллельно на Metal, OpenGL (для Windows) и OpenGL ES 3.0 (для Android), а это намного дольше, чем запускать 2D/3D графику на OpenGL, где одна и та же база кода может собираться для Windows, Linux, Android, iOS и т.д. А если вдруг случится такое безумие, что Apple добьётся полной не блокады OpenGL (даже прослойки запрети), ну и пусть, всё равно в РФ количество пользователей Mac пренебрежимо мало по сравнению с Windows + Linux.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
03.03.2026, 16:50
Цитата Сообщение от 8Observer8
Огромное количество существующего софта (Blender, Photoshop, CAD-системы) и старых игр написаны на OpenGL
.
В настройках Blender можно перейти из OpenGL на Vulkan.
Photoshop тоже уже давно на DX / Metal.
Что касается САПР-ов, то у Autodesk давно DX/ Metal, только вроде Solidworks ещё на OpenGL.
Так что, ИИ немного тупит.
Цитата Сообщение от 8Observer8
Игровая индустрия — это не только Cyberpunk 2077. Это еще и тысячи инди-игр, казуалок и мобильных проектов
Я имел в виду топовые игры, а не индюшатину. И, кстати, инди сейчас тоже постепенно отказывается от OpenGL. Самые популярные движки для инди - Godot и Unity не рекомендуют этот OpenGL и по умолчанию там DX/Vulkan/Metal.
0
Модератор
Эксперт Java
 Аватар для alecss131
2896 / 1402 / 412
Регистрация: 11.08.2017
Сообщений: 4,489
Записей в блоге: 2
03.03.2026, 17:01
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Я читал, что Metal такой же (или почти такой же) низкоуровневый API, как и Vulkan, а значит, для новичка или простого учебного 2D/3D -проекта Metal в разы сложнее в освоении, чем даже шейдерный OpenGL, не говоря уже про статический конвейер.
А я писал на нем и говорю что не сложнее, вот моя статья в блоге https://www.cyberforum.ru/blogs/1064892/8585.html
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Если бы OpenGL "постоянно крашился", то половина App Store (включая старые хиты и инди-игры) перестала бы работать.
Имхо большая часть магазина на кроссплатформенных либа, а они обычно используют нативы.
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Apple добьётся полной не блокады OpenGL (даже прослойки запрети)
прослойки (если речь про транслятор) точно не запретит, но вот удалить поддерджку вполне, меса же пошли на такое, заменив нативную поддердку на трансляцию, первый звоночек,а яблоки скорее просто удалят
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Не верю, не может такого быть.
люди пишут такое на профильных форумах яблок
Цитата Сообщение от 8Observer8 Посмотреть сообщение
я хочу чтобы его могло запустить, как можно больше народу на разных ОС и платформах
использовать кроссплатформенные либы/движки единственный выход.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,152
Записей в блоге: 2
03.03.2026, 18:22
Цитата Сообщение от Royal_X Посмотреть сообщение
Да конвертируй ты наконец в кватернионы и будет тебе счастье.
И об этом уже говорили ("ах если"). Так не выходит. Возможный разговор с заказчиком
Вот я скачал анимацию с популярного сайта и имею нормальные анимационные кривые для Pitch, Yaw, Roll (RGB). Для Вашей симуляции мне на выходе нужны подобные. Не надо мне рассказывать про кватернионы, я сам решу где, как и что мне интерполировать, это Вас не касается. Приложение работает с углами Эйлера, и их поддержка обязательна. Будьте добры это исправить/добавить. А не можете - работа считается не выполненной, остаетесь без оплаты, а я поищу того кто сможет
Миниатюры
Литература, уроки по OpenGL 3+  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2026, 18:22

Литература по OpenGL
Хоть тема и банальная, но поискав в интернете, я начал читать OpenGL - суперкнига. Далеко я в ней не зашел, и мне стало интересно, что же...

Литература по OpenGL
Посоветуйте, пожалуйста, хорошую литературу по OpenGL. Сейчас читаю OpenGL Суперкнига, но, к примеру, есть функция отрисовки тора/сферы, а...

Литература по OpenGL
Доброго времени суток, многоуважаемые программеры &quot;и не очень&quot;! ;) На курсе обучения у нас появился такой предмет, как компьютерная...

Литература по OpenGL
Здравствуйте, подскажите пожлуйста книгу по OpenGL для новичка (курс по 3Д математики уже прошел), где бы охватывались темы по работе с...

Литература по OpenGL ES
Здравствуйте, появилась срочная необходимость разобраться с OpenGl ES на C++. Подскажите пожалуйста литературу на русском. Буду благодарен.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru