Comments 17
Хотелось бы, конечно, почитать про чистую реализацию окна без всяких левых библиотек в разных операционках. А то вот так ищешь, что тебе надо и находишь малюсенький проектик, который тянет за собой вагон и маленькую тележку связей… Беда прям.
0
Ну на самом деле для осознания подобных особенностей можно пойти хардкорным путем и пойти читать исходники GLFW. Я думаю когда у меня появится немного свободного времени от переводов и работы я напишу небольшую статейку о подобной «проблеме».
+1
Не про почитать, а посмотреть, зато очень подробно и детально. Вот эта серия видео от Casey Muratori
0
Для OpenGL не существует понятия «окно». Если не вдаваться в детали, то основной сущностью для библиотеки является поверхность (или буферный объект — область памяти, преимущественно из адресного пространства GPU). Через них библиотека скармливает в аппаратуру indirect/batch buffer с командами, vertex-buffers, текстуры и все остальное. Отдельно передается адрес результирующего буфера, в который аппаратура должна отрендерить результат обработки batch буфера.
Будет ли результирующий буфер непосредственно отображаемым, находиться в выделенном аппаратном слое или же операционная система должна озаботиться своевременным отображением/преобразованием, конкретно для аппаратной акселерации безразлично. В сухом остатке основным интерфейсом в ОС/драйвер является возможность выделения видео-памяти. Отсюда и зоопарк с библиотеками для управлением отображением — glx, glut, egl,…
Будет ли результирующий буфер непосредственно отображаемым, находиться в выделенном аппаратном слое или же операционная система должна озаботиться своевременным отображением/преобразованием, конкретно для аппаратной акселерации безразлично. В сухом остатке основным интерфейсом в ОС/драйвер является возможность выделения видео-памяти. Отсюда и зоопарк с библиотеками для управлением отображением — glx, glut, egl,…
0
Я очень люблю, когда дают на столько развёрнутый ответ или комментарий, но я и так всё это знаю. И это никак не отменяет того факта, что для инициализации GLтребуется оконный хендл. А по скольку именно этот момент и разнится в разных ОС, то именно его и хотелось бы видеть тут. Ну хотя бы для Linux, Win и OSX. Не для себя даже прошу, просто вспоминаю, как когда-то пришлось с этим повозиться изрядно, когда только начинал gl под мак, после винды.
0
Не знаю почему это опубликовалось только сейчас. Даже не помню когда именно разместил.
По теме вы исходно писали «чистую реализацию окна без всяких левых библиотек». На это я и ответил, что «чистых» окон не существует и писать не о чем. А так для примера взята кросс-платформенная оконная либа.
Это не так. Легко показать это на примере DRI в Mesa. Найдите по ссылке упоминание окон. Данный код это интерфейсная библиотека DRI-драйверов:
GLX -> DRI_common -> DRI-driver -> DRI & DRM extensions (включая *GetBuffer*)
и ей, как видно, не требуется окно.
На прикладном уровне этого не ощутить, так как оконные API таких интерфейсов не имют, но 3D драйвера прекрасно работают без всяких окон. Достаточно скормить сырой адрес рендер-буфера. При определенной сноровке можно открутить DRI-драйвер от GLX и сделать его сравнительно независимым от иксов, чем мы в том числе пользуемся затягивая месу в другие окружения. Другой разговор, что коллегам прикладникам работать так будет, кхм, проблематично.
По теме вы исходно писали «чистую реализацию окна без всяких левых библиотек». На это я и ответил, что «чистых» окон не существует и писать не о чем. А так для примера взята кросс-платформенная оконная либа.
что для инициализации GLтребуется оконный хендл.
Это не так. Легко показать это на примере DRI в Mesa. Найдите по ссылке упоминание окон. Данный код это интерфейсная библиотека DRI-драйверов:
GLX -> DRI_common -> DRI-driver -> DRI & DRM extensions (включая *GetBuffer*)
и ей, как видно, не требуется окно.
На прикладном уровне этого не ощутить, так как оконные API таких интерфейсов не имют, но 3D драйвера прекрасно работают без всяких окон. Достаточно скормить сырой адрес рендер-буфера. При определенной сноровке можно открутить DRI-драйвер от GLX и сделать его сравнительно независимым от иксов, чем мы в том числе пользуемся затягивая месу в другие окружения. Другой разговор, что коллегам прикладникам работать так будет, кхм, проблематично.
0
статьи — хорошие. Уже Vulkan на горизонте маячит — его бы кто-нить перевёл, если уже имеются туторы.
0
Был бы очень кстати «hello world!» в конце. А то три часа ставил\компилил, и теперь совершенно непонятно работает ли оно в итоге. = )
0
Спасибо за статью. Обязательно продолжайте. Насторожил один момент: текущая статья называется «learnopengl. Урок 1.2 — Создание окна», однако процесс создания окна так и не был описан.
0
Ну в общем то это правильное замечание, но на него можно ответить, что тут скорее были показаны проблемы создания окна и пути их решения. Создание самого окна будет описано в следующей части
0
А может ли кто-нибудь подсказать, где можно найти оригинал?
Может, я кривоглазый, но в статье не нашел…
Может, я кривоглазый, но в статье не нашел…
0
Sign up to leave a comment.
learnopengl. Урок 1.2 — Создание окна