Я новичок в металле, и мне удалось нарисовать простые 32-битные текстуры RGBA, но я не могу найти пример того, как рисовать 16-битные (5_5_5_1 bgra, 5_6_5 bgr или 4_4_4_4 bgra).
Я думаю, что создание текстуры в порядке:
textureDescriptor.pixelFormat = MTLPixelFormatB5G6R5Unorm;
bytesPerRow = 2*textureDescriptor.width;
Я думаю, проблема в функции фрагмента:
fragment float4 fragmentShaderTexture(VertexTexTriangleOut in [[stage_in]],
texture2d<ushort> colorTexture [[ texture(0) ]])
{
constexpr sampler textureSampler;
const ushort4 colorSample = colorTexture.sample(textureSampler, in.texCoords);
float4 colors = float4(colorSample);
return colors;
}