2011-01-24 13 views
31

Voy a iniciar un nuevo proyecto OpenGL de plataforma cruzada (principal para iPhone & PC). Por lo tanto, hay una pregunta principal: la orientación para OpenGL ES 1.1 u OpenGL ES 2.0. ¿O ambos? Hasta ahora he leído que Open GL ES 1.1 no está realmente en desuso, ¿no es así? Entonces, ¿qué hablaría de OpenGL ES 2.0? Vértice programable- & fragmentshader - ¿Algo más? Escuché acerca de la disminución del rendimiento con la mezcla alfa o eso. ¿Puede ser cierto? Supongo que el código de OpenGL ES 2.0 también debería ejecutarse en la PC: ¿es OpenGL ES 2.0 realmente más consciente del futuro?Elija OpenGL ES 1.1 u OpenGL ES 2.0?

¿Los otros desarrolladores todavía están codificando para OpenGL ES 1.1 o 2.0? ¿Y por qué? Supongo que en caso de que elija OpenGL ES 2.0, habría una gran sobrecarga para la compatibilidad con OpenGL ES 1.1. Pero hay muchos iPhones disponibles sin el soporte de OpenGL ES 2.0. ¿Cómo debo lograr esto? Cualquier experiencia por ahí?

He encontrado solo esta pregunta: OpenGL ES 1.1 or 2.0 on iPhone tipo de relevante, pero no es realmente profundo sobre la implementación ... ¡Así que cualquier consejo es bienvenido! Muchas gracias!

Respuesta

52

El uso de OpenGL ES 1.1 o 2.0 depende de lo que desee hacer en su aplicación y de cuántos dispositivos lo necesite para que sea compatible. Todos los dispositivos iOS son compatibles con OpenGL ES 1.1, donde solo el iPhone 3G S y los dispositivos más nuevos (iPhone 3G S, iPhone 4, iPad y iPod Touch de 3ra y 4ta generación) son compatibles con OpenGL ES 2.0. Sin embargo, todos los dispositivos iOS que Apple está enviando actualmente son compatibles con OpenGL ES 2.0. El porcentaje de dispositivos que no admiten OpenGL ES 2.0 está disminuyendo todos los días. Todos los iPads han sido compatibles con OpenGL ES 2.0 desde su lanzamiento, por lo que está garantizado que contará con soporte si se enfoca en ese factor de forma.

OpenGL ES 2.0 y 1.1 utilizan tuberías de representación diferentes y bastante incompatibles. OpenGL ES 1.1 utiliza una tubería de función fija, donde se alimenta en geometría y datos de textura, configuración de iluminación, estados etc. y deja que OpenGL maneje el resto por ti. OpenGL ES 2.0 se basa en una interconexión programable, en la que se proporcionan vértices y fragmentos sombreadores para manejar los detalles de cómo se procesa su contenido en la pantalla.

Como tiene que escribir su propio código para reemplazar incluso las funciones integradas más básicas, usar OpenGL ES 2.0 para aplicaciones 3-D simples puede requerir más esfuerzo que OpenGL ES 1.1. Además, la mayoría de las aplicaciones de muestra y las grabaciones que descubras estarán orientadas hacia 1.1, por lo que puede ser más difícil comenzar con la API 2.0.

Sin embargo, el hecho de que pueda escribir sus propias rutinas para manejar su geometría y texturas y cómo se muestran a la pantalla significa que OpenGL ES 2.0 le permite hacer cosas que simplemente no serían posibles (o que requerirían un tremenda cantidad de esfuerzo) para hacer en OpenGL ES 1.1. Estos incluyen efectos como el sombreado de dibujos animados y la iluminación de oclusión ambiental, además de permitirle hacer algo interesante como descargar un trabajo masivamente paralelo a la GPU.

si es que quiere ver algunos ejemplos de lo que puede hacer con OpenGL ES 2.0, el vídeo de la clase me enseñó sobre el tema está disponible on iTunes U, y yo creamos dos aplicaciones de ejemplo here y here.

Cuando se trata de compatibilidad multiplataforma, los sombreadores han estado disponibles en OpenGL de escritorio por un tiempo, por lo que todo lo que compile con OpenGL ES 1.1 o 2.0 debería ser bastante portátil para el escritorio.

Si puede hacer la renderización que desea en OpenGL ES 1.1, puede ir de esa manera para proporcionar la máxima compatibilidad de dispositivo. Sin embargo, una gran mayoría de los dispositivos con iOS actualmente en uso admiten OpenGL ES 2.0 (No puedo encontrar las estadísticas sobre esto ahora, pero se basó en las unidades enviadas), y ese número solo crecerá con el tiempo. OpenGL ES 2.0 le permite obtener impresionantes efectos (ver Epic Citadel) que podrían ayudarlo a diferenciar su aplicación de las demás.

+0

Respuesta muy detallada: ¡Gracias! – Constantin

+0

Para complementar esta respuesta clásica y sorprendente, en este enlace http://en.wikipedia.org/wiki/List_of_iOS_devices#Features desplácese hacia abajo a OpenGL ES para ver la situación. – Fattie

+1

@Brad Larson: 1.5 años después, ¿le darías una respuesta similar o traerías [GLKit] (http://developer.apple.com/library/ios/documentation/GLkit/Reference/GLKit_Collection/GLKit_Collection. pdf) como la mejor opción? –

-2

he elegido sólo por 2,0 cubemap

0

Básicamente únicathe iPhone 3G and prior (discontinuada 2010) y el iPod generación de segundo y anteriores (también descontinuado Sept 2010) necesitan el uso de OpenGL ES 1.0.

Todos los iPads, iPad minis y iPhones 3GS en adelante admiten OpenGL ES 2.0. De hecho, cualquier dispositivo iOS vendido (como un dispositivo nuevo) después de Sept 2010 es compatible con OpenGL ES 2.0.

OpenGL ES 3.0 apoyo

No sólo se puede conseguir el apoyo ES 2.0, pero el iPad + iPhone 5S Aire (iPad 5ª generación) ahora OpenGL ES 3.0, como del NoV 2013.

0

Actualmente, ¡Dudo seriamente que haya algún dispositivo que no sea compatible con OpenGLES 2.0! Dedique un poco más de esfuerzo a OpenGLES 2.0 y estará preparado para el futuro, especialmente desde que se lanzó OpenGLES 3.0. De hecho, encontré que OpenGLES 2.0 es más fácil que el 1.1, simplemente porque puedo realizar mis propios cálculos matriciales y especificar exactamente lo que entra en un sombreador.

La otra cosa es que, si vas a utilizar la API de OpenGLES 1.1, debes saber que en realidad está implementado como un sombreador, y que no es algo de hardware, si tiene sentido. OpenGLES 2.0 ejecuta un sombreador de vértices que implementa una interconexión de funciones fijas de OpenGLES 1.1.

Es obvio: ¡al menos OpenGLES 2.0!