2011-04-19 9 views
5
for (int i = 0; i < Number_Of_queries; i++) 
{ 
    glBeginQueryARB(GL_SAMPLES_PASSED_ARB, queries[i]); 

    Box[i] 

    glEndQueryARB(GL_SAMPLES_PASSED_ARB); 
} 

Tengo curiosidad sobre el método sugerido en GPU GEMS 1 para el sacrificio de oclusión donde se realiza un cierto número de consultas. Usando el método descrito, no puedes probar casillas individuales unas contra otras, ¿se supone que debes hacer lo siguiente?OPENGL ARB_occlusion_query Oclusion Culling

prueba de la caja A -> Render caja A

prueba de la caja B -> Render Caja B

caja de la prueba C -> Render Box C

y así sucesivamente ...

+0

Como eres nuevo aquí, asegúrate de informarte sobre las funciones de aceptar y votar. –

Respuesta

1

No estoy seguro si te entiendo correctamente, pero ¿no es éste uno de los inconvenientes de la implementación ingenua de renderizar primero todos los cuadros (y no escribir en el búfer de profundidad) y luego usar los resultados de la consulta para verificar cada objeto? Pero su sugerencia de utilizar el resultado de la consulta de una sola casilla de inmediato es un enfoque aún más ingenuo, ya que esto detiene la tubería. Si lee este capítulo (suponiendo que consulte el capítulo 29), presenta una técnica simple para superar las desventajas de ambos enfoques ingenuos (es decir, simplemente renderice todo normalmente y utilice los resultados de la consulta del cuadro anterior).

0

pienso (hubiera sido bueno para unir el artículo gemas GPU ...) está confundido acerca de las consultas tanto asíncronos como se describe en las extensiones de la siguiente manera:

http://developer.download.nvidia.com/opengl/specs/GL_NV_conditional_render.txt

si no recuerdo mal hay Hubo otras extensiones para verificar la disponibilidad de un resultado sin bloquear también. Como Christian Rau señala que hacer solo "consultar, esperar el resultado, hacer cosas en función del resultado" podría estancarse y podría no ser ninguna ganancia por eso, dependiendo de cuánto trabajo hay en "hacer cosas". De hecho, hacer la consulta, esperar a que viaje de ida y vuelta para guardar una sola llamada de sorteo probablemente no ayude en absoluto.