Resultados diferentes de glViewport en Android e iOS

Acabo de comenzar en un renderizador para mi plataforma multiplataforma (iOS y Android) usando opengl es. Cuando llegué al material de visualización (que es necesario para elementos de pantalla dividida) y noté que hay una diferencia entre iOS y Android. Aquí hay dos imágenes.

Android En realidad, hay otra falla. Parece envolver.

Ventana gráfica tamaño cuarto de Android

iOS

Visor de tamaño de cuarto de iOS

Mi pregunta. ¿Cuál de los dos es correcto? No tengo transformaciones aplicadas, pero una para volver un poco el quad dibujado. glTranslatef (0,0f, 0,0f, -5.f);

Código de initialization:

glEnable(GL_TEXTURE_2D); glShadeModel(GL_SMOOTH); //Enable Smooth Shading glClearColor(0.f, 0.f, 0.f, 1.0f); //Black Background glClearDepthf(1.0f); //Depth Buffer Setup glEnable(GL_DEPTH_TEST); //Enables Depth Testing glDepthFunc(GL_LEQUAL); //The Type Of Depth Testing To Do //Really Nice Perspective Calculations glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 

Código de vista y proyecto

 glViewport(viewportX, viewportY, viewportW, viewportH);. glEnable(GL_SCISSOR_TEST); glScissor(viewportX, viewportY, viewportW, viewportH); glMatrixMode(GL_PROJECTION); glLoadIdentity(); 

… Y, finalmente, se calcula el frustrum y se establece glFrustrum. También he usado este código:

 float widthH = width * .1f; float heightH = height * .1f; glOrthof(-widthH, widthH, -heightH, heightH, .1f, 100.f); glScalef(widthH, heightH, 1.f); 

Tal vez Android o iOS tiene algo configurado por defecto? No tengo ni idea

Responder a mi propia pregunta para aquellos que tienen el mismo problema.

Utilizo GLKView, que aparentemente llama al glViewport en cada llamada de representación, restableciendo lo que acabo de hacer en el marco anterior. Entonces, si usa GLKView asegúrese de llamar a glViewport cada fotogtwig. … o lance su propio EAGLView para tener un control real que pienso, estoy a punto de hacerlo.

Esto parece que no está considerando el factor de escala del dispositivo iOS. Tenga en count que los dispositivos iOS más recientes tienen pantallas retina con un ppi extremadamente alto. Puedes ver este artefacto en la parte inferior izquierda de la captura de pantalla de iOS. Solo muestra el 25% inferior de su textura porque toda la vista tiene un factor de escala de 2.

En resumen, asegúrese de tener en count el scaleFactor en iOS y use este factor en su llamada glScalef .