BsGLEventQuery.cpp 962 B

123456789101112131415161718192021222324252627282930313233343536
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsGLEventQuery.h"
  4. #include "BsRenderStats.h"
  5. namespace BansheeEngine
  6. {
  7. GLEventQuery::GLEventQuery(UINT32 deviceIdx)
  8. :mQueryObj(0)
  9. {
  10. assert(deviceIdx == 0 && "Multiple GPUs not supported natively on OpenGL.");
  11. glGenQueries(1, &mQueryObj);
  12. BS_INC_RENDER_STAT_CAT(ResCreated, RenderStatObject_Query);
  13. }
  14. GLEventQuery::~GLEventQuery()
  15. {
  16. glDeleteQueries(1, &mQueryObj);
  17. BS_INC_RENDER_STAT_CAT(ResDestroyed, RenderStatObject_Query);
  18. }
  19. void GLEventQuery::begin()
  20. {
  21. glQueryCounter(mQueryObj, GL_TIMESTAMP);
  22. setActive(true);
  23. }
  24. bool GLEventQuery::isReady() const
  25. {
  26. GLint done = 0;
  27. glGetQueryObjectiv(mQueryObj, GL_QUERY_RESULT_AVAILABLE, &done);
  28. return done == GL_TRUE;
  29. }
  30. }