for e in enums:
out.write("#define %s 0x%04X\n"%(e.name, e.value))
out.write("#endif\n\n")
+
+ # Apple's OpenGL implementation doesn't have a GetProcAddress function; link
+ # directly to the OpenGL library
+ out.write("\n#if !defined(__APPLE__) || !defined(GL_%s)\n"%ext)
for f in funcs:
out.write("extern %s %s;\n"%(f.typedef, f.name))
+ out.write("#endif\n")
out.write("\nextern Extension %s;\n"%ext)
""")
if funcs:
- out.write("\n")
-for f in funcs:
- out.write("%s %s = 0;\n"%(f.typedef, f.name))
+ out.write("\n#if !defined(__APPLE__) || !defined(GL_%s)\n"%ext)
+ for f in funcs:
+ out.write("%s %s = 0;\n"%(f.typedef, f.name))
+ out.write("\n#endif\n")
out.write("\nExtension::SupportLevel init_%s()\n{\n"%ext.lower())
out.write("#ifdef GL_%s\n"%ext)
if backport_ext:
out.write(" || is_supported(\"GL_%s\")"%backport_ext)
out.write(")\n\t{\n")
- for f in funcs:
- out.write("\t\t%s = reinterpret_cast<%s>(get_proc_address(\"%s\"));\n"%(f.name, f.typedef, f.name))
+ if funcs:
+ out.write("#ifndef __APPLE__\n")
+ for f in funcs:
+ out.write("\t\t%s = reinterpret_cast<%s>(get_proc_address(\"%s\"));\n"%(f.name, f.typedef, f.name))
+ out.write("#endif\n")
out.write("\t\treturn Extension::CORE;\n")
out.write("\t}\n")
if ext!=backport_ext:
out.write("\tif(is_supported(\"GL_%s\"))\n\t{\n"%(ext))
- for f in funcs:
- n = f.name
- if f.source:
- n = f.source.name
- out.write("\t\t%s = reinterpret_cast<%s>(get_proc_address(\"%s\"));\n"%(f.name, f.typedef, n))
+ if funcs:
+ out.write("#ifndef __APPLE__\n")
+ for f in funcs:
+ n = f.name
+ if f.source:
+ n = f.source.name
+ out.write("\t\t%s = reinterpret_cast<%s>(get_proc_address(\"%s\"));\n"%(f.name, f.typedef, n))
+ out.write("#endif\n")
out.write("\t\treturn Extension::EXTENSION;\n")
out.write("\t}\n")
out.write("#endif\n")
#include <set>
-#ifndef WIN32
+#if !defined(WIN32) && !defined(__APPLE__)
#define GLX_GLXEXT_PROTOTYPES
#include <GL/glx.h>
#endif
ExtFunc *get_proc_address(const string &name)
{
-#ifndef WIN32
- return glXGetProcAddressARB(reinterpret_cast<const unsigned char *>(name.c_str()));
-#else
+#if defined(WIN32)
return reinterpret_cast<ExtFunc *>(wglGetProcAddress(name.c_str()));
+#elif defined(__APPLE__)
+ (void)name;
+ return 0; // Not supported
+#else
+ return glXGetProcAddressARB(reinterpret_cast<const unsigned char *>(name.c_str()));
#endif
}