Я пытаюсь использовать массив текстуры 2D в металле, следуя тому, что я могу найти в Интернете.Я успешно смог инициализировать свой массив текстур, но теперь я застрял с ошибкой, которая появляется после связывания текстуры с myEncoder.setFragmentTexture(myTextureArray, index: myIndex)
:
Failed assertion `Fragment Function(basicFragment): incorrect type of
texture (MTLTextureType2DArray) bound at texture binding at index 0
(expect MTLTextureType2D) for texture[0].
Не знаю, что я делаю здесь неправильно, и, к сожалению, не делаетGoogle.Я предполагаю, что мне нужно вызвать определенную функцию для привязки текстуры массива вместо той, которая используется для связывания обычных текстур (setFragmentTexture
), или, может быть, я таинственным образом устанавливаю свой тип текстуры как одну 2D-текстуру где-то еще и не позволяю текстурумассив для установки?Поэтому мой вопрос:
Как правильно связать массив текстур в металле?
РЕДАКТИРОВАТЬ:
Мой фрагментный шейдер:
fragment float4 basicFragment(VertexOut vertexOut [[ stage_in ]],
texture2d<float> texture [[ texture(0) ]],
sampler sampler2D [[ sampler(0) ]])
{
return texture.sample(sampler2D, vertexOut.texCoord, vertexOut.slice);
}