2017-09-18 10 views
1

NDK를 사용하여 응용 프로그램을 만들려고합니다. 아직 CMake를 지원하지 않는 외부 라이브러리를 사용하고 있기 때문에 ndk-build를 사용하고 있습니다. 이 Android.mk의 관련 라인 :OpenGL ES 3 기능을 사용하는 경우 Android에서 분할 오류

LOCAL_LDLIBS := -lEGL -lGLESv3 

모든 것이 (컴파일 및 링크)를 구축 잘,하지만 난 (같은 glGenVertexArrays가), 나 세그먼트 오류를 ​​얻을 3.0는 OpenGL ES에서 함수를 사용하려고하면 .

enter image description here

그래서, 내가 이해할 수없는 이유로 libGLESv1_CM.so에 연결되어

내가 디버거를 보면

는하지만,이를 참조하십시오.

내 머리글 파일에서도 #include <GLES3/gl3.h>이고 내 장치는 OpenGL ES 3.2를 지원합니다 (libGLESv3.so 파일도 /system/lib/에 있음).

무엇이 누락 될 수 있습니까?

+0

glBindBuffer는 ES 1.1에 의해 정의됩니다. 나는 그것에 대해 걱정하지 않을 것이다. – Andreas

+0

런타임시 OpenGL에서 segfaults는 일반적으로 불량 포인터 때문에 발생합니다. 당신은 glGenVertexArrays에서 좋은 포인터를 보내는 것이 확실합니다. 즉, 미리 할당 된 n * GLuint 메모리 크기의 주소입니까? – Andreas

+0

완전히 확실합니다. 또한 함수 포인터가 NULL로 설정되어 있음을 알 수 있습니다. –

답변

0

내가 사용했던 외부 라이브러리에는 이전 OpenGL ES 사양을 지원하는 소스 gl3stub.c이 포함되어있었습니다. 이것은 더 새로운 API에 대한 포인터를 무효화하고있었습니다. 이 소스를 제거하고 외부 라이브러리를 다시 컴파일하면 문제가 해결됩니다.