![]() ![]() Typing in there searches the list of extensions, but it's pretty slow. For example, at the bottom of the "Extensions" tab, there's a round search box, like you'd normally find at the top of a window. Now, the app itself: there's a lot of data here, but it's not the easiest to use. Reference: Moving Beyond OpenGL 1.1 for Windows by Dave Astle - The article is a bit dated, but has all the information you need to understand why this pathetic situation exists on Windows and how to get around it.I figure I need to write a new review, because the latest version (4.0.8) actually works for me! Great update. GlFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, colorTex, 0) GlBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo) That's it, we're done! You can now use these function pointers just as if the function calls existed. || NULL = glCheckFramebufferStatusEXT || NULL = glDeleteFramebuffersEXT) If by chance wglGetProcAddress() couldn't find the extension function, it would've initialized the pointer with NULL.Įxample: if (NULL = glGenFramebuffersEXT || NULL = glBindFramebufferEXT || NULL = glFramebufferTexture2DEXT GlDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) wglGetProcAddress("glDeleteFramebuffersEXT") ĭon't forget to check the function pointers for NULL. GlCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) wglGetProcAddress("glCheckFramebufferStatusEXT") GlFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) wglGetProcAddress("glFramebufferTexture2DEXT") GlBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) wglGetProcAddress("glBindFramebufferEXT") We need to use wglGetProcAddress() function to do this.Įxample: glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) wglGetProcAddress("glGenFramebuffersEXT") These functions are exposed by the library or driver. Initialize these function pointers with their rightful functions. Though it looks ugly, all we're doing is to declare function pointers of the type corresponding to the extension API. PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT ![]() PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT ![]() PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT The other is a sane looking function declaration.įor each extension API you wish to use, add in your code declarations of the function name as a type of the ugly-looking string.Įxample: PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT One is a wgl-like ugly function pointer declaration. Open glext.h, find the API you wish to use and grab its corresponding ugly-looking declaration.Įxample: I search for the above framebuffer APIs and find their corresponding ugly-looking declarations: typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers) for GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *) Īll this means is that your header file has the API declaration in 2 forms. (Note that not all extensions might be supported.) Either place this header file somewhere your compiler can pick it up or include its directory in your compiler's include directories list.Īdd a #include line in your code to include the header file into your code. Your graphic card manufacturer provides a glext.h header file (or a similarly named header file) with all the declarations needed to use the supported OpenGL extensions. I then download the latest NVIDIA OpenGL SDK and install it. So, I visit the NVIDIA OpenGL Extension Specifications webpage and find that the EXT_framebuffer_object extension is supported. If it does, then your work is almost done! Download and install the latest drivers and SDKs for your graphics card.Įxample: The graphics card in my PC is a NVIDIA 6600 GT. The APIs I wish to use from this extension are: glGenFramebuffersEXT()Ĭheck if your graphic card supports the extension you wish to use. OpenGL extensions are listed in the OpenGL Extension Registry.Įxample: I wish to use the capabilities of the EXT_framebuffer_object extension. Identify the OpenGL extension and the extension APIs you wish to use. If you have a really strong reason not to use GLEW, here's how to achieve the same without it: ![]()
0 Comments
Leave a Reply. |