precio plus caracteristicas camara 128gb iphone

caracteristicas - iphone 7 plus camara



¿Por qué las imágenes para texturas en el iPhone necesitan tener dimensiones de potencia de dos? (6)

Estoy tratando de resolver este problema de parpadeo en el iPhone (abrir el juego de gl). Tengo algunas imágenes que no tienen dimensiones de pow-of-2. Voy a reemplazarlos con imágenes con las dimensiones adecuadas ... pero ¿por qué las dimensiones deben ser potencias de dos?


  1. Puede encontrar la información de soporte de OpenGL ES sobre los dispositivos Apple Ipod / Iphone aquí: Soporte de Apple OpenES
  2. OpenGL ES 2.0 se define como igual a OpenGL 2.0
  3. La restricción sobre el tamaño de la textura ha desaparecido solo de la versión 2.0. Por lo tanto, si utiliza OpenGL ES con una versión inferior a la 2.0, es una situación normal.

Intente implementar el mapeo de texturas de envoltura en el software y descubrirá rápidamente por qué el tamaño de potencia de 2 es deseable.

En resumen, encontrará que si puede asumir dimensiones de potencia de 2, muchas multiplicaciones enteras y divisiones se convierten en cambios de bit.

Me arriesgaría a adivinar que la tendencia reciente en relajar esta restricción se debe a que las GPU pasan a las matemáticas de coma flotante.

Editar: la respuesta "debido a mipmapping" es incorrecta. Las texturas Mipmapped, non-power-of-two son una característica común de las GPU modernas.


La razón por la que la mayoría de los sistemas (incluso muchas tarjetas gráficas modernas) demandan texturas de poder de 2 es mipmapping.

¿Qué es mipmapping?

Se crearán versiones más pequeñas de la imagen para hacer que la cosa se vea correctamente en un tamaño muy pequeño. La imagen se divide por 2 una y otra vez para hacer nuevas imágenes.

Entonces, imagine una imagen de 256x128. Esto tendría versiones más pequeñas creadas con dimensiones de 128x64, 64x32, 32x16, 16x8, 8x4, 4x2, 2x1 y 1x1.

Si esta imagen era de 256x192, funcionaría bien hasta que llegara a un tamaño de 4x3. La siguiente imagen más pequeña sería 2x1.5, que obviamente no es un tamaño válido. Algunos hardware de gráficos pueden lidiar con esto, pero muchos tipos no pueden hacerlo.

Algunos hardware también requieren una imagen cuadrada, pero esto ya no es muy común.

¿Por qué necesitas mipmapping?

Imagine que tiene una imagen que está MUY lejos, tan lejos que tiene solo el tamaño de 4 píxeles. Ahora, cuando se dibuja cada píxel, se seleccionará una posición en la imagen como el color para ese píxel. Así que terminas con 4 píxeles que pueden no ser del todo representativos de la imagen como un todo.

Ahora, imagina que la imagen se está moviendo. Cada vez que se dibuja un nuevo marco, se selecciona un nuevo píxel. Debido a que la imagen está TAN LEJOS, es muy probable que vea colores muy diferentes para pequeños cambios en el movimiento. Esto lleva a flasheo muy feo.

La falta de mipmapping causa problemas para cualquier tamaño que sea más pequeño que el tamaño de la textura, pero es más pronunciado cuando la imagen se dibuja en una cantidad muy pequeña de píxeles.

Con mipmaps, el hardware tendrá acceso a la versión 2x2 de la textura, por lo que cada píxel será el color promedio de ese cuadrante de la imagen. Esto elimina el parpadeo de color impar.

http://en.wikipedia.org/wiki/Mipmap

Edite a las personas que dicen que esto ya no es cierto: es cierto que muchas GPU modernas pueden admitir texturas que no sean de potencia de dos, pero también es cierto que muchas no pueden.

De hecho, la semana pasada tenía una textura de 1024x768 en una aplicación XNA en la que estaba trabajando, y causó una falla al cargar el juego en una computadora portátil que tenía solo un año de antigüedad. Sin embargo, funcionó bien en la mayoría de las máquinas. Es una apuesta segura que el gpu del iPhone es considerablemente más simple que un gpu de PC completo.


Me imagino que es una optimización bastante decente en el hardware de gráficos para asumir texturas de poder de 2. Compré una nueva computadora portátil, con el último hardware de gráficos portátiles, y si las texturas no son potencia-2 en maya, la representación está completamente desordenada.


Normalmente, el hardware de gráficos funciona de forma nativa con texturas en dimensiones de potencia de 2. No estoy seguro de los detalles de implementación / construcción que hacen que este sea el caso, pero generalmente es así en todas partes.

EDITAR: con un poco de investigación, resulta que mi conocimiento está un poco desactualizado: muchas tarjetas gráficas modernas ahora pueden manejar tamaños de texturas arbitrarios. Me imagino que con las limitaciones de espacio del procesador de gráficos de un teléfono, probablemente necesitarían omitir cualquier cosa que requiera silicio adicional como ese.


¿Estás usando compresión PVRTC? Eso requiere poderes de 2 e imágenes cuadradas.