2016-06-01 10 views
4

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.

+0

Ä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

+0

Sicher, etwas Code hinzugefügt – Chris

Antwort

0

Versuchen Sie, die contentScaleFactor für die Ansicht auf 1