From b910b64f015d29c3532259287b6d6199dec5260d Mon Sep 17 00:00:00 2001 From: taw27 Date: Thu, 7 Aug 2008 23:13:10 +0000 Subject: Check for EXT_timer_query before using git-svn-id: svn://cook.msm.cam.ac.uk:745/thrust3d/thrust3d@237 84d2e878-0bd5-11dd-ad15-13eda11d74c5 --- src/render.c | 15 ++++++++++++--- src/types.h | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/render.c b/src/render.c index 5f3445c..9a5fbdf 100644 --- a/src/render.c +++ b/src/render.c @@ -142,6 +142,15 @@ RenderContext *render_setup(int width, int height, int disable_vbos, int disable fprintf(stderr, " -> Per-fragment lighting and GPU dynamic textures disabled.\n"); } + if ( GLEW_EXT_timer_query ) { + r->timer_queries = 1; + } else { + r->timer_queries = 0; + fprintf(stderr, "Timer queries are not supported by your graphics card" + "(or maybe just by its driver).\n"); + fprintf(stderr, " -> A default estimated time will be used. Framerate may be a little low.\n"); + } + r->width = width; r->height = height; r->aspect = (GLfloat)width/(GLfloat)height; @@ -558,7 +567,7 @@ void render_draw(Game *game, Uint32 t) { r = game->render; - if ( game->query_this_frame ) { + if ( r->timer_queries && game->query_this_frame ) { glGenQueries(1, &game->timer_query); glBeginQuery(GL_TIME_ELAPSED_EXT, game->timer_query); } @@ -679,11 +688,11 @@ void render_draw(Game *game, Uint32 t) { render_draw_2d(r, game); - if ( game->query_this_frame) glEndQuery(GL_TIME_ELAPSED_EXT); + if ( r->timer_queries && game->query_this_frame) glEndQuery(GL_TIME_ELAPSED_EXT); SDL_GL_SwapBuffers(); - if ( !game->query_this_frame ) { + if ( r->timer_queries && !game->query_this_frame ) { GLint available; glGetQueryObjectiv(game->timer_query, GL_QUERY_RESULT_AVAILABLE, &available); if ( available ) { diff --git a/src/types.h b/src/types.h index d45f474..7f1119f 100644 --- a/src/types.h +++ b/src/types.h @@ -134,6 +134,7 @@ typedef struct { int shaders; int vbos; int fbos; + int timer_queries; /* Lighting shaders */ GLuint lighting_vert; -- cgit v1.2.3