public override void Draw(RenderContext rstate) { Mpv.mpv_event *ev = Mpv.mpv_wait_event(mpvhandle, 0); while (ev->event_id != Mpv.mpv_event_id.MPV_EVENT_NONE) { if (ev->event_id == Mpv.mpv_event_id.MPV_EVENT_END_FILE) { Playing = false; } ev = Mpv.mpv_wait_event(mpvhandle, 0); } if (disposed) { return; } game.UnbindAll(); rstate.RenderTarget = null; game.TrashGLState(); if (firstDraw) { firstDraw = false; rstate.RenderTarget = framebuffer; rstate.ClearColor = Color4.Black; rstate.ClearAll(); rstate.RenderTarget = null; rstate.Apply(); } if (doDraw) { rstate.Cull = false; rstate.Apply(); Mpv.mpv_opengl_cb_draw(mpvgl, (int)framebuffer.FBO, game.Width, game.Height); doDraw = false; rstate.Cull = true; } }