restaurar - Cómo lograr el antialiasing de escena completa en el iPhone
restaurar iphone (4)
Me gustaría lograr FSAA en mi aplicación OpenGL ES en el iPhone.
Actualmente hago esto representando la escena en una textura que es dos veces el ancho y alto de la pantalla. Entonces uso la función agradable:
void glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height);
para dibujar la imagen redimensionada a la resolución de la pantalla.
¿Hay una mejor manera de hacer esto?
Actualizar Bounty Agregado Me estaba preguntando, dado que es ahora enero de 2010, si hay una mejor manera de hacerlo en teléfonos 3GS v3.1, etc.
Técnicamente, la GPU de iPhone (PowerVR MBX Lite) debería ser compatible con el anti-aliasing. Sin embargo, parece que los actuales controladores OpenGL ES de Apple (a partir de enero de 2009) no exponen esta capacidad. Entonces, hacer "AA manual" tal como lo hace es prácticamente la única manera.
Para Gran Turismo en el PSP, los desarrolladores lograron un efecto similar al anti-aliasing moviendo la imagen hacia adelante y hacia atrás un píxel por fotograma (la demostración se puede encontrar aquí: http://www.gtplanet.net/why-gran-turismo -psp-se ve-tan-bueno / ) así que si el iPhone no es compatible con lo que estás buscando, esa es una opción.
iPhone OS 3.0 + OpenGL ES 2.0. ¿Alguien está viendo mejor anti-aliasing?
Parece que no puedes hacerlo en hardware ya que no lo procesas en el framebuffer, solo una textura que el iPhone compondrá para ti.
A partir de iOS 4.0, el suavizado de pantalla completa se admite directamente a través de una extensión de Apple a OpenGL. El concepto básico es similar a lo que ya está haciendo: renderice la escena en un framebuffer más grande, luego cópielo en un framebuffer del tamaño de una pantalla y luego copie ese buffer en la pantalla. La diferencia es que, en lugar de crear una textura y representarla en un quad, la operación de copiar / muestrear se realiza mediante una única llamada a función (específicamente, glResolveMultisampleFramebufferAPPLE()
).
Para obtener detalles sobre cómo configurar los búferes y modificar su código de dibujo, puede leer un tutorial en el blog de Gando Games, que está escrito para OpenGL ES 1.1; También hay una nota en los foros de desarrolladores de Apple explicando lo mismo.
Gracias a Bersaelor por señalar esto en otra pregunta de SO .