在my last question的优化之后,我发现更容易相信在游戏中进一步优化代码以获得更好的性能是不可能的。
所以现在我有了一个新的想法,我想知道它是否可能实现,甚至是否值得实现。由于性能的明显瓶颈来自于基于.net的物理处理,我在想,是否有可能在基于objective-c或C++的物理引擎(如box2D)中与单声道进行交互?
例如,在Mono代码中,我会执行类似CreateBox()的操作,但在幕后,该框是在Obj-C/C++中创建的。或者,当我进行物理更新时,我简单地调用Mono中的函数,而主要工作发生在Obj-C/C++中
如果这是可能的,谁能给我指出正确的方向开始呢?
发布于 2011-07-07 22:03:53
是。
有两种方法可以做到这一点,通过一个C API和一个Objective-C API。
使用code,用C编写本机代码(或使用extern "C"编写C++ ),将代码编译到静态库link your MonoTouch app against the static library中,然后使用P/Invoke访问C函数。但是,与需要指定库名的“正常”P/Invoke不同,您需要指定"__Internal"作为库名:
[DllImport ("__Internal")]
static extern void MethodInStaticLibrary ();This same technique is used by MonoTouch to call from e.g. System.dll into the MonoTouch runtime.
使用Objective-C是相同但不同的。您需要的不是导出C ABI的静态库,而是导出Objective-C ABI的静态库,链接到静态库,然后是provide an API binding for your Objective-C library。
https://stackoverflow.com/questions/6611281
复制相似问题