LINUX.ORG.RU

OpenGL без привязки к окну?

 , , ,


1

2

Сабж. Нужно нарисовать картинку (по пикселям), средствами OpenGL, но не привязываясь к окну. То есть рисовать надо в память и потом эту память отдать (записать в файл скажем).

Не привязываясь к окну - потому что X-сервера может не быть (зашли по ssh без -X).

Это вообще возможно? Все что нагуглилось, вроде вот такого,

http://renderingpipeline.com/2012/05/windowless-opengl/

все таки подразумевает что какой то X-сервер есть, насколько я понял, просто окно не отображается.

PS в этих вопросах я нуб, сорри;-(

★★★★

Последнее исправление: AntonI (всего исправлений: 1)

Бери вулкан, там точно можно 🙃

Stil ★★★★★
()

glGenFramebuffers()

иксы запустишь в headless режиме

anonymous
()
Ответ на: комментарий от NAY_GIGGER

Спасибо, тока оно не собирается;-) Но как пример кода пойдет (я пока не понял правда оно или нет).

AntonI ★★★★
() автор топика
Ответ на: комментарий от X512

Тогда уже OpenCL. Но мне бы не хотелось пока экзотики.

AntonI ★★★★
() автор топика
Ответ на: комментарий от AntonI

Там просто кубик на EGL который можно запустить без иксов и всего остального. Когда-то пытался в разработку своей оконной системы и наткнулся на вот такое.

NAY_GIGGER
()
Ответ на: комментарий от X512

Прибит только в вашем воображении. Я же предлагал вам пройти психиатрический стационар, почему вы не хотите?

NAY_GIGGER
()

Тебе нужен EGL. Вернее создать контекст через него. Там именно подразумевается что либо окон нет вообшще либо ты свои какие то написал и к ним надо присобачить OpenGL вот для этого и нужен EGL API Эмбедед Опен Гл короче.

https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglIntro.xhtml

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

А чем тебе CUDA — не вариант? Или вообще сам все нужное забульбень…

Тебе ж опенгль не для шейдеров нужен?

anonymous
()

Нужно нарисовать картинку (по пикселям)

Ты там не лоханись с пикселями то. В opengl есть тексели и виды их фильтрации =)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от X512

Над твоим сообщением ссылка =) Главное что-бы что-то могло создать контекст, а дальше OpenGL похер как работать, это просто библиотека, а GPU своей жизнью живёт ему вообще плевать что там есть у тебя или нету =) Просто обычно сразу делают прямые создания контекстов на целевой системе для целевой оконной системы ибо нахера геморой плодить. Но если ты вдруг решил написать свой аналог иксов/мира/вайланда то тебе нужно будет своё сделать, так вот это и делается через EGL api оно просто делает контекст на пустом месте и всё, а дальше делай с ним что хочешь.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от X512

Нужно просто заменить вывод на экран на вывод в текстуру. А потом эту текстуру сохранить себе в память (RAM), можно даже в сжатом виде и на своей машине просто дамп памяти отдать opengl он ультрабыстро загрузит такое и покажет ровно так как это было на удалённой машине внутри другого opengl, особенно это удобно если текстура не RGB а float какая.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от X512

Креатать нативе виндав нот обазательно =) Это просто пример, для рисования «в никуда» используется eglCreatePbufferSurface. Персове создаёт «холст» на окне, второе создаёт «холст» в буфере, вот и всё. Пример для удобства, отдалить всё и глазками видеть что всё ок, а потом заменить тип вывода. При этом в основном opengl коде даже не надо писать в текстуры например, вывод будет просто в буфер. Можно над glxgeas сделать обёртку на EGL запустить его на пк без иксов и по ssh отсылать на другой комп в реалтайме отрендеренные кадры =)

Я очень^100500 давно тыкал. Надеюсь ничего не путаю.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от anonymous

Нвидивской карты может не быть.

AntonI ★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Спасибо за ответы.

Пиксели, тексели… я существо темное, университетов не заканчивал, один в семи комнатах не проживвл:-)

Мне пока хоть как нить.

AntonI ★★★★
() автор топика
Ответ на: комментарий от X512

Вообще его не нужно писать. Достаточно создать текстуру и выставить ее таргетом.

Siborgium ★★★★★
()
Ответ на: комментарий от X512

Что надо писать в createNativeWindow(), чтобы не требовало X11/Wayland?

погугли «gbm off screen rendering»

anonymous
()

Вроде читал, что можно создать окно и спрятать его. Без окон только вулкан работает, действительно

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.