【发布时间】:2019-05-05 04:51:55
【问题描述】:
我有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:) 进行编程,但我不确定顶点函数是否会为顶点获取正确的元素。
如何正确地做到这一点?
【问题讨论】: