Ich habe eine MTKView in Cocoa.MTKView in Kakao zeichnet nicht in Retina
Ich zeige eine Textur mit drawable.texture - aber die Textur zeigt nur über ein Viertel des Bildschirms - Non-Retina.
Muss ich zusätzliche Einstellungen vornehmen, damit dies funktioniert?
class MyView : MTKView
Der folgende Code hat keiner beeinflussen:
let scale = NSScreen.mainScreen()!.backingScaleFactor
var s = frame.size
s.width *= scale
s.height *= scale
metalLayer.contentsScale = scale
metalLayer.framebufferOnly = false
metalLayer.drawableSize = s
Update:
Hier ist die Methode, die ich habe die Textur aus dem Bild zu laden:
func textureFromImage(image: NSImage, inout tex:MTLTexture?) {
let textureLoader = MTKTextureLoader(device: self.device!)
do {
tex = try textureLoader.newTextureWithCGImage(image.CGImage, options: nil)
}
catch {
fatalError("Can't load texture")
}
}
und die Code zu präsentieren:
let commandBuffer = commandQueue.commandBuffer()
let commandEncoder = commandBuffer.computeCommandEncoder()
commandEncoder.setComputePipelineState(pipelineState)
commandEncoder.setTexture(originalTexture, atIndex: 0)
commandEncoder.setTexture(drawable.texture, atIndex: 1)
commandEncoder.dispatchThreadgroups(threadgroupsPerGrid, threadsPerThreadgroup: threadsPerThreadgroup)
commandEncoder.endEncoding()
commandBuffer.presentDrawable(drawable)
commandBuffer.commit();
Alle Größen für das ursprüngliche Eingabebild und die Textur haben dieselbe Größe wie die Ansicht.
Ändern Können Sie uns mehr darüber erzählen, wie Sie die Beschaffenheit des Inhalts in die ziehbar sind immer (Zeichnung, Blitten, usw.)? Gibt es einen Größenunterschied zwischen der Quelltextur und dem Zeichensatz? – warrenm
Sicher, etwas Code hinzugefügt – Chris