glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
-class GPUTimers {
-public:
- void print();
- pair<GLuint, GLuint> begin_timer(const string &name, int level);
-
-private:
- struct Timer {
- string name;
- int level;
- pair<GLuint, GLuint> query;
- };
- vector<Timer> timers;
-};
-
-pair<GLuint, GLuint> GPUTimers::begin_timer(const string &name, int level)
-{
- GLuint queries[2];
- glGenQueries(2, queries);
- glQueryCounter(queries[0], GL_TIMESTAMP);
-
- Timer timer;
- timer.name = name;
- timer.level = level;
- timer.query.first = queries[0];
- timer.query.second = queries[1];
- timers.push_back(timer);
- return timer.query;
-}
-
// Take a copy of the flow, bilinearly interpolated and scaled up.
class ResizeFlow {
public:
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
+class GPUTimers {
+public:
+ void print();
+ pair<GLuint, GLuint> begin_timer(const string &name, int level);
+
+private:
+ struct Timer {
+ string name;
+ int level;
+ pair<GLuint, GLuint> query;
+ };
+ vector<Timer> timers;
+};
+
+pair<GLuint, GLuint> GPUTimers::begin_timer(const string &name, int level)
+{
+ GLuint queries[2];
+ glGenQueries(2, queries);
+ glQueryCounter(queries[0], GL_TIMESTAMP);
+
+ Timer timer;
+ timer.name = name;
+ timer.level = level;
+ timer.query.first = queries[0];
+ timer.query.second = queries[1];
+ timers.push_back(timer);
+ return timer.query;
+}
+
void GPUTimers::print()
{
for (const Timer &timer : timers) {