How to get OpenGL function pointer for different platforms.


You can do it using PROC WINAPI wglGetProcAddress( LPCSTR lpszProc); The name of the OpenGL ?1.1 (and better) or windows specific WGL function ?you want retrieve pointer should be passed as parameter. Note, the name is case-sensitive. ??This function only works in the presence of a valid OpenGL context. Indeed, the function pointers it returns are themselves context-specific. ?


Use void* glXGetProcAddress(const GLubyte* procName) function ?or ?void* glXGetProcAddressARB(const GLubyte* procName) to get leagacy ARB extentions. ?Same as in Windows case you need pass exactly matching ?function name as parameter. ?Linux specific GLX names can be passed as well.



Use void * aglGetProcAddress (char * pszProc);? This one works same same way as wglGetProcAddress() and ?glXGetProcAddress();

?Basically you can define macro and use it for any of these platforms:

#if defined WIN32
#? define getGlFncPtr(name) wglGetProcAddress((LPCSTR)name)
#elif defined OSMac_
#? define getGlFncPtr(name) aglGetProcAddress(name)
#elif defined LINUX
#? ?? define getGlFncPtr(name) (*glXGetProcAddressARB)((const GLubyte*)name)
#? else
#? ?? define getGlFncPtr(name) (*glXGetProcAddress)((const GLubyte*)name)
#? endif

No feedback yet

This post has 63 feedbacks awaiting moderation...

Leave a comment

Your email address will not be revealed on this site.
(For my next comment on this site)
(Allow users to contact me through a message form -- Your email will not be revealed!)
Trackback address for this post