OPENGL ARB_occlusion_query Отстраняване на запушване

for (int i = 0; i < Number_Of_queries; i++)
{
    glBeginQueryARB(GL_SAMPLES_PASSED_ARB, queries[i]);

    Box[i]

    glEndQueryARB(GL_SAMPLES_PASSED_ARB);
}

Любопитен съм относно метода, предложен в GPU GEMS 1 за отстраняване на оклузия, където се изпълнява определен брой заявки. Използвайки описания метод, не можете да тествате отделни кутии една срещу друга, така че трябва ли да направите следното?

Тестово поле A -> Изобразяване на поле A

Тестово поле B -> Изобразяване на поле B

Тестово поле C -> Изобразяване на поле C

и така нататък...


person Dave    schedule 19.04.2011    source източник
comment
Тъй като сте нов тук, не забравяйте да се информирате за функциите за приемане и гласуване за.   -  person Christian Rau    schedule 14.08.2011


Отговори (2)


Не съм сигурен дали ви разбирам правилно, но не е ли това един от недостатъците на наивното внедряване на първо изобразяване на всички кутии (и не записване в буфер за дълбочина) и след това използване на резултатите от заявката за проверка на всеки обект? Но вашето предложение да използвате незабавно резултата от заявката на една кутия е още по-наивен подход, тъй като това спира тръбопровода. Ако прочетете тази глава (ако приемем, че се позовавате на глава 29) по-нататък, те представят проста техника за преодоляване на недостатъците на двата наивни подхода (тоест просто изобразете всичко нормално и използвайте резултатите от заявката от предишния кадър).

person Christian Rau    schedule 14.08.2011

Мисля, че (би било добре да се свърже статията за GPU скъпоценни камъни...) сте объркан относно донякъде асинхронни заявки, както е описано в разширения като това:

http://developer.download.nvidia.com/opengl/specs/GL_NV_conditional_render.txt

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

Както отбелязва Кристиан Рау, правенето само на „запитване, изчакване на резултат, правене на неща въз основа на резултата“ може да спре и може да не доведе до печалба поради това, в зависимост от това колко работа има в „правене на неща“. Всъщност извършването на заявката, изчакването й да се върне и обратно само за да се спести едно изтегляне, най-вероятно изобщо няма да помогне.

person starmole    schedule 04.02.2012