Cleanup GL/GLX extensions.
This commit is contained in:
@ -19,9 +19,19 @@
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
|
||||
typedef void (*rk_DrawElementsInstancedBaseInstanceFunc)(rk_uint, rk_uint, rk_uint, const void *, rk_uint, rk_uint);
|
||||
typedef void (*rk_MultiDrawElementsIndirectFunc)(rk_uint, rk_uint, const void *, rk_uint, rk_uint);
|
||||
|
||||
static rk_DrawElementsInstancedBaseInstanceFunc rk_DrawElementsInstancedBaseInstance = nullptr;
|
||||
static rk_MultiDrawElementsIndirectFunc rk_MultiDrawElementsIndirect = nullptr;
|
||||
|
||||
static rk_shader const * rk_current_shader = nullptr;
|
||||
static rk_vertices const * rk_current_vertices = nullptr;
|
||||
|
||||
static void rk_gl_printf(char const * message) {
|
||||
printf("[GL] %s\n", message);
|
||||
}
|
||||
|
||||
static void rk_printf(char const * message) {
|
||||
printf("[RK] %s\n", message);
|
||||
}
|
||||
@ -42,14 +52,27 @@ static void rk_debug_message_callback(
|
||||
void rk_render_initialize() {
|
||||
GLubyte const * const vendor = glGetString(GL_VENDOR);
|
||||
GLubyte const * const renderer = glGetString(GL_RENDERER);
|
||||
printf("[RK] vendor: %s, renderer: %s\n", vendor, renderer);
|
||||
printf("[GL] vendor: %s, renderer: %s\n", vendor, renderer);
|
||||
GLubyte const * const version = glGetString(GL_VERSION);
|
||||
GLubyte const * const language = glGetString(GL_SHADING_LANGUAGE_VERSION);
|
||||
printf("[RK] version: %s, language: %s\n", version, language);
|
||||
printf("[GL] version: %s, language: %s\n", version, language);
|
||||
|
||||
glDebugMessageCallback(rk_debug_message_callback, nullptr);
|
||||
glEnable(GL_DEBUG_OUTPUT);
|
||||
|
||||
char const * const gl_exts = reinterpret_cast<char const *>(glGetString(GL_EXTENSIONS));
|
||||
// printf("[GL] %s\n", gl_exts);
|
||||
rk_DrawElementsInstancedBaseInstance = reinterpret_cast<rk_DrawElementsInstancedBaseInstanceFunc>(
|
||||
rk_resolve_extension(gl_exts, "GL_EXT_base_instance", "DrawElementsInstancedBaseInstance"));
|
||||
if (rk_DrawElementsInstancedBaseInstance) {
|
||||
rk_gl_printf("Using extension GL_EXT_base_instance::DrawElementsInstancedBaseInstance.");
|
||||
rk_MultiDrawElementsIndirect = reinterpret_cast<rk_MultiDrawElementsIndirectFunc>(
|
||||
rk_resolve_extension(gl_exts, "GL_EXT_multi_draw_indirect", "MultiDrawElementsIndirectEXT"));
|
||||
if (rk_MultiDrawElementsIndirect) {
|
||||
rk_gl_printf("Using extension GL_EXT_multi_draw_indirect::MultiDrawElementsIndirectEXT.");
|
||||
}
|
||||
}
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
glEnable(GL_DITHER);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
Reference in New Issue
Block a user