BsD3D9VertexDeclaration.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include "BsD3D9Prerequisites.h"
  3. #include "BsVertexDeclaration.h"
  4. #include "BsD3D9Resource.h"
  5. namespace BansheeEngine
  6. {
  7. /**
  8. * @brief DirectX 9 implementation of a vertex declaration.
  9. */
  10. class BS_D3D9_EXPORT D3D9VertexDeclarationCore : public VertexDeclarationCore, public D3D9Resource
  11. {
  12. public:
  13. ~D3D9VertexDeclarationCore();
  14. /**
  15. * @copydoc D3D9Resource::notifyOnDeviceCreate
  16. */
  17. virtual void notifyOnDeviceCreate(IDirect3DDevice9* d3d9Device) override;
  18. /**
  19. * @copydoc D3D9Resource::notifyOnDeviceDestroy
  20. */
  21. virtual void notifyOnDeviceDestroy(IDirect3DDevice9* d3d9Device) override;
  22. /**
  23. * @brief Creates a DirectX 9 vertex declaration object.
  24. */
  25. IDirect3DVertexDeclaration9* getD3DVertexDeclaration();
  26. protected:
  27. friend class D3D9HardwareBufferCoreManager;
  28. D3D9VertexDeclarationCore(const List<VertexElement>& elements);
  29. /**
  30. * @brief Releases the internal DirectX 9 vertex declaration object.
  31. */
  32. void releaseDeclaration();
  33. protected:
  34. Map<IDirect3DDevice9*, IDirect3DVertexDeclaration9*> mMapDeviceToDeclaration;
  35. };
  36. }