我有一个数组SCNVector3
,每个顶点一个。
var terrainArray = [SCNVector3]()
我需要在我的片段着色器中为每个顶点提供这些数据。像这样的东西:
struct TerrainVertexInput
{
float3 position [[attribute(SCNVertexSemanticPosition)]];
float4 color [[attribute(SCNVertexSemanticColor)]];
};
struct TerrainVertexOutput
{
float4 position [[position]];
float3 terrain;
float4 color;
};
vertex TerrainVertexOutput terrainVertex(TerrainVertexInput in [[stage_in]],
constant SCNSceneBuffer& scn_frame [[buffer(0)]],
constant MyNodeBuffer& scn_node [[buffer(1)]],
constant float3 terrain [[buffer(2)]])
{
TerrainVertexOutput v;
v.position = scn_node.modelViewProjectionTransform * float4(in.position, 1.0);
v.terrain = terrain;
v.color = in.color;
return v;
}
据我了解,我需要Data
使用数组数据创建对象并将其提供给编程,setValue(_:forKey:)
但我不确定顶点函数是否会为顶点获取正确的元素。
如何正确地做到这一点?