From feb5d9955dfe6d8c6dd81aae2278b1c6a4b789fc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 25 Nov 2010 17:14:18 +0000 Subject: [PATCH] Allow to choose double buffer visual. --- glretrace.py | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/glretrace.py b/glretrace.py index 606c052..0724cff 100644 --- a/glretrace.py +++ b/glretrace.py @@ -46,6 +46,8 @@ if __name__ == '__main__': print '#include ' print '#include ' print + print 'static bool double_buffer = false;' + print api = glapi.glapi retracer = GlRetracer() retracer.retrace_api(glapi.glapi) @@ -59,13 +61,20 @@ static void display(void) { Trace::Call *call; while ((call = parser.parse_call())) { - if (call->name == "glFlush" || - call->name == "glXSwapBuffers" || - call->name == "wglSwapBuffers") { + if (call->name == "glFlush") { glFlush(); return; } + if (call->name == "glXSwapBuffers" || + call->name == "wglSwapBuffers") { + if (double_buffer) + glutSwapBuffers(); + else + glFlush(); + return; + } + retrace_call(*call); if (call->name == "glBegin") { @@ -124,18 +133,9 @@ static void idle(void) { int main(int argc, char **argv) { - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(800, 600); - glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE); - glutCreateWindow(argv[0]); - glewInit(); - glutDisplayFunc(&display); - glutIdleFunc(&idle); - - int i; - for (i = 1; i < argc; ++i) { + int i; + for (i = 1; i < argc; ++i) { const char *arg = argv[i]; if (arg[0] != '-') { @@ -145,7 +145,9 @@ int main(int argc, char **argv) if (!strcmp(arg, "--")) { break; } - else if (!strcmp(arg, "-v")) { + else if (!strcmp(arg, "-db")) { + double_buffer = true; + } else if (!strcmp(arg, "-v")) { ++verbosity; } else { std::cerr << "error: unknown option " << arg << "\\n"; @@ -153,6 +155,20 @@ int main(int argc, char **argv) } } + glutInit(&argc, argv); + glutInitWindowPosition(0, 0); + glutInitWindowSize(800, 600); + glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | (double_buffer ? GLUT_DOUBLE : GLUT_SINGLE)); + glutCreateWindow(argv[0]); + glewInit(); + + glutDisplayFunc(&display); + glutIdleFunc(&idle); + + for (GLuint h = 0; h < 1024; ++h) { + __list_map[h] = h; + } + for ( ; i < argc; ++i) { if (parser.open(argv[i])) { glutMainLoop(); -- 2.45.2