diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index 47f2a9e87..daae72f2a 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -720,6 +720,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs) : m_Re m_Replay.SetDriver(this); m_FrameCounter = 0; + m_NoCtxFrames = 0; m_FailedFrame = 0; m_FailedReason = CaptureSucceeded; m_Failures = 0; @@ -2227,7 +2228,20 @@ void WrappedOpenGL::SwapBuffers(void *windowHandle) // don't do anything if no context is active. if(GetCtx() == NULL) + { + m_NoCtxFrames++; + if(m_NoCtxFrames == 100) + { + RDCERR( + "Seen 100 frames with no context current. RenderDoc requires a context to be current " + "during the call to SwapBuffers to display its overlay and start/stop captures on " + "default keys.\nIf your GL use is elsewhere, consider using the in-application API to " + "trigger captures manually"); + } return; + } + + m_NoCtxFrames = 0; m_FrameCounter++; // first present becomes frame #1, this function is at the end of the frame diff --git a/renderdoc/driver/gl/gl_driver.h b/renderdoc/driver/gl/gl_driver.h index c1a978ba7..9743b7b1f 100644 --- a/renderdoc/driver/gl/gl_driver.h +++ b/renderdoc/driver/gl/gl_driver.h @@ -186,6 +186,7 @@ private: GLResourceManager *m_ResourceManager; uint32_t m_FrameCounter; + uint32_t m_NoCtxFrames; uint32_t m_FailedFrame; CaptureFailReason m_FailedReason; uint32_t m_Failures;