.[ ČeskéHry.cz ].
DirectX, oddělení vertexů, normál a coordinátů

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
klapauciusk



Založen: 08. 08. 2007
Příspěvky: 76

PříspěvekZaslal: 13. srpen 2007, 09:30:54    Předmět: DirectX, oddělení vertexů, normál a coordinátů Odpovědět s citátem

Zdravím,

dělám engine v directx i opengl bez předchozích znalostí directx a narazil jsem na věc, která mě dosti udivila. Opravdu nelze v directx nastavit zvlášť pointer na vrcholy, normály a texturové coordináty? Jinak jak je to s používáním funkce DrawIndexedPrimitiveUP, někde jsem četl že by se moc používat neměla, ale zdroj byl dosti pochybný.

KlapauciusK
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Lando



Založen: 29. 07. 2007
Příspěvky: 33
Bydliště: Cestice

PříspěvekZaslal: 13. srpen 2007, 10:13:06    Předmět: Odpovědět s citátem

myslim ze jde pouzit vice datovych streamu, kde v jednom jsou pozice, v druhem normaly atd. ale nikdy jsem to nezkousel.
DrawPrimitiveUP se da pouzivat uplne normalne. Jeji nevyhoda spociva v tom, ze data o vrcholech se pri vykreslovani berou ze systemove pameti -> prenaseji se na grafickou kartu a to zpomaluje vykreslovani
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 13. srpen 2007, 10:25:44    Předmět: Odpovědět s citátem

Zkus se jeste zamyslet jestli opravdu potrebujes ukazatele na vrcholy, texturove koordinaty .... Jestli to co potrebujes udelat nejde resit nejak uplne jinak, elegantneji a hlavne min narocneji
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
klapauciusk



Založen: 08. 08. 2007
Příspěvky: 76

PříspěvekZaslal: 13. srpen 2007, 10:40:24    Předmět: Odpovědět s citátem

Ukazatel na vrcholy potřebuji kvůli animacím. Navíc engine který dělám bude zároveň pro DirectX a zároveň pro OpenGL, potřebuji aby vykreslování souřadnic bylo jednotné. Pokud máš nápad na elegantnější řešení tak ho rád uvítám. Nemám v tom moc zkušeností.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MePHyst0



Založen: 28. 07. 2007
Příspěvky: 85
Bydliště: SVK/CZK

PříspěvekZaslal: 13. srpen 2007, 10:42:03    Předmět: Odpovědět s citátem

samozrejme ze to ide, je to ale trosku zlozitejsie, zdaleka to neni take trivialne nadherne ako v opengl. v skratke musis si spravit vertex declaration, v tomto si pri kazdom elemente(pozicia,tex coord,farba,whatever) definujes stream z ktoreho sa data beru a offset do tohto streamu. ak si si vsimol tak pri device->setstreasoource mas index streamu, to je ten index na ktory sa odkazujes vo vertex declaration. v priaxi to vyzera tak ze si spravis buffery zvlast pre kazdy element a cez vertex declaration to pozliepas,a potom sa mozu prist veci ako zarovnanie na vertex cache liny,kompresia elementov a pod.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 13. srpen 2007, 11:00:03    Předmět: Odpovědět s citátem

klapauciusk napsal:
Pokud máš nápad na elegantnější řešení tak ho rád uvítám.
Mozna se pletu, ale resenim by snad mohl byt vertex shader, ne?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
klapauciusk



Založen: 08. 08. 2007
Příspěvky: 76

PříspěvekZaslal: 13. srpen 2007, 11:20:10    Předmět: Odpovědět s citátem

Se shaderama jsem zatím nedělal, chceš říc že bych všechny data posílal přímo do vertex shader:) To mě nenapadlo. Díky. To bude asi nejlepší řešení.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
vassa



Založen: 15. 08. 2007
Příspěvky: 7
Bydliště: Kolín

PříspěvekZaslal: 15. srpen 2007, 08:13:36    Předmět: Odpovědět s citátem

No jestli chces aby tvuj Engine při vykreslovani běhal rychle použival bych Vertex Buffry, a z nich to vykresloval. Můžeš je sice vytvářet a plnit během vykreslování ale to kapku spožďuje, ale na druhou stranu jde o to kolik objektů budes muset maximálně animovat. Vertex buffer se plní pomocí ukazatele na pole s vertexama. A jestli myslíž tvoj animaci tak že pouze budeš měnit polohu nebo rotovat, dělal bych to přes shadery, pouze v posilání různejch matic. Ale asi používáš jinej druh animace ale nevim jakej takže zatim nevim ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
vassa



Založen: 15. 08. 2007
Příspěvky: 7
Bydliště: Kolín

PříspěvekZaslal: 15. srpen 2007, 08:22:23    Předmět: Odpovědět s citátem

A co se týče těch odělenejch koordinátů, postupně bych si pro každý tvoje pole koordinátů (poloha, texturová souřadnice ...) vytvořil jeden Vertex buffer, ve vertex declaration přes vertex element bych popsal strukturu posilanejch dat, jednotlivejm částem bych přiřadil streamy. Před vykreslováním bych do jednotlivejch streamu přes SetStreamSource nastavim danej Vertex buffer a vykresloval, ale asi pres shadery nevim jestli to jde jinak. Jestli používáš indexy pro vykreslování tak ještě musis udělat Index Buffer. Nevim kolik Direct maximálně povoluje streamů.

Jestliže bys to udělal tak jak jsem to popsal tak bys vždycky znova plnil Vertex buffer s pozicema bodů a ostatní nemusíš znova plnit protože se nemění, ale to je jasný Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna