#include <string.h>
#include "os_string.hpp"
+#include "os_time.hpp"
#include "image.hpp"
#include "retrace.hpp"
#include "glproc.hpp"
bool insideGlBeginEnd = false;
trace::Parser parser;
glws::Profile defaultProfile = glws::PROFILE_COMPAT;
-glws::Visual *visual = NULL;
+glws::Visual *visual[glws::PROFILE_MAX];
glws::Drawable *drawable = NULL;
glws::Context *context = NULL;
return;
}
+ // Ignore zero area viewports
+ if (width == 0 || height == 0) {
+ return;
+ }
+
// Check for bound framebuffer last, as this may have a performance impact.
GLint draw_framebuffer = 0;
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &draw_framebuffer);
glFlush();
long long endTime = os::getTime();
- float timeInterval = (endTime - startTime) * 1.0E-6;
+ float timeInterval = (endTime - startTime) * (1.0 / os::timeFrequency);
if (retrace::verbosity >= -1) {
std::cout <<
" -sb use a single buffer visual\n"
" -s PREFIX take snapshots; `-` for PNM stdout output\n"
" -S FREQUENCY snapshot frequency: frame (default), framebuffer, or draw\n"
- " -v verbose output\n"
+ " -v increase output verbosity\n"
" -D CALLNO dump state at specific call no\n"
" -w wait on final frame\n";
}
}
glws::init();
- visual = glws::createVisual(double_buffer);
+ visual[glws::PROFILE_COMPAT] = glws::createVisual(double_buffer, glws::PROFILE_COMPAT);
+ visual[glws::PROFILE_CORE] = glws::createVisual(double_buffer, glws::PROFILE_CORE);
+ visual[glws::PROFILE_ES1] = glws::createVisual(double_buffer, glws::PROFILE_ES1);
+ visual[glws::PROFILE_ES2] = glws::createVisual(double_buffer, glws::PROFILE_ES2);
for ( ; i < argc; ++i) {
if (!parser.open(argv[i])) {
parser.close();
}
-
- delete visual;
+
+ for (int n = 0; n < glws::PROFILE_MAX; n++) {
+ delete visual[n];
+ }
+
glws::cleanup();
return 0;