Название: Qt3D проблемы с освещением Отправлено: navrocky от Март 01, 2013, 11:26 Играюсь тут с Qt3D, ветка для Qt4.8 взято вот отсюда git://gitorious.org/qt/qt3d.git.
Не могу сделать более одного источника света. Добавляю источники света вот так: Код
Всегда видно только первый добавленный источник света. В чём может быть проблема? Главное, что в примерах и демках всегда не более одного источника света, даже и посмотреть не на чём ( Еще где-то видел такую фразу (в сорцах или доке) мол на OpenGL/ES нельзя больше одного источника света %( сейчас найти не могу Название: Re: Qt3D проблемы с освещением Отправлено: Igors от Март 01, 2013, 13:02 1) На форуме есть раздел Qt3D :)
2) Практически стандарт - максимум 8 источников, это держат даже скромные/старые карты. Ну у крутых конечно больше. 3) Бегло глянув исходники - да, почему-то используется только GL_LIGHT0 - и все. Ну никто не мешает посмотреть значение переменной GL_MAX_LIGHTS и вызвать ф-ции напрямую Название: Re: Qt3D проблемы с освещением Отправлено: navrocky от Март 01, 2013, 13:44 Нашел такое: http://lists.qt.nokia.com/public/qt-3d/2012-February/000831.html
Вкратце, есть проблема с двумя и более источниками света, начиная с 2011 года, что-то там какая-то у них заморока с шейдерами, в феврале 2012 еще не исправлено, и по сию пору похоже. Указанный баг в трекере я не нашёл. Не понятно, наф.. зачем шейдеры для источников света? Потом я попробовал добавить руками источник света - не помогает. В итоге, я никак не могу заставить сцену быть светлее. Видимо сейчас буду брать геометрию, текстуры и материалы из qt3d сцены, а рисовать это чистым opengl... Я бы изначально рисовал руками, но надо модельки подгружать из блендера с текстурами и материалами. А может быть вообще викину этот qt3d да буду грузить модельки напрямую с помощью assimp, без промежуточных звеньев. Название: Re: Qt3D проблемы с освещением Отправлено: Igors от Март 01, 2013, 14:10 Не понятно, наф.. зачем шейдеры для источников света? Шейдер обычно просматривает все активные источники. А без шейдера phong не получить. Название: Re: Qt3D проблемы с освещением Отправлено: navrocky от Март 01, 2013, 15:07 Копнул немного глубже. Для освещения используются эффекты наследники QGLAbstractEffect.
Стандартный QGLLitMaterialEffect использует шейдеры для освещения модели, хотя там есть код для Fixed Function. При этом используются обычные OpenGL-функции glLightfv. Этот код включается дефайном QGL_FIXED_FUNCTION_ONLY при сборке qt3d. Включил я, значит, этот дефайн, собралось, но теперь у меня прога сегфолтится при попытке отрисовать модель.. судя по стеку где-то в недрах драйвера Невидия. Такие дела. Код: Program received signal SIGSEGV, Segmentation fault. И ещё один интересный эффект был всё это время - при запуске из под криатора модели не отображаются вообще в окне QGLView. При запуске из консоли, или файлового менеджера - всё ок. Сейчас попробую написать свой эффект, который будет использовать Fixed Function без использования дефайна. UPD. Не помогло. Буду руками прогружать модельку в чистый OpenGL. |