Autor Wątek: Direct3D - sposób nauki  (Przeczytany 2127 razy)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Lipiec 28, 2010, 11:02:38
Cytuj
No to jest racja niektóre struktury typu : DXGI_SWAP_CHAIN_DESC  czy funkcje D3D11CreateDeviceAndSwapChain da się zapamiętać za pierwszym razem gdyż robią to co mają :D
Pytanie tylko, po co sobie zaśmiecać tym pamięć, skoro na dobrą sprawę tej funkcji powinieneś użyć tylko raz w życiu - przy pisaniu frameworka. :)

Cytuj
Kwestia wprawy. Ja jak obecnie piszę coś w OpenGLu to nazwy funkcji znam na pamięć i jakie parametry przyjmują, najwyżej zaglądam do dokumentacji, żeby upewnić się co do kolejności.
Nie prościej po prostu wdusić Ctrl+Shift+Spacja będąc kursorem na argumentach funkcji? :)

Cytuj
.up tylko nazw funkcji itp z opengl łatwiej sie nauczyc bo w dx są ostro porąbane ;p lecz intuicyjne
Nie widziałem jeszcze żadnej, która była by porąbana. No, chyba że nazwy funkcji typu "CreatePixelShader", czy "SetTexture" należą do nazw porąbanych. ;)

Offline Mr. Spam

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

Offline bananu7

  • Użytkownik
    • komiks RFMN

# Lipiec 28, 2010, 12:01:07
Do DirectX można ściągnąć .pdb do Visuala. Koniec tematu.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Lipiec 28, 2010, 13:37:22
Do DirectX można ściągnąć .pdb do Visuala. Koniec tematu.
Nie uważasz, że pliki symboli są dość hardcorowym sposobem nauki API? ;)


(a słowa typu "koniec tematu" nie mają tutaj mocy sprawczej)

Offline Minus

  • Użytkownik

# Lipiec 28, 2010, 15:07:26
Nie uważasz, że pliki symboli są dość hardcorowym sposobem nauki API? ;)
DirectX jest dla wszystkich, nawet masochista coś w nim znajdzie dla siebie ;)

Offline bananu7

  • Użytkownik
    • komiks RFMN

# Lipiec 28, 2010, 15:23:53
Do DirectX można ściągnąć .pdb do Visuala. Koniec tematu.
Nie uważasz, że pliki symboli są dość hardcorowym sposobem nauki API? ;)
Chodziło mi głównie o nazwy.
A ten koniec to żart był, nie ma chyba lepszej prowokacji do dalszej dyskusji  ;)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Lipiec 28, 2010, 16:16:02
Chodziło mi głównie o nazwy.
Do tego wystarczą nagłówki. ;)

TheBegin

  • Gość
# Lipiec 28, 2010, 17:04:16
Z tymi porąbanymi nazwami itp to chodziło mi głównie o to, że w przypadku OpenGL robisz glbegin(...) rysujesz trojkat glend(); a w Direct3D się pierdzielisz z lockami unlockami, strumieniami itp itd. lecz i tak mało kto wszystko ręcznie robi w dx tylko od razu walim dobrego shaderka ze światełkami, fajną wodą itp itd i na .x ładujem do scenki modele a potem za pomocą macierzy sobie tymi modelami popierdzielamy po scence. Plus to, że format .x obsługuje animację szkieletową itp to miodzio. A w przypadku OpenGL wygląda to już trochę inaczej ;p lecz nie jest to hard core bo dużo osób woli OpenGLa. Zresztą DirectX jest ogólnie nastawiony na tworzenie gier ;p
« Ostatnia zmiana: Lipiec 28, 2010, 17:06:34 wysłana przez TheBegin »

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Lipiec 28, 2010, 17:13:33
Cytuj
Z tymi porąbanymi nazwami itp to chodziło mi głównie o to, że w przypadku OpenGL robisz glbegin(...) rysujesz trojkat glend(); a w Direct3D się pierdzielisz z lockami unlockami, strumieniami itp itd.
W OpenGL 3.0 glBegin/glEnd wyleciało. glBegin/glEnd jest EKSTREMALNIE niewydajnym sposobem rysowania czegokolwiek i w Direct3D po prostu nie ma tego odpowiednika. Jeżeli zaczniesz w OpenGL rysować geometrię wydajnie, będzie tyle samo "pierdzielenia się" z API, co w Direct3D. :)

Offline ConayR

  • Użytkownik

# Lipiec 28, 2010, 17:17:41
Ciekawi mnie też dlaczego napisanie
interfejs->Lock();
interfejs->Foo();
interfejs->Unlock();
jest pierdzieleniem się, a
barBegin();
DoSomeFoo();
barEnd();
już nie. This does not compute.

Offline FireBoll8

  • Użytkownik

# Lipiec 28, 2010, 17:53:45
Ale tu się porobiło xD Myślałem że na 13 poście ten temat się skończy ;p
W każdym razie powiem wam tak :

- Ja wybrałem sposób nauki "Krzyśka.k" bo jest on dosyć logiczny i przynosi, moim zdaniem najlepsze efekty, ale i tak każdy ma prawo do własnego stylu nauki ;]
Mi akurat pasuje właśnie ten.

Dziękuje za wszelką pomoc i rady właśnie teraz staram się wyświetlić trójkąt na ekranie, już prawię skończyłem więc, satysfakcji mam pełno :D Ale roboty przede mną jeszcze dużo ;]

Offline Avaj

  • Użytkownik

# Lipiec 28, 2010, 17:56:12
Ciekawi mnie też dlaczego napisanie
interfejs->Lock();
interfejs->Foo();
interfejs->Unlock();
jest pierdzieleniem się, a
barBegin();
DoSomeFoo();
barEnd();
już nie. This does not compute.
chodzi o to że w immediate mode możesz na bieżąco wrzucać geometrię a przy buforach musisz alokować tablice. To trochę jak push_back w wektorze, bardzo wygodne, ale niekoniecznie wydajne.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Lipiec 28, 2010, 21:52:15
chodzi o to że w immediate mode możesz na bieżąco wrzucać geometrię a przy buforach musisz alokować tablice. To trochę jak push_back w wektorze, bardzo wygodne, ale niekoniecznie wydajne.
W takim razie czemu po prostu nie użyć push_back? ;)

Offline Kos

  • Użytkownik
    • kos.gd

# Lipiec 28, 2010, 23:19:48
chodzi o to że w immediate mode możesz na bieżąco wrzucać geometrię a przy buforach musisz alokować tablice. To trochę jak push_back w wektorze, bardzo wygodne, ale niekoniecznie wydajne.
W takim razie czemu po prostu nie użyć push_back? ;)
Hej, zaraz... Ja się na tym nie znam, ale czy da się zrobić placement new wektora na pamięci zmapowanej pod VBO? :D

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Lipiec 29, 2010, 11:47:00
Hej, zaraz... Ja się na tym nie znam, ale czy da się zrobić placement new wektora na pamięci zmapowanej pod VBO? :D
Da się, ale nie będzie miało sensu, bo vector już sobie sam allokuje pamięć na tablice.

Za to da się zrobić coś takiego: ;)
volatile float *_ptr = <zmapowany kawałek pamięci>;
#define glVertex(x,y,z)    (*_ptr++=(x),*_ptr++=(y),*_ptr++=(z))

Oczywiście jak dodasz texcoordy to nie będzie działało to identycznie (coordy będą musiały być po vertexie, nie przed i nie można reusować coordów), ale widać o co chodzi. :)

Offline Avaj

  • Użytkownik

# Lipiec 29, 2010, 12:30:13
Btw, co daje ten volatile w tym przypadku? ja jak mapuję bufory to nie daję volatile i działa, ale pewnie są jakieś korzyści skoro ty tego używasz :D