Outils d'utilisateurs

Outils du Site


les_queries_objects

Les queries objects

Les queries objects permettent d’interroger OpenGL pour obtenir des informations à propos des traitements effectués. Par exemple, les queries objects permetttent de récupérer les nombres d’instances/primitives restant après un occlusion culling dans un geometry shader. On utilise également des tableaux de queries objects pour tester chaque rendu et la technique de conditional rendering pour faire les tests de culling directement sur le GPU.

// Pour créer des queries objects 
void glGenQueries(GLsizei n, GLuint *ids); 
 
GLuint query; 
GLuint queries_array[20]; 
glGenQueries(1, &query); 
glGenQueries(20, query_array); 
 
// Détruire des queries objects 
void glDeleteQueries(GLsizei n, const GLuint *ids); 
 
glDeleteQueries(1, &query); 
glDeleteQueries(20, query_array); 
 
// Lancer la query 
glBeginQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, query);  
   // GL_SAMPLES_PASSED : nombre de pixels écris 
   // GL_ANY_SAMPLES_PASSED : true si au moins 1 pixel écris (GL >= 3.3) 
   // GL_PRIMITIVES_GENERATED 
   // GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN  
   // GL_TIME_ELAPSED : temps d'exécution en nanosecondes 
 
// Arrêter la query 
glEndQuery(GL_SAMPLES_PASSED); 
 
// Récupérer le résultat de la query 
glGetQueryObjectuiv(query, GL_QUERY_RESULT_AVAILABLE, &result); 
glGetQueryObject(query, GL_QUERY_RESULT, &count); 
 
// Conditionnal rendering 
glBeginConditionalRender(query, GL_QUERY_WAIT);  
   // GL_QUERY_WAIT, GL_QUERY_NO_WAIT, GL_QUERY_BY_REGION_WAIT 
glEndConditionalRender();
les_queries_objects.txt · Dernière modification: 2014/03/10 11:00 par gbdivers