2017-01-11 1 views
0

NDK 코드 (C/C++)에 glGetString(GL_EXTENSIONS)을 실행하면 38 개의 지원되는 확장 목록이 표시됩니다. 하지만 Java에서 OpenGL ES 3.2에 액세스하고 GLES32.glGetString(GLES32.GL_EXTENSIONS)을 실행하면 74 개의 지원되는 확장 목록이 표시됩니다.Android NDK로 OpenGL ES 확장판에 액세스

내 NDK 응용 프로그램이 OpenGL ES 3.0 이상의 기능을 제공하지 않는 libGLESv3.so 라이브러리를 연결한다는 것이 문제라고 생각합니다. libGLESv32.so 라이브러리가 있으면 좋겠지 만 찾을 수는 없습니다.

NDK 응용 프로그램에서 이러한 추가 확장 프로그램에 액세스 할 수있는 방법이 있습니까?

답변

0

GLESv32.so 라이브러리와 같은 것이 없습니다 (원칙적으로 GLESv3.so가 없어야 함). OpenGLES 3.x는 OpenGL ES 2.x와 역 호환이 가능하도록 설계되었으므로 모든 응용 프로그램은 GLESv2.so와 링크해야 GLESv3 기능을 수행 할 수 있습니다.

+0

libGLESv2.so에 링크를 시도했지만 정의되지 않은 참조 번호 (glMapBufferRange, glBindVertexArray 등)가 있습니다. libGLESv3.so 파일은 libGLESv2.so 파일의 두 배 크기이므로 libGLESv2.so가 libGLESv3.so의 모든 기능을 제공하는 것은 거의 불가능합니다. – user934904

+0

OK - Android와 같은 소리가 여기에 '특별한'작업을 수행했습니다. – solidpixel

0

glGetString(GL_EXTENSIONS)은 확장 프로그램의 전체 목록을 반환하지 않습니다.

전체 목록을 얻으려면 glGetIntegervGL_NUM_EXTENSIONS으로 호출해야합니다. 그런 다음 glGetStringiGL_EXTENSIONS으로 호출하여 광고 확장을 반복 할 수 있습니다.

+0

사실, 이것은 전혀 문제가되지 않았습니다. 문제는'__android_log_print'가 내용을 줄 당 1KB로 자릅니다. 'glGetString (GL_EXTENSIONS)'는 확장 기능의 전체 목록을 반환합니다. – mstorsjo