XNA / Silverlight 5 - grafika 3d

0

Witam
Zastanawiam sie czy w metodzie draw powiniennem w petli dla kazdego obiektu wywolywac GraphicsDevice.DrawPrimitives (wtedy to obiekt bedzie w pelni sterowal jak sie rysuje) czy jednak rozdzielic to na 3 bufory - lini, tekstur, czy zwyklych obiektow) i dopiero wtedy calo stworzony bufor przekazywac do DrawPrimitives?

Jakas podpowiedz?

0

nie za bardzo wiem o co ci chodzi...
Dla każdego obiektu czyli dla każdego trójkąta ?

0

Dla kazdego obiektu, np pudelka itp, ktore bedzie sie skladalo z wielu teksturowanych trojkatów.

Pytanie tylko czy jak bede wywolywal kilkaset razy DrawPrimitives() to to nie zamuli mi sceny? Bo mniej wiecej tyle obiektow i to statycznych bede mial na scenie.

0

Wywołaj tylko raz :).

Dodawaj do buffora kolejne trójkąty tylko że musisz wiedzieć ile to będzie trójkątów :(.
Chyba że pobierzesz ilość wierzchołków i podzielisz na 3 aczkolwiek tez to nie zasada .

Ale pomysł z kilkoma DrawPrimitives() może wypalić ale nontoper musisz zmieniać buffor weź to pod uwagę.

0

Wlasnie biore to pod uwage i sie zastanawiam, czy to nie zabije wydajnosci.

Problem jest taki, ze tak naprawde to musze miec pare buforow - to jeden dla obiektow z teksturami - VertexPositionTexture, to dla 'zwyklych' obiektow: VertexPositionColor, czy lini, ktore uwypuklaja kontury obiektow.

Niestety nie znalazlem w necie jak powinien poprawnie wygladac obiekt, ktory rysowany jest na scenie - w sensie jaki ogolny interface mu stworzyc. Czy przekazywac mu wlasnie GrapchicsDevices i by sie sam rysowal, czy tylko by zwracal odpowiednie wartosci do buforow - acz tu mi wlasnie ta mnogos powyzszych typow nie pasowala, bo obiekt wkoncu moze miec teksture z jednej strony i zwracac VertexPositionTexture, a z drugiej miec zwykle VertexPositionColor...

0

Możesz spróbować.
ty te obiekty masz w klasie(znaczy każdy obiekt np pudełko ma własną klase itd nie ?)

bo jeżeli tak to nie ma co sie stresować i dać te metode draw()
i niech ona ładuje buffor do urządzenia a potem niech rysuje.

Myślę że jeżeli spowolni scenę to pewnie nie wiele(warunkiem jest że wierzchołki(pozycje,kolor itd będziesz ładował tylko raz).

Niech każdy obiekt wywoła to dla siebie i zobacz jak będzie wyglądało.

0

I to chyba bedzie jedyna z opcji.... gdyz widze, ze problem jest z teksturami - ot jedna tekstura na jednego draw'a a innej opcji nie widze. Tak wiec kazdy obiekt musi sie sam malowac, bez przekazywania do bufora... dziwnie troche.

W jaki sposob robione jest to normalnie w xna? Gdzie mam np klase, ktora cos rysuje i teksturuje to ona sama sie rysuje, czy zwraca tylko liste vertex'ow z referencja na odpowiednia teksture?

1 użytkowników online, w tym zalogowanych: 0, gości: 1