| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #pragma once
- #include "BsCorePrerequisites.h"
- namespace BansheeEngine
- {
- /** @addtogroup RenderAPI-Internal
- * @{
- */
- /**
- * Represents a GPU query that gets triggered when GPU starts processing the query.
- *
- * @note
- * Normally GPU will have many commands in its command buffer. When begin() is called it is placed in that command
- * buffer. Once the buffer empties and GPU reaches the EventQuery command, the query callback is triggered.
- * @note
- * Core thread only.
- */
- class BS_CORE_EXPORT EventQuery
- {
- public:
- EventQuery()
- :mActive(false) {}
- virtual ~EventQuery() {}
- /**
- * Starts the query.
- *
- * @note
- * Once the query is started you may poll isReady() method to check when query has finished, or you may hook up
- * an #onTriggered callback and be notified that way.
- */
- virtual void begin() = 0;
- /** Check if GPU has processed the query. */
- virtual bool isReady() const = 0;
- /** Triggered when GPU starts processing the query. */
- Event<void()> onTriggered;
- /** Creates a new query, but does not schedule it on GPU. */
- static EventQueryPtr create();
- protected:
- friend class QueryManager;
- /** Returns true if the has still not been completed by the GPU. */
- bool isActive() const { return mActive; }
- void setActive(bool active) { mActive = active; }
- protected:
- bool mActive;
- };
- /** @} */
- }
|