2017-06-02 51 views
0

我试图做一个android环境的世界上最简单的测试,只是为了在解决端口问题之前让我所有的鸭子都在一排。如何使用Android NDK调用“glEnable”?

,我需要做的第一件事情就是链接GLES 1.0 ...这里是我采取的步骤:

ONE:使用安卓2.3.2工作室,我创建了一个新的C++项目启用了基本活动

TWO:在AndroidManifest.xml添加此:

<uses-feature android:glEsVersion="0x00010000" /> 

三:我的CMakeLists.txt加入这些行:

find_package(ZLIB REQUIRED) 
find_library(GLES1_LIBRARY names GLESv1_CM) 
include_directories(${ZLIB_INCLUDE_DIRS} ${GLES_INCLUDE_DIRS}) 
... 
target_link_libraries(# Specifies the target library. 
        native-lib 
        ${ZLIB_LIBRARIES} 
        ${GLES1_LIBRARIES} 
        ${log-lib}) 

,对于日志-lib的工作,以及它为zlib的太...它不GLES1工作(见下一步)

四:我只是增加了一个简单的线条到本机lib.cpp

glEnable(GL_BLEND); 

命中编译...

CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o: In function `Java_com_game_raptisoft_myapplication_MainActivity_stringFromJNI': 
C:\Users\Raptisoft2011\Desktop\Android\MyApplication\app\src\main\cpp/native-lib.cpp:12: undefined reference to `glEnable' 

我该如何解决这个问题呢?我需要包含更多链接声明吗?我尝试过GLES1_LIBRARY的各种迭代(如GLES_LIBRARY等),但没有任何工作。

回答

0

尝试

target_link_libraries(# Specifies the target library. 
       native-lib 
       ${ZLIB_LIBRARIES} 
       EGL 
       GLESv1_CM 
       ${log-lib}) 

而且,你有针对性​​,但高于你拼写它GLES1_LIBRARY


如果可以的话,我会建议移植到gles2。最不用担心的是编写着色器,它可以更好地控制数据的绘制方式。


顺便说一句,这是使用PopCap框架创建Chuzzle的Rapitsoft吗?

+0

这是......但Chuzzle不在Popcap框架中,我推出了自己的。我的框架是跨平台的 - 除了Android。试图纠正现在,但男孩,它每一步都在与我搏斗。 – Raptisoft

+0

顺便说一句,你给我的解决方案 - 只要我离开EGL。至少,它可以编译。可悲的是,它现在在启动时崩溃。所以......一如既往,一座新的山峰要爬升。 :) – Raptisoft

+0

我会说这个例子开始:https://github.com/googlesamples/android-ndk/tree/master/native-activity并开始添加代码来绘制。使用一个成功的android应用程序后,开始移植工作。 –