> On Nov 3, 2017, at 3:33 PM, Kelvin Ma <kelvin1...@gmail.com> wrote:
> 
> 
> 
> On Fri, Nov 3, 2017 at 2:05 PM, Steve Canon via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> If/when 16b floats were added to the standard lib, you would just write:
> 
>     let vertexData: [Float16] = [ 1, 0, 0.5, 1 ]
> 
> I should note that something like vertex coordinates is usually better 
> modeled with a more specific type than [Float], like SCNVector4 or 
> simd.float4 or your own type, which also solves this problem:
> 
>     import SceneKit
>     let vertexData = SCNVector4(1, 0, 0.5, 1)
> 
>     import simd
>     let vertexData = float4(1, 0, 0.5, 1)
> 
> (NB both of these frameworks are Apple-specific).
> 
> - Steve
> 
> Sent from my iPhone 
> 
> If @_fixed_layout was supported this would be sensible, but most graphics 
> frameworks expect a plain buffer of floats and the packing order is implicit. 
> We can’t model vertex vectors with Swift structs because we can’t safely 
> pointer-cast them to an array of floats.

SCNVector4 is a C struct and hence has fixed layout. simd.float4 fixes its 
ordering by having a single field that is an LLVM ext-vector type. Both can be 
safely converted to a buffer of floats.

– Steve
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to