我無法在iOS版9節點的幾何着色器運行我的程序下面是測試代碼:幾何程序在iPad迷你不起作用2的iOS 9
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;
a.x = 0;
gl_Position = u_mvpMatrix * a;
}
test.fsh:
void main()
{
gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
節點添加到場景的根節點,我看到飛機(用異樣的紫色),但我從來沒有程序運行和我做沒有看到我的程序有任何錯誤。所以它看起來像我的程序被忽略。
什麼是錯的,以及如何運行程序的幾何權利?
更新#1
當我運行在iPhone 5S的應用程序模擬器它在7行
ERROR: 0:7: Incompatible types (float and int) in assignment (and no available implicit conversion)
印刷錯誤我的頂點着色器代碼時,我解決這個錯誤,它的工作原理。奇怪的是,當我在iPad Mini 2(iOS 9.0)上運行這個應用程序時,我沒有看到任何錯誤。
更新#2
爲了避免誤解,我改變問題的標題,因爲我發現,在iPhone 5S模擬器它顯示了程序錯誤。所以問題是有關iPad的迷你2與iOS 9
而且我發現我的設備上顯示金屬(百萬噸):
,並在iPhone模擬器它顯示GL:
也許它與某個問題有關。
你得到什麼錯誤? –