2017-06-02 109 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應用程序後,開始移植工作。 –