Tag: directx

Entries for tag "directx", ordered from most recent. Entry count: 56.

Uwaga! Informacje na tej stronie mają ponad 3 lata. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Pages: > 1 ... 5 6 7

11:35
Thu
03
May 2007

Wchodząc w szczegóły

Kot zadał na forum - w temacie Narzut BeginPass / EndPass - ciekawe pytanie dotyczące jak najlepszej (oczywiście z punktu widzenia wydajności) organizacji procesu renderowania obiektów w silniku, w którym wykorzystujemy mechanizm efektów FX. Temat jest o tyle ciekawy, że mnie również dotyczy :) Dlatego wszelkie odpowiedzi mile widziane.

Przy okazji padł link do ciekawego znaleziska - ktoś napisał sobie swoje My own little DirectX FAQ z kilkoma ciekawymi informacjami.

Jeszcze mały off-topic: Wszystkim kolegom piszącym w tym roku maturę życzę powodzenia i ocen dostatecznie wysokich, żeby dostali się na swoje wymarzone studia - bo w takim momencie chyba to jest dla młodego kodera najważniejsze. GL & HF :)

Comments (0) | Tags: rendering directx | Author: Adam Sawicki | Share

14:12
Fri
13
Apr 2007

Dobra dokumentacja na wagę złota

Dokumentacja... Najbardziej znienawidzona część każdego programu. Prawie nikt nie lubi jej pisać, ale wszyscy wiedzą, że jest niezbędna. Dokumentacja jest tym, co najlepiej odróżnia prawdziwy, dopracowany program od eksperymentu/prototypu.

Dla odbiorcy danego programu (czy - przede wszystkim - biblioteki) dobra dokumentacja to nieoceniona pomoc. Zaawansowani tym się właśnie różnią od początkujących, że nie boją się do niej zaglądać, bo wiedzą, że znajdą tam systematyczny i szczegółowy opis każdej funkcji, jej działania i parametrów. Tylko czy na pewno kompletny?

MSDN zawsze pozostaje dla mnie pod tym względem wzorem. Ale już dokumentacji w DirectX SDK można co nieco zarzucić, szczególnie jej części poświęconej D3DX. Oprócz braku rozdziałów opisujących ogólnie sposób używania poszczególnych interfejsów doskwierają liczne drobiazgi. Na przykład:

D3DXMACRO Macros[MACRO_COUNT+1];
for (int i = 0; i < MACRO_COUNT; i++) {
  Macros[i].Name = // ...
  Macros[i].Definition = // ...
}
Macros[MACRO_COUNT].Name = NULL;
Macros[MACRO_COUNT].Definition = NULL;

Comments (0) | Tags: directx philosophy software engineering | Author: Adam Sawicki | Share

20:31
Fri
16
Mar 2007

DirectX Ops

Błędne działanie NVMeshMender

W skład pakietu DirectX SDK wchodzi m.in. ciekawe narzędzie, któremu dziś przyjrzałem się bliżej, a z którego chyba niewiele osób korzysta. Chodzi o dxops.exe. Ten napisany w C#, konsolowy programik "karmi się" skryptami zapisanymi w plikach tekstowych w prostym języku, w którym kolejne instrukcje mogę wczytywać, zapisywać oraz przetwarzać tekstury (we wszelkich obsługiwanych przez D3DX formatach) oraz siatki (w formacie X). Pośród możliwości programu warto wymienić:

Nie jest to w sumie nic ponad możliwości dostępne z poziomu funkcji D3DX, ale ich udostępnienie jako narzędzia nie wymagającego pisania kodu czyni ten program godnym uwagi.

Niestety z nieznanych mi przyczyn dxops źle generuje normalne dla moich siatek eksportowanych do formatu X z Blendera. Pozostaje więc NVMeshMender, który niestety też nie jest idealny (co pokazałem na załączonym zrzucie ekranu).

Comments (1) | Tags: rendering directx tools | Author: Adam Sawicki | Share

22:28
Sun
11
Mar 2007

Wielbłądy

Spędziłem wczoraj pół dnia na walce z dwoma wyjątkowo wrednymi błędami. Jednym z nich był błędny odblask specular - latał po powierzchni bez ładu i składu mimo że siatka była dobra i wzory na obliczenia też. Okazało się, że wektorów przekazywanych do pixel shadera, takich jak wektor kierunku do światła czy wektor połówkowy, nie należy w vertex shaderze normalizować. Heh, kto by na to wpadł nie wiedząc o tym wcześniej?

Drugi błąd sprawiał, że w pewnych bliżej nieokreślonych warunkach (ustawienia trybu graficznego, ilość renderowanej geometrii) niektóre obiekty znikały albo straszliwie migały pokazując się lub nie pokazując w poszczególnych klatkach. Najwidoczniej sterownik/karta nie czekała na opróżnienie kolejki przed zaprezentowniem danej klatki. Pomogło użycie IDirect3DQuery9 typu D3DQUERYTYPE_EVENT lub też - bardziej radykalnie - blokowanie i odblokowanie back buffera przed wywołaniem Present.

Tego rodzaju problemy i ich pokonywania (samemu czy z czyjąś pomocą - pozdro Krzysiek K.!) sprawiają, że takie programowanie wzbudza szeroki wachlarz skrajnych emocji. Podłoże matematyczne okazuje się być tylko podstawą i jego zrozumienie nie gwarantuje, że wszystko zadziała dobrze. A przecież na tym nie koniec - na jeszcze wyższym poziomie czeka problem sensownego zorganizowania całego programu, żeby to z czego się składa było jakoś poukładane, a nie tworzyło wielkiej kuli błota.

Comments (1) | Tags: rendering directx | Author: Adam Sawicki | Share

23:52
Wed
07
Feb 2007

Fixed Pipeline Lighting Demo

Fixed Pipeline Lighting Demo to moja najnowsza produkcja. Właściwie nic konkretnego, a jedynie pokaz aktualnego kodu, który udostępniam z prośbą o przetestowanie. Chcę się przekonać, czy zgodnie z założeniami zadziała także na starym sprzęcie klasy GeForce 2, GeForce 3, GeForce 4 MX i Ti, ich odpowiednikach firmy ATI czy na zintegrowanych, laptopowych intelach - słowem na kartach, które nie mają Vertex Shader 2.0. Po pobraniu dema proszę zapoznać się z plikiem Readme.txt.

Przy okazji: Wygląda na to, że po chwilowej awarii mojego konta (zamiast strony było napisane, że konto jest zawieszone) strona przestała działać tak wolno jak to było od pewnego czasu i teraz działa już bardzo sprawnie.

Comments (1) | Tags: rendering productions directx | Author: Adam Sawicki | Share

20:05
Sun
14
Jan 2007

IDirect3DQuery9

Dzisiaj tych wszystkich niekoniecznie początkujących którzy używają Direct3D chciałem zainteresować zapytaniami - queries. Są to zasoby tworzone metodą CreateQuery urządzenia D3D. Reprezentują zapytania zadawane do karty graficznej i wykonywane w sposób asynchroniczny. Wywołujemy takiemu zapytaniu Issue(D3DISSUE_BEGIN) (nie wszystkie tego wymagają), rysujemy coś, wywołujemy Issue(D3DISSUE_END), następne sprawdzamy wynik funkcji GetData i jeśli ten oznacza sukces, otrzymujemy natychcmiast dane zwrócone przez zapytanie.

Zapytania mogą być różnego rodzaju. Te ciekawsze to OCCLUSION pozwalające realizować to słynne sprzętowe Occlusion Query, czyli szybki test zasłaniania jednych obiektów przez inne. EVENT z kolei pozwala poczekać na zakończenie wszystkich wykonywanych w tle operacji graficznych, co rzekomo miałoby wyeliminować skakanie animacji dające o sobie znać w trybie okienkowym - mnie niestety nie pomogło.

Inne zapytania zwracają struktury pełne liczb z różnymi statystykami wewnętrznej pracy karty graficznej. Niestety większość z nich nie jest supported w moim systemie - widocznie albo GeForce 6600 GT to jest już złom a nie karta graficzna, albo trzebaby się przełączyć na DirectX-a w wersji Debug zamiast Retail (chociaż dokumentacja w SDK mówi że większość z nich działa w obydwu).

Więcej na ten temat możecie przeczytać w DirectX SDK, w rozdziale zatytułowanym Queries.

Comments (1) | Tags: rendering directx | Author: Adam Sawicki | Share

19:29
Thu
21
Dec 2006

Mój kurs Direct3D

Już od dłuższego czasu można było znaleźć na mojej stronie informacje o tutorialu dotyczącym biblioteki Direct3D, który napisałem dla magazynu WARP. Jest to dość obszerny, 6-częściowy tekst, zorientowany głównie na naukę pisania dobrego frameworka aplikacji D3D oraz grafiki w zakresie potrzebnym do programowania z jego użyciem gier 2D. Jednak tym którzy chcą kodzić grafikę 3D też może się przydać jako pewien wstęp do tematu, opisujący te początkowe kwestie nieco chyba dokładniej niż najlepszy IMHO dostępny w polskiej Sieci tekst na ten temat (z którego sam się uczyłem) - tutorial Robala.

Wspominam o tym teraz, bo tak się składa, że w dziale Download na stronie magazynu można znaleźć dostępne za darmo do pobrania wszystkie numery, w których ukazały się poszczególne części mojego tekstu. Zachęcam do przejrzenia.

Comments (1) | Tags: directx rendering productions | Author: Adam Sawicki | Share

22:56
Mon
19
Jun 2006

CardCaps.xsl

Wiadomość dla wszystkich, którzy programują w DirectX-ie: pośród różnorodnych plików i programów jakie wchodzą w skład SDK, Microsoft ukrył prawdziwą perełkę. Ukrył ją tak skutecznie, że sam nie wiem odkąd tam była i dopiero niedawno ją odkryłem. Tymczasem jest zdecydowanie godna uwagi. Dlatego chciałem podzielić się tym znaleziskiem.

Mowa o pliku mieszczącym się w DXSDK\Samples\C++\Direct3D\ConfigSystem\CardCaps.xls. To arkusz Excela, który zawiera bardzo ładnie spisane (choć może nienajwygodniejsze w przeglądaniu) "capsy" Direct3D. Może skutecznie konkurować ze stroną Direct3D Caps - Chris Dragan's Corner.

Comments (1) | Tags: directx rendering | Author: Adam Sawicki | Share

Pages: > 1 ... 5 6 7

STAT NO AD [Stat] [Admin] [STAT NO AD] [pub] [Mirror] Copyright © 2004-2017 Adam Sawicki
Copyright © 2004-2017 Adam Sawicki