BsD3D9OcclusionQuery.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsD3D9Prerequisites.h"
  5. #include "BsD3D9Resource.h"
  6. #include "BsOcclusionQuery.h"
  7. namespace BansheeEngine
  8. {
  9. /**
  10. * @copydoc OcclusionQuery
  11. */
  12. class BS_D3D9_EXPORT D3D9OcclusionQuery : public OcclusionQuery, public D3D9Resource
  13. {
  14. public:
  15. D3D9OcclusionQuery(bool binary);
  16. ~D3D9OcclusionQuery();
  17. /**
  18. * @copydoc OcclusionQuery::begin
  19. */
  20. virtual void begin();
  21. /**
  22. * @copydoc OcclusionQuery::end
  23. */
  24. virtual void end();
  25. /**
  26. * @copydoc OcclusionQuery::isReady
  27. */
  28. virtual bool isReady() const;
  29. /**
  30. * @copydoc OcclusionQuery::getNumFragments
  31. */
  32. virtual UINT32 getNumSamples();
  33. /**
  34. * @copydoc D3D9Resource::notifyOnDeviceCreate
  35. */
  36. virtual void notifyOnDeviceCreate(IDirect3DDevice9* d3d9Device);
  37. /**
  38. * @copydoc D3D9Resource::notifyOnDeviceDestroy
  39. */
  40. virtual void notifyOnDeviceDestroy(IDirect3DDevice9* d3d9Device);
  41. /**
  42. * @copydoc D3D9Resource::notifyOnDeviceLost
  43. */
  44. virtual void notifyOnDeviceLost(IDirect3DDevice9* d3d9Device);
  45. /**
  46. * @copydoc D3D9Resource::notifyOnDeviceReset
  47. */
  48. virtual void notifyOnDeviceReset(IDirect3DDevice9* d3d9Device);
  49. private:
  50. friend class QueryManager;
  51. /**
  52. * @brief Creates the internal DX9 query.
  53. */
  54. void createQuery();
  55. /**
  56. * @brief Releases the internal DX9 query.
  57. */
  58. void releaseQuery();
  59. /**
  60. * @brief Resolves query results after it is ready.
  61. */
  62. void finalize();
  63. private:
  64. IDirect3DDevice9* mDevice;
  65. IDirect3DQuery9* mQuery;
  66. bool mQueryIssued;
  67. bool mFinalized;
  68. UINT32 mNumSamples;
  69. };
  70. }