LINUX.ORG.RU

OpenGL в ubuntu без зависимости от X Window и т.д

 , , , ,


0

1

Как можно включить OpenGL (библиотеку libGL), например из gl4es или Mesa 3D без зависимости от каких либо оконных систем? Просто когда я открываю какие-то 3d программы в недоработаном X сервере exagear, окна начинают сходить с ума, белеют, когда я их перетаскиваю изображение остаётся на месте, а сама обёртка окна побелевшая уходит в сторону. Ещё у меня просела производительность в 2d; а в некоторых 3d программах появились «Failed to access». Я хочу избежать этих багов, включить libGL из mesa3d без Xlib, с каким-то off-screen rendering но не знаю как это сделать. Помогите пж.

Ответ на: комментарий от xDShot

И через sdl1 и через sdl2 точно можно. Но автору темы же нужен OpenGL, а не просто вывод битмапов.

У этой месы такие зависимости, что от иксов её так просто не отвязать. На Raspberry Pi, по ходу, есть OpenGL ES без иксов через специальную библиотеку для этого железа.

saahriktu ★★★★★ ()

Делаешь что-то странное, не знаешь что, неизвестно зачем, не имея достаточного представления об вовлечённых компонентах. Зачем?

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

Эмуляторы «Дендей» и «Спектрумов» прекрасно работают без OpenGL. Также без OpenGL можно запускать dosbox с досовскими играми и, например, prboom с 1-м и 2-м «Думами». Ещё есть консольные игры без всякой графики.

А у других игр такие зависимости, что без иксов или вейландов их не запустишь. А в иксах и вейланде есть OpenGL.

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

Одноплатник не потянет софтовый рендеринг.

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

В exagear mobile плохие иксы, они начинают сбоить когда я ставлю туда mesa. То ошибка xrandr, то окно рендеринка прикрепилось к одному месту, а его края перемещаются сами по себе; то это окно по краям белое, то 2d замедлился. Как мне эти баги исправить? Все эти баги из-за кривого x сервера в exagear, а заменить его там невозможно (на мобильном exagear)

masteruser82841 ()
Ответ на: комментарий от saahriktu

Может сделать так?

В исходном коде Wine отредактировать библиотеку opengl32, и заменить в ней вызовы libGL на вызовы OSMesa (эта библиотека для независимого от окон рендеринга)? Будет ли это работать? По идее должно, но мне знаний не хватает, а сделать это надо потому что я затрахался с багами из-за конфликтов месы с X-сервером от exagear.

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

При чём тут вообще wine? Или речь о виндовых играх?

Так вот, как я выше уже написал, mesa вообще не будет работать без привязки к иксам или вейланду. Даже для линуксовых игр. Это не библиотека OpenGL для работы в вакууме.

Если что-то плохо работает на глючном железе, то остаётся одно из двух:

  1. Отказаться от того, что плохо работает. В данном случае от OpenGL. И обходиться тем, что работает без OpenGL.
  2. Заменить железо на другое, на котором нет проблем с нужным софтом.
saahriktu ★★★★★ ()
Ответ на: комментарий от masteruser82841

Это ещё хуже. Это просто библиотека рендеринга картинок. Она не предназначена для задействования видеоускорения и вывода на экран через видеоускорение (которое нужно играм). Она предназначена просто для рендеринга отдельных 3D картинок _в память_, а не в видеокарту. И не более этого.

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

Я не разрабоичик и ничего в этой статье не понял. Нужно какие-то исходные коды программы переписывать, чтобы она получила opengl без x, даже цвет задавать какой-то надо, а нельзя ли по проще? Чтобы была такая библиотека libGL, которая сама обращается к EGL, и возвращает данные программам, и всё это без x? Я вообще далёк от всех этих разработок, с таким не справлюсь

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

как её заставить работать вместо libgl

Никак. libOSMesa не заменяет libGL. Это что-то типа замены GLX. Не представляю, как ты её вообще использовать собрался.

i-rinat ★★★★★ ()
Ответ на: комментарий от saahriktu

Мне нужен программный рендеринг, так что это сойдёт. Я хочу понять как задействовать libosmesa без переписывания исходных кодов, потому что я НЕ разработчик

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

Мне нужен программный рендеринг

Зачем? Для каких-то научных задач? Игры на программном рендеринге превратятся в слайдшоу. Им нужно аппаратное видеоускорение. Для этой задачи существует библиотека mesa.

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

Ну смотри, есть андроид, в андроиде видеокарта с OpenGL ES (не OpenGL). В андроиде стоит программа exagear. Эта программа эмулирует x86 ubuntu 14.04, но у неё нет доступа к видеокарте. Единственный способ получить 3d ускорение в этом случае поставить mesa в тот x86 образ. Но у меня появились непонятные ошибки в x сервере, когда я туда поставил mesa, я уже говорил какие. Поэтому я хочу тот же libgl, но чтобы он не трогал X с окнами, дабы избежать багов. X сервер в exagear очень глючный. Ещё раз, как пользоваться osmesa не зная языков программирования?

masteruser82841 ()
Ответ на: комментарий от i-rinat

И что я должен из этого понять? Что мне с этим делать? Как я заставлю программы использовать osmesa? Я что, должен залезть в исходники программы, непонятно куда, найти непонятно какую функцию и заменить там обычный opengl на osmesa? Я мало что тут понял.

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

Эта программа эмулирует x86 ubuntu 14.04

Так не бывает. Бывают виртуальные машины. Гугл говорит, что exagear для Андроида не является виртуальной машиной.

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

Так не бывает. И линуксы в «эмуляторах» не работают. Либо на реальном железе, либо в виртуальной машине. exagear - не виртуальная машина.

ExaGear Strategies / RPG являются эмуляторами среды Windows для Android, которые позволяют запускать игры для ББ на Android-устройствах.
ExaGear Strategies - это версия ExaGear Mobile с управлением, адаптированным для игр жанра стратегии.
ExaGear RPG - это версия ExaGear Mobile с управлением, адаптированным для игр жанра RPG.

saahriktu ★★★★★ ()

Только если мудрить с DRM, но не тем которое DеRьMо, а Direct Rendering Manager. Но сомнительно что будет нормально работать, т.к. на него вообще всем наплевать.

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

И что я должен из этого понять?

Как пользоваться OSMesa. Ты же это спрашивал.

Что мне с этим делать?

Я не знаю. Твоя затея изначально обречена на провал, потому что вместо попыток понять, как это работает, ты пытаешься набросить файлы, что бы оно как-то там заработало. Шансы на удачное разрешение очень маленькие. Представь, что ты в тубус закинул клубок ниток, и трясёшь. А потом открываешь тубус и ожидаешь там найти связанный носок.

Как я заставлю программы использовать osmesa?

Никак.

Я что, должен залезть в исходники программы, непонятно куда, найти непонятно какую функцию и заменить там обычный opengl на osmesa?

OSMesa не является заменой OpenGL. Это что-то типа интерфейса взаимодействия с системой. Под иксами ты используешь GLX или EGL, под виндой wgl. А тут — OSMesa. Я скидывал ссылку на описание. Там есть функция для создания контекста, есть функция для того, чтобы подцепить контекст к буферу. Подцепляешь, начинаешь рисовать вызовами GL. В буфере получает картинку. На пример кода я тоже ссылку скинул.

Я мало что тут понял.

И?

i-rinat ★★★★★ ()
Ответ на: комментарий от masteruser82841

Эмулятор и виртуальная машина это одно и тоже!

В школу.

peregrine ★★★★★ ()
Ответ на: комментарий от i-rinat

Я говорю вам, я не знаю языков программирования, поэтому подцепить ничего не смогу. Я хочу чтобы система сама подцепила эту osmesa для opengl программ.

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

Эмулятор и виртуальная машина это одно и тоже!

Нет. Это разные вещи.

Виртуальная машина эмулирует реальное железо с возможностью запуска реальных ОС.

А просто «эмулятор» эмулирует только определённый функционал для какой-то задачи, который не обязан на 100% совпадать с эмуляцией реального железа.

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

Я говорю вам, я не знаю языков программирования, поэтому подцепить ничего не смогу.

Значит, ты не сможешь решить проблему, которую хочешь решить.

Я хочу чтобы система сама подцепила эту osmesa для opengl программ.

Хотеть не вредно.

У тебя не особо много вариантов. Либо жди, пока появится тот, кому интересно это всё решать для тебя. Либо разбирайся сам. Есть ещё вариант найма кого-нибудь. Но этот вариант тебе обойдётся в разы дороже, чем покупка какого-нибудь микро-ноута на x86.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Что такое взаимодействие с системой? Как osmesa выведет картинку без иксов? Что такое буфер, контекст, и кто получает/выводит картинку на экран и каким образом?

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

Как osmesa выведет картинку без иксов?

Никак не выведет. Она же в буфер рисует.

Что такое буфер

Сплошная область в памяти.

контекст

Читай вводные курсы про OpenGL.

кто получает/выводит картинку на экран и каким образом?

Читай вводные курсы про OpenGL для иксов. Там будет описано, что такое GLX, зачем он нужен и как работает. Можешь взять и те, где описана работа под Windows, но про GLX придётся потом читать отдельно.

Ты мне сейчас вот это напоминаешь: https://coub.com/view/1he7h0

i-rinat ★★★★★ ()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от masteruser82841

Как osmesa выведет картинку без иксов?

Я ж уже писал, что osmesa не выводит картинки. Вообще. Она их только рендерит. А что с этим делать дальше - это уже не проблемы библиотеки osmesa.

Картинки выводит mesa.

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

Вылетает такая ошибка, связанная с каким-то xrandr, когда я через wine запустил одну opengl программу (не все так ввлетают). Что это значит? Как исправить?

err:xrandr:xrandr12_init_modes Failed to get primary CRTC info.

Дело в том, что когда я ставлю mesa не в linux, а в wine, эта ошибка пропадает. И баганые окна тоже. Но там есть другие проблемы. Поэтому я хотел отвязаться от X, чтобы не было такой ошибки с каким-то xrandr.

masteruser82841 ()
Ответ на: комментарий от saahriktu

Вывести таким образом, чтобы окно с рендеринговым изображением не заставало на месте, когда его края перемещаются. Такой странный баг.

masteruser82841 ()
Ответ на: комментарий от saahriktu

Подождите немного, я удалил систему в которой тестировал этот баг, щас заново установлю пришлю видео

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