我在 cocoa 中有一个 MTKView。
我正在显示带有 drawable.texture 的纹理 - 但该纹理仅显示超过四分之一的屏幕 - 非视网膜。
我是否需要进行任何其他设置才能使其正常工作?
class MyView : MTKView
以下代码没有影响:
let scale = NSScreen.mainScreen()!.backingScaleFactor
var s = frame.size
s.width *= scale
s.height *= scale
metalLayer.contentsScale = scale
metalLayer.framebufferOnly = false
metalLayer.drawableSize = s
更新:
这是我必须从图像加载纹理的方法:
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")
}
}
以及要呈现的代码:
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();
原始输入图像和纹理的所有尺寸都与 View 的尺寸相同。
最佳答案
尝试将 View 的 contentScaleFactor 更改为 1。
关于swift - Cocoa 中的 MTKView 不在 Retina 中绘制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37567110/