2

我们有一个适用于 PC 的 OpenGL 项目(也适用于 Wine 下的 MacOS 和 Linux),我们想尝试交叉编译到平板电脑。Delphi XE2/XE4 提供 iOS 支持,但还没有 Android,从 iOS 实现历史来看可能需要 1-2 年。现在我们开始研究其他可能性,这将使我们能够保留大部分 Pascal 代码库(80k 行)。所以这是氧气的问题:

是否有任何使用 Oxygene 制作的 OpenGL 应用程序示例可以交叉编译以在 PC/MacOS/iOS/Android 上运行?

如果没有,有什么替代品(Lazarus 除外)?

4

3 回答 3

4

Oxygene 不会尝试与 Delphi 兼容。此外,各种 Oxygene 风格使用的运行时库与 Delphi 使用的完全不同。因此,您不会找到任何可以在 Oxygene 和 Delphi 上编译的具有单一源代码的严肃库。


RemObjects 在不同平台上开发 Oxygene 的方式非常有趣,并且与 Embarcadero 与 Delphi 所采用的方法完全不同。

使用 Delphi 的目标是您可以为所有平台进行单一源代码开发。FireMonkey 框架使这成为可能,该框架为所有平台提供了一个通用接口。显然,您需要更改应用程序的某些元素以解决设备差异。

使用 Oxygene,每个平台都有单独的目标。所以对于 Windows,运行时是 .net。对于 Java,它是 JVM,对于 Apple 平台,您的目标是 Cocoa。

所有这一切意味着您不能期望在 Oxygene 中编写一个 GUI 应用程序并让它在多个平台上工作。

因此,您不仅可以在 Delphi 和 Oxygene 之间单一来源您的应用程序,而且您不能轻易地单一来源多个 Oxygene 目标。


现在,您可以轻松移植到 Oxygene 或 FPC。但是保持单一来源可能意味着更多的努力。这是否值得努力是有争议的。从长远来看,您将需要 Delphi、FPC、Oxygene 或什至完全不同的代码库。但是您不希望您的代码分布在多种语言上。

于 2013-05-29T08:17:24.747 回答
4

AFAIK 没有。

甚至低级的Sugar跨平台 RTL也没有完成。在以跨平台方式(即使用相同的源代码)(如 OpenGL)访问更高级别的库之前,这将是必须完成的第一个步骤。

因此,使用 Oxygene,您拥有一个出色的交叉编译器,但您必须使用每个平台上可用的 RTL。

您可以与两个 object-pascal 编译器进行比较:

于 2013-05-29T13:14:04.570 回答
2

您可以使用映射类型在 Oxygene 中编写或拥有 OpenGL 层,就像在 Sugar开源项目中使用的那样。

听起来很酷。在您的代码中,您只需使用一个在编译期间直接映射到底层平台类方法的类,而无需该层的开销。

恕我直言,当 Oxygene 增长时,我们会发现很多这样的“糖”层,并且编写一次在任何地方编译都会更接近 :)

编辑:
使用 OpenGL 和 .Net
OpenGL Java Tuturial

于 2013-05-29T09:39:36.547 回答