Route RTT framebuffer binding through renderer GL
This commit is contained in:
@@ -684,6 +684,36 @@ pp::foundation::Status readback_opengl_framebuffer(
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
pp::foundation::Result<OpenGlFramebufferBindingState> bind_opengl_framebuffer_for_draw_read(
|
||||
std::uint32_t framebuffer,
|
||||
OpenGlFramebufferBindDispatch dispatch) noexcept
|
||||
{
|
||||
if (dispatch.get_integer == nullptr || dispatch.bind_framebuffer == nullptr) {
|
||||
return pp::foundation::Result<OpenGlFramebufferBindingState>::failure(
|
||||
pp::foundation::Status::invalid_argument("OpenGL framebuffer bind dispatch callbacks must not be null"));
|
||||
}
|
||||
|
||||
OpenGlFramebufferBindingState binding {};
|
||||
dispatch.get_integer(draw_framebuffer_binding_query(), &binding.draw_framebuffer);
|
||||
dispatch.get_integer(read_framebuffer_binding_query(), &binding.read_framebuffer);
|
||||
dispatch.bind_framebuffer(draw_framebuffer_target(), framebuffer);
|
||||
dispatch.bind_framebuffer(read_framebuffer_target(), framebuffer);
|
||||
return pp::foundation::Result<OpenGlFramebufferBindingState>::success(binding);
|
||||
}
|
||||
|
||||
pp::foundation::Status restore_opengl_framebuffer_binding(
|
||||
OpenGlFramebufferBindingState binding,
|
||||
OpenGlFramebufferRestoreDispatch dispatch) noexcept
|
||||
{
|
||||
if (dispatch.bind_framebuffer == nullptr) {
|
||||
return pp::foundation::Status::invalid_argument("OpenGL framebuffer restore dispatch callback must not be null");
|
||||
}
|
||||
|
||||
dispatch.bind_framebuffer(draw_framebuffer_target(), static_cast<std::uint32_t>(binding.draw_framebuffer));
|
||||
dispatch.bind_framebuffer(read_framebuffer_target(), static_cast<std::uint32_t>(binding.read_framebuffer));
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
std::uint32_t extension_count_query() noexcept
|
||||
{
|
||||
return gl_num_extensions;
|
||||
|
||||
Reference in New Issue
Block a user