Route RTT utility clears through GL backend
This commit is contained in:
@@ -464,6 +464,45 @@ pp::foundation::Status clear_panopainter_default_target(OpenGlClearDispatch disp
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
pp::foundation::Status clear_opengl_render_target(
|
||||
OpenGlDefaultClear clear,
|
||||
OpenGlClearDispatch dispatch) noexcept
|
||||
{
|
||||
if (dispatch.clear_color == nullptr || dispatch.clear == nullptr) {
|
||||
return pp::foundation::Status::invalid_argument("OpenGL render-target clear dispatch callbacks must not be null");
|
||||
}
|
||||
|
||||
if (clear.mask == 0U) {
|
||||
return pp::foundation::Status::invalid_argument("OpenGL render-target clear mask is invalid");
|
||||
}
|
||||
|
||||
dispatch.clear_color(clear.color[0], clear.color[1], clear.color[2], clear.color[3]);
|
||||
dispatch.clear(clear.mask);
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
pp::foundation::Status clear_opengl_color_buffer_with_write_mask(
|
||||
OpenGlColorMaskedClear clear,
|
||||
OpenGlColorMaskedClearDispatch dispatch) noexcept
|
||||
{
|
||||
if (dispatch.get_boolean == nullptr
|
||||
|| dispatch.color_mask == nullptr
|
||||
|| dispatch.clear_color == nullptr
|
||||
|| dispatch.clear == nullptr) {
|
||||
return pp::foundation::Status::invalid_argument(
|
||||
"OpenGL color-masked clear dispatch callbacks must not be null");
|
||||
}
|
||||
|
||||
std::array<std::uint8_t, 4> old_mask {};
|
||||
dispatch.get_boolean(color_write_mask_query(), old_mask.data());
|
||||
|
||||
dispatch.color_mask(clear.mask.r, clear.mask.g, clear.mask.b, clear.mask.a);
|
||||
dispatch.clear_color(clear.color[0], clear.color[1], clear.color[2], clear.color[3]);
|
||||
dispatch.clear(framebuffer_color_buffer_mask());
|
||||
dispatch.color_mask(old_mask[0], old_mask[1], old_mask[2], old_mask[3]);
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
pp::foundation::Status apply_opengl_viewport(
|
||||
OpenGlViewportRect viewport,
|
||||
OpenGlViewportDispatch dispatch) noexcept
|
||||
|
||||
Reference in New Issue
Block a user