El progtwig Geometry no funciona en iPad Mini 2 iOS 9

No puedo ejecutar mi progtwig con shaders en la geometry del nodo en iOS 9. Aquí está el código de testing:

import SceneKit class Test: NSObject, SCNProgramDelegate { private static let SIZE = 10 private static let RES = 256 var node: SCNNode! override init() { super.init() setup() } func program(program: SCNProgram, handleError error: NSError) { NSLog("program error: %@", error) } private func setup() { node = SCNNode() node.rotation = SCNVector4Make(1, 0, 0, -Float(M_PI) / 2) node.geometry = createGeometry() } private func createGeometry() -> SCNGeometry { let size = CGFloat(GpuHeightFieldWater.SIZE) let geometry = SCNPlane(width: size, height: size) geometry.widthSegmentCount = GpuHeightFieldWater.RES geometry.heightSegmentCount = GpuHeightFieldWater.RES let program = SCNProgram() program.delegate = self program.vertexShader = loadShader("test.vsh") program.fragmentShader = loadShader("test.fsh") program.setSemantic(SCNGeometrySourceSemanticVertex, forSymbol: "a_position", options: nil) program.setSemantic(SCNModelViewProjectionTransform, forSymbol: "u_mvpMatrix", options: nil) geometry.program = program return geometry } private func loadShader(name: String) -> String! { let file = NSString(string: name) let url = NSBundle.mainBundle().URLForResource(file.stringByDeletingPathExtension, withExtension: file.pathExtension) let data = NSData(contentsOfURL: url!) return String(data: data!, encoding: NSUTF8StringEncoding) } } 

test.vsh:

 attribute vec4 a_position; uniform mat4 u_mvpMatrix; void main() { vec4 a = a_position; ax = 0; gl_Position = u_mvpMatrix * a; } 

test.fsh:

 void main() { gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); } 

Nodo agregado al nodo raíz de la escena y veo plano (con un color púrpura extraño), pero mi progtwig nunca se ejecuta y no veo ningún error para mi progtwig. Por lo tanto, parece que mi progtwig fue ignorado.

¿Qué es lo incorrecto y cómo ejecutar el progtwig para geometry correcta?

Actualización n. ° 1

Cuando ejecuté la aplicación en el simulador de iPhone 5s, imprimió un error sobre mi código de sombreador de vértices en la línea 7.

ERROR: 0: 7: Tipos incompatibles (flotante e int) en la asignación (y no hay conversión implícita disponible)

Cuando soluciono ese error, funciona. Es extraño que cuando ejecuto esta aplicación en mi iPad Mini 2 (iOS 9.0) no veo ningún error.

Actualización n. ° 2

Para evitar malentendidos cambié el título de la pregunta porque encontré que en el simulador del iPhone 5s muestra un error del progtwig. Entonces, el problema está relacionado con iPad Mini 2 con iOS 9.

También noté que en mi dispositivo muestra Metal (Mt):

introduzca la descripción de la imagen aquí

y en el simulador de iPhone muestra GL:

introduzca la descripción de la imagen aquí

Quizás está relacionado con el problema de alguna manera.

El problema estaba en el parámetro de Rendering API para la vista SCNView . Cuando crea un proyecto desde una plantilla de Game , tiene una API de representación Default .

Parece que por defecto significa Metal y esa fue una razón por la que se ignoró mi progtwig de geometry. Cuando cambié Rendering API a Open GL ES , empecé a usar mi progtwig con sombreadores.

Cuando ejecuto mi aplicación en un simulador utiliza OpenGL ES como API de representación pnetworkingeterminada. No sé por qué funciona de esta manera porque es un desarrollador confuso. La enumeración tiene solo dos valores:

 enum SCNRenderingAPI : UInt { case Metal case OpenGLES2 } 

¿Ningún valor Default y cómo el desarrollador adivinará qué iOS selecciona como API de representación? No estoy contento con esta parte de la documentation.

Prueba cambiar la línea 7:

  ax = 0; 

a

  ax = 0.0; 

El error es en realidad insinuar en la línea ( 0:7 ) y el problema, ya que está dando un int donde se espera un float .