aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortaw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5>2008-08-07 23:13:10 +0000
committertaw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5>2008-08-07 23:13:10 +0000
commitb910b64f015d29c3532259287b6d6199dec5260d (patch)
tree8cedc934bf952010b950ce7ec56becae73f4db6c
parenta2c16ee9c6251a91b8f8ec441472780af25b495a (diff)
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
-rw-r--r--src/render.c15
-rw-r--r--src/types.h1
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;