Sun
14
Jan 2007
Dzisiaj tych wszystkich niekoniecznie początkujących którzy używają Direct3D chciałem zainteresować zapytaniami - queries. Są to zasoby tworzone metodą CreateQuery
urządzenia D3D. Reprezentują zapytania zadawane do karty graficznej i wykonywane w sposób asynchroniczny. Wywołujemy takiemu zapytaniu Issue(D3DISSUE_BEGIN)
(nie wszystkie tego wymagają), rysujemy coś, wywołujemy Issue(D3DISSUE_END)
, następne sprawdzamy wynik funkcji GetData
i jeśli ten oznacza sukces, otrzymujemy natychcmiast dane zwrócone przez zapytanie.
Zapytania mogą być różnego rodzaju. Te ciekawsze to OCCLUSION
pozwalające realizować to słynne sprzętowe Occlusion Query, czyli szybki test zasłaniania jednych obiektów przez inne. EVENT
z kolei pozwala poczekać na zakończenie wszystkich wykonywanych w tle operacji graficznych, co rzekomo miałoby wyeliminować skakanie animacji dające o sobie znać w trybie okienkowym - mnie niestety nie pomogło.
Inne zapytania zwracają struktury pełne liczb z różnymi statystykami wewnętrznej pracy karty graficznej. Niestety większość z nich nie jest supported w moim systemie - widocznie albo GeForce 6600 GT to jest już złom a nie karta graficzna, albo trzebaby się przełączyć na DirectX-a w wersji Debug zamiast Retail (chociaż dokumentacja w SDK mówi że większość z nich działa w obydwu).
Więcej na ten temat możecie przeczytać w DirectX SDK, w rozdziale zatytułowanym Queries
.
Comments | #rendering #directx Share