是否可以从C++;还有Java代码? 我有一个应用程序,它将利用NDK DO来实现高图形需求和我在C++中编写的地形生成库。我的问题是,我是否已经用SDK制作了GUI,并且用java随机调用了opengl,比如GLES20.glEnable(GL_CULL_FACE)然后继续调用glEnable(GL_深度测试)?< /强>

是否可以从C++;还有Java代码? 我有一个应用程序,它将利用NDK DO来实现高图形需求和我在C++中编写的地形生成库。我的问题是,我是否已经用SDK制作了GUI,并且用java随机调用了opengl,比如GLES20.glEnable(GL_CULL_FACE)然后继续调用glEnable(GL_深度测试)?< /强> ,java,android,c++,opengl-es,Java,Android,C++,Opengl Es,在OpenGL中,你总是处理上下文,是的。对你来说最重要的部分是 您的OpenGL上下文何时以及如何在Java部件中绑定 调用本机代码时,OpenGL上下文是否保持最新 实际上,对OpenGL的所有Java调用都以任何方式进入本机代码。所以如果你用NDK编写程序的一部分,并以直接调用OpenGL的方式调用这些部分,那么OpenGL上下文将是当前可用的。 < P>直接回答是是/强>,但是你必须小心如何编写C++和java代码< /P> NTVIGIONE < /C>和 NATEVEAppA

在OpenGL中,你总是处理上下文,是的。对你来说最重要的部分是

  • 您的OpenGL上下文何时以及如何在Java部件中绑定
  • 调用本机代码时,OpenGL上下文是否保持最新

实际上,对OpenGL的所有Java调用都以任何方式进入本机代码。所以如果你用NDK编写程序的一部分,并以直接调用OpenGL的方式调用这些部分,那么OpenGL上下文将是当前可用的。

< P>直接回答是<强>是/强>,但是你必须小心如何编写C++和java代码< /P>
    NTVIGIONE < /C>和 NATEVEAppApHOL> < /Cord>代码,帮助您编写游戏代码、渲染等的纯C++代码,并最小化编写java代码的要求。如果您使用这种方式,您将发现一些入口点函数,如
    android\u main()
    。在这种情况下,您不能在同一上下文中将爪哇的OpenGL和C++代码混合,因为您的本机代码在不同的线程中运行,并且通过管道与java线程[ Dalvik VM线程] 进行通信。
  • 通过JNI调用java中的原生函数,这将在同一线程、相同上下文中调用java或C++中的OpenGL API,不应该是什么区别,正如@ DeNeWORKE/LI>的答案一样。

希望这有助于~/P >问题看起来稍微不同,但是我的答案解释了如何在进行OpenGL调用时安全地混合java和C++代码: