Since this requires applying the pipeline state, using DSA for the clear
commands seems pointless and was removed to simplify the code.
if(!target)
throw invalid_operation("OpenGLCommands::clear");
if(!target)
throw invalid_operation("OpenGLCommands::clear");
- if(!ARB_direct_state_access)
- {
- static Require _req(MSP_clear_buffer);
- pipeline_state->apply();
- }
+ static Require _req(MSP_clear_buffer);
+
+ pipeline_state->apply();
unsigned i = 0;
for(FrameAttachment a: target->get_format())
{
if(get_attach_point(a)==get_attach_point(DEPTH_ATTACHMENT))
unsigned i = 0;
for(FrameAttachment a: target->get_format())
{
if(get_attach_point(a)==get_attach_point(DEPTH_ATTACHMENT))
- {
- if(ARB_direct_state_access)
- glClearNamedFramebufferfv(target->id, GL_DEPTH, 0, &values->depth_stencil.depth);
- else
- glClearBufferfv(GL_DEPTH, 0, &values->depth_stencil.depth);
- }
+ glClearBufferfv(GL_DEPTH, 0, &values->depth_stencil.depth);
else if(get_attach_point(a)==get_attach_point(STENCIL_ATTACHMENT))
else if(get_attach_point(a)==get_attach_point(STENCIL_ATTACHMENT))
- {
- if(ARB_direct_state_access)
- glClearNamedFramebufferiv(target->id, GL_STENCIL, 0, &values->depth_stencil.stencil);
- else
- glClearBufferiv(GL_STENCIL, 0, &values->depth_stencil.stencil);
- }
+ glClearBufferiv(GL_STENCIL, 0, &values->depth_stencil.stencil);
- {
- if(ARB_direct_state_access)
- glClearNamedFramebufferfv(target->id, GL_COLOR, i++, &values->color.r);
- else
- glClearBufferfv(GL_COLOR, i++, &values->color.r);
- }
+ glClearBufferfv(GL_COLOR, i++, &values->color.r);
void Renderer::clear(const ClearValue *values)
{
pipeline_state.set_framebuffer(state->framebuffer);
void Renderer::clear(const ClearValue *values)
{
pipeline_state.set_framebuffer(state->framebuffer);
+ pipeline_state.set_viewport(state->viewport);
+ pipeline_state.set_scissor(state->scissor);
commands.use_pipeline(&pipeline_state);
commands.clear(values);
}
commands.use_pipeline(&pipeline_state);
commands.clear(values);
}