Move OpenGL extension query into renderer backend

This commit is contained in:
2026-06-04 19:39:06 +02:00
parent 11c7d87330
commit 1057dd488a
6 changed files with 159 additions and 21 deletions

View File

@@ -344,6 +344,31 @@ pp::foundation::Result<OpenGlRuntimeInfo> query_opengl_runtime_info(
});
}
pp::foundation::Result<std::vector<std::string>> query_opengl_extensions(
OpenGlExtensionQueryDispatch dispatch)
{
if (dispatch.get_integer == nullptr || dispatch.get_string_indexed == nullptr) {
return pp::foundation::Result<std::vector<std::string>>::failure(
pp::foundation::Status::invalid_argument("OpenGL extension query callbacks must not be null"));
}
std::int32_t extension_count = 0;
dispatch.get_integer(extension_count_query(), &extension_count);
if (extension_count <= 0) {
return pp::foundation::Result<std::vector<std::string>>::success({});
}
std::vector<std::string> extensions;
extensions.reserve(static_cast<std::size_t>(extension_count));
for (std::int32_t index = 0; index < extension_count; ++index) {
const char* extension = dispatch.get_string_indexed(
extension_string_name(),
static_cast<std::uint32_t>(index));
extensions.emplace_back(extension != nullptr ? extension : "");
}
return pp::foundation::Result<std::vector<std::string>>::success(std::move(extensions));
}
OpenGlDefaultClear panopainter_default_clear() noexcept
{
return OpenGlDefaultClear {