评估OS X端口的可行性

时间:2015-10-08 14:50:45

标签: macos bitmap

我需要弄清楚将应用程序移植到Mac OS X(不是iOS)是否可行。我在大约20年前为Mac编写了一些代码,但我现在看到的完全不同,可能需要完全重写,这是我买不起的。谷歌搜索了一段时间后,我发现了各种各样的API,它们经常出现并且经常被弃用,我觉得它完全迷失了。

  1. 应用程序通过将小块位图复制到窗口来绘制。这是通过Windows上的BitBlt()或X11上的XCopyArea()完成的。在这两种情况下,源都存储在视频内存中,因此复制速度非常快,每秒500K拷贝在一张不错的卡上,可能更多。在Mac上,曾经有过CopyBits()函数,它也做了同样的事情,但它现在已经被删除了。我发现CGContextDrawImage()看起来也被弃用,但是从用户内存中复制,并且只能复制整个图像(而不是片段)。有没有办法以合适的速度完成位图复制?

  2. 我看到一切都是64位。出于多种原因,我希望将其保留为32位。 32位应用程序似乎仍然受到支持,但随着速度的快速下降,Apple可能随时停止支持。这是正确的评估吗?

  3. 软件分发。我找不到任何关于此的信息。您似乎需要成为Apple Development计划的成员才能在用户的计算机上安装您的软件。这是真的?在其他一些地方,我读过任何软件必须经过Apple批准。这是对的吗?

  4. 感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在过去二十年中发生了很大变化,将您的应用程序直接移植到现代OS X可能确实非常困难。通过采用一般设计概念和应用程序目标,创建一个全新的实现可能会更好使用最新的软件技术。

  1. 您的绘图系统可能更容易使用现代API,但第一步是决定使用哪个框架。花一些时间阅读文档并观看开发者网站上提供的许多视频。一个合理的起点是Getting Started with Graphics & Animation,但您可能还希望探索Metal Programming GuideSpriteKit

  2. 64位与32位的概念无关紧要。所有Mac计算机都运行64位代码。

  3. 如果您没有购买开发者计划会员资格,您仍然可以使用Xcode创建未签名的应用程序。它可以安装在其他用户的计算机上,但他们需要专门更改“系统偏好设置”中的设置 - >安全性"允许从以下位置下载应用程序:Anywhere"。

  4. WWDC videos对于理解过去几年在这些框架中取得进步的概念和益处非常有用。

答案 1 :(得分:0)

经过一些投资后,似乎OS X图形与其他图形完全不同。屏幕被视为矢量图形的目标,而不是位图。

当用户更改屏幕分辨率时,屏幕分辨率并不真实(就像在Linux或Windows中一样)并保持原生,但渲染矢量图形的比例会发生变化。因此,完全可以设置屏幕"分辨率"高于原生的 - 你只看到渲染得更小的东西。

当您截取屏幕截图时,系统只需将所有内容呈现为屏幕外位图(可以是任意大小),这样您就可以获得任意大小的流畅屏幕截图。

由于所有内容都是向量的,因此使用位图图形的应用程序处于极大的劣势。在没有太多开销的情况下很难获得原生像素,更糟糕的是,使用原生像素的应用程序会表现得很奇怪,因为当用户更改屏幕分辨率时它不会缩放。拍摄截图时也会出现问题。是否可以使它工作?我想我不会发现,直到我为Macbook Pro支付2千美元并尝试它。

32位应用程序似乎得到了支持,而且我认为没有意图放弃支持。

关于代码分发,我的Thawte Authenticode证书也可以在OS X上运行,所以我可能不需要成为Apple Developer程序的成员来分发软件,但是我还是那样做了在我尝试之前,没有明确的答案。