return glXMakeContextCurrent(get_display(), draw, draw, glx_ctxt);
}
+//#define GL_BUG
+#ifdef GL_BUG
+static void GLAPIENTRY glDebugCallback(GLenum source, GLenum type,
+ GLuint id, GLenum severity, GLsizei length, const GLchar* message,
+ const void* userParam)
+{
+ if( type == GL_DEBUG_TYPE_OTHER &&
+ severity == GL_DEBUG_SEVERITY_NOTIFICATION ) return;
+ fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+ ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
+ type, severity, message );
+}
+#endif
+
bool BC_WindowBase::glx_make_current(GLXDrawable draw)
{
- return glx_make_current(draw, glx_win_context);
+ bool ret = glx_make_current(draw, glx_win_context);
+#ifdef GL_BUG
+ //Enabling OpenGL debug output
+ glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0, GL_TRUE);
+ glEnable(GL_DEBUG_OUTPUT);
+ glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
+ glDebugMessageCallback(glDebugCallback, 0);
+ glEnable(GL_DEBUG_OUTPUT);
+#endif
+ return ret;
}
#endif
#endif
}
-unsigned int BC_WindowBase::get_shader(char *source, int *got_it)
+int BC_WindowBase::get_shader(unsigned int *handle, const char *vert, const char *frag)
{
- return get_resources()->get_synchronous()->get_shader(source, got_it);
+ return get_resources()->get_synchronous()->get_shader(handle, vert, frag);
}
-void BC_WindowBase::put_shader(unsigned int handle, char *source)
+void BC_WindowBase::put_shader(unsigned int handle, const char *vert, const char *frag)
{
- get_resources()->get_synchronous()->put_shader(handle, source);
+ get_resources()->get_synchronous()->put_shader(handle, vert, frag);
}
int BC_WindowBase::get_opengl_server_version()