para optimizar limpiar limpiador app ios memory uiimage out-of-memory scenekit

ios - optimizar - Optimización del rendimiento de SceneKit con texturas de alta resolución



optimizar iphone 6 (1)

Soy un desarrollador bastante experimentado de iOS, pero un novato total de SceneKit, tratando de simular algunos planetas en una aplicación básica.

Para ese fin, estoy usando mapas de alta resolución normales y difusos de Marte, Venus, etc., aplicados a esferas básicas. Y ellos trabajan! Se ven increíbles, exactamente lo que estaba buscando.

El problema es que me está matando por la compensación de calidad / memoria.

Puedo reducir las dimensiones de las texturas para reducir la huella de memoria, pero por debajo de una cierta resolución, los resultados (especialmente el mapa normal) comienzan a verse realmente blandos y terribles. La aplicación necesita poder acercarse al menos a donde el planeta tiene ancho de pantalla, pero para mantener la nitidez en las montañas y valles necesito usar un mapa PNG normal (arriba) a aproximadamente 6000 x 3000. Puedo escalar el mapa difuso hasta aproximadamente 1000 x 500, pero aún así, estoy recibiendo bloqueos periódicos de memoria de una sola esfera girando suavemente, con una sola luz, sin fondo, sin física y sin otra geometría.

Ahora, que es un mapa normal de súper alta resolución. Lo entiendo. Pero, al mismo tiempo, es solo una esfera, sin hacer nada. Eso ni siquiera está cerca de la complejidad que he visto que otras aplicaciones se ejecutan sin problemas, incluso con algunas texturas bastante detalladas propias. Parece que debe haber alguna manera de obtener texturas superficiales de alto detalle para un solo objeto, sin colapsar la aplicación.

Entonces, al ser un novato total de SceneKit, me pregunto: ¿hay algún truco para obtener una buena calidad de textura de SceneKit sin usar TODA la memoria del mundo? ¿Tal vez una forma de manejar las texturas de la imagen, volver a codificar los archivos, cambiar la configuración de escena / nodo, etc.? ¿Alguna manera de obtener una calidad nítida con imágenes más pequeñas o un menor uso de memoria con las mismas imágenes?

Me encantaría citar algún código, pero en este momento no hay mucho que mostrar. Aplico las texturas al nodo SceneKit de la manera estándar, y funciona. Me muero por la falta de memoria o la falta de calidad de imagen.

¿Puede alguien ayudarme?


Creo que la idea es segmentar la textura de la esfera sabiamente, por lo que solo muestra 60 grados de textura en cualquier momento, similar a la forma en que se muestran las imágenes a altas resoluciones al hacer zoom. No estoy seguro de cómo hacerlo, pero esa es mi suposición.