Technologie i wydarzenia
Artykuł
Marcin Bieńkowski, Środa, 20 czerwca 2007, 09:30

Czas na DX10

30 listopada 2006 roku oficjalnie zadebiutowały biblioteki graficzne DirectX 10, które znane były wcześniej również pod nazwami Windows Graphics Foundation i DirectX Next. Obecnie DirectX 10 dostępny jest jedynie z systemem operacyjnym Windows Vista, a Microsoft nie przewiduje wersji DX10 dla Windows XP. Co ciekawe, w DirectX 10 po raz pierwszy nie zachowano wstecznej kompatybilności z poprzednimi wersjami bibliotek graficznych, ale na szczęście ta niedogodność dotyczy jedynie warstwy sprzętowej – wszystkie obsługiwane dotychczas funkcje dalej są częścią nowego API. Co to oznacza w praktyce? Otóż wszystkie stare gry dalej będą poprawnie działać w nowym środowisku graficznym, ale żadna stara karta nie uruchomi się przy wykorzystaniu nowego DirectX. Spokojnie, nie ma obawy – Microsoft przewidział, że nie każdy użytkownik Visty kupi sobie od razu któregoś z GeForców z serii 8000 lub Radeona HD 2900 XT. W celu zachowania kompatybilności ze starszym sprzętem, w Vistę wbudowano drugi graficzny API, a mianowicie DirectX 9.0L (od ang. legacy czyli dziedzictwo). Oba DX są od siebie niezależne i należy je traktować jako dwa odrębne API – pierwszy wykorzystywany jest przez najnowsze karty, drugi zaś jest uruchamiany w chwili, gdy w systemie wykryta zostanie karta zgodna z którąś ze starszych wersji DirectX.

Rozdzielenie DirectX 10 i DirectX 9 ma bardzo głębokie uzasadnienie. Otóż przy pisaniu każdej kolejnej wersji DirectX programiści wykorzystywali kod z poprzedniej, uzupełniając go i poprawiając. Takie podejście ma oczywiście swoje zalety (program m.in. pisze się znacznie szybciej i nie trzeba za każdym razem implementować na nowo obsługi starszego sprzętu, gdyż w starym kodzie ona po prostu już jest), ale też i swoje wady, z których największą jest przenoszenie dotychczasowych błędów i ograniczeń w funkcjonowaniu aplikacji. Jak można się domyślić, tą metodą powstał DirectX 9.0L. DirectX 10 został natomiast napisany całkowicie na nowo, dzięki czemu uniknięto wielu błędów i zoptymalizowano kod, przystosowując go wyłącznie do nowych kart. Takie podejście pozwoliło zmniejszyć tzw. narzutu interfejsu API na proces tworzenia grafiki, określany angielskim terminem API overhead. Chodzi tutaj o moc obliczeniową CPU wykorzystywaną do obsługi bibliotek graficznych. Dotychczasowe biblioteki DX 9 zużywały ok. 40% cykli procesora przeznaczonych na tworzenie grafiki. W DX10 nakład ten zmniejszono do ok. 20%, dzięki czemu jednostka centralna ma więcej czasu na tworzenie bardziej realistycznej grafiki, bądź może być w tym czasie zaprzęgnięta do zupełnie innych zadań.


źródło: AMD/ATI

Przystosowanie kodu bibliotek DirectX 10 do obsługi wyłącznie nowych kart ma również istotny wpływ na szybkość generowania grafiki 3D. Dotychczas, podczas tworzenia sceny 3D, gry za pośrednictwem graficznego API wielokrotnie zwracały się z zapytaniami do karty, czy jest ona w stanie obsłużyć taki lub inny efekt graficzny. Sprawdzanie takie zajmowało sporo czasu. Teraz wystarczy już tylko raz odwołać się do procedur sprzętowych, aby biblioteki wiedziały, jakie instrukcje i formaty danych są dozwolone, a gra mogła zająć się wyłącznie generowaniem trójwymiarowej grafiki. Przy okazji zoptymalizowano także algorytmy zarządzania tablicami tekstur, rysowania z wyprzedzeniem (predicated draw) i wysyłania strumienia danych. Wszystkie te operacje wymagają znacznie mniejszej liczby interwencji procesora niż miało to miejsce w wypadku DirectX 9.

Ocena artykułu:
Ocen: 2
Zaloguj się, by móc oceniać
Artykuły spokrewnione
Facebook
Ostatnio komentowane