DirectX, która wersja na start

0

Witam.
Zamierzam uczyć się DirectX, lecz niestety nie wiem od której wersji zacząć. Proszę Was o pomoc w dokonaniu wyboru. Wiem, że DX11 jest nowsza i prawdopodobnie lepsza, ale DX9 jest o wiele bardziej popularna. Tym większy kłopot sprawia to, że DX11 nie ma kompatybilności wstecznej. A wiele osób jest ograniczona 9, głównie z powodu systemu(XP), no a przecież jeszcze dochodzi do tego karta graficzna... Z drugiej strony zanim dobrze się nauczę pisać w DirectX, to może się coś zmienić, i to tym głównym będzie 11. Co radzicie?

0

Nie znam się dokładnie na DXach, ale wersja 10 była "przełomowa", zrywała kompatybilność z wersją 9. ZTCW, DirectX 10 udostępnia tryb zgodności ze sprzętem DX 9 - oczywiście bez emulacji nowych sprzętowych własności na starym sprzęcie (trzeba to sprawdzić :P ). Tzn niekompatybilność jest na poziomie bibliotek. DirectX 11 to stricte rozszerzenie DX 10, tzn kod DX 10 spokojnie skompiluje się pod bibliotekami DX 11.

DX 9 wybierz tylko jeśli zamierzasz pisać na konsole. W innym wypadku wybierz DX 10 - generalnie sprzęt DX 9 jest i tak, jak na dzisiejsze czasy, tragicznie słaby. A zrobienie gry obsługującej DX 10, DX 10.1 i DX 11 naraz powinno być proste.

Oprócz DX jest oczywiście OpenGL. Jego też możesz brać pod uwagę. Albo gotowe silniki, np id Tech 3, OGRE, JMonkeyEngine, itp

0
  1. starczy, bo i tak nie wykorzystasz DX11 więc nie będzie różnicy, a potem najwyżej kieedyś zaczniesz DX11 to będziesz już wiedział o co chodzi i zaczniesz to co w nim nowe. Tak przynajmniej w moim wydaniu.

BTW. Zapomniałem o 10. ;D

0

Duże są po między nimi(9 i 11) w kodzie?
A może inni mają jeszcze swoje zdanie na temat co by było lepsze na początek?

0

Generalnie ogólny schemat działania Direct3D w wersji 9, 10 i 11 jest podobny, różnica tkwi jedynie w nazwach funkcji i paru drobnych szczegółach. Wersja 9 jest najlepiej udokumentowana - mam na myśli to, że najwięcej dostępnych tutoriali i książek pisanych jest pod tą wersję. Decyzje MSa o niewspieraniu dłużej XPka jeśli chodzi o DirectX spowodowała zastój w technologii 3D dla Windowsa i w rezultacie 99% gier z górnej półki próbują wyciągnąć jak najwięcej z wersji 9. Na szczęście od kilku lat nowoczesne silniki graficzne oferują wsparcie dla nowych wersji DXa przy zachowaniu trybu pracującego z wersją 9. Przełomowym etapem będzie premiera Battlefielda 3, którego silnik (Frostbite) fizycznie nie będzie wspierał XPka, czyli także Direct3D 9.

Proponuję zatem postudiować Direct3D 9 i ogarnąć shadery. Framework samej biblioteki jest skromny, gdyż cały program graficzny opiera się w większości na shaderze. Jeżeli siedzisz na Windows Vista/7, to po jakimś czasie, jak już zrozumiesz co do czego służy, to możesz przepisać swój kod na wersję 11.

W swoim mini frameworku, w którym powsadzałem obiekty Direct3D do klas stworzyłem klasę abstrakcyjną "System Renderowania" i stworzyłem klasy dziedziczące od niej "System Renderowania Direct3D 9", "System Renderowania Direct3D 10", "System Renderowania Direct3D 11", "System Renderowania OpenGL", itd. Jeżeli miałeś już do czynienia z obiektami w C++, to to jest ciekawy przykład do skorzystania z tej funkcji :)

Aha, jeśli nie masz awersji do tutoriali w języku ang. to polecam książkę "Introduction to 3D Game Programming with Direct X 9.0c: A Shader Approach". Można znaleźć w sieci "wersję elektroniczną" :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0