是否可以使用C++和Java代码进行OpenGL ES调用?

Sem*_*cus 6 c++ java android opengl-es

我有一个应用程序将利用NDK做高图形要求和我用c ++编写的地形生成库.我的问题是,如果我已经使用SDK制作了我的GUI,并且我在java中进行了随机的opengl调用GLES20.glEnable(GL_CULL_FACE);,然后继续glEnable(GL_DEPTH_TEST);通过JNI 调用C++会有任何已知的错误/构建问题吗?如果有人想知道为什么我问这个和/或认为这是一个愚蠢的问题,那是因为在桌面OpenGL中存在一个现有的OpenGL context(尽管GLFW负责大部分这个).我担心OpenGL ES是否也存在context.如果是这样,那么从Java和C++开始的OpenGL ES调用是否会写入先前声明的内容context

dat*_*olf 4

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

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

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