#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <OpenGL/glext.h>
#include <Carbon/Carbon.h>
// Code for getting procedure pointers for agl
CFBundleRef gBundleRefOpenGL = NULL;
OSStatus aglInitEntryPoints (void);
void aglDellocEntryPoints (void);
void * aglGetProcAddress (char * pszProc);
// -------------------------
OSStatus aglInitEntryPoints (void)
{
OSStatus err = noErr;
const Str255 frameworkName = "\pOpenGL.framework";
FSRefParam fileRefParam;
FSRef fileRef;
CFURLRef bundleURLOpenGL;
memset(&fileRefParam, 0, sizeof(fileRefParam));
memset(&fileRef, 0, sizeof(fileRef));
fileRefParam.ioNamePtr = frameworkName;
fileRefParam.newRef = &fileRef;
// Frameworks directory/folder
err = FindFolder (kSystemDomain, kFrameworksFolderType, false,
&fileRefParam.ioVRefNum, &fileRefParam.ioDirID);
if (noErr != err) {
DebugStr ("\pCould not find frameworks folder");
return err;
}
err = PBMakeFSRefSync (&fileRefParam); // make FSRef for folder
if (noErr != err) {
DebugStr ("\pCould make FSRef to frameworks folder");
return err;
}
// create URL to folder
bundleURLOpenGL = CFURLCreateFromFSRef (kCFAllocatorDefault,
&fileRef);
if (!bundleURLOpenGL) {
DebugStr ("\pCould create OpenGL Framework bundle URL");
return paramErr;
}
// create ref to GL's bundle
gBundleRefOpenGL = CFBundleCreate (kCFAllocatorDefault,
bundleURLOpenGL);
if (!gBundleRefOpenGL) {
DebugStr ("\pCould not create OpenGL Framework bundle");
return paramErr;
}
CFRelease (bundleURLOpenGL); // release created bundle
// if the code was successfully loaded, look for our function.
if (!CFBundleLoadExecutable (gBundleRefOpenGL)) {
DebugStr ("\pCould not load MachO executable");
return paramErr;
}
return err;
}
// -------------------------
void aglDellocEntryPoints (void)
{
if (gBundleRefOpenGL != NULL) {
// unload the bundle's code.
CFBundleUnloadExecutable (gBundleRefOpenGL);
CFRelease (gBundleRefOpenGL);
gBundleRefOpenGL = NULL;
}
}
// -------------------------
void * aglGetProcAddress (char * pszProc)
{
return CFBundleGetFunctionPointerForName (gBundleRefOpenGL,
CFStringCreateWithCStringNoCopy (NULL,
pszProc, CFStringGetSystemEncoding (), NULL));
}
// ==========================
// Specific missing entry point support code
static OSStatus InitMissingCFMEntryPoints (void);
static void DeallocMissingCFMEntryPoints (void);
// function pointer typedefs
// OpenGL 1.2
typedef void
(*glBlendColorProcPtr)(GLclampf red, GLclampf green,
GLclampf blue, GLclampf alpha);
typedef void
(*glBlendEquationProcPtr)(GLenum mode);
typedef void
(*glDrawRangeElementsProcPtr)(GLenum mode, GLuint start,
GLuint end, GLsizei count, GLenum type,
const GLvoid *indices);
typedef void
(*glTexImage3DProcPtr)(GLenum target, GLint level,
GLenum internalFormat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type,
const GLvoid *pixels);
typedef void
(*glTexSubImage3DProcPtr)(GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width,
GLsizei height, GLsizei depth, GLenum format, GLenum type,
const GLvoid *pixels);
typedef void
(*glCopyTexSubImage3DProcPtr)(GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLint x, GLint y, GLsizei width, GLsizei height);
// OpenGL 1.3
typedef void
(*glLoadTransposeMatrixfProcPtr)(const GLfloat *);
typedef void
(*glLoadTransposeMatrixdProcPtr)(const GLdouble *);
typedef void
(*glMultTransposeMatrixfProcPtr)(const GLfloat *);
typedef void
(*glMultTransposeMatrixdProcPtr)(const GLdouble *);
typedef void
(*glActiveTextureProcPtr) (GLenum);
typedef void
(*glClientActiveTextureProcPtr)(GLenum);
typedef void
(*glMultiTexCoord1dProcPtr)(GLenum, GLdouble);
typedef void
(*glMultiTexCoord1dvProcPtr)(GLenum, const GLdouble *);
typedef void
(*glMultiTexCoord1fProcPtr)(GLenum, GLfloat);
typedef void
(*glMultiTexCoord1fvProcPtr)(GLenum, const GLfloat *);
typedef void
(*glMultiTexCoord1iProcPtr)(GLenum, GLint);
typedef void
(*glMultiTexCoord1ivProcPtr)(GLenum, const GLint *);
typedef void
(*glMultiTexCoord1sProcPtr)(GLenum, GLshort);
typedef void
(*glMultiTexCoord1svProcPtr)(GLenum, const GLshort *);
typedef void
(*glMultiTexCoord2dProcPtr)(GLenum, GLdouble, GLdouble);
typedef void
(*glMultiTexCoord2dvProcPtr)(GLenum, const GLdouble *);
typedef void
(*glMultiTexCoord2fProcPtr)(GLenum, GLfloat, GLfloat);
typedef void
(*glMultiTexCoord2fvProcPtr)(GLenum, const GLfloat *);
typedef void
(*glMultiTexCoord2iProcPtr)(GLenum, GLint, GLint);
typedef void
(*glMultiTexCoord2ivProcPtr)(GLenum, const GLint *);
typedef void
(*glMultiTexCoord2sProcPtr)(GLenum, GLshort, GLshort);
typedef void
(*glMultiTexCoord2svProcPtr)(GLenum, const GLshort *);
typedef void
(*glMultiTexCoord3dProcPtr)(GLenum, GLdouble, GLdouble,
GLdouble);
typedef void
(*glMultiTexCoord3dvProcPtr)(GLenum, const GLdouble *);
typedef void
(*glMultiTexCoord3fProcPtr)(GLenum, GLfloat, GLfloat, GLfloat);
typedef void
(*glMultiTexCoord3fvProcPtr)(GLenum, const GLfloat *);
typedef void
(*glMultiTexCoord3iProcPtr)(GLenum, GLint, GLint, GLint);
typedef void
(*glMultiTexCoord3ivProcPtr)(GLenum, const GLint *);
typedef void
(*glMultiTexCoord3sProcPtr)(GLenum, GLshort, GLshort, GLshort);
typedef void
(*glMultiTexCoord3svProcPtr)(GLenum, const GLshort *);
typedef void
(*glMultiTexCoord4dProcPtr)(GLenum, GLdouble, GLdouble,
GLdouble, GLdouble);
typedef void
(*glMultiTexCoord4dvProcPtr)(GLenum, const GLdouble *);
typedef void
(*glMultiTexCoord4fProcPtr)(GLenum, GLfloat, GLfloat, GLfloat,
GLfloat);
typedef void
(*glMultiTexCoord4fvProcPtr)(GLenum, const GLfloat *);
typedef void
(*glMultiTexCoord4iProcPtr)(GLenum, GLint, GLint, GLint, GLint);
typedef void
(*glMultiTexCoord4ivProcPtr)(GLenum, const GLint *);
typedef void
(*glMultiTexCoord4sProcPtr)(GLenum, GLshort, GLshort, GLshort,
GLshort);
typedef void
(*glMultiTexCoord4svProcPtr)(GLenum, const GLshort *);
typedef void
(*glCompressedTexImage3DProcPtr)(GLenum, GLint, GLenum, GLsizei,
GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
typedef void
(*glCompressedTexImage2DProcPtr)(GLenum, GLint, GLenum, GLsizei,
GLsizei, GLint, GLsizei, const GLvoid *);
typedef void
(*glCompressedTexImage1DProcPtr)(GLenum, GLint, GLenum, GLsizei,
GLint, GLsizei, const GLvoid *);
typedef void
(*glCompressedTexSubImage3DProcPtr)(GLenum, GLint, GLint, GLint,
GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei,
const GLvoid *);
typedef void
(*glCompressedTexSubImage2DProcPtr)(GLenum, GLint, GLint, GLint,
GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
typedef void
(*glCompressedTexSubImage1DProcPtr)(GLenum, GLint, GLint,
GLsizei, GLenum, GLsizei, const GLvoid *);
typedef void
(*glGetCompressedTexImageProcPtr)(GLenum, GLint, void *);
typedef void
(*glSampleCoverageProcPtr)(GLclampf, GLboolean);
typedef void
(*glSamplePassProcPtr)(GLenum);
// glu
typedef void
(*gluNurbsCallbackDataEXTProcPtr)(GLUnurbs* nurb,
GLvoid* userData);
// GL_ARB_transpose_matrix
typedef void
(*glLoadTransposeMatrixfARBProcPtr)(const GLfloat *m);
typedef void
(*glLoadTransposeMatrixdARBProcPtr)(const GLdouble *m);
typedef void
(*glMultTransposeMatrixfARBProcPtr)(const GLfloat *m);
typedef void
(*glMultTransposeMatrixdARBProcPtr)(const GLdouble *m);
// GL_ARB_texture_compression
typedef void
(*glCompressedTexImage3DARBProcPtr)(GLenum target, GLint level,
GLenum internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLsizei imageSize,
const GLvoid *data);
typedef void
(*glCompressedTexImage2DARBProcPtr)(GLenum target, GLint level,
GLenum internalformat, GLsizei width, GLsizei height,
GLint border, GLsizei imageSize, const GLvoid *data);
typedef void
(*glCompressedTexImage1DARBProcPtr)(GLenum target, GLint level,
GLenum internalformat, GLsizei width, GLint border,
GLsizei imageSize, const GLvoid *data);
typedef void
(*glCompressedTexSubImage3DARBProcPtr)(GLenum target,
GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format,
GLsizei imageSize, const GLvoid *data);
typedef void
(*glCompressedTexSubImage2DARBProcPtr)(GLenum target,
GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLsizei imageSize,
const GLvoid *data);
typedef void
(*glCompressedTexSubImage1DARBProcPtr)(GLenum target,
GLint level, GLint xoffset, GLsizei width, GLenum format,
GLsizei imageSize, const GLvoid *data);
typedef void
(*glGetCompressedTexImageARBProcPtr)(GLenum target, GLint level,
void *img);
// GL_ARB_multisample
typedef void
(*glSampleCoverageARBProcPtr)(GLclampf value, GLboolean invert);
typedef void
(*glSamplePassARBProcPtr)(GLenum mode);
// GL_EXT_paletted_texture
typedef void
(*glColorTableEXTProcPtr)(GLenum target, GLenum internalformat,
GLsizei width, GLenum format, GLenum type,
const GLvoid *table);
typedef void
(*glColorSubTableEXTProcPtr)(GLenum target, GLsizei start,
GLsizei count, GLenum format, GLenum type,
const GLvoid *data);
typedef void
(*glGetColorTableEXTProcPtr)(GLenum target, GLenum format,
GLenum type, GLvoid *table);
typedef void
(*glGetColorTableParameterfvEXTProcPtr)(GLenum target,
GLenum pname, GLfloat *params);
typedef void
(*glGetColorTableParameterivEXTProcPtr)(GLenum target,
GLenum pname, GLint *params);
// GL_EXT_secondary_color
typedef void
(*glSecondaryColor3bEXTProcPtr)(GLbyte red, GLbyte green,
GLbyte blue);
typedef void
(*glSecondaryColor3bvEXTProcPtr)(const GLbyte *v);
typedef void
(*glSecondaryColor3dEXTProcPtr)(GLdouble red, GLdouble green,
GLdouble blue);
typedef void
(*glSecondaryColor3dvEXTProcPtr)(const GLdouble *v);
typedef void
(*glSecondaryColor3fEXTProcPtr)(GLfloat red, GLfloat green,
GLfloat blue);
typedef void
(*glSecondaryColor3fvEXTProcPtr)(const GLfloat *v);
typedef void
(*glSecondaryColor3iEXTProcPtr)(GLint red, GLint green,
GLint blue);
typedef void
(*glSecondaryColor3ivEXTProcPtr)(const GLint *v);
typedef void
(*glSecondaryColor3sEXTProcPtr)(GLshort red, GLshort green,
GLshort blue);
typedef void
(*glSecondaryColor3svEXTProcPtr)(const GLshort *v);
typedef void
(*glSecondaryColor3ubEXTProcPtr)(GLubyte red, GLubyte green,
GLubyte blue);
typedef void
(*glSecondaryColor3ubvEXTProcPtr)(const GLubyte *v);
typedef void
(*glSecondaryColor3uiEXTProcPtr)(GLuint red, GLuint green,
GLuint blue);
typedef void
(*glSecondaryColor3uivEXTProcPtr)(const GLuint *v);
typedef void
(*glSecondaryColor3usEXTProcPtr)(GLushort red, GLushort green,
GLushort blue);
typedef void
(*glSecondaryColor3usvEXTProcPtr)(const GLushort *v);
typedef void
(*glSecondaryColorPointerEXTProcPtr)(GLint size, GLenum type,
GLsizei stride, GLvoid *pointer);
// GL_ATIX_pn_triangles
typedef void
(*glPNTrianglesiATIXProcPtr)(GLenum pname, GLint param);
typedef void
(*glPNTrianglesfATIXProcPtr)(GLenum pname, GLfloat param);
// GL_NV_register_combiners
typedef void
(*glCombinerParameterfvNVProcPtr)(GLenum pname,
const GLfloat *params);
typedef void
(*glCombinerParameterfNVProcPtr)(GLenum pname, GLfloat param);
typedef void
(*glCombinerParameterivNVProcPtr)(GLenum pname,
const GLint *params);
typedef void
(*glCombinerParameteriNVProcPtr)(GLenum pname, GLint param);
typedef void
(*glCombinerInputNVProcPtr)(GLenum stage, GLenum portion,
GLenum variable, GLenum input, GLenum mapping,
GLenum componentUsage);
typedef void
(*glCombinerOutputNVProcPtr)(GLenum stage, GLenum portion,
GLenum abOutput, GLenum cdOutput, GLenum sumOutput,
GLenum scale, GLenum bias, GLboolean abDotProduct,
GLboolean cdDotProduct, GLboolean muxSum);
typedef void
(*glFinalCombinerInputNVProcPtr)(GLenum variable, GLenum input,
GLenum mapping, GLenum componentUsage);
typedef void
(*glGetCombinerInputParameterfvNVProcPtr)(GLenum stage,
GLenum portion, GLenum variable, GLenum pname,
GLfloat *params);
typedef void
(*glGetCombinerInputParameterivNVProcPtr)(GLenum stage,
GLenum portion, GLenum variable, GLenum pname, GLint *params);
typedef void
(*glGetCombinerOutputParameterfvNVProcPtr)(GLenum stage,
GLenum portion, GLenum pname, GLfloat *params);
typedef void
(*glGetCombinerOutputParameterivNVProcPtr)(GLenum stage,
GLenum portion, GLenum pname, GLint *params);
typedef void
(*glGetFinalCombinerInputParameterfvNVProcPtr)(GLenum variable,
GLenum pname, GLfloat *params);
typedef void
(*glGetFinalCombinerInputParameterivNVProcPtr)(GLenum variable,
GLenum pname, GLint *params);
// function pointer declarations
// Note: One could use the exact entry point names but would have
// multiply defined symbols in Mac OS X 10.2 and later
// pfXXX is chosen to represent 'pointer to function'
// OpenGL 1.2
glBlendColorProcPtr pfglBlendColor = NULL;
glBlendEquationProcPtr pfglBlendEquation = NULL;
glDrawRangeElementsProcPtr pfglDrawRangeElements = NULL;
glTexImage3DProcPtr pfglTexImage3D = NULL;
glTexSubImage3DProcPtr pfglTexSubImage3D = NULL;
glCopyTexSubImage3DProcPtr pfglCopyTexSubImage3D = NULL;
// OpenGL 1.3
glLoadTransposeMatrixfProcPtr pfglLoadTransposeMatrixf = NULL;
glLoadTransposeMatrixdProcPtr pfglLoadTransposeMatrixd = NULL;
glMultTransposeMatrixfProcPtr pfglMultTransposeMatrixf = NULL;
glMultTransposeMatrixdProcPtr pfglMultTransposeMatrixd = NULL;
glActiveTextureProcPtr pfglActiveTexture = NULL;
glClientActiveTextureProcPtr pfglClientActiveTexture = NULL;
glMultiTexCoord1dProcPtr pfglMultiTexCoord1d = NULL;
glMultiTexCoord1dvProcPtr pfglMultiTexCoord1dv = NULL;
glMultiTexCoord1fProcPtr pfglMultiTexCoord1f = NULL;
glMultiTexCoord1fvProcPtr pfglMultiTexCoord1fv = NULL;
glMultiTexCoord1iProcPtr pfglMultiTexCoord1i = NULL;
glMultiTexCoord1ivProcPtr pfglMultiTexCoord1iv = NULL;
glMultiTexCoord1sProcPtr pfglMultiTexCoord1s = NULL;
glMultiTexCoord1svProcPtr pfglMultiTexCoord1sv = NULL;
glMultiTexCoord2dProcPtr pfglMultiTexCoord2d = NULL;
glMultiTexCoord2dvProcPtr pfglMultiTexCoord2dv = NULL;
glMultiTexCoord2fProcPtr pfglMultiTexCoord2f = NULL;
glMultiTexCoord2fvProcPtr pfglMultiTexCoord2fv = NULL;
glMultiTexCoord2iProcPtr pfglMultiTexCoord2i = NULL;
glMultiTexCoord2ivProcPtr pfglMultiTexCoord2iv = NULL;
glMultiTexCoord2sProcPtr pfglMultiTexCoord2s = NULL;
glMultiTexCoord2svProcPtr pfglMultiTexCoord2sv = NULL;
glMultiTexCoord3dProcPtr pfglMultiTexCoord3d = NULL;
glMultiTexCoord3dvProcPtr pfglMultiTexCoord3dv = NULL;
glMultiTexCoord3fProcPtr pfglMultiTexCoord3f = NULL;
glMultiTexCoord3fvProcPtr pfglMultiTexCoord3fv = NULL;
glMultiTexCoord3iProcPtr pfglMultiTexCoord3i = NULL;
glMultiTexCoord3ivProcPtr pfglMultiTexCoord3iv = NULL;
glMultiTexCoord3sProcPtr pfglMultiTexCoord3s = NULL;
glMultiTexCoord3svProcPtr pfglMultiTexCoord3sv = NULL;
glMultiTexCoord4dProcPtr pfglMultiTexCoord4d = NULL;
glMultiTexCoord4dvProcPtr pfglMultiTexCoord4dv = NULL;
glMultiTexCoord4fProcPtr pfglMultiTexCoord4f = NULL;
glMultiTexCoord4fvProcPtr pfglMultiTexCoord4fv = NULL;
glMultiTexCoord4iProcPtr pfglMultiTexCoord4i = NULL;
glMultiTexCoord4ivProcPtr pfglMultiTexCoord4iv = NULL;
glMultiTexCoord4sProcPtr pfglMultiTexCoord4s = NULL;
glMultiTexCoord4svProcPtr pfglMultiTexCoord4sv = NULL;
glCompressedTexImage3DProcPtr pfglCompressedTexImage3D = NULL;
glCompressedTexImage2DProcPtr pfglCompressedTexImage2D = NULL;
glCompressedTexImage1DProcPtr pfglCompressedTexImage1D = NULL;
glCompressedTexSubImage3DProcPtr pfglCompressedTexSubImage3D = NULL;
glCompressedTexSubImage2DProcPtr pfglCompressedTexSubImage2D = NULL;
glCompressedTexSubImage1DProcPtr pfglCompressedTexSubImage1D = NULL;
glGetCompressedTexImageProcPtr pfglGetCompressedTexImage = NULL;
glSampleCoverageProcPtr pfglSampleCoverage = NULL;
glSamplePassProcPtr pfglSamplePass = NULL;
// glu
gluNurbsCallbackDataEXTProcPtr pfgluNurbsCallbackDataEXT = NULL;
// GL_ARB_transpose_matrix
glLoadTransposeMatrixfARBProcPtr pfglLoadTransposeMatrixfARB = NULL;
glLoadTransposeMatrixdARBProcPtr pfglLoadTransposeMatrixdARB = NULL;
glMultTransposeMatrixfARBProcPtr pfglMultTransposeMatrixfARB = NULL;
glMultTransposeMatrixdARBProcPtr pfglMultTransposeMatrixdARB = NULL;
// GL_ARB_texture_compression
glCompressedTexImage3DARBProcPtr pfglCompressedTexImage3DARB = NULL;
glCompressedTexImage2DARBProcPtr pfglCompressedTexImage2DARB = NULL;
glCompressedTexImage1DARBProcPtr pfglCompressedTexImage1DARB = NULL;
glCompressedTexSubImage3DARBProcPtr
pfglCompressedTexSubImage3DARB = NULL;
glCompressedTexSubImage2DARBProcPtr
pfglCompressedTexSubImage2DARB = NULL;
glCompressedTexSubImage1DARBProcPtr
pfglCompressedTexSubImage1DARB = NULL;
glGetCompressedTexImageARBProcPtr
pfglGetCompressedTexImageARB = NULL;
// GL_ARB_multisample
glSampleCoverageARBProcPtr pfglSampleCoverageARB = NULL;
glSamplePassARBProcPtr pfglSamplePassARB = NULL;
// GL_EXT_paletted_texture
glColorTableEXTProcPtr pfglColorTableEXT = NULL;
glColorSubTableEXTProcPtr pfglColorSubTableEXT = NULL;
glGetColorTableEXTProcPtr pfglGetColorTableEXT = NULL;
glGetColorTableParameterivEXTProcPtr
pfglGetColorTableParameterivEXT = NULL;
glGetColorTableParameterfvEXTProcPtr
pfglGetColorTableParameterfvEXT = NULL;
// GL_EXT_secondary_color
glSecondaryColor3bEXTProcPtr pfglSecondaryColor3bEXT = NULL;
glSecondaryColor3bvEXTProcPtr pfglSecondaryColor3bvEXT = NULL;
glSecondaryColor3dEXTProcPtr pfglSecondaryColor3dEXT = NULL;
glSecondaryColor3dvEXTProcPtr pfglSecondaryColor3dvEXT = NULL;
glSecondaryColor3fEXTProcPtr pfglSecondaryColor3fEXT = NULL;
glSecondaryColor3fvEXTProcPtr pfglSecondaryColor3fvEXT = NULL;
glSecondaryColor3iEXTProcPtr pfglSecondaryColor3iEXT = NULL;
glSecondaryColor3ivEXTProcPtr pfglSecondaryColor3ivEXT = NULL;
glSecondaryColor3sEXTProcPtr pfglSecondaryColor3sEXT = NULL;
glSecondaryColor3svEXTProcPtr pfglSecondaryColor3svEXT = NULL;
glSecondaryColor3ubEXTProcPtr pfglSecondaryColor3ubEXT = NULL;
glSecondaryColor3ubvEXTProcPtr pfglSecondaryColor3ubvEXT = NULL;
glSecondaryColor3uiEXTProcPtr pfglSecondaryColor3uiEXT = NULL;
glSecondaryColor3uivEXTProcPtr pfglSecondaryColor3uivEXT = NULL;
glSecondaryColor3usEXTProcPtr pfglSecondaryColor3usEXT = NULL;
glSecondaryColor3usvEXTProcPtr pfglSecondaryColor3usvEXT = NULL;
glSecondaryColorPointerEXTProcPtr
pfglSecondaryColorPointerEXT = NULL;
// GL_ATIX_pn_triangles
glPNTrianglesiATIXProcPtr pfglPNTrianglesiATIX = NULL;
glPNTrianglesfATIXProcPtr pfglPNTrianglesfATIX = NULL;
// GL_NV_register_combiners
glCombinerParameterfvNVProcPtr pfglCombinerParameterfvNV = NULL;
glCombinerParameterfNVProcPtr pfglCombinerParameterfNV = NULL;
glCombinerParameterivNVProcPtr pfglCombinerParameterivNV = NULL;
glCombinerParameteriNVProcPtr pfglCombinerParameteriNV = NULL;
glCombinerInputNVProcPtr pfglCombinerInputNV = NULL;
glCombinerOutputNVProcPtr pfglCombinerOutputNV = NULL;
glFinalCombinerInputNVProcPtr pfglFinalCombinerInputNV = NULL;
glGetCombinerInputParameterfvNVProcPtr
pfglGetCombinerInputParameterfvNV = NULL;
glGetCombinerInputParameterivNVProcPtr
pfglGetCombinerInputParameterivNV = NULL;
glGetCombinerOutputParameterfvNVProcPtr
pfglGetCombinerOutputParameterfvNV = NULL;
glGetCombinerOutputParameterivNVProcPtr
pfglGetCombinerOutputParameterivNV = NULL;
glGetFinalCombinerInputParameterfvNVProcPtr
pfglGetFinalCombinerInputParameterfvNV = NULL;
glGetFinalCombinerInputParameterivNVProcPtr
pfglGetFinalCombinerInputParameterivNV = NULL;
// -------------------------
static OSStatus InitMissingCFMEntryPoints (void)
{
OSStatus err = aglInitEntryPoints (); //init bundle
if (noErr == err) {
pfglBlendColor = (glBlendColorProcPtr)
aglGetProcAddress ("glBlendColor");
pfglBlendEquation = (glBlendEquationProcPtr)
aglGetProcAddress("glBlendEquation");
pfglDrawRangeElements = (glDrawRangeElementsProcPtr)
aglGetProcAddress("glDrawRangeElements");
pfglTexImage3D = (glTexImage3DProcPtr)
aglGetProcAddress ("glTexImage3D");
pfglTexSubImage3D = (glTexSubImage3DProcPtr)
aglGetProcAddress ("glTexSubImage3D");
pfglCopyTexSubImage3D = (glCopyTexSubImage3DProcPtr)
aglGetProcAddress ("glCopyTexSubImage3D");
pfglLoadTransposeMatrixf = (glLoadTransposeMatrixfProcPtr)
aglGetProcAddress ("glLoadTransposeMatrixf");
pfglLoadTransposeMatrixd = (glLoadTransposeMatrixdProcPtr)
aglGetProcAddress ("glLoadTransposeMatrixd");
pfglMultTransposeMatrixf = (glMultTransposeMatrixfProcPtr)
aglGetProcAddress ("glMultTransposeMatrixf");
pfglMultTransposeMatrixd = (glMultTransposeMatrixdProcPtr)
aglGetProcAddress ("glMultTransposeMatrixd");
pfglActiveTexture = (glActiveTextureProcPtr)
aglGetProcAddress ("glActiveTexture");
pfglClientActiveTexture = (glClientActiveTextureProcPtr)
aglGetProcAddress ("glClientActiveTexture");
pfglMultiTexCoord1d = (glMultiTexCoord1dProcPtr)
aglGetProcAddress ("glMultiTexCoord1d");
pfglMultiTexCoord1dv = (glMultiTexCoord1dvProcPtr)
aglGetProcAddress ("glMultiTexCoord1dv");
pfglMultiTexCoord1f = (glMultiTexCoord1fProcPtr)
aglGetProcAddress ("glMultiTexCoord1f");
pfglMultiTexCoord1fv = (glMultiTexCoord1fvProcPtr)
aglGetProcAddress ("glMultiTexCoord1fv");
pfglMultiTexCoord1i = (glMultiTexCoord1iProcPtr)
aglGetProcAddress ("glMultiTexCoord1i");
pfglMultiTexCoord1iv = (glMultiTexCoord1ivProcPtr)
aglGetProcAddress ("glMultiTexCoord1iv");
pfglMultiTexCoord1s = (glMultiTexCoord1sProcPtr)
aglGetProcAddress ("glMultiTexCoord1s");
pfglMultiTexCoord1sv = (glMultiTexCoord1svProcPtr)
aglGetProcAddress ("glMultiTexCoord1sv");
pfglMultiTexCoord2d = (glMultiTexCoord2dProcPtr)
aglGetProcAddress ("glMultiTexCoord2d");
pfglMultiTexCoord2dv = (glMultiTexCoord2dvProcPtr)
aglGetProcAddress ("glMultiTexCoord2dv");
pfglMultiTexCoord2f = (glMultiTexCoord2fProcPtr)
aglGetProcAddress ("glMultiTexCoord2f");
pfglMultiTexCoord2fv = (glMultiTexCoord2fvProcPtr)
aglGetProcAddress ("glMultiTexCoord2fv");
pfglMultiTexCoord2i = (glMultiTexCoord2iProcPtr)
aglGetProcAddress ("glMultiTexCoord2i");
pfglMultiTexCoord2iv = (glMultiTexCoord2ivProcPtr)
aglGetProcAddress ("glMultiTexCoord2iv");
pfglMultiTexCoord2s = (glMultiTexCoord2sProcPtr)
aglGetProcAddress ("glMultiTexCoord2s");
pfglMultiTexCoord2sv = (glMultiTexCoord2svProcPtr)
aglGetProcAddress ("glMultiTexCoord2sv");
pfglMultiTexCoord3d = (glMultiTexCoord3dProcPtr)
aglGetProcAddress ("glMultiTexCoord3d");
pfglMultiTexCoord3dv = (glMultiTexCoord3dvProcPtr)
aglGetProcAddress ("glMultiTexCoord3dv");
pfglMultiTexCoord3f = (glMultiTexCoord3fProcPtr)
aglGetProcAddress ("glMultiTexCoord3f");
pfglMultiTexCoord3fv = (glMultiTexCoord3fvProcPtr)
aglGetProcAddress ("glMultiTexCoord3fv");
pfglMultiTexCoord3i = (glMultiTexCoord3iProcPtr)
aglGetProcAddress ("glMultiTexCoord3i");
pfglMultiTexCoord3iv = (glMultiTexCoord3ivProcPtr)
aglGetProcAddress ("glMultiTexCoord3iv");
pfglMultiTexCoord3s = (glMultiTexCoord3sProcPtr)
aglGetProcAddress ("glMultiTexCoord3s");
pfglMultiTexCoord3sv = (glMultiTexCoord3svProcPtr)
aglGetProcAddress ("glMultiTexCoord3sv");
pfglMultiTexCoord4d = (glMultiTexCoord4dProcPtr)
aglGetProcAddress ("glMultiTexCoord4d");
pfglMultiTexCoord4dv = (glMultiTexCoord4dvProcPtr)
aglGetProcAddress ("glMultiTexCoord4dv");
pfglMultiTexCoord4f = (glMultiTexCoord4fProcPtr)
aglGetProcAddress ("glMultiTexCoord4f");
pfglMultiTexCoord4fv = (glMultiTexCoord4fvProcPtr)
aglGetProcAddress ("glMultiTexCoord4fv");
pfglMultiTexCoord4i = (glMultiTexCoord4iProcPtr)
aglGetProcAddress ("glMultiTexCoord4i");
pfglMultiTexCoord4iv = (glMultiTexCoord4ivProcPtr)
aglGetProcAddress ("glMultiTexCoord4iv");
pfglMultiTexCoord4s = (glMultiTexCoord4sProcPtr)
aglGetProcAddress ("glMultiTexCoord4s");
pfglMultiTexCoord4sv = (glMultiTexCoord4svProcPtr)
aglGetProcAddress ("glMultiTexCoord4sv");
pfglCompressedTexImage3D = (glCompressedTexImage3DProcPtr)
aglGetProcAddress ("glCompressedTexImage3D");
pfglCompressedTexImage2D = (glCompressedTexImage2DProcPtr)
aglGetProcAddress ("glCompressedTexImage2D");
pfglCompressedTexImage1D = (glCompressedTexImage1DProcPtr)
aglGetProcAddress ("glCompressedTexImage1D");
pfglCompressedTexSubImage3D =
(glCompressedTexSubImage3DProcPtr)
aglGetProcAddress ("glCompressedTexSubImage3D");
pfglCompressedTexSubImage2D =
(glCompressedTexSubImage2DProcPtr)
aglGetProcAddress ("glCompressedTexSubImage2D");
pfglCompressedTexSubImage1D =
(glCompressedTexSubImage1DProcPtr)
aglGetProcAddress ("glCompressedTexSubImage1D");
pfglGetCompressedTexImage = (glGetCompressedTexImageProcPtr)
aglGetProcAddress ("glGetCompressedTexImage");
pfglSampleCoverage = (glSampleCoverageProcPtr)
aglGetProcAddress ("glSampleCoverage");
pfglSamplePass = (glSamplePassProcPtr)
aglGetProcAddress ("glSamplePass");
pfgluNurbsCallbackDataEXT = (gluNurbsCallbackDataEXTProcPtr)
aglGetProcAddress ("gluNurbsCallbackDataEXT");
pfglLoadTransposeMatrixfARB =
(glLoadTransposeMatrixfARBProcPtr)
aglGetProcAddress ("glLoadTransposeMatrixfARB");
pfglLoadTransposeMatrixdARB =
(glLoadTransposeMatrixdARBProcPtr)
aglGetProcAddress ("glLoadTransposeMatrixdARB");
pfglMultTransposeMatrixfARB =
(glMultTransposeMatrixfARBProcPtr)
aglGetProcAddress ("glMultTransposeMatrixfARB");
pfglMultTransposeMatrixdARB =
(glMultTransposeMatrixdARBProcPtr)
aglGetProcAddress ("glMultTransposeMatrixdARB");
pfglCompressedTexImage3DARB =
(glCompressedTexImage3DARBProcPtr)
aglGetProcAddress ("glCompressedTexImage3DARB");
pfglCompressedTexImage2DARB =
(glCompressedTexImage2DARBProcPtr)
aglGetProcAddress ("glCompressedTexImage2DARB");
pfglCompressedTexImage1DARB =
(glCompressedTexImage1DARBProcPtr)
aglGetProcAddress ("glCompressedTexImage1DARB");
pfglCompressedTexSubImage3DARB =
(glCompressedTexSubImage3DARBProcPtr)
aglGetProcAddress ("glCompressedTexSubImage3DARB");
pfglCompressedTexSubImage2DARB =
(glCompressedTexSubImage2DARBProcPtr)
aglGetProcAddress ("glCompressedTexSubImage2DARB");
pfglCompressedTexSubImage1DARB =
(glCompressedTexSubImage1DARBProcPtr)
aglGetProcAddress ("glCompressedTexSubImage1DARB");
pfglGetCompressedTexImageARB =
(glGetCompressedTexImageARBProcPtr)
aglGetProcAddress ("glGetCompressedTexImageARB");
pfglSampleCoverageARB = (glSampleCoverageARBProcPtr)
aglGetProcAddress ("glSampleCoverageARB");
pfglSamplePassARB = (glSamplePassARBProcPtr)
aglGetProcAddress ("glSamplePassARB");
pfglColorTableEXT = (glColorTableEXTProcPtr)
aglGetProcAddress ("glColorTableEXT");
pfglColorSubTableEXT = (glColorSubTableEXTProcPtr)
aglGetProcAddress ("glColorSubTableEXT");
pfglGetColorTableEXT = (glGetColorTableEXTProcPtr)
aglGetProcAddress ("glGetColorTableEXT");
pfglGetColorTableParameterivEXT =
(glGetColorTableParameterivEXTProcPtr)
aglGetProcAddress ("glGetColorTableParameterivEXT");
pfglGetColorTableParameterfvEXT =
(glGetColorTableParameterfvEXTProcPtr)
aglGetProcAddress ("glGetColorTableParameterfvEXT");
pfglSecondaryColor3bEXT = (glSecondaryColor3bEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3bEXT");
pfglSecondaryColor3bvEXT = (glSecondaryColor3bvEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3bvEXT");
pfglSecondaryColor3dEXT = (glSecondaryColor3dEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3dEXT");
pfglSecondaryColor3dvEXT = (glSecondaryColor3dvEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3dvEXT");
pfglSecondaryColor3fEXT = (glSecondaryColor3fEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3fEXT");
pfglSecondaryColor3fvEXT = (glSecondaryColor3fvEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3fvEXT");
pfglSecondaryColor3iEXT = (glSecondaryColor3iEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3iEXT");
pfglSecondaryColor3ivEXT = (glSecondaryColor3ivEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3ivEXT");
pfglSecondaryColor3sEXT = (glSecondaryColor3sEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3sEXT");
pfglSecondaryColor3svEXT = (glSecondaryColor3svEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3svEXT");
pfglSecondaryColor3ubEXT = (glSecondaryColor3ubEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3ubEXT");
pfglSecondaryColor3ubvEXT = (glSecondaryColor3ubvEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3ubvEXT");
pfglSecondaryColor3uiEXT = (glSecondaryColor3uiEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3uiEXT");
pfglSecondaryColor3uivEXT = (glSecondaryColor3uivEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3uivEXT");
pfglSecondaryColor3usEXT = (glSecondaryColor3usEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3usEXT");
pfglSecondaryColor3usvEXT = (glSecondaryColor3usvEXTProcPtr)
aglGetProcAddress ("glSecondaryColor3usvEXT");
pfglSecondaryColorPointerEXT =
(glSecondaryColorPointerEXTProcPtr)
aglGetProcAddress ("glSecondaryColorPointerEXT");
pfglPNTrianglesiATIX = (glPNTrianglesiATIXProcPtr)
aglGetProcAddress ("glPNTrianglesiATIX");
pfglPNTrianglesfATIX = (glPNTrianglesfATIXProcPtr)
aglGetProcAddress ("glPNTrianglesfATIX");
pfglCombinerParameterfvNV = (glCombinerParameterfvNVProcPtr)
aglGetProcAddress ("glCombinerParameterfvNV");
pfglCombinerParameterfNV = (glCombinerParameterfNVProcPtr)
aglGetProcAddress ("glCombinerParameterfNV");
pfglCombinerParameterivNV = (glCombinerParameterivNVProcPtr)
aglGetProcAddress ("glCombinerParameterivNV");
pfglCombinerParameteriNV = (glCombinerParameteriNVProcPtr)
aglGetProcAddress ("glCombinerParameteriNV");
pfglCombinerInputNV = (glCombinerInputNVProcPtr)
aglGetProcAddress ("glCombinerInputNV");
pfglCombinerOutputNV = (glCombinerOutputNVProcPtr)
aglGetProcAddress ("glCombinerOutputNV");
pfglFinalCombinerInputNV = (glFinalCombinerInputNVProcPtr)
aglGetProcAddress ("glFinalCombinerInputNV");
pfglGetCombinerInputParameterfvNV =
(glGetCombinerInputParameterfvNVProcPtr)
aglGetProcAddress ("glGetCombinerInputParameterfvNV");
pfglGetCombinerInputParameterivNV =
(glGetCombinerInputParameterivNVProcPtr)
aglGetProcAddress ("glGetCombinerInputParameterivNV");
pfglGetCombinerOutputParameterfvNV =
(glGetCombinerOutputParameterfvNVProcPtr)
aglGetProcAddress ("glGetCombinerOutputParameterfvNV");
pfglGetCombinerOutputParameterivNV =
(glGetCombinerOutputParameterivNVProcPtr)
aglGetProcAddress ("glGetCombinerOutputParameterivNV");
pfglGetFinalCombinerInputParameterfvNV =
(glGetFinalCombinerInputParameterfvNVProcPtr)
aglGetProcAddress
("glGetFinalCombinerInputParameterfvNV");
pfglGetFinalCombinerInputParameterivNV =
(glGetFinalCombinerInputParameterivNVProcPtr)
aglGetProcAddress
("glGetFinalCombinerInputParameterivNV");
}
return err;
}
// -------------------------
static void DeallocMissingCFMEntryPoints (void)
{
pfglBlendColor = NULL;
pfglBlendEquation = NULL;
pfglDrawRangeElements = NULL;;
pfglTexImage3D = NULL;
pfglTexSubImage3D = NULL;
pfglCopyTexSubImage3D = NULL;
pfglLoadTransposeMatrixf = NULL;
pfglLoadTransposeMatrixd = NULL;
pfglMultTransposeMatrixf = NULL;
pfglMultTransposeMatrixd = NULL;
pfglActiveTexture = NULL;
pfglClientActiveTexture = NULL;
pfglMultiTexCoord1d = NULL;
pfglMultiTexCoord1dv = NULL;
pfglMultiTexCoord1f = NULL;
pfglMultiTexCoord1fv = NULL;
pfglMultiTexCoord1i = NULL;
pfglMultiTexCoord1iv = NULL;
pfglMultiTexCoord1s = NULL;
pfglMultiTexCoord1sv = NULL;
pfglMultiTexCoord2d = NULL;
pfglMultiTexCoord2dv = NULL;
pfglMultiTexCoord2f = NULL;
pfglMultiTexCoord2fv = NULL;
pfglMultiTexCoord2i = NULL;
pfglMultiTexCoord2iv = NULL;
pfglMultiTexCoord2s = NULL;
pfglMultiTexCoord2sv = NULL;
pfglMultiTexCoord3d = NULL;
pfglMultiTexCoord3dv = NULL;
pfglMultiTexCoord3f = NULL;
pfglMultiTexCoord3fv = NULL;
pfglMultiTexCoord3i = NULL;
pfglMultiTexCoord3iv = NULL;
pfglMultiTexCoord3s = NULL;
pfglMultiTexCoord3sv = NULL;
pfglMultiTexCoord4d = NULL;
pfglMultiTexCoord4dv = NULL;
pfglMultiTexCoord4f = NULL;
pfglMultiTexCoord4fv = NULL;
pfglMultiTexCoord4i = NULL;
pfglMultiTexCoord4iv = NULL;
pfglMultiTexCoord4s = NULL;
pfglMultiTexCoord4sv = NULL;
pfglCompressedTexImage3D = NULL;
pfglCompressedTexImage2D = NULL;
pfglCompressedTexImage1D = NULL;
pfglCompressedTexSubImage3D = NULL;
pfglCompressedTexSubImage2D = NULL;
pfglCompressedTexSubImage1D = NULL;
pfglGetCompressedTexImage = NULL;
pfglSampleCoverage = NULL;
pfglSamplePass = NULL;
pfgluNurbsCallbackDataEXT = NULL;
pfglLoadTransposeMatrixfARB = NULL;
pfglLoadTransposeMatrixdARB = NULL;
pfglMultTransposeMatrixfARB = NULL;
pfglMultTransposeMatrixdARB = NULL;
pfglCompressedTexImage3DARB = NULL;
pfglCompressedTexImage2DARB = NULL;
pfglCompressedTexImage1DARB = NULL;
pfglCompressedTexSubImage3DARB = NULL;
pfglCompressedTexSubImage2DARB = NULL;
pfglCompressedTexSubImage1DARB = NULL;
pfglGetCompressedTexImageARB = NULL;
pfglSampleCoverageARB = NULL;
pfglSamplePassARB = NULL;
pfglColorTableEXT = NULL;
pfglColorSubTableEXT = NULL;
pfglGetColorTableEXT = NULL;
pfglGetColorTableParameterivEXT = NULL;
pfglGetColorTableParameterfvEXT = NULL;
pfglSecondaryColor3bEXT = NULL;
pfglSecondaryColor3bvEXT = NULL;
pfglSecondaryColor3dEXT = NULL;
pfglSecondaryColor3dvEXT = NULL;
pfglSecondaryColor3fEXT = NULL;
pfglSecondaryColor3fvEXT = NULL;
pfglSecondaryColor3iEXT = NULL;
pfglSecondaryColor3ivEXT = NULL;
pfglSecondaryColor3sEXT = NULL;
pfglSecondaryColor3svEXT = NULL;
pfglSecondaryColor3ubEXT = NULL;
pfglSecondaryColor3ubvEXT = NULL;
pfglSecondaryColor3uiEXT = NULL;
pfglSecondaryColor3uivEXT = NULL;
pfglSecondaryColor3usEXT = NULL;
pfglSecondaryColor3usvEXT = NULL;
pfglSecondaryColorPointerEXT = NULL;
pfglPNTrianglesiATIX = NULL;
pfglPNTrianglesfATIX = NULL;
pfglCombinerParameterfvNV = NULL;
pfglCombinerParameterfNV = NULL;
pfglCombinerParameterivNV = NULL;
pfglCombinerParameteriNV = NULL;
pfglCombinerInputNV = NULL;
pfglCombinerOutputNV = NULL;
pfglFinalCombinerInputNV = NULL;
pfglGetCombinerInputParameterfvNV = NULL;
pfglGetCombinerInputParameterivNV = NULL;
pfglGetCombinerOutputParameterfvNV = NULL;
pfglGetCombinerOutputParameterivNV = NULL;
pfglGetFinalCombinerInputParameterfvNV = NULL;
pfglGetFinalCombinerInputParameterivNV = NULL;
aglDellocEntryPoints (); // dump bundle
}
// ==========================
// example function calls...
// (initialization details removed)
pfglLoadTransposeMatrixf (faddr);
pfglLoadTransposeMatrixfARB (faddr);
pfglCombinerParameterfvNV (enumparam, faddr);
|