Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Haddd en 22 de Junio de 2004, 08:29:28 PM

Título: Oclusion Query
Publicado por: Haddd en 22 de Junio de 2004, 08:29:28 PM
 Quiero utilizar oclusion query para saber si tengo que dibujar algo o  no. Mi duda viene en la forma de utilizarlo:

Para todos los objetos

1. Renderizo el Bounding Box del objeto sólo afectando a Z.
2. Si el valor de oclusion query es 0, signfica que no se ve y no lo dibujo
3. Si no es 0, dibujo el objeto


El problema es que si se ve, al dibujar un rectángulo, estoy poniendo valores en la Z que no tienen que estar. ¿Conoceis alguna forma de evitar esto? No vale no escribir en el Z, porque entonces oclusion query siempre devuelve 0.
Título: Oclusion Query
Publicado por: DraKKaR en 22 de Junio de 2004, 09:57:02 PM
 Lo primero que se me ocurre es deshabilitar la escritura en el z-buffer cuando pintas el bounding box para el occlusion query. De esta forma al pintarlo, utilizaría la información del z-buffer, pero nunca escribiría en él.

No veo porque el occlusion query tiene que devolver 0 deshabilitando el zbuffer. Al menos en el occlusion query de opengl parece que aunmenta el contador por cada fragmento que hay pasado el depth buffer. Por lo tanto, aunque tengas la escritura en zbuffer deshabilitada (que no zbuffer deshabilitado) debería funcionar.

Puede que el fallo esté en otra parte.
Título: Oclusion Query
Publicado por: tamat en 22 de Junio de 2004, 11:22:13 PM
 glDepthMask(GL_FALSE)

De esta manera testea el z buffer pero no lo modifica cuando el test da que debe pintar el pixel
Título: Oclusion Query
Publicado por: Lord Trancos 2 en 23 de Junio de 2004, 12:00:13 AM
 Aqui tienes una demo de occlussion culling via hardware, aunque es OpenGL+Delphi. Espero que te sirva.

http://www.delphi3d.net/download/occlusionengine.zip

Título: Oclusion Query
Publicado por: Haddd en 23 de Junio de 2004, 09:24:31 AM
 Quizás esté equivocado y no sea necesario grabar en el ZBuffer. Repasaré el código que tengo de colisión de sprites. B)  
Título: Oclusion Query
Publicado por: Haddd en 24 de Junio de 2004, 10:58:48 AM
 Cierto, era un error mio. Sólo es necesario activar el ZBuffer no es necesario activar la escritura. Así está muy muy claro, no hay problema (ole)

Gracias a todos