Obsługa wierzchołków jako Mesh

Dziś na przedmiocie o nazwie “Język Polski” (tak, to idealna pora), projektowałem klasę obsługującą wierzchołki. Stwierdziłem, że do obsługi wierzchołków typu FVF oraz tych dla Vertex Declaration potrzebne będą różne klasy, a ponieważ lubię jak wszystko jest OO (lub dąży do tego), postanowiłem, że napiszę klasę abstrakcyjną Mesh, zawierającą (aktualnie) 4 funkcje:

  • virtual void Draw() = 0;
  • virtual void InvalidateResources() = 0;
  • virtual void RestoreResources() =0;
  • void AddDevicePtr(LPDIRECT3DDEVICE9);

Te funkcje pozostaną niezmienne, przy czym wirtualne będą używane przez klasę Render. Która je będzie w odpowiednich momentach wywoływała. Następnie pomyślałem o klasie dziedziczonej dla typu FVF (aktualnie mi taka potrzebna), ale szybko doszedłem do wniosku, że nie ma ona sensu, ponieważ nie będzie zbyt elastyczna, gdyż za każdym razem potrzeba jest ustawić inne stany, a przecież to samo można zyskać bez niej, dlatego porzuciłem ją. Klasa Mesh jako abstrakcyjna będzie dziedziczona przez różne klasy obiektów, które będę mógł dodać do vector’a w klasie Render, a ta będzie wywoływać odpowiednie funkcje, które będą odpowiednio zdefiniowane dla danego obiektu.

2 Comments

  1. Reg:

    Jeśli Restore, to powinno być chyba Invalidate? Przeciwieństwo do Invalid to jest Valid :)

  2. Netrix:

    Dzięki, faktycznie powinno być Invalidate, co więcej w notatkach ,w zeszycie tak mam :)

Leave a comment