CmQueryManager.h 831 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. #include "CmEventQuery.h"
  4. #include "CmModule.h"
  5. namespace CamelotFramework
  6. {
  7. /**
  8. * @brief Handles creation and destruction of GPU queries.
  9. *
  10. * @note Core thread only.
  11. */
  12. class CM_EXPORT QueryManager : public Module<QueryManager>
  13. {
  14. public:
  15. QueryManager();
  16. virtual EventQueryPtr createEventQuery() const = 0;
  17. virtual TimerQueryPtr createTimerQuery() const = 0;
  18. /**
  19. * @note Internal method, called every frame.
  20. */
  21. void update();
  22. protected:
  23. mutable Vector<EventQuery*>::type mEventQueries;
  24. mutable Vector<TimerQuery*>::type mTimerQueries;
  25. protected:
  26. friend class EventQuery;
  27. friend class TimerQuery;
  28. static void deleteEventQuery(EventQuery* query);
  29. static void deleteTimerQuery(TimerQuery* query);
  30. };
  31. }