Move OpenGL extension query into renderer backend
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user