iphone - Elija OpenGL ES 1.1 u OpenGL ES 2.0?
opengl-es cross-platform (4)
Voy a comenzar un nuevo proyecto OpenGL de plataforma cruzada (principal para iPhone y 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? Programmable vertex- & 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?
¿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í?
Solo encontré esta pregunta: OpenGL ES 1.1 o 2.0 en el iPhone es algo relevante, pero no es realmente profundo sobre la implementación ... ¡Así que cualquier consejo es bienvenido! Muchas gracias!
¡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!
Básicamente, solo en.wikipedia.org/wiki/List_of_iOS_devices#Features (descontinuado 2010) y el iPod de segunda generación y anteriores (también descontinuado en septiembre de 2010) necesitan que use 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 completamente nuevo) después de septiembre de 2010 admite OpenGL ES 2.0.
Compatibilidad con OpenGL ES 3.0
No solo obtiene el soporte de ES 2.0, sino también el iPhone 5S + iPad Air (5ª generación de iPad) ahora OpenGL ES 3.0, a partir de noviembre de 2013.
Elegí 2.0 solo para Cubemap
El uso de OpenGL ES 1.1 o 2.0 depende de lo que quiera 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.
Debido a que tiene que escribir su propio código para reemplazar incluso las funciones integradas más básicas, el uso de 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 en la pantalla significa que OpenGL ES 2.0 le permite hacer cosas que simplemente no serían posibles (o que requerirían una gran cantidad de esfuerzo). ) que 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 le interesa ver algunos ejemplos de lo que puede hacer con OpenGL ES 2.0, el video de la clase que enseñé sobre el tema está disponible en iTunes U , y he creado dos ejemplos de aplicaciones here y here .
Cuando se trata de compatibilidad multiplataforma, los shaders han estado disponibles en OpenGL de escritorio por un tiempo, por lo que todo lo que construyas utilizando 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 del dispositivo. Sin embargo, una gran mayoría de los dispositivos iOS actualmente en uso son compatibles con OpenGL ES 2.0 (no puedo encontrar las estadísticas en este momento, pero se basa en las unidades enviadas), y ese número solo aumentará 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.