From 32b93600b361ead46a49c03a0839850f529a6ebc Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 2 May 2019 14:29:39 +0100 Subject: [PATCH] Fetch enough fixed function GL entry points to render legacy overlay --- renderdoc/driver/gl/cgl_platform.cpp | 38 +++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/cgl_platform.cpp b/renderdoc/driver/gl/cgl_platform.cpp index fa4ad849b..f0bc559ec 100644 --- a/renderdoc/driver/gl/cgl_platform.cpp +++ b/renderdoc/driver/gl/cgl_platform.cpp @@ -38,6 +38,35 @@ extern "C" void NSGL_update(void *nsctx); extern "C" void NSGL_flushBuffer(void *nsctx); extern "C" void NSGL_destroyContext(void *nsctx); +// gl functions (used for quad rendering on legacy contexts) +extern "C" void glPushMatrix(); +extern "C" void glLoadIdentity(); +extern "C" void glMatrixMode(GLenum); +extern "C" void glOrtho(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble); +extern "C" void glPopMatrix(); +extern "C" void glBegin(GLenum); +extern "C" void glVertex2f(float, float); +extern "C" void glTexCoord2f(float, float); +extern "C" void glEnd(); + +#define QUAD_GL_FUNCS(FUNC) \ + FUNC(glGetIntegerv); \ + FUNC(glPushMatrix); \ + FUNC(glLoadIdentity); \ + FUNC(glMatrixMode); \ + FUNC(glOrtho); \ + FUNC(glPopMatrix); \ + FUNC(glBegin); \ + FUNC(glVertex2f); \ + FUNC(glTexCoord2f); \ + FUNC(glEnd); + +#define DECL_PTR(a) decltype(&a) a; +struct QuadGL +{ + QUAD_GL_FUNCS(DECL_PTR); +}; + template <> std::string DoStringise(const CGLError &el) { @@ -194,7 +223,14 @@ class CGLPlatform : public GLPlatform void DrawQuads(float width, float height, const std::vector &vertices) { - RDCERR("Legacy overlay not supported on macOS"); + static QuadGL quadGL = {}; + + if(!quadGL.glBegin) + { +#define FETCH_PTR(a) quadGL.a = &::a; + QUAD_GL_FUNCS(FETCH_PTR) + } + ::DrawQuads(quadGL, width, height, vertices); } } cglPlatform;