Pregunta

He estado excavando alrededor de la red recientemente y se dio cuenta de algunos tutoriales de vídeo muestran una plantilla de más edad (pre SDK 3.2) con un contexto OpenGL ES. Ahora bien, hay dos de ellos, los cuales, he espigué son las dos versiones de OpenGL ES disponibles en los dispositivos más nuevos iMobile.

¿Puedo usar el más viejo o tengo que hacer todo dos veces? ¿Cómo le digo que el iPhone para utilizar el contexto mayor, o va a hacerlo de forma automática?

¿Fue útil?

Solución

Por defecto, los intentos plantilla para crear un contexto ES2, y si eso falla, entonces intenta crear un contexto ES1. Si desea trabajar con ES 1.1 solo (que se apoya en todos los dispositivos), puede simplemente eliminar todas las referencias a ES2 del proyecto de plantilla.

Otros consejos

Para ampliar lo que dijo Frogblast, el código de plantilla define dos clases: ES1Renderer y ES2Renderer. La clase EAGLView primero intenta crear una instancia ES2Renderer, pero si eso no funciona, crea una ES1Renderer. El fracaso se produce si el ES2Renderer no es capaz de establecer un contexto OpenGL ES 2.0 usando el siguiente código:

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

if (!context || ![EAGLContext setCurrentContext:context] || ![self loadShaders])
{
    [self release];
    return nil;
}

Si un dispositivo compatible con OpenGL ES 2.0, esto debe tener éxito. En caso contrario, la aplicación vuelve a caer a la ES1Renderer OpenGL ES 1.1 renderizador.

La razón la aplicación tiene dos clases de representación diferente es que OpenGL ES 1.1 y 2.0 tienen diferentes e incompatibles tuberías de renderizado. OpenGL ES 2.0 le permite crear shaders programables para algunos efectos impresionantes, pero puede ser más difícil de usar para tareas sencillas que OpenGL ES 1.1.

Muchas personas retrocesos añadir a su aplicación si utilizan OpenGL ES 2.0, ya que sólo el iPhone 3G S y dispositivos posteriores tienen soporte para esto nunca API. Sin embargo, si está desarrollando un iPad-única aplicación, se puede asumir que tendrá soporte 2.0. También podría restringir su aplicación a la que se ejecuta en dispositivos con esta capacidad mediante la adición de la clave opengles-2 a la UIRequiredDeviceCapabilities en su Info.plist.

Puede utilizar OpenGL ES 1.1 muy bien en los dispositivos más nuevos, por lo que si desea desactivar la ruta de 2,0 representación puede tener la EAGLView en la plantilla de ignorar la clase ES2Renderer y funcionan con el ES1Renderer. También puede tomar el código OpenGL ES de la ES1Renderer y simplemente colocarla dentro del EAGLView.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top