CmD3D9EventQuery.cpp 810 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "CmD3D9EventQuery.h"
  2. #include "CmD3D9RenderSystem.h"
  3. #include "CmD3D9Device.h"
  4. #include "CmException.h"
  5. namespace CamelotFramework
  6. {
  7. D3D9EventQuery::D3D9EventQuery()
  8. :mQuery(nullptr), mInitialized(false)
  9. {
  10. }
  11. D3D9EventQuery::~D3D9EventQuery()
  12. {
  13. if(mInitialized)
  14. {
  15. mQuery->Release();
  16. }
  17. }
  18. void D3D9EventQuery::begin()
  19. {
  20. IDirect3DDevice9* device = D3D9RenderSystem::getActiveD3D9Device();
  21. HRESULT hr = device->CreateQuery(D3DQUERYTYPE_EVENT, &mQuery);
  22. if(hr != S_OK)
  23. {
  24. CM_EXCEPT(RenderingAPIException, "Failed to create an Event query.");
  25. }
  26. mQuery->Issue(D3DISSUE_END);
  27. mInitialized = true;
  28. }
  29. bool D3D9EventQuery::isReady() const
  30. {
  31. BOOL queryData;
  32. return mQuery->GetData(&queryData, sizeof(BOOL), 0) == S_OK;
  33. }
  34. }