CmD3D9EventQuery.cpp 784 B

123456789101112131415161718192021222324252627282930313233343536373839
  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)
  9. {
  10. IDirect3DDevice9* device = D3D9RenderSystem::getActiveD3D9Device();
  11. HRESULT hr = device->CreateQuery(D3DQUERYTYPE_EVENT, &mQuery);
  12. if(hr != S_OK)
  13. {
  14. CM_EXCEPT(RenderingAPIException, "Failed to create an Event query.");
  15. }
  16. }
  17. D3D9EventQuery::~D3D9EventQuery()
  18. {
  19. if(mQuery != nullptr)
  20. {
  21. mQuery->Release();
  22. }
  23. }
  24. void D3D9EventQuery::begin()
  25. {
  26. mQuery->Issue(D3DISSUE_END);
  27. setActive(true);
  28. }
  29. bool D3D9EventQuery::isReady() const
  30. {
  31. BOOL queryData;
  32. return mQuery->GetData(&queryData, sizeof(BOOL), 0) == S_OK;
  33. }
  34. }