Si está utilizando OpenGL, la sección 9 de Preguntas frecuentes de OpenGL: Transformaciones cubre exactamente cómo hacerlo. Y no, no implica el trazado de rayos, ya que es comprensiblemente una forma muy ineficiente (pero de alta calidad) de lograr esto.
9.170 ¿Cómo renderizo un espejo?
Esto es esencialmente lo que dice la entrada de preguntas frecuentes, y el código de ejemplo demuestra:
- Configure una matriz de vista reflejada. Hacer esto para los espejos alineados por eje se explica en el segundo párrafo.
- Dibuja la escena
- Restaurar la matriz de vista y borrar el búfer de profundidad
- Renderiza la escena de nuevo; La geometría real del espejo en esta escena debe ser translúcida o completamente transparente, para mostrar la escena reflejada previamente representada.
Obviamente hay mucho espacio para la optimización. Al renderizar la escena reflejada, probablemente debería realizar el mayor sacrificio posible, ya que los espejos suelen ser pequeños y el sacrificio fuera de la pantalla predeterminado no se aplicará a la geometría que está en la pantalla pero que no se ve a través del espejo. También puede renderizar solo una versión simplificada de la escena a través del espejo. Para efectos, y para evitar que el usuario note la calidad reducida, puede aplicar un sombreador (p. Ej., Desenfoque, o tal vez brillante / desvaído) cuando realiza su renderizado en espejo.
Me imagino que si usa DirectX, el procedimiento sería muy similar.