Привет всем!
Изначально решил ориентироваться на ES 3.0 (нужно кое-что для пост-обработки в шейдере, чего нет в 2.0). Собираю с gradle. Линкер (clang++) находит все символы (из портированной с десктопа программы, OpenGL 3.3), кроме glGenVertexArrays
и glBindVertexArray
. Что не так?
Для примера: вот проект EXL, в нём в конец main.c добавляю 3 строчки:
unsigned int vao;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
Чтобы откомпилилось, добавляю в главный CMakeLists.txt (который в ../../
) в начало (перед set(GLFM_HEADERS include/glfm.h)
) строчку add_definitions(-DGLFM_INCLUDE_ES3)
Получаю при запуске ./gradlew assembleDebug
:
...
/path/glfm/the1app/src/main.cpp:245: error: undefined reference to 'glGenVertexArrays'
/path/glfm/the1app/src/main.cpp:247: error: undefined reference to 'glBindVertexArray'
...
Наверное где-то нужно что-то прописать, может версию ES, может android API. Что, где?
Спасибо.
==========
ОФФ. Для EXL, апдэйт: Подумал, понял что с «файликом» я что-то самодеятельничаю... Попробовал set/getenv, оказалось не просто, а очень просто. Зря боялся :) Спасибо!
Однако вскоре (когда выбирал десктопную гую для лончера) я наткнулся на nuklear — OpenGL GUI, с которой возможно лончер вообще не понадобится. Это было бы здорово, поскольку наэкранные кнопочки рисовать мне нужно по-любому, и с лончером мне предстоит делать 3 гуи: свою наэкранную колхозить, андроидный лончер и десктопный (а в перспективе ещё и 4-ую, для ios). А с nuklear возможно всё получится супер, 1 гуя, и всё мега-убер-кроссплатформенно! Я когда-то давно эту nuklear видел, но не увидел явной поддержки андроида, и пропустил мимо. А сейчас присмотрелся — самое то! Главное чтоб fps не сильно просели из-за immediate mode. Причём именно оригинал, не nuklear+, который отбирает у меня main loop. Но пока — сначало надо слинковать под андроид.