Я только начал изучать OpenGL ES на Android (используя эту книгу ) и столкнулся с проблемой принятия кода source из главы 5 к существующим методам использования jni в Android(на самом деле, это также касается простого запуска нативного приложения GL).Я пытаюсь скомпилировать нативный код для получения .so lib и использовать его далее в архиве .apk.Но компиляция невозможна, если отсутствуют определенные библиотеки (например, GLES / gl.h, EGL / egl.h, GLES / gl.h, GLES / glext.h).
Итак, вопрос в том, как мне установить эти библиотеки (AFAIU, OpenGL ES и EGL) и скомпилировать самый простой нативный код?(учебники высоко ценятся).
Заранее спасибо.
РЕДАКТИРОВАТЬ: я попробовал пример glbuffer , как было предложено (слегка измененный файл .mk), новсе еще безуспешно.Компилятор дает мне тот же результат, что и раньше:
ndk-build
Компиляция большого пальца: egl <= cube.c </p>
/ path / jni / cube.c: 5: 21: ошибка: GLES / gl.h: нет такого файла или каталога // такое же сообщение для glbuffer при включении gl.h
Вот код cube.c:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <GLES/gl.h>
#define FIXED_ONE 0x10000
#define one 1.0f
typedef unsigned char byte;
extern void jni_printf(char *format, ...);
// Cube static
GLfloat vertices[24] = { -one, -one, -one, one, -one,
-one, one, one, -one, -one, one, -one, -one, -one, one, one, -one, one, one, one, one, -one, one, one, };
static GLfloat colors[] = { 0, 0, 0, one, one, 0, 0, one, one, one, 0, one, 0, one, 0> , one, 0, 0, one, one, one, 0, one, one, one, one, one, one, 0, one, one, one, };
static byte indices[] = { 0, 4, 5, 0, 5, 1, 1, 5, 6, 1, 6, 2, 2, 6, 7, 2, 7, 3, 3, 7, 4, 3, 4, 0, 4, 7, 6, 4, 6, 5, 3, 0, 1, 3, 1, 2 };
void Cube_draw() {
glFrontFace(GL_CW);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glColorPointer(4, GL_FLOAT, 0 , colors);
glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_BYTE, indices); }
Это ужасно тривиально и пока не работает.
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -lGLESv1_CM.so
LOCAL_MODULE := egl
LOCAL_SRC_FILES := cube.c cuberenderer.c
include $(BUILD_SHARED_LIBRARY)