Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Reemplazar el depth buffer

Iniciado por misscelan, 18 de Diciembre de 2007, 04:21:02 PM

« anterior - próximo »

misscelan

Buenas,

Sabéis si en opengl se puede almacenar el detph buffer en un determinado momento y restrablecerlo por completo más tarde?.

Sé que se puede alamacenar en un fbo o una textura a secas pero traerlo de vuelta?

El problema es que por ejemplo, cuando quiero pintar la escena desde la posición de la luz dentro de un fbo hago esto:

LimpioElDepthBuffer.
PintoElEscenario.
PintoLosModelos.

No quiero que la luz se mueva, y ningún elemento del escenario tampoco lo hace. Los modelos sí. El caso es que las dos primeras líneas hacen los mismo en cada framerate. Para el escenario puedo dejarlo todo recalculado para enviarlo con un gldrawarrays y no sería mucho problema, pero sólo limpiar el depthbuffer dentro del fbo me hace pasar de 41 fps a 22!!??.

Alguna idea??

Muchas gracias y un saludo.

tamat

Como tu bien dices, usa FBO. Renderizas el escenario usando dos RenderTextures, uno para el color y otro para el Z, así tendras un ColorBuffer y un ZBuffer.

Crea una copia de cada textura, esto es necesario ya que no quieres bindear ese color y ese zmap directamente o tras el primer frame cambiaran y ya no seran el color y el Z inicial.

Para hacer una copia basta con hacer otro RenderTexture pintando un quad a pantalla completa con la textura que quieras replicar.

Y cuando vayas a pintar la escena attachas las copias del color y el Z como ColorBuffer y DepthBuffer.

Eso es todo.
Por un stratos menos tenso

misscelan

eii, parece buena idea!!!

Voy a probarlo, muchas gracias!.

Un saludo.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.