android - 如何链接游戏引擎和安卓游戏?

标签 android java-native-interface opengl-es-2.0 game-engine

我正在开发一个用 C++ 编写的游戏引擎。 我的引擎使用 OpenGLES2。 现在我想为 Android 创建端口,当然是使用 jni。 我还有一个用这个游戏引擎编写的游戏。

我编写了一个小型 Java 包装器来调用我用 C++ 编写的游戏中的 Init、Draw/Update 和 Terminate 方法。

同时,我的游戏将从引擎中调用 C++ 函数。

[java Android]--jni-->[c++ Game]--call-->[c++ Engine]--call-->[OpenGLES2]

问题是如何将它们链接起来。

我可以将我的游戏 C++ 代码构建到 libGame.so 并从 java 调用此库中的方法。 但是如何将游戏与引擎通信,然后将引擎与 opengles2 for Android 通信?

有人可以帮忙吗? 任何建议都很重要。


现在是另一个问题) 我应该为我的引擎使用什么类型的库,.a 或 .so,以及如何将我的游戏与引擎链接?

最佳答案

SWIG

这个工具基本上会为您生成所有的 JNI C++ 和 Java 包装器,让您轻松地做一些疯狂的事情。此外,一旦完成 SWIG 配置文件的编写,您就可以为许多不同的语言构建它。 Java 到 C++ 并不是一个很好的组合。您可能会发现您需要将 C++ 接口(interface)更改为更像“java”,这样您就可以避免内存问题。

关于android - 如何链接游戏引擎和安卓游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228806/

相关文章:

android - 如何隐藏Android手机上的软键栏?

java - 有没有办法中断 java 中的 jni C++ 断言并至少为我的 java 代码打印堆栈跟踪?

android - 无法解析仅在 Windows 操作系统中显示的相应 JNI 函数

opengl - 片段着色器并为纹理着色

java - Android Studio 在 API 23 中调用电话

android - 如何在 Android 中将 int 传递给我的 onDraw(Canvas canvas)?

android - 当我在 Listview 项目 android 中向下滚动时,项目保存的值消失

Android JNI字符串加密/解密

ios - 将附近的对象渲染在其他对象之上时,OpenGL 会变慢

android - 将多个纹理传递给 LibGDX 中的着色器