我在Android上使用Java语言开发了Open GL项目。此类 GLSurfaceView.Renderer 。
现在,我想创建一个用OpenGL开发android的NDK项目。 但我不喜欢使用 GLSurfaceView.Renderer 。 Android的java源代码在框架中调用C源。所以我认为在没有java VM的框架上调用开源lib将比java快。
那么,是否可以使用纯c ++中的表面视图创建一个opengl上下文,例如NativeActivity?
答案 0 :(得分:1)
原生c ++界面曾经有过谷歌没有承诺ABI稳定性的问题。这意味着您的二进制文件将取决于特定版本的c ++接口。但是简单的解决方案曾经是java初始化代码,然后只使用c ++来渲染路径。 Java初始化的一小部分额外成本并不是真正令人担忧的,因为该代码很少运行。
如果谷歌改变了ABI稳定性,那么您可以创建一个ANativeWindow并将其传递给eglCreateWindowSurface。
答案 1 :(得分:0)
看一下名为" MoreTeapots"的Android示例。它尽可能使用C ++,尽可能少使用Java。它在一个单独的线程中运行所有内容,并与UI线程通信以接收事件。
但是,它不会比Java在每一帧中调用C ++代码运行得更快(至少不是因为你没有使用Renderer类)。