使用 Vuforia 的 ImageTargets 示例应用程序,我尝试通过在 jni/Android.mk 中将 USE_OPENGL_ES_1_1 设置为 true 并取消注释并更改 AndroidManifest.xml () 中的相应行来使用 OpenGL ES 1.1。在转换项目以使其具有 C++ 透视图并关联 ndk-build 和正确的包含目录后,我可以在我的 Android 设备上成功运行该应用程序。
然而,问题是,一旦我打开 jni/ImageTargets.cpp,我会从 Eclipse 中得到几个错误,这些错误都来自 OpenGL ES 2.0 代码将执行的地方,第一个是:
说明资源路径位置类型符号“vertexHandle”无法解析 ImageTargets.cpp /ImageTargets/jni 第 402 行语义错误
果然,vertexHandle 定义在 ImageTargets.cpp 顶部的“#ifdef USE_OPENGL_ES_2_0”块内。因为没有定义USE_OPENGL_ES_2_0(根据Android.mk),所以代码应该可以编译成功,果然,ndk-build没有报任何问题。所以似乎只有 Eclipse 报告了问题,当我运行项目时,Eclipse 说,“您的项目包含错误,请在运行您的应用程序之前修复它们。” 因此,我不能再运行我的应用程序了。从某种意义上说,这有点奇怪,直到我打开 ImageTargets.cpp 并且 Eclipse “发现”了错误之前,这种情况才发生。
到目前为止,我发现的最好的解决方法是删除或注释掉那些行(这不应该引起问题,因为不应该定义 USE_OPENGL_ES_2_0)......有没有更好的方法来处理这个问题?我是否错过了 Eclipse 中应该解决此问题的设置?