# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

driver_opengl_extension.h

Go to the documentation of this file.
00001 
00007 /* Copyright, 2000 Nevrax Ltd.
00008  *
00009  * This file is part of NEVRAX NEL.
00010  * NEVRAX NEL is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2, or (at your option)
00013  * any later version.
00014 
00015  * NEVRAX NEL is distributed in the hope that it will be useful, but
00016  * WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00018  * General Public License for more details.
00019 
00020  * You should have received a copy of the GNU General Public License
00021  * along with NEVRAX NEL; see the file COPYING. If not, write to the
00022  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
00023  * MA 02111-1307, USA.
00024  */
00025 
00026 #ifndef NL_OPENGL_EXTENSION_H
00027 #define NL_OPENGL_EXTENSION_H
00028 
00029 
00030 #include "nel/misc/types_nl.h"
00031 
00032 #ifdef NL_OS_WINDOWS
00033 
00034 #define WIN32_LEAN_AND_MEAN
00035 #include <windows.h>
00036 
00037 #else // NL_OS_UNIX
00038 
00039 #include <GL/glx.h>
00040 
00041 #endif // NL_OS_UNIX
00042 
00043 
00044 #include <GL/gl.h>
00045 #include <GL/glext.h>   // Please download it from http://oss.sgi.com/projects/ogl-sample/ABI/"
00046 
00047 #ifndef GL_GLEXT_VERSION
00048 #error "I need a newer <GL/glext.h>. Please download it from http://oss.sgi.com/projects/ogl-sample/ABI/"
00049 #endif // GL_GLEXT_VERSION
00050 
00051 #if GL_GLEXT_VERSION < 7
00052 #error "I need a newer <GL/glext.h>. Please download it from http://oss.sgi.com/projects/ogl-sample/ABI/"
00053 #endif // GL_GLEXT_VERSION < 7
00054 
00055 #include "driver_opengl_extension_def.h"
00056 
00057 namespace       NL3D
00058 {
00059 
00060 
00061 // ***************************************************************************
00063 struct  CGlExtensions
00064 {
00065         // Is this driver a correct OpenGL 1.2 driver?
00066         bool    Version1_2;
00067 
00068         // Required Extensions.
00069         bool    ARBMultiTexture;
00070         sint    NbTextureStages;
00071         bool    EXTTextureEnvCombine;
00072 
00073         // Optionnal Extensions.
00074         bool    ARBTextureCompression;
00075         // NB: Fence extension is not here, because NVVertexArrayRange is false if GL_NV_fence is not here.
00076         bool    NVVertexArrayRange;
00077         uint    NVVertexArrayRangeMaxVertex;
00078         bool    EXTTextureCompressionS3TC;
00079         bool    EXTVertexWeighting;
00080         bool    EXTSeparateSpecularColor;
00081         bool    NVTextureEnvCombine4;
00082         bool    ARBTextureCubeMap;
00083         bool    NVVertexProgram;
00084         bool    NVTextureShader;
00085         // true if NVVertexProgram and if we know that VP is emulated
00086         bool    NVVertexProgramEmulated;
00087         bool    EXTSecondaryColor;
00088         bool    EXTBlendColor;
00089         // NVVertexArrayRange2. 
00090         bool    NVVertexArrayRange2;
00091         // equal to GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV if possible, or GL_VERTEX_ARRAY_RANGE_NV
00092         uint    NVStateVARWithoutFlush;
00093 
00094         // WGL ARB extensions, true if supported
00095         bool    WGLARBPBuffer;
00096         bool    WGLARBPixelFormat;
00097 
00098         // ATI Extensions.
00099         bool    ATIVertexArrayObject;
00100 
00101 public:
00102 
00104         // @{
00105         bool                            DisableHardwareVertexProgram;
00106         bool                            DisableHardwareVertexArrayAGP;
00107         bool                            DisableHardwareTextureShader;
00108         // @}
00109 
00110 
00111 public:
00112         CGlExtensions()
00113         {
00114                 // Fill all false by default.
00115                 Version1_2= false;
00116                 ARBMultiTexture= false;
00117                 NbTextureStages= 1;
00118                 EXTTextureEnvCombine= false;
00119                 ARBTextureCompression= false;
00120                 NVVertexArrayRange= false;
00121                 NVVertexArrayRangeMaxVertex= 0;
00122                 EXTTextureCompressionS3TC= false;
00123                 EXTVertexWeighting= false;
00124                 EXTSeparateSpecularColor= false;
00125                 NVTextureEnvCombine4= false;
00126                 ARBTextureCubeMap= false;
00127                 NVTextureShader= false;
00128                 NVVertexProgram= false;
00129                 NVVertexProgramEmulated= false;
00130                 EXTSecondaryColor= false;
00131                 WGLARBPBuffer= false;
00132                 WGLARBPixelFormat= false;
00133                 EXTBlendColor= false;
00134                 ATIVertexArrayObject= false;
00135 
00137                 DisableHardwareVertexProgram= false;
00138                 DisableHardwareVertexArrayAGP= false;
00139                 DisableHardwareTextureShader= false;
00140         };
00141 };
00142 
00143 
00144 // ***************************************************************************
00145 
00146 #ifdef NL_OS_WINDOWS
00147 
00148 void    registerWGlExtensions(CGlExtensions &ext, HDC hDC);
00149 #endif // NL_OS_WINDOWS
00150 
00152 void    registerGlExtensions(CGlExtensions &ext);
00153 
00154 
00155 }
00156 
00157 
00158 
00159 // ***************************************************************************
00160 // The exported function names
00161 /* NB: We named all like nglActiveTextureARB (n for NEL :) )
00162         to avoid compilation conflict with future version of gl.h
00163         eg: gl.h Version 1.2 define glActiveTextureARB so we can't use it.
00164 
00165         NB: we do it for all (EXT, NV, ARB extension) even it should be usefull only for ARB ones.
00166 */
00167 
00168 
00169 // ARB_multitexture
00170 //=================
00171 extern NEL_PFNGLACTIVETEXTUREARBPROC nglActiveTextureARB;
00172 extern NEL_PFNGLCLIENTACTIVETEXTUREARBPROC nglClientActiveTextureARB;
00173 
00174 extern NEL_PFNGLMULTITEXCOORD1SARBPROC nglMultiTexCoord1sARB;
00175 extern NEL_PFNGLMULTITEXCOORD1IARBPROC nglMultiTexCoord1iARB;
00176 extern NEL_PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB;
00177 extern NEL_PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB;
00178 extern NEL_PFNGLMULTITEXCOORD1DARBPROC nglMultiTexCoord1dARB;
00179 extern NEL_PFNGLMULTITEXCOORD2SARBPROC nglMultiTexCoord2sARB;
00180 extern NEL_PFNGLMULTITEXCOORD2IARBPROC nglMultiTexCoord2iARB;
00181 extern NEL_PFNGLMULTITEXCOORD2FARBPROC nglMultiTexCoord2fARB;
00182 extern NEL_PFNGLMULTITEXCOORD2DARBPROC nglMultiTexCoord2dARB;
00183 extern NEL_PFNGLMULTITEXCOORD3SARBPROC nglMultiTexCoord3sARB;
00184 extern NEL_PFNGLMULTITEXCOORD3IARBPROC nglMultiTexCoord3iARB;
00185 extern NEL_PFNGLMULTITEXCOORD3FARBPROC nglMultiTexCoord3fARB;
00186 extern NEL_PFNGLMULTITEXCOORD3DARBPROC nglMultiTexCoord3dARB;
00187 extern NEL_PFNGLMULTITEXCOORD4SARBPROC nglMultiTexCoord4sARB;
00188 extern NEL_PFNGLMULTITEXCOORD4IARBPROC nglMultiTexCoord4iARB;
00189 extern NEL_PFNGLMULTITEXCOORD4FARBPROC nglMultiTexCoord4fARB;
00190 extern NEL_PFNGLMULTITEXCOORD4DARBPROC nglMultiTexCoord4dARB;
00191 
00192 extern NEL_PFNGLMULTITEXCOORD1SVARBPROC nglMultiTexCoord1svARB;
00193 extern NEL_PFNGLMULTITEXCOORD1IVARBPROC nglMultiTexCoord1ivARB;
00194 extern NEL_PFNGLMULTITEXCOORD1FVARBPROC nglMultiTexCoord1fvARB;
00195 extern NEL_PFNGLMULTITEXCOORD1DVARBPROC nglMultiTexCoord1dvARB;
00196 extern NEL_PFNGLMULTITEXCOORD2SVARBPROC nglMultiTexCoord2svARB;
00197 extern NEL_PFNGLMULTITEXCOORD2IVARBPROC nglMultiTexCoord2ivARB;
00198 extern NEL_PFNGLMULTITEXCOORD2FVARBPROC nglMultiTexCoord2fvARB;
00199 extern NEL_PFNGLMULTITEXCOORD2DVARBPROC nglMultiTexCoord2dvARB;
00200 extern NEL_PFNGLMULTITEXCOORD3SVARBPROC nglMultiTexCoord3svARB;
00201 extern NEL_PFNGLMULTITEXCOORD3IVARBPROC nglMultiTexCoord3ivARB;
00202 extern NEL_PFNGLMULTITEXCOORD3FVARBPROC nglMultiTexCoord3fvARB;
00203 extern NEL_PFNGLMULTITEXCOORD3DVARBPROC nglMultiTexCoord3dvARB;
00204 extern NEL_PFNGLMULTITEXCOORD4SVARBPROC nglMultiTexCoord4svARB;
00205 extern NEL_PFNGLMULTITEXCOORD4IVARBPROC nglMultiTexCoord4ivARB;
00206 extern NEL_PFNGLMULTITEXCOORD4FVARBPROC nglMultiTexCoord4fvARB;
00207 extern NEL_PFNGLMULTITEXCOORD4DVARBPROC nglMultiTexCoord4dvARB;
00208 
00209 
00210 // ARB_TextureCompression.
00211 //========================
00212 extern NEL_PFNGLCOMPRESSEDTEXIMAGE3DARBPROC             nglCompressedTexImage3DARB;
00213 extern NEL_PFNGLCOMPRESSEDTEXIMAGE2DARBPROC             nglCompressedTexImage2DARB;
00214 extern NEL_PFNGLCOMPRESSEDTEXIMAGE1DARBPROC             nglCompressedTexImage1DARB;
00215 extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC  nglCompressedTexSubImage3DARB;
00216 extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC  nglCompressedTexSubImage2DARB;
00217 extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC  nglCompressedTexSubImage1DARB;
00218 extern NEL_PFNGLGETCOMPRESSEDTEXIMAGEARBPROC    nglGetCompressedTexImageARB;
00219 
00220 
00221 // VertexArrayRangeNV.
00222 //====================
00223 extern NEL_PFNGLFLUSHVERTEXARRAYRANGENVPROC             nglFlushVertexArrayRangeNV;
00224 extern NEL_PFNGLVERTEXARRAYRANGENVPROC                  nglVertexArrayRangeNV;
00225 #ifdef NL_OS_WINDOWS
00226 extern PFNWGLALLOCATEMEMORYNVPROC                       wglAllocateMemoryNV;
00227 extern PFNWGLFREEMEMORYNVPROC                           wglFreeMemoryNV;
00228 #endif
00229 
00230 
00231 // FenceNV.
00232 //====================
00233 extern NEL_PFNGLDELETEFENCESNVPROC                              nglDeleteFencesNV;
00234 extern NEL_PFNGLGENFENCESNVPROC                                 nglGenFencesNV;
00235 extern NEL_PFNGLISFENCENVPROC                                   nglIsFenceNV;
00236 extern NEL_PFNGLTESTFENCENVPROC                                 nglTestFenceNV;
00237 extern NEL_PFNGLGETFENCEIVNVPROC                                nglGetFenceivNV;
00238 extern NEL_PFNGLFINISHFENCENVPROC                               nglFinishFenceNV;
00239 extern NEL_PFNGLSETFENCENVPROC                                  nglSetFenceNV;
00240 
00241 
00242 // VertexWeighting.
00243 //==================
00244 extern NEL_PFNGLVERTEXWEIGHTFEXTPROC                    nglVertexWeightfEXT;
00245 extern NEL_PFNGLVERTEXWEIGHTFVEXTPROC                   nglVertexWeightfvEXT;
00246 extern NEL_PFNGLVERTEXWEIGHTPOINTEREXTPROC              nglVertexWeightPointerEXT;
00247 
00248 
00249 // VertexProgramExtension.
00250 //========================
00251 extern NEL_PFNGLAREPROGRAMSRESIDENTNVPROC               nglAreProgramsResidentNV;
00252 extern NEL_PFNGLBINDPROGRAMNVPROC                               nglBindProgramNV;
00253 extern NEL_PFNGLDELETEPROGRAMSNVPROC                    nglDeleteProgramsNV;
00254 extern NEL_PFNGLEXECUTEPROGRAMNVPROC                    nglExecuteProgramNV;
00255 extern NEL_PFNGLGENPROGRAMSNVPROC                               nglGenProgramsNV;
00256 extern NEL_PFNGLGETPROGRAMPARAMETERDVNVPROC             nglGetProgramParameterdvNV;
00257 extern NEL_PFNGLGETPROGRAMPARAMETERFVNVPROC             nglGetProgramParameterfvNV;
00258 extern NEL_PFNGLGETPROGRAMIVNVPROC                              nglGetProgramivNV;
00259 extern NEL_PFNGLGETPROGRAMSTRINGNVPROC                  nglGetProgramStringNV;
00260 extern NEL_PFNGLGETTRACKMATRIXIVNVPROC                  nglGetTrackMatrixivNV;
00261 extern NEL_PFNGLGETVERTEXATTRIBDVNVPROC                 nglGetVertexAttribdvNV;
00262 extern NEL_PFNGLGETVERTEXATTRIBFVNVPROC                 nglGetVertexAttribfvNV;
00263 extern NEL_PFNGLGETVERTEXATTRIBIVNVPROC                 nglGetVertexAttribivNV;
00264 extern NEL_PFNGLGETVERTEXATTRIBPOINTERVNVPROC   nglGetVertexAttribPointervNV;
00265 extern NEL_PFNGLISPROGRAMNVPROC                                 nglIsProgramNV;
00266 extern NEL_PFNGLLOADPROGRAMNVPROC                               nglLoadProgramNV;
00267 extern NEL_PFNGLPROGRAMPARAMETER4DNVPROC                nglProgramParameter4dNV;
00268 extern NEL_PFNGLPROGRAMPARAMETER4DVNVPROC               nglProgramParameter4dvNV;
00269 extern NEL_PFNGLPROGRAMPARAMETER4FNVPROC                nglProgramParameter4fNV;
00270 extern NEL_PFNGLPROGRAMPARAMETER4FVNVPROC               nglProgramParameter4fvNV;
00271 extern NEL_PFNGLPROGRAMPARAMETERS4DVNVPROC              nglProgramParameters4dvNV;
00272 extern NEL_PFNGLPROGRAMPARAMETERS4FVNVPROC              nglProgramParameters4fvNV;
00273 extern NEL_PFNGLREQUESTRESIDENTPROGRAMSNVPROC   nglRequestResidentProgramsNV;
00274 extern NEL_PFNGLTRACKMATRIXNVPROC                               nglTrackMatrixNV;
00275 extern NEL_PFNGLVERTEXATTRIBPOINTERNVPROC               nglVertexAttribPointerNV;
00276 extern NEL_PFNGLVERTEXATTRIB1DNVPROC                    nglVertexAttrib1dNV;
00277 extern NEL_PFNGLVERTEXATTRIB1DVNVPROC                   nglVertexAttrib1dvNV;
00278 extern NEL_PFNGLVERTEXATTRIB1FNVPROC                    nglVertexAttrib1fNV;
00279 extern NEL_PFNGLVERTEXATTRIB1FVNVPROC                   nglVertexAttrib1fvNV;
00280 extern NEL_PFNGLVERTEXATTRIB1SNVPROC                    nglVertexAttrib1sNV;
00281 extern NEL_PFNGLVERTEXATTRIB1SVNVPROC                   nglVertexAttrib1svNV;
00282 extern NEL_PFNGLVERTEXATTRIB2DNVPROC                    nglVertexAttrib2dNV;
00283 extern NEL_PFNGLVERTEXATTRIB2DVNVPROC                   nglVertexAttrib2dvNV;
00284 extern NEL_PFNGLVERTEXATTRIB2FNVPROC                    nglVertexAttrib2fNV;
00285 extern NEL_PFNGLVERTEXATTRIB2FVNVPROC                   nglVertexAttrib2fvNV;
00286 extern NEL_PFNGLVERTEXATTRIB2SNVPROC                    nglVertexAttrib2sNV;
00287 extern NEL_PFNGLVERTEXATTRIB2SVNVPROC                   nglVertexAttrib2svNV;
00288 extern NEL_PFNGLVERTEXATTRIB3DNVPROC                    nglVertexAttrib3dNV;
00289 extern NEL_PFNGLVERTEXATTRIB3DVNVPROC                   nglVertexAttrib3dvNV;
00290 extern NEL_PFNGLVERTEXATTRIB3FNVPROC                    nglVertexAttrib3fNV;
00291 extern NEL_PFNGLVERTEXATTRIB3FVNVPROC                   nglVertexAttrib3fvNV;
00292 extern NEL_PFNGLVERTEXATTRIB3SNVPROC                    nglVertexAttrib3sNV;
00293 extern NEL_PFNGLVERTEXATTRIB3SVNVPROC                   nglVertexAttrib3svNV;
00294 extern NEL_PFNGLVERTEXATTRIB4DNVPROC                    nglVertexAttrib4dNV;
00295 extern NEL_PFNGLVERTEXATTRIB4DVNVPROC                   nglVertexAttrib4dvNV;
00296 extern NEL_PFNGLVERTEXATTRIB4FNVPROC                    nglVertexAttrib4fNV;
00297 extern NEL_PFNGLVERTEXATTRIB4FVNVPROC                   nglVertexAttrib4fvNV;
00298 extern NEL_PFNGLVERTEXATTRIB4SNVPROC                    nglVertexAttrib4sNV;
00299 extern NEL_PFNGLVERTEXATTRIB4SVNVPROC                   nglVertexAttrib4svNV;
00300 extern NEL_PFNGLVERTEXATTRIB4UBVNVPROC                  nglVertexAttrib4ubvNV;
00301 extern NEL_PFNGLVERTEXATTRIBS1DVNVPROC                  nglVertexAttribs1dvNV;
00302 extern NEL_PFNGLVERTEXATTRIBS1FVNVPROC                  nglVertexAttribs1fvNV;
00303 extern NEL_PFNGLVERTEXATTRIBS1SVNVPROC                  nglVertexAttribs1svNV;
00304 extern NEL_PFNGLVERTEXATTRIBS2DVNVPROC                  nglVertexAttribs2dvNV;
00305 extern NEL_PFNGLVERTEXATTRIBS2FVNVPROC                  nglVertexAttribs2fvNV;
00306 extern NEL_PFNGLVERTEXATTRIBS2SVNVPROC                  nglVertexAttribs2svNV;
00307 extern NEL_PFNGLVERTEXATTRIBS3DVNVPROC                  nglVertexAttribs3dvNV;
00308 extern NEL_PFNGLVERTEXATTRIBS3FVNVPROC                  nglVertexAttribs3fvNV;
00309 extern NEL_PFNGLVERTEXATTRIBS3SVNVPROC                  nglVertexAttribs3svNV;
00310 extern NEL_PFNGLVERTEXATTRIBS4DVNVPROC                  nglVertexAttribs4dvNV;
00311 extern NEL_PFNGLVERTEXATTRIBS4FVNVPROC                  nglVertexAttribs4fvNV;
00312 extern NEL_PFNGLVERTEXATTRIBS4SVNVPROC                  nglVertexAttribs4svNV;
00313 extern NEL_PFNGLVERTEXATTRIBS4UBVNVPROC                 nglVertexAttribs4ubvNV;
00314 
00315 
00316 // SecondaryColor extension
00317 //========================
00318 extern NEL_PFNGLSECONDARYCOLOR3BEXTPROC                 nglSecondaryColor3bEXT;
00319 extern NEL_PFNGLSECONDARYCOLOR3BVEXTPROC                nglSecondaryColor3bvEXT;
00320 extern NEL_PFNGLSECONDARYCOLOR3DEXTPROC                 nglSecondaryColor3dEXT;
00321 extern NEL_PFNGLSECONDARYCOLOR3DVEXTPROC                nglSecondaryColor3dvEXT;
00322 extern NEL_PFNGLSECONDARYCOLOR3FEXTPROC                 nglSecondaryColor3fEXT;
00323 extern NEL_PFNGLSECONDARYCOLOR3FVEXTPROC                nglSecondaryColor3fvEXT;
00324 extern NEL_PFNGLSECONDARYCOLOR3IEXTPROC                 nglSecondaryColor3iEXT;
00325 extern NEL_PFNGLSECONDARYCOLOR3IVEXTPROC                nglSecondaryColor3ivEXT;
00326 extern NEL_PFNGLSECONDARYCOLOR3SEXTPROC                 nglSecondaryColor3sEXT;
00327 extern NEL_PFNGLSECONDARYCOLOR3SVEXTPROC                nglSecondaryColor3svEXT;
00328 extern NEL_PFNGLSECONDARYCOLOR3UBEXTPROC                nglSecondaryColor3ubEXT;
00329 extern NEL_PFNGLSECONDARYCOLOR3UBVEXTPROC               nglSecondaryColor3ubvEXT;
00330 extern NEL_PFNGLSECONDARYCOLOR3UIEXTPROC                nglSecondaryColor3uiEXT;
00331 extern NEL_PFNGLSECONDARYCOLOR3UIVEXTPROC               nglSecondaryColor3uivEXT;
00332 extern NEL_PFNGLSECONDARYCOLOR3USEXTPROC                nglSecondaryColor3usEXT;
00333 extern NEL_PFNGLSECONDARYCOLOR3USVEXTPROC               nglSecondaryColor3usvEXT;
00334 extern NEL_PFNGLSECONDARYCOLORPOINTEREXTPROC    nglSecondaryColorPointerEXT;
00335 
00336 
00337 // BlendColor extension
00338 //========================
00339 extern NEL_PFNGLBLENDCOLOREXTPROC                               nglBlendColorEXT;
00340 
00341 
00342 // GL_ATI_vertex_array_object extension
00343 //========================
00344 extern NEL_PFNGLNEWOBJECTBUFFERATIPROC                  nglNewObjectBufferATI;
00345 extern NEL_PFNGLISOBJECTBUFFERATIPROC                   nglIsObjectBufferATI;
00346 extern NEL_PFNGLUPDATEOBJECTBUFFERATIPROC               nglUpdateObjectBufferATI;
00347 extern NEL_PFNGLGETOBJECTBUFFERFVATIPROC                nglGetObjectBufferfvATI;
00348 extern NEL_PFNGLGETOBJECTBUFFERIVATIPROC                nglGetObjectBufferivATI;
00349 extern NEL_PFNGLDELETEOBJECTBUFFERATIPROC               nglDeleteObjectBufferATI;
00350 extern NEL_PFNGLARRAYOBJECTATIPROC                              nglArrayObjectATI;
00351 extern NEL_PFNGLGETARRAYOBJECTFVATIPROC                 nglGetArrayObjectfvATI;
00352 extern NEL_PFNGLGETARRAYOBJECTIVATIPROC                 nglGetArrayObjectivATI;
00353 extern NEL_PFNGLVARIANTARRAYOBJECTATIPROC               nglVariantArrayObjectATI;
00354 extern NEL_PFNGLGETVARIANTARRAYOBJECTFVATIPROC  nglGetVariantArrayObjectfvATI;
00355 extern NEL_PFNGLGETVARIANTARRAYOBJECTIVATIPROC  nglGetVariantArrayObjectivATI;
00356 
00357 
00358 
00359 #ifdef NL_OS_WINDOWS
00360 
00361 // Pbuffer extension
00362 //==================
00363 extern PFNWGLCREATEPBUFFERARBPROC                       wglCreatePbufferARB;
00364 extern PFNWGLGETPUFFERDCARBPROC                         wglGetPbufferDCARB;
00365 extern PFNWGLRELEASEPUFFERDCARBPROC                     wglReleasePbufferDCARB;
00366 extern PFNWGLDESTROYPUFFERARBPROC                       wglDestroyPbufferARB;
00367 extern PFNWGLQUERYPBUFFERARBPROC                        wglQueryPbufferARB;
00368 
00369 
00370 // Get Pixel format extension
00371 //===========================
00372 extern PFNWGLGETPIXELFORMATATTRIBIVARBPROC      wglGetPixelFormatAttribivARB;
00373 extern PFNWGLGETPIXELFORMATATTRIBFVARBPROC      wglGetPixelFormatAttribfvARB;
00374 extern PFNWGLCHOOSEPIXELFORMATARBPROC           wglChoosePixelFormatARB;
00375 
00376 
00377 // WGL_ARB_extensions_string
00378 extern PFNWGFGETEXTENSIONSSTRINGARB                     wglGetExtensionsStringARB;
00379 
00380 #endif
00381 
00382 
00383 #endif // NL_OPENGL_EXTENSION_H
00384