[DirectX] Problem z wierzcholkami (?)

0

No wiec mam nietypowy problem. :P
Cały kod się kompiluje i niby działa(http://www.nopaste.pl/ap4).
Problem pojawia się, gdy:

  1. Ustawiam myszka 10 trójkątów w różnych miejscach ekranu
  2. Potem usuwam je przy pomocy RMB.
  3. [Tu pojawia się błąd] Ponownie ustawiam 10 trójkątów przy użyciu myszki (LPM).
    Pierwszy trójkąt jest OK, ale gdy ustawie drugi to zmienia się pozycja pierwszego itd. :/
0

każde wywołanie update() to u ciebie poważny wyciek pamięci

tworzysz vertex buffera w InitVB, wypełniasz go wierzchołkami ładnie
ale w tym miejscu kończy się ładnie, teraz przy dodawaniu nowego trójkąta, czyli metoda update, TWORZYSZ NOWEGO VERTEX BUFFERA, NIE ZWALNIAJĄC POPRZEDNIEGO, a nadpisując wskaźnik, wskutek czego bezpowrotnie tracisz możliwość odwołania się do poprzedniego...

wyjście 1:
na początku każdego update, zwalniaj vertex buffera, zanim utworzysz nowego, czyli wystarczy że wywołasz g_Vertex->Release();

wyjście 2:
tworzenie na nowo vertex buffera za każdym razem jest w ogóle bez sensu, tworzysz go raz w InitVB, a w update żeby dorwać się do danych wystarczy wywołać samo Lock, uzyskując wskaźnik na dane w vertex bufferze, bez niepotrzebnego tworzenia na nowo vertex buffera

wyjście 3:
w ogóle vertex buffera powinieneś raz wypełnić i potem już go nie ruszać, a wszelkie przesunięcia, obroty i inne egzotyczne przekształcenia, robić modyfikując macierz świata (czyli pozycję na scenie) dla każdego trójkąta, a takich macierzy w ogóle w ciebie nie zauważyłem

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