#pragma once #include #include "renderer_gl/opengl_capabilities.h" namespace pp::legacy::gl_runtime { inline const char* query_opengl_string(std::uint32_t name) noexcept { return reinterpret_cast(glGetString(static_cast(name))); } inline void query_opengl_integer_scalar(std::uint32_t name, std::int32_t* value) noexcept { GLint queried_value = 0; glGetIntegerv(static_cast(name), &queried_value); *value = static_cast(queried_value); } inline const char* query_opengl_indexed_string(std::uint32_t name, std::uint32_t index) noexcept { return reinterpret_cast( glGetStringi(static_cast(name), static_cast(index))); } inline std::uint32_t query_opengl_error() noexcept { return static_cast(glGetError()); } inline bool has_opengl_debug_message_callback() noexcept { return glDebugMessageCallback != nullptr; } inline void install_opengl_debug_message_callback(GLDEBUGPROC callback, const void* user_param) noexcept { glDebugMessageCallback(callback, user_param); } inline pp::renderer::gl::OpenGlRuntimeInfoDispatch runtime_info_dispatch() noexcept { return pp::renderer::gl::OpenGlRuntimeInfoDispatch { .get_string = query_opengl_string, }; } inline pp::renderer::gl::OpenGlExtensionQueryDispatch extension_query_dispatch() noexcept { return pp::renderer::gl::OpenGlExtensionQueryDispatch { .get_integer = query_opengl_integer_scalar, .get_string_indexed = query_opengl_indexed_string, }; } } // namespace pp::legacy::gl_runtime