Typy urządzeń (Direct3D 9)
Urządzenie HAL
Podstawowym typem urządzenia jest urządzenie o połowę, które obsługuje przyspieszoną rasteryzację sprzętu oraz przetwarzanie wierzchołków sprzętowych i programowych. Jeśli komputer, na którym działa aplikacja, jest wyposażony w kartę wyświetlania, która obsługuje funkcję Direct3D, aplikacja powinna używać jej na potrzeby operacji Direct3D. Urządzenia Direct3D hal implementują wszystkie lub część modułów transformacji, oświetlenia i rasteryzacji w sprzęcie.
Aplikacje nie uzyskują bezpośredniego dostępu do kart graficznych. Nazywają one funkcje i metody Direct3D. Funkcja Direct3D uzyskuje dostęp do sprzętu w połowie. Jeśli komputer, na którym działa aplikacja, obsługuje połowę, uzyska najlepszą wydajność przy użyciu urządzenia o połowę.
Aby utworzyć urządzenie o połowę, wywołaj CreateDevice przy użyciu D3DDEVTYPE_HAL jako typu urządzenia.
Urządzenie referencyjne
Funkcja Direct3D obsługuje dodatkowy typ urządzenia nazywany urządzeniem odniesienia lub rasterizatorem referencyjnym. W przeciwieństwie do urządzenia programowego rasterizator odwołań obsługuje każdą funkcję Direct3D. To urządzenie ma być używane do celów debugowania i dlatego jest dostępne tylko na maszynach, na których zainstalowano zestaw SDK DirectX. Ponieważ te funkcje są implementowane pod kątem dokładności, a nie szybkości i są implementowane w oprogramowaniu, wyniki nie są bardzo szybkie. Rasterizator referencyjny korzysta ze specjalnych instrukcji procesora CPU, gdy tylko może, ale nie jest przeznaczony dla aplikacji detalicznych. Użyj rasteryzatora referencyjnego tylko w celach testowych funkcji lub demonstracyjnych. Aby utworzyć urządzenie referencyjne, wywołaj metodę CreateDevice przy użyciu D3DDEVTYPE_REF jako typu urządzenia.
HAL a URZĄDZENIA REF
Urządzenia HAL (warstwa abstrakcji sprzętu) i urządzenia REF (rasterizator REFerence) są dwoma głównymi typami urządzeń Direct3D; pierwszy jest oparty na obsłudze sprzętu i jest bardzo szybki, ale może nie obsługiwać wszystkiego; podczas gdy drugi nie używa przyspieszania sprzętowego, dlatego jest bardzo powolny, ale gwarantuje obsługę całego zestawu funkcji Direct3D w poprawny sposób. Ogólnie rzecz biorąc, kiedykolwiek trzeba będzie używać urządzeń HAL, ale jeśli używasz jakiejś zaawansowanej funkcji, która nie obsługuje karty graficznej, może być konieczne powrót do ref.
Innym razem możesz chcieć użyć ref, jeśli urządzenie HAL generuje dziwne wyniki — oznacza to, że kod jest poprawny, ale wynik nie jest oczekiwany. Urządzenie REF ma gwarancję prawidłowego działania, dlatego możesz przetestować aplikację na urządzeniu REF i sprawdzić, czy zachowanie nietypowe będzie kontynuowane. Jeśli tak nie jest, oznacza to, że aplikacja (a) zakłada, że karta graficzna obsługuje coś, czego nie robi, lub (b) jest to usterka sterownika. Jeśli nadal nie działa z urządzeniem REF, jest to usterka aplikacji.
Sprzęt a przetwarzanie wierzchołków oprogramowania
Sprzęt a przetwarzanie wierzchołków oprogramowania dotyczy tylko urządzeń HAL. Gdy wypychasz wierzchołki przez potok, muszą one zostać przekształcone (przez świat, widok i macierze projekcyjne z kolei) i oświetlone (przez wbudowane światła D3D) — ten etap przetwarzania jest znany jako T&L (dla transformacji & Oświetlenie). Przetwarzanie wierzchołków sprzętowych oznacza, że odbywa się to na sprzęcie, jeśli sprzęt go obsługuje; ergo, przetwarzanie wierzchołków oprogramowania odbywa się w oprogramowaniu. Ogólną praktyką jest próba utworzenia najpierw sprzętowego urządzenia T&L, a jeśli to się nie powiedzie, spróbuj mixed, a jeśli to nie powiedzie się, spróbuj użyć oprogramowania. (Jeśli oprogramowanie nie powiedzie się, rezygnacja i wyjście z błędem).
Tematy pokrewne
-
urządzeń Direct3D