Я прикрепил SCNProgram к геометрии SceneKit и пытаюсь передать униформу фрагментному шейдеру. В моем простом фрагменте кода я просто передаю выходной цвет фрагментному шейдеру как форму, который возвращает его как выходное значение.
Я уже тестировал шейдеры, и они работают в том смысле, что я могу успешно повернуть объект в вершинном шейдере или нарисовать объект другим цветом во фрагментном шейдере и т. Д., Но проблема в том, когда я передаю униформа. Это мой фрагментный шейдер:
struct Uniforms
{
float4 color;
};
fragment float4 myFragment(MyVertexOutput in [[ stage_in ]],
constant Uniforms& uniforms [[buffer(2)]])
{
return uniforms.color;
}
И вот как я пытаюсь передать униформу в моем коде SceneKit + Swift:
SCNTransaction.begin()
cube.geometry?.setValue(NSValue(SCNVector4:SCNVector4(0.0,1.0,0.0,1.0)), forKey: "uniforms.color")
SCNTransaction.commit()
Но мой объект (это куб) даже не нарисован (он черный), и я получаю такую ошибку:
2016-04-01 01: 00: 34.485 Затененный куб [30266: 12687154] SceneKit: ошибка, отсутствует буфер [-1/0]
ИЗМЕНИТЬ. Я попытался последовать советам @lock, но все равно получаю ту же ошибку. Это полный репозиторий проекта: https://github.com/ramy89/Shaded-Cube.git < / а>