2015-10-08 44 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程序的成員來發布軟件,但是再次沒有明確的答案直到我嘗試。