Autor Wątek: Silnik w Direct3D9, założenia  (Przeczytany 2634 razy)

Offline Oti

  • Użytkownik

# Kwiecień 11, 2011, 23:54:31
Cytuj
Tak, tworzyłem RT jako teksturę i nie do końca rozumiem po co mógłym tworzyć render target bez tekstury(Bo generalnie z tego co wiem, to RT tworzy się, by móc potem jego zawartość na coś nałożyć, np. na full-screen quad w przypadku post processu).
Jeżeli nie ma MSAA, to możesz robić od razu RT jako teksturę. Jeżeli MSAA jest, to nie możesz, bo tekstury w DX9 nie mogą być multisamplowane (teksel to jeden kolor, a nie kilka próbek). Żeby postprocessować MSAA musisz zrobić rendertarget jako zwykły surface, wyrenderować do niego, a potem zrobić StretchRect do tekstury o takim samym rozmiarze. Podczas StretchRect nastąpi tzw. resolve (próbki MSAA zostaną połączone w jeden kolor) i wynik, już nie multisamplowany, będzie gotowy do użycia w teksturze.
O, wielkie dzięki. :) Już wszystko jasne.

Cytuj
Zawsze tworzę teksturę, a później 'podpinam' pod nią powierzchnię.
Powierzchnie tworzą się same przy tworzeniu tekstury.
Tzn. miałem na myśli, że pobieram powierzchnię przez texture->GetSurfaceLevel, skrót myślowy.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Zielony

  • Użytkownik
    • Ghurund Engine

# Kwiecień 12, 2011, 04:05:16
No ja też chętnie pisałbym już w czymś nowszym niż DX9, ale niestety aktualnie nie mam możlwości finansowych by wejść w posiadanie komputera obsługującego coś nowszego(i na takową możliwość póki co się nie zanosi). Ale myślę, że nie marnuję czasu pisząc w 'dziewiątce'.
Może przypadkiem masz Win Vista/7? Jeśli tak, to możesz pisać w DX11 z ustawionym Feature Level 9. W ten sposób na starszym sprzęcie zapoznasz się z nowym API i, w razie przesiadki na lepszy sprzęt, przepiszesz tylko shadery i rzeczy z nimi powiązane.