Implement GL extensions

This commit is contained in:
Leith Bade
2014-11-09 01:22:38 +11:00
parent 70057e1b8e
commit 54d176fed0
2 changed files with 30 additions and 0 deletions

View File

@@ -432,6 +432,8 @@ void NativeMapView::start() {
log_gl_string(GL_SHADING_LANGUAGE_VERSION, "SL Version");
log_gl_string(GL_EXTENSIONS, "Extensions");
loadExtensions();
if (!eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE,
EGL_NO_CONTEXT)) {
LOG_ERROR("eglMakeCurrent(EGL_NO_CONTEXT) returned error %d",
@@ -444,6 +446,32 @@ void NativeMapView::start() {
}
}
void NativeMapView::loadExtensions() {
const GLubyte* str = glGetString(GL_EXTENSIONS);
if (str == nullptr) {
LOG_ERROR("glGetString(GL_EXTENSIONS) returned error %d", glGetError());
return;
}
std::string extensions(reinterpret_cast<const char*>(str));
if (extensions.find("GL_OES_vertex_array_object") != std::string::npos) {
LOG_INFO("Using GL_OES_vertex_array_object.");
gl::BindVertexArray = (gl::PFNGLBINDVERTEXARRAYPROC)eglGetProcAddress("glBindVertexArrayOES");
gl::DeleteVertexArrays = (gl::PFNGLDELETEVERTEXARRAYSPROC)eglGetProcAddress("glDeleteVertexArraysOES");
gl::GenVertexArrays = (gl::PFNGLGENVERTEXARRAYSPROC)eglGetProcAddress("glGenVertexArraysOES");
gl::IsVertexArray = (gl::PFNGLISVERTEXARRAYPROC)eglGetProcAddress("glIsVertexArrayOES");
if ((gl::BindVertexArray == nullptr) || (gl::DeleteVertexArrays == nullptr) || (gl::GenVertexArrays == nullptr) || (gl::IsVertexArray == nullptr)) {
LOG_ERROR("Could not load GL_OES_vertex_array_object functions.");
gl::BindVertexArray = nullptr;
gl::DeleteVertexArrays = nullptr;
gl::GenVertexArrays = nullptr;
gl::IsVertexArray = nullptr;
}
}
}
void NativeMapView::stop() {
LOG_VERBOSE("NativeMapView::stop");
if ((display != EGL_NO_DISPLAY) && (surface != EGL_NO_SURFACE)

View File

@@ -68,6 +68,8 @@ private:
EGLConfig chooseConfig(const EGLConfig configs[], EGLint num_configs,
bool use565) const;
void loadExtensions();
private:
JavaVM* vm = nullptr;
jobject obj = nullptr;