From e7f9614f079ff3d6c2dfdfa38aa51b3c556096cf Mon Sep 17 00:00:00 2001 From: Mike Erwin Date: Sat, 6 Aug 2016 22:44:01 -0400 Subject: [PATCH] Gawain: legacy OpenGL compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apple invented VAOs and exposes them via an extension in legacy GL. Other platforms use at least GL 3.0 which has VAOs built in. QUADS were removed from core profile but are useful for immediate-mode drawing. We’ll have to implement our own QUAD drawing before switching to core profile. --- source/blender/gpu/intern/gpu_immediate.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/blender/gpu/intern/gpu_immediate.c b/source/blender/gpu/intern/gpu_immediate.c index 15108093954..3d7250bf7e8 100644 --- a/source/blender/gpu/intern/gpu_immediate.c +++ b/source/blender/gpu/intern/gpu_immediate.c @@ -22,6 +22,17 @@ #include #endif +#if defined(__APPLE__) && defined(WITH_GL_PROFILE_COMPAT) + #undef glGenVertexArrays + #define glGenVertexArrays glGenVertexArraysAPPLE + + #undef glDeleteVertexArrays + #define glDeleteVertexArrays glDeleteVertexArraysAPPLE + + #undef glBindVertexArray + #define glBindVertexArray glBindVertexArrayAPPLE +#endif + void clear_VertexFormat(VertexFormat* format) { for (unsigned a = 0; a < format->attrib_ct; ++a) @@ -95,7 +106,7 @@ static unsigned padding(unsigned offset, unsigned alignment) } #if PACK_DEBUG -void show_pack(a_idx, sz, pad) +static void show_pack(a_idx, sz, pad) { const char c = 'A' + a_idx; for (unsigned i = 0; i < pad; ++i) @@ -241,6 +252,11 @@ void immBegin(GLenum primitive, unsigned vertex_ct) case GL_TRIANGLES: assert(vertex_ct % 3 == 0); break; + #ifdef WITH_GL_PROFILE_COMPAT + case GL_QUADS: + assert(vertex_ct % 4 == 0); + break; + #endif default: assert(false); }