Я не понимаю, почему MTKView не использует масштаб устройства.
У меня есть устройство сетчатки: масштаб 2x, MTKView.bounds 400x200 и размер CIImage 800x400, но он рисует только левую нижнюю четверть изображения.
Как ни странно, drawableSize возвращает размер границ (400x200).
Вот код, который я использую:
id<MTLTexture> targetTexture = self.currentDrawable.texture;
id<MTLCommandBuffer> commandBuffer = [commandQueue commandBuffer];
[ctx render:coreImage toMTLTexture:targetTexture commandBuffer:commandBuffer bounds:self.bounds colorSpace:colorSpace];
[commandBuffer presentDrawable:self.currentDrawable];
[commandBuffer commit];
Пробовал это, но теперь он показывает левую верхнюю четверть вместо нижней.
Нашел. Мне просто нужно использовать метод MTKView setDrawableSize для масштабируемого размера, который я хочу:
[self setDrawableSize:coreImage.extent.size];
Очень вероятно, что вам нужно настроить аргумент границ на пиксель, а не на точки. На устройстве 2x это удвоит ширину и высоту, которые заполнят всю область, а не половину.