2009-02-27 10 views
5

Estoy buscando una técnica alternativa para representar reflexiones en OpenGL ES en el iPhone. Usualmente hago esto usando el buffer de la plantilla para marcar dónde se puede ver la reflexión (la superficie reflectante) y luego renderizar la imagen invertida solo en esos píxeles. Por lo tanto, cuando el objeto reflejado se mueve fuera de la superficie, su reflejo ya no se ve. Sin embargo, dado que la implementación del iPhone no es compatible con el buffer de esténcil, no puedo determinar cómo ocultar las partes del reflejo que quedan fuera de la superficie.¿Cómo puedo generar reflejos en OpenGL ES en el iPhone sin una memoria tampón?

Para aclarar, el problema no es representar los reflejos por sí mismos, sino esconderlos cuando no serían visibles.

¿Alguna idea?

Respuesta

9

Primero renderice la escena reflejada; copiar a una textura usando glCopyTexImage2D; borrar el framebuffer; dibuja la escena adecuada, aplicando la textura copiada a la superficie reflectante.

2

no tengo una respuesta para las reflexiones, pero aquí es como yo estoy haciendo sombras sin el stencil buffer, tal vez se le dará una idea:

realizo delantera de la cara posterior cara determinación básica/de la malla desde el punto de vista de la fuente de luz. Luego obtengo una lista de todos los bordes que conectan un triángulo delantero con un triángulo trasero. Trato esta lista de bordes como un "lazo" de línea. Proyecto los vértices de este bucle a lo largo del rayo de luz del objeto hasta que se cruza con el suelo. Estos puntos de intersección se usan para calcular un polígono 2D en el mismo plano que el suelo. Luego uso un algoritmo de tesselación para convertir ese poli en triángulos. (Esto funciona bien siempre que las fuentes de luz u objetos no se muevan con demasiada frecuencia)

Una vez que tengo los triángulos, los renderizo con un ligero desplazamiento de modo que el búfer de profundidad permita que pase la sombra. Alternativamente puede usar un decaling algorithm such as the one in the Red Book.

Cuestiones relacionadas