niedziela, 20 marca 2011

Ciekawostki

Ostatnio piszę w XNA (ze względu na studia) i chciałem  podzielić się kilkoma rzeczami których się dowiedziałem w trakcie (większość nie jest związana z XNA).
  • Użycie SpirteBatch do rysowania dwuwymiarowych elementów wyłącza sprawdzanie głębokości. Ja osobiście spodziewałem się, że po wszystkim sprawdzanie głębokości zostanie przywrócone więc chwilę mi zajęło (głównie przeszukiwanie googla odnośnie testów głębokości w XNA) aby znaleźć rozwiązanie problemu z Z-bufforem.
  • Ze względu na moje słabe doświadczenie z shaderami (pisałem tylko w Cg pod shader model 4.0 albo nawet i 5.0) nie widziałem jakim problemem jest użycie tekstury w Vertex Shader w wersji 3.0. Udało mi się dotrzeć do informacji o dwóch obsługiwanych typach tekstur: Single( R32F ), Vector4 (A32R32G32B32F) i użyciu funkcji tex2Dlod zamiast tex2D i oczywiście trzeba pamiętać aby nie pozwolić XNA przy imporcie zmienić tego formatu.Do tego trzeba dodać, że karty graficzne nie obsługują innego filtrowania niż punktowego takich tekstur,
  • Macierz widoku tworzona przez Matrix.createLookAt nie działa jeżeli próbuje się stworzyć kamerę która patrzy pionowo w dół względem swojego wektora do góry. Oczywiście po krótkim googlowaniu i sprawdzeniu jak działa takie gluLookAt wiem, że to nie ma prawa działać przez sposób tworzenia tej macierzy ale muszę przyznać wcześniej jakoś o tym nie myślałem.
  • Jeżeli w Pixel Shader przypisze się bezpośrednio pozycję do koloru pomimo zgodności typów (float4) shader nie skompiluje się z dziwnym i mylącym błędem (piszę tutaj konkretnie o efektach w XNA).
To by było na tyle. Część z tych rzeczy może być określona jako oczywista jednak z tego powodu często trudniej takie coś znaleźć.

Brak komentarzy: