2015-10-08 41 views
1

我需要弄清楚将应用程序移植到Mac OS X(不是iOS)是否可行。我在20年前为Mac编写了一些代码,但现在我所看到的是完全不同的,可能需要完整的重写,这是我无法承受的。谷歌搜索了一段时间后,我发现了各种各样的API,这些API经常出现并被弃用,我感觉完全失去了。评估OS X端口的可行性

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

  2. 我看到一切都是64位。我想保留在32位由于多种原因。 32位应用程序似乎仍得到支持,但随着速度放缓,苹果可能会随时停止支持。这是一个正确的评估?

  3. 软件分发。我找不到任何关于此的信息。看起来你需要成为Apple开发计划的成员才能在用户的计算机上安装你的软件。这是真的?在其他一些地方,我读过任何软件都必须经过Apple认证。它是否正确?

谢谢你的帮忙。

回答

0

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

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

  2. 64位与32位的概念是不相关的。所有Mac电脑都运行64位代码。

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

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

+0

谢谢你的链接。看起来没有任何框架有一个简单的方法来执行BitBlt()而没有太多的开销。金属看起来很有希望,尽管它很新,可能不适用于他们所说的所有设备。 – PineForestRanch

+0

64/32位的概念对我很重要。我的程序是32位的,看起来现在在OS X上支持。它需要几个月才能移植到64位并进行测试。我宁愿把它留在32位,并在其他地方度过。我没有在4GB内存附近使用---签名过程是否需要Apple认证?或者我只是购买证书并签名? – PineForestRanch

+0

您的程序用什么语言编写? – ElmerCat

0

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

当用户更改屏幕分辨率时,屏幕分辨率并不真正如在Linux或Windows中一样,并保持原生状态,但矢量图形呈现的比例发生变化。因此,将屏幕“分辨率”设置为高于原始分辨率是完全可能的 - 您只能看到渲染的效果更小。

当你采取截图,该系统只是呈现的一切离屏位图(可以是任何大小),这样你就可以在任何规模的得到很好的平滑屏幕截图。

因为一切是矢量,使用位图图形的应用程序都处于巨大的劣势。这是非常难去原生像素没有太多的开销,而更糟糕的是,一些使用本机的像素会表现奇怪,因为当用户改变屏幕的分辨率也不会伸缩的应用程序。截图时也会有问题。是否有可能使其工作?我想我不会发现,直到我为Macbook Pro购买2千美元并试用它。

32位应用程序似乎是支持的,我不认为有意向下降的支持。

至于代码分发,我的Thawte Authenticode证书也应该在OS X上工作,所以我可能不需要成为Apple Developer程序的成员来发布软件,但是再次没有明确的答案直到我尝试。