1
在GLSL或金屬着色語言,這是可以做到以下在斯威夫特是否有可能「調酒」載體的領域中GLSL或金屬着色語言
float4 pos = float4(1.0f, 2.0f, 3.0f, 4.0f);
float4 swiz = pos.wzyx; // swiz = (4.0f, 3.0f, 2.0f, 1.0f)
float4 dup = pos.xxyy; // dup = (1.0f, 1.0f, 2.0f, 2.0f)
也
float4 pos = float4(1.0f, 2.0f, 3.0f, 4.0f);
// pos = (5.0, 2.0, 3.0, 6.0)
pos.xw = float2(5.0f, 6.0f);
// pos = (8.0, 2.0, 3.0, 7.0)
pos.wx = float2(7.0f, 8.0f);
// pos = (3.0, 5.0, 9.0, 7.0)
pos.xyz = float3(3.0f, 5.0f, 9.0f);
這被稱爲組件攪拌和排列。我想通過操作符重載在Swift中實現這一點。有沒有人試過這個?我有點不清楚如何解決這個問題。
所以,你想方便能夠引用陣列中的一個位置與一個字母,並能夠重新排列數組的方式?關於你想複製的「swizzling」究竟是什麼? – ColGraff
Swizzling對於處理着色器中的矢量組件非常方便。它在Swift級別上可以同樣方便。例如,在從UIKit View空間 - 2D轉換爲金屬3D空間時,在拾取/拖動時。 – dugla