我是金属的新手,我设法绘制了简单的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;
}