iOS 8.3 – 金属,find零,同时展开一个可选值
在苹果发布iOS 8.3之前,我的代码工作,但是因为更新XCode抱怨find一个零值,即使我的值都没有零(我在debugging时validation了这一点)。
为了理智,我重新写了我的程序来渲染一个简单的三angular形与金属屏幕,但同样的错误抛出。 我有一个3顶点的数组,然后乘以数组的大小,以获得缓冲区的大小,并通过OptionCPUCacheModeDefault
传递一个nil
参数可能是导致我的问题。
// Test array of vertices let ASVertices:[Float] = [ 0.0, 1.0, 0.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0 ] // Other Metal init code... // Set the buffers let dataSize = ASVertices.count * sizeofValue(ASVertices[0]) vertexBuffer = ASDevice.newBufferWithBytes(ASVertices, length: dataSize, options: MTLResourceOptions.OptionCPUCacheModeDefault)
当我debugging,我可以看到dataSize
是36(9 * 4)预期,所以我相当难dataSize
,为什么我fatal error when unwrapping an optional value
时,得到一个fatal error when unwrapping an optional value
。 我知道错误是不言自明的,但上面打印的代码是堆栈跟踪显示引发exception的地方,但我没有看到零值。 什么可能导致这个?
当连接到Xcode的时候,Metal没有真正用于iOS 8.3。 目前,禁用GPU帧捕获,并提交雷达。