Russian Qt Forum

Qt => OpenGL => Тема начата: Igors от Июль 11, 2021, 13:05



Название: Баг типа безнадюга
Отправлено: Igors от Июль 11, 2021, 13:05
Добрый день

Сделал интерактивный выбор вертексов и фейсов. Использую "Feedback API" вкупе с геометрическими шейдерами. Мороки много, но идея проста, шейдер вычисляет пересечение луча и.т.п. с фейсом и пишет номер фейса (gl_PrimitiveID) в атрибуты которые затем можно прочитать на CPU. Все легально и следует спецификации, не видел ни одного упоминания что, мол, deprecated и.т.п.

И вот на одной старенькой карте - не работает. Долбаный gl_PrimitiveID в какой-то момент сбрасывается в ноль :'( Конечно этой карты у меня нет, все выяснения логированием.

На чудо (кто-то подкинет идейку) не надеюсь, предлагаю поговорить что делать в такой (ну очень хреновой) ситуации.

1) Как всегда - разгуглить, найти и.т.п. Не катит, инфы по gl_PrimitiveID мало, ну встроенная переменная, по сути этим все сказано

2) Упорно продолжать поиск бага/причины или соскочить напр на software эмуляцию (со всеми вытекающими).

3) Как искать. Напр сделать/выделить тестовый пример (тут есть о чем поговорить)

4) Отмазаться (тут есть люди с богатым опытом  :))

Спасибо


Название: Re: Баг типа безнадюга
Отправлено: kambala от Июль 11, 2021, 20:05
5) найти карту на барахолке / авито


Название: Re: Баг типа безнадюга
Отправлено: Igors от Июль 12, 2021, 14:39
5) найти карту на барахолке / авито
Та яке ж воно розумне  :)


Название: Re: Баг типа безнадюга
Отправлено: Igors от Июль 13, 2021, 06:04
Собсно как это случается. Резвый старт типа "ну бум искать", что нормально, жизнь программиста минимум наполовину состоит из "фиксажа", того или иного. Однако недельки так через две безуспешных попыток приходят др мысли, не очень приятные, "а сколько я буду его искать? И найду ли вообще?" Вы еще не были в такой ситуации? Ну и слава богу :)

OpenGL конечно сволочь и гнида. Беда в том что мне неизвестен способ "локализоваться", т.е. после напр 100 тестов я никуда не продвинулся и ни к каким выводам не пришел. Вот пара предыдущих багов, там тоже были проблемы с gl_PrimitiveID.

1) Предыдущая команда рисования не была завершена (не было swapBuffers, надо было вызвать glFinish).

2) Шейдеру не нраится return, т.е. компилится и линкуется норм, но на выполнении полная фигня

И тоже нашел "методом втыка", а совсем не логикой, как положено