根据我所做的测试,CVMetalTextureCacheCreateTextureFromImage的pixelFormat参数是金属纹理的像素格式,而不是Cove Video缓冲区中数据的实际像素格式。是这样吗?
在那种情况下,何时何地完成转换(如果纹理和缓冲区格式不同)?该转换是否有任何性能损失?
编辑:
我重新检查了文档,对pixelFormat参数的描述如下:“描述图像缓冲区数据的“金属像素格式常数”。所以pixelFormat应该匹配Core Video缓冲区数据的像素格式,不是吗?
但是,对于同一个Core Video缓冲区(包含整数数据),如果我使用MTLPixelFormatR8Uint或MTLPixelFormatR8Unorm,它就可以工作。唯一的区别是在我的着色器中接收的值是整数[0..255]或浮点型[0.0..1.0]。在后一种情况下,由于整数将缓冲区解释为浮点数,因此我希望收到垃圾。不?