   gl3.h / Windows
  I'm trying to use the gl3.h header file on my Windows machine and can't figure out what I'm doing wrong.  I'm using the function pointers, and they seem to work fine for the functions defined for GL_VERSION_1_2 and beyond, for example this seems to work fine:PFNGLDRAWTRANSFORMFEEDBACKPROC pfn_glCreateShader = (PFNGLDRAWTRANSFORMFEEDBACKPROC)wglGetProcAddress("glCreateShader");GLuint vertShaderID = pfn_glCreateShader(GL_VERTEX_SHADER);But when I try to use the older functions, like the ones from GL_VERSION_1_0, in the same manner, then I am getting a NULL pointer returned, for example this does not work:PFNGLGETINTEGERVPROC pfn_glGetIntegerv = (PFNGLGETINTEGERVPROC)wglGetProcAddress("glGetIntegerv");I can call the older functions if I set #define GL3_PROTOTYPES and only use the functions that are implemented in opengl32.dll that is included with Windows.  For ex using the glGetIntegerv function (not through a pointer using wglGetProcAddress, just directly) returned that my implementation supported up to version 3.2.So I guess I'm confused if I'm using the header file completely wrong, do I need to be using extensions instead, like an extension library like GLEW?  Is that the only way to do it?  I'm trying to convert an older OpenGL app that I wrote using all the fixed-functionality stuff, into a "new" OpenGL app that just uses shaders, so I was hoping to use the new header file that gets rid of all the deprecated functions.Thanks!   
  Excuse me if I'm incorrect, but isn't the function glGetIntegerv defined in the header, and so you shouldn't need any function pointer to call it? I thought the pointers were only for extensions.Maybe you can get the glCreateShader function pointer because it was once an extension, but if glGetIntegerv was in OpenGL 1.0 maybe you can't get its extension the same way. Could be wrong though.Anyway maybe explain more what you're trying to do? I can't see why you can't just call glGetIntegerv like any regular function. I didn't think it was depreciated.;  On Windows all functions for GL version <= 1.1 should be imported from OpenGL32.dll not by calling wglGetProcAddress. Either link statically to OpenGL32.dll, or use GetProcAddress instead of wglGetProcAddress for these functions.Easy way is first to call wglGetProcAddres for needed function, if it returns NULL, then call GetProcAddress on OpenGL32.dll file.   ;  Ahh OK great, that makes sense, thank you!  The way the gl3.h header is set-up I think you either get ALL function pointers, or if you set #define GL3_PROTOTYPES then you get ALL regular function calls, even for the old version 1_1 functions.  Maybe that explains what my problem was a little better, I could get the old functions to work one way and the newer (extended) functions to work the other way (with function pointers), but could not get them to work together.I have another sortof related question:Is it typical to create wrapper functions for the function pointers that I'm going to use a lot, I will probably only use maybe 20-30 different opengl function calls so I was going to create wrapper functions for those like:GLuint glCreateShader(GLenum shaderType){   PFNGLCREATESHADERPROC pfn_glCreateShader = (PFNGLCREATESHADERPROC)wglGetProcAddress("glCreateShader");GLuint vertShaderID = pfn_glCreateShader(shaderType);   return vertShaderID}Would there be any problems doing it like this, or is there a better way that most people using Windows are doing?  Thanks again.   ;  I think you don't want to be calling wglGetProcAddress every time you use a gl function, my understanding would be that you would load all of the functions you want at initialization and store them in the header or something. Or you can just use an extension manager, GLEW or GLEE, and not worry about this. They are really simple and I know a lot around here use them (including myself).   ;  Thanks, I'll look into the extension library stuff!  Also I wanted to post this quick snippet of code that I'm now using to call the older (<= version 1.1) functions using GetProcAddress, in case it helps someone:PFNGLGETINTEGERVPROC pfn_glGetIntegerv = (PFNGLGETINTEGERVPROC)GetProcAddress(GetModuleHandle(TEXT("opengl32.dll")), "glGetIntegerv"); int ver[2];pfn_glGetIntegerv(GL_MAJOR_VERSION, &ver[0]);pfn_glGetIntegerv(GL_MINOR_VERSION, &ver[1]);The function pointer types (like PFNGLGETINTEGERVPROC) are all defined in the gl3.h header file.  Thanks again for everyones help!   ;  You are wasting your time with that get function pointer business. Just use GLEWThe link for GLEWhttp://glew.sourceforge.net/Let's insert the Wiki linkhttp://www.opengl.org/wiki/Getting_started#OpenGL_2.0.2B_and_extensions;  excuse my ignorance... but where are people acquiring this gl3.h header file?  The only way I've managed to use OpenGL 3 is via SDL's SDL_opengl.h header - which is fine, coz I'm an SDL guy - just a little curious...   ;  gl3.h is available on the OpenGL registry but it is only a request for feedback file.   