BsD3D9OcclusionQuery.h 1.5 KB

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