BsD3D9VertexDeclaration.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 D3D9VertexDeclaration : public VertexDeclaration, public D3D9Resource
  11. {
  12. public:
  13. ~D3D9VertexDeclaration();
  14. /**
  15. * @copydoc D3D9Resource::notifyOnDeviceCreate
  16. */
  17. virtual void notifyOnDeviceCreate(IDirect3DDevice9* d3d9Device);
  18. /**
  19. * @copydoc D3D9Resource::notifyOnDeviceDestroy
  20. */
  21. virtual void notifyOnDeviceDestroy(IDirect3DDevice9* d3d9Device);
  22. /**
  23. * @brief Creates a DirectX 9 vertex declaration object.
  24. */
  25. IDirect3DVertexDeclaration9* getD3DVertexDeclaration();
  26. protected:
  27. friend class D3D9HardwareBufferManager;
  28. D3D9VertexDeclaration(const VertexDeclaration::VertexElementList& elements);
  29. /**
  30. * @brief Releases the internal DirectX 9 vertex declaration object.
  31. */
  32. void releaseDeclaration();
  33. /**
  34. * @copydoc VertexDeclaration::destroy_internal
  35. */
  36. void destroy_internal();
  37. protected:
  38. Map<IDirect3DDevice9*, IDirect3DVertexDeclaration9*> mMapDeviceToDeclaration;
  39. };
  40. }