void OpenGLCommands::clear(const ClearValue *values)
{
- const Framebuffer *target = pipeline_state->get_framebuffer();
+ const Framebuffer *target = (pipeline_state ? pipeline_state->get_framebuffer() : 0);
if(!target)
throw invalid_operation("OpenGLCommands::clear");
void OpenGLCommands::draw(const Batch &batch)
{
+ if(!pipeline_state)
+ throw invalid_operation("OpenGLCommands::draw");
+
pipeline_state->apply();
void *data_ptr = reinterpret_cast<void *>(batch.get_offset());
glDrawElements(batch.gl_prim_type, batch.size(), batch.gl_index_type, data_ptr);
void OpenGLCommands::draw_instanced(const Batch &batch, unsigned count)
{
+ if(!pipeline_state)
+ throw invalid_operation("OpenGLCommands::draw_instanced");
+
static Require req(ARB_draw_instanced);
pipeline_state->apply();
void OpenGLCommands::resolve_multisample(Framebuffer &target)
{
- static Require _req(EXT_framebuffer_blit);
+ const Framebuffer *source = (pipeline_state ? pipeline_state->get_framebuffer() : 0);
+ if(!source)
+ throw invalid_operation("OpenGLCommands::draw");
- const Framebuffer *source = pipeline_state->get_framebuffer();
+ static Require _req(EXT_framebuffer_blit);
unsigned width = min(source->get_width(), target.get_width());
unsigned height = min(source->get_height(), target.get_height());