Вне экрана рендеринга - PullRequest
       17

Вне экрана рендеринга

0 голосов
/ 30 ноября 2018

В режиме закадрового рендеринга в металле

let textureDescriptors = MTLTextureDescriptor()
textureDescriptors.textureType = MTLTextureType.type2D
let screenRatio = UIScreen.main.scale
textureDescriptors.width = Int((DrawingManager.shared.size?.width)!) * Int(screenRatio)
textureDescriptors.height = Int((DrawingManager.shared.size?.height)!) * Int(screenRatio)
textureDescriptors.pixelFormat = .bgra8Unorm
textureDescriptors.storageMode = .shared
textureDescriptors.usage = [.renderTarget, .shaderRead]
ssTexture = device.makeTexture(descriptor: textureDescriptors)
ssTexture.label = "ssTexture"

Здесь текстура в чистом цвете.Можно ли загрузить текстуру изображения и можно ли визуализировать текстуру изображения в методе рисования

let renderPass = MTLRenderPassDescriptor()
renderPass.colorAttachments[0].loadAction = .clear
renderPass.colorAttachments[0].clearColor = MTLClearColorMake(  0.0,  0.0,  0.0,  0.0)
renderPass.colorAttachments[0].texture = ssTexture
renderPass.colorAttachments[0].storeAction = .store

1 Ответ

0 голосов
/ 01 декабря 2018

Я не уверен, что вы спрашиваете.

  • Существует MTLTextureLoader для создания текстур, инициализированных с содержимым изображения.
  • Вы можете использовать replace(region:...) методы MTLTexture для заполнения всей или части текстуры данными изображения.
  • Вы можете использовать MTLBlitCommandEncoder для копирования данных из одной текстуры в (всю или часть) в другую или из буфера втекстура.
  • Вы можете рисовать текстуру или писать в нее из вычислительного шейдера.

Это универсальный API.Есть много способов сделать то, о чем вы, кажется, спрашиваете.Что вы пробовали?Каким образом эти попытки не принесли желаемого?

...