Я добавляю стандартную дымовую SCNParticleSystem к узлу сцены в ARSCNView.Это работает как ожидалось.
Я использую ARSCNView.snapshot()
для захвата изображения и обработки перед рисованием в MTKView
draw()
методе.
Затем я вызываю removeAllParticleSystems()
в главном потоке на узлес системой частиц и удалить узел из сцены с помощью removeFromParent()
.
Затем я добавляю другие узлы на сцену и в конце концов приложение вылетает с ошибкой validateFunctionArguments:3469: failed assertion 'Vertex Function(uberparticle_vert): missing buffer binding at index 19 for vertexBuffer.1[0].'
All Exceptions
точка останова часто останавливается на вызове ARSCNView.snapshot()
.
Почему происходит сбой?
Что означает ошибка?
Как мне добавлять и удалять системы частиц из сцен в ARSCNView?
ОБНОВЛЕНИЕ: Я подключил подкласс MTKView, который я использую из здесь для работающего ARKit demo с системой частиц и тем же крахом функции вершины.
Означает ли это, что проблема связана с функцией сквозного вершинного шейдера?
Почему системы частиц обрабатываются по-разному?
Ниже приведены функции шейдера.Благодарю.
#include <metal_stdlib>
using namespace metal;
// Vertex input/output structure for passing results from vertex shader to fragment shader
struct VertexIO
{
float4 position [[position]];
float2 textureCoord [[user(texturecoord)]];
};
// Vertex shader for a textured quad
vertex VertexIO vertexPassThrough(device packed_float4 *pPosition [[ buffer(0) ]],
device packed_float2 *pTexCoords [[ buffer(1) ]],
uint vid [[ vertex_id ]])
{
VertexIO outVertex;
outVertex.position = pPosition[vid];
outVertex.textureCoord = pTexCoords[vid];
return outVertex;
}
// Fragment shader for a textured quad
fragment half4 fragmentPassThrough(VertexIO inputFragment [[ stage_in ]],
texture2d<half> inputTexture [[ texture(0) ]],
sampler samplr [[ sampler(0) ]])
{
return inputTexture.sample(samplr, inputFragment.textureCoord);
}