LINUX.ORG.RU

OpenGL в QT

 , , ,


0

2

Доброго времени суток!Поставил последний QT с официального сайта. Создал простейший проект-шаблон (просто создается окошко и все), при компиляции написал мне cannot find -lGL. OpenGL библиотека у меня хранится /usr/lib/fglrx/libGL.so (драйвер ATI). Сначала вытащил символическую ссылку на библиотеку в папку /usr/lib.Не помогло. Тогда переустановил библиотеку mesa. Теперь у меня есть альтернативная libGL.so в папке usr/lib/i386-linux-gnu/mesa. И вот только теперь простейшая программа QT скомпилировалась и запустилась.

Вопрос: QT работает только с mesa-реализацией OpenGL? Но она же вроде дает только софтверный рендеринг, а не аппаратный, не? Когда я буду писать реальное OpenGL приложение на QT, оно будет в реале на mesa работать или на библиотеке от драйверов ATI? Можно ли как-то принудительно приучить приложение к работе именно на библиотеке от драйвера видеокарты?

P.S. Дистрибутив Linux Mint 17

Сначала вытащил символическую ссылку на библиотеку в папку /usr/lib

Зачем? Ведь есть флаг -L/path/to/library

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

Принципиально незачем,главное, что волнует - именно аппаратный рендеринг,если использовать классы QtOpenGL, то аппаратный рендеринг будет?

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

Это уже Кьют разруливать будет, через его конфигурашку можно настроить вид рендерига. Еще можно, вроде, передавать его как параметр запуска.

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

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

2)Если я напишу -L/usr/lib/fglrx -lGL , то компоновщик при создании бинарника будет искать библиотеку там. А при запуске проги? По идее тоже там, нет? Попробую я, например, запусть эту прогу на другом компе, где дрова вообще от Nvidia и лежат в другом месте, что тогда?

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

В QT новичок

Это общее и для C, и для C++

...А при запуске проги? По идее тоже там, нет?

Да

...дрова вообще от Nvidia и лежат в другом месте, что тогда?

Не найдёт :)

revhom
()

Для начала было бы неплохо разобраться в системе, на которой кодишь. Не QT, а Qt. Mesa это свободная реализация OpenGL, в ней есть как аппаратный, так и программный рендеринг. Твоё ПО будет работать с тем, что у тебя будет лежать в /usr/lib. Поставишь дрова от невидии, у тебя автоматом сделается симлинк на GL от nv, поставишь AMD (потому что ATI сейчас нет), значит будет AMD (fglrx), если же будешь использовать свободные драйвера, то реализация будет из Mesa.

Например, вот так в генте

ls -l /usr/lib64/libGL.so.1
lrwxrwxrwx 1 root root 14 Dec 25 12:33 /usr/lib64/libGL.so.1 -> libGL.so.1.2.0

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

QT работает только с mesa-реализацией OpenGL? Но она же вроде дает только софтверный рендеринг, а не аппаратный, не?

ШТОА?!?!? Но это правда что в mesa, помимо аппаратного рендеринга, есть и swrast, softpipe и llvmpipe.

I-Love-Microsoft ★★★★★
()

Библиотека про которую ты пишешь, называется Qt. QT - это QuickTime. Не надо больше так писать.

peregrine ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Чет я уже запутался. Аппаратный рендеринг: рендерит видеокарта, для чего нужны установленные дрова этой самой видеокарты.Какое mesa имеет отношения к конкретной видюхе и ее дровам?==> какое mesa имеет отношение к аппаратному рендерингу (может я чет упускаю из виду)?

Банальный пример: ставлю голый дистрибутив убунты или минта.Смотрю glxinfo: direct rendering - NO . Это при том, что если посмотреть, mesa на дистрибутиве «из коробки» уже предустановлена.И только когда я поставлю дрова видюхи, будь то открытые или проприетарные, glxinfo напишет direct rendering - YES.

Nerevarino
() автор топика

Поставил Qt еще на Windows.Появился ряд вопросов

1)Для билда можно, например, использовать msvc 2013 - с этим все понятно, а вот msvc2013_OpenGl - это что такое?Компилятор в связке с OpenGL?А что это означает?Что GUI приложения, скомпилированного msvc2013_OpenGl, будет полностью работать на GPU?Или что это значит?

2)Строю простейшее приложение-пустое окно.Изнутри Qt Creator-а оно отлично запускается.При попытке просто запустить бинарник из папки (что дебаг, что релиз)пишет, что нет соответствующей кьютовской dll.Кинул dll из папки кьюта в system_32 - тогда он потребовал еще другую библиотеку, то есть он хочет видеть кьютовские библиотеки в системной папке.Но разве так должно быть?Не должен же каждый пользователь гипотетической программы ставить себе SDK для простого запуска программы...

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

1. Рендеринг в Qt 5.4.0 в Windows идёт следующими способами:

  1. Через костыль OpenGL/OpenGL ES 2.0 -> ANGLE -> DirectX, что теоретически должно работать на любой Windows-машине;
  2. Через OpenGL, то есть через стандартную opengl32.dll, что работает не на каждом компе, так как в винде откровенно хреновая поддержка OpenGL по дефолту (1.0 прямиком из 90-ых вроде как);
  3. Через OpenGL, но с помощью opengl32sw.dll. То есть OpenGL рисуется процессором. Это медленно.

Для винды предпочтительнее и роднее выбирать костыль OpenGL/OpenGL ES 2.0 -> ANGLE -> DirectX.

2. Читай доки, как правильно развернуть на винде приложение написано тут: http://doc.qt.io/qt-5/windows-deployment.html

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