Tue
13
May 2008
Jak wiadomo, tekstury nie muszą być kwadratowe, ale generalnie powinny mieć boki będące potęgami dwójki - tj. 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 itd. Ograniczenie to znoszą jedynie układy firmy nVidia z SM3 (od GF6), ale karty ATI z SM3 nadal je mają. Odpowiada za to flaga D3DPTEXTURECAPS_POW2 pola TextureCaps struktury D3DCAPS9.
Jest jednak taka sytuacja, kiedy to ograniczenie jest bardzo uciążliwe. Chodzi o użycie tekstury jako Render Target. Wówczas, jeśli powinna mieć co najmniej rozmiar ekranu, przykładowo dla rozdzielczości 1280 x 1024 musiałaby mieć rozmiar 2048 x 1024 i dużo miejsca by się marnowało.
Dlatego jakby specjalnie w tym celu, praktycznie wszystkie układy graficzne posiadają flagę D3DPTEXTURECAPS_NONPOW2CONDITIONAL, która pozwala na używanie tekstur o dowolnych rozmiarach pod pewnymi warunkami (opisanymi w DX SDK pod hasłem "D3DCAPS9"):
Comments | #directx #rendering Share