00001 /* 00002 ----------------------------------------------------------------------------- 00003 This source file is part of OGRE 00004 (Object-oriented Graphics Rendering Engine) 00005 For the latest info, see http://www.ogre3d.org/ 00006 00007 Copyright (c) 2000-2005 The OGRE Team 00008 Also see acknowledgements in Readme.html 00009 00010 This program is free software; you can redistribute it and/or modify it under 00011 the terms of the GNU Lesser General Public License as published by the Free Software 00012 Foundation; either version 2 of the License, or (at your option) any later 00013 version. 00014 00015 This program is distributed in the hope that it will be useful, but WITHOUT 00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 00018 00019 You should have received a copy of the GNU Lesser General Public License along with 00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple 00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to 00022 http://www.gnu.org/copyleft/lesser.txt. 00023 ----------------------------------------------------------------------------- 00024 */ 00025 #ifndef __GLPrerequisites_H__ 00026 #define __GLPrerequisites_H__ 00027 00028 #include "OgrePrerequisites.h" 00029 00030 #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 00031 #if !defined( __MINGW32__ ) 00032 # define NOMINMAX // required to stop windows.h messing up std::min 00033 #endif 00034 # include <windows.h> 00035 # include <wingdi.h> 00036 # include <GL/gl.h> 00037 # define GL_GLEXT_PROTOTYPES 00038 # include "glprocs.h" 00039 # include <GL/glu.h> 00040 // Windows library does not include glSecondaryColorPointer even though it's standard now 00041 # define glSecondaryColorPointer glSecondaryColorPointerEXT 00042 #elif OGRE_PLATFORM == OGRE_PLATFORM_LINUX 00043 // define GL_GLEXT_LEGACY so that Mesa headers won't try to include their own 00044 // glext.h file. 00045 # define GL_GLEXT_LEGACY 00046 # include <GL/gl.h> 00047 # include <GL/glu.h> 00048 # define GL_GLEXT_PROTOTYPES 00049 #elif OGRE_PLATFORM == OGRE_PLATFORM_APPLE 00050 # define GL_GLEXT_PROTOTYPES 00051 # ifndef APIENTRY 00052 # define APIENTRY 00053 # endif 00054 # define GL_GLEXT_LEGACY 00055 # include <OpenGL/gl.h> 00056 # include <OpenGL/glu.h> 00057 #endif 00058 #include "GL/glext.h" 00059 00060 extern "C" { 00061 // Pointer to glActiveTextureARB function 00062 typedef void (APIENTRY *GL_ActiveTextureARB_Func)(GLenum); 00063 extern GL_ActiveTextureARB_Func glActiveTextureARB_ptr; 00064 00065 // Pointer to glClientActiveTextureARB function 00066 typedef void (APIENTRY *GL_ClientActiveTextureARB_Func)(GLenum); 00067 extern GL_ClientActiveTextureARB_Func glClientActiveTextureARB_ptr; 00068 00069 // Pointer to glSecondaryColorPointerEXT function 00070 typedef void (APIENTRY *GL_SecondaryColorPointerEXT_Func)(GLint, GLenum, GLsizei, const GLvoid*); 00071 extern GL_SecondaryColorPointerEXT_Func glSecondaryColorPointerEXT_ptr; 00072 00073 // Pointer to glSecondaryColor3fEXT function 00074 typedef void (APIENTRY *GL_SecondaryColor3fEXT_Func)(GLfloat, GLfloat, GLfloat); 00075 extern GL_SecondaryColor3fEXT_Func glSecondaryColor3fEXT_ptr; 00076 00077 // Pointer to glGenBuffersARB function 00078 typedef void (APIENTRY *GL_GenBuffersARB_Func)(GLsizei, GLuint*); 00079 extern GL_GenBuffersARB_Func glGenBuffersARB_ptr; 00080 00081 // Pointer to glBindBufferARB function 00082 typedef void (APIENTRY *GL_BindBufferARB_Func)(GLenum, GLuint); 00083 extern GL_BindBufferARB_Func glBindBufferARB_ptr; 00084 00085 // Pointer to glDeleteBuffersARB function 00086 typedef void (APIENTRY *GL_DeleteBuffersARB_Func)(GLsizei, const GLuint*); 00087 extern GL_DeleteBuffersARB_Func glDeleteBuffersARB_ptr; 00088 00089 // Pointer to glMapBufferARB function 00090 typedef GLvoid* (APIENTRY *GL_MapBufferARB_Func)(GLenum, GLenum); 00091 extern GL_MapBufferARB_Func glMapBufferARB_ptr; 00092 00093 // Pointer to glUnmapBufferARB function 00094 typedef GLboolean (APIENTRY *GL_UnmapBufferARB_Func)(GLenum); 00095 extern GL_UnmapBufferARB_Func glUnmapBufferARB_ptr; 00096 00097 // Pointer to glBufferSubDataARB function 00098 typedef void (APIENTRY *GL_BufferSubDataARB_Func)(GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid*); 00099 extern GL_BufferSubDataARB_Func glBufferSubDataARB_ptr; 00100 00101 // Pointer to glBufferDataARB function 00102 typedef void (APIENTRY *GL_BufferDataARB_Func)(GLenum, GLsizeiptrARB, const GLvoid* , GLenum); 00103 extern GL_BufferDataARB_Func glBufferDataARB_ptr; 00104 00105 // Pointer to glGetBufferSubDataARB function 00106 typedef void (APIENTRY *GL_GetBufferSubDataARB_Func)(GLenum, GLintptrARB, GLsizeiptrARB, GLvoid*); 00107 extern GL_GetBufferSubDataARB_Func glGetBufferSubDataARB_ptr; 00108 00109 // Pointer to glGenProgramsARB function 00110 typedef void (APIENTRY *GL_GenProgramsARB_Func)(GLsizei, GLuint*); 00111 extern GL_GenProgramsARB_Func glGenProgramsARB_ptr; 00112 00113 // Pointer to glDeleteProgramsARB function 00114 typedef void (APIENTRY *GL_DeleteProgramsARB_Func)(GLsizei, const GLuint*); 00115 extern GL_DeleteProgramsARB_Func glDeleteProgramsARB_ptr; 00116 00117 // Pointer to glBindProgramARB function 00118 typedef void (APIENTRY *GL_BindProgramARB_Func)(GLenum, GLuint); 00119 extern GL_BindProgramARB_Func glBindProgramARB_ptr; 00120 00121 // Pointer to glProgramStringARB function 00122 typedef void (APIENTRY *GL_ProgramStringARB_Func)(GLenum, GLenum, GLsizei, const GLvoid*); 00123 extern GL_ProgramStringARB_Func glProgramStringARB_ptr; 00124 00125 // Pointer to glProgramLocalParameter4fvARB function 00126 typedef void (APIENTRY *GL_ProgramLocalParameter4fvARB_Func)(GLenum, GLuint, const GLfloat *); 00127 extern GL_ProgramLocalParameter4fvARB_Func glProgramLocalParameter4fvARB_ptr; 00128 00129 // Pointer to glProgramParameter4fvNV function 00130 typedef void (APIENTRY *GL_ProgramParameter4fvNV_Func)(GLenum, GLuint, const GLfloat *); 00131 extern GL_ProgramParameter4fvNV_Func glProgramParameter4fvNV_ptr; 00132 00133 // Pointer to glVertexAttribPointerARB function 00134 typedef void (APIENTRY *GL_VertexAttribPointerARB_Func) (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); 00135 extern GL_VertexAttribPointerARB_Func glVertexAttribPointerARB_ptr; 00136 // Pointer to glEnableVertexAttribArrayARB function 00137 typedef void (APIENTRY *GL_EnableVertexAttribArrayARB_Func) (GLuint); 00138 extern GL_EnableVertexAttribArrayARB_Func glEnableVertexAttribArrayARB_ptr; 00139 // Pointer to glDisableVertexAttribArrayARB function 00140 typedef void (APIENTRY *GL_DisableVertexAttribArrayARB_Func) (GLuint); 00141 extern GL_DisableVertexAttribArrayARB_Func glDisableVertexAttribArrayARB_ptr; 00142 00143 00144 00145 // Pointer to glCombinerStageParameterfvNV function 00146 typedef void (APIENTRY *GL_CombinerStageParameterfvNV_Func)(GLenum, GLenum, const GLfloat *); 00147 extern GL_CombinerStageParameterfvNV_Func glCombinerStageParameterfvNV_ptr; 00148 00149 // Pointer to glCombinerParameterfvNV function 00150 typedef void (APIENTRY *GL_CombinerParameterfvNV_Func)(GLenum, const GLfloat *); 00151 extern GL_CombinerParameterfvNV_Func glCombinerParameterfvNV_ptr; 00152 00153 // Pointer to glCombinerParameteriNV function 00154 typedef void (APIENTRY *GL_CombinerParameteriNV_Func)(GLenum, GLint); 00155 extern GL_CombinerParameteriNV_Func glCombinerParameteriNV_ptr; 00156 00157 // Pointer to glCombinerInputNV function 00158 typedef void (APIENTRY *GL_CombinerInputNV_Func)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); 00159 extern GL_CombinerInputNV_Func glCombinerInputNV_ptr; 00160 00161 // Pointer to glCombinerOutputNV function 00162 typedef void (APIENTRY *GL_CombinerOutputNV_Func)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean); 00163 00164 extern GL_CombinerOutputNV_Func glCombinerOutputNV_ptr; 00165 00166 // Pointer to glFinalCombinerInputNV function 00167 typedef void (APIENTRY *GL_FinalCombinerInputNV_Func)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); 00168 00169 extern GL_FinalCombinerInputNV_Func glFinalCombinerInputNV_ptr; 00170 00171 // Pointer to glGetProgramivARB function 00172 typedef void (APIENTRY *GL_GetProgramivARB_Func)(GLenum, GLenum, GLint *); 00173 extern GL_GetProgramivARB_Func glGetProgramivARB_ptr; 00174 00175 // Pointer to glLoadProgramNV function 00176 typedef void (APIENTRY *GL_LoadProgramNV_Func)(GLenum, GLuint, GLsizei, const GLubyte *); 00177 extern GL_LoadProgramNV_Func glLoadProgramNV_ptr; 00178 00179 // Pointer to glTrackMatrixNV function 00180 typedef void (APIENTRY *GL_TrackMatrixNV_Func)(GLenum, GLuint, GLenum, GLenum); 00181 extern GL_TrackMatrixNV_Func glTrackMatrixNV_ptr; 00182 00183 // Pointer to glActiveStencilFaceEXT function 00184 typedef void (APIENTRY *GL_ActiveStencilFaceEXT_Func)(GLenum); 00185 extern GL_ActiveStencilFaceEXT_Func glActiveStencilFaceEXT_ptr; 00186 00187 // Pointer to glGenOcclusionQueriesNV function 00188 typedef void (APIENTRY *GL_GenOcclusionQueriesNV_Func) (GLsizei n, GLuint *ids); 00189 extern GL_GenOcclusionQueriesNV_Func glGenOcclusionQueriesNV_ptr; 00190 00191 // Pointer to glDeleteOcclusionQueriesNV function 00192 typedef void (APIENTRY *GL_DeleteOcclusionQueriesNV_Func) (GLsizei n, const GLuint *ids); 00193 extern GL_DeleteOcclusionQueriesNV_Func glDeleteOcclusionQueriesNV_ptr; 00194 00195 // Pointer to glIsOcclusionQueryNV function 00196 typedef GLboolean (APIENTRY *GL_IsOcclusionQueryNV_Func) (GLuint id); 00197 extern GL_IsOcclusionQueryNV_Func glIsOcclusionQueryNV_ptr; 00198 00199 // Pointer to glBeginOcclusionQueryNV function 00200 typedef void (APIENTRY *GL_BeginOcclusionQueryNV_Func) (GLuint id); 00201 extern GL_BeginOcclusionQueryNV_Func glBeginOcclusionQueryNV_ptr; 00202 00203 // Pointer to glEndOcclusionQueryNV function 00204 typedef void (APIENTRY *GL_EndOcclusionQueryNV_Func) (void); 00205 extern GL_EndOcclusionQueryNV_Func glEndOcclusionQueryNV_ptr; 00206 00207 // Pointer to glGetOcclusionQueryivNV function 00208 typedef void (APIENTRY *GL_GetOcclusionQueryivNV_Func) (GLuint id, GLenum pname, GLint *params); 00209 extern GL_GetOcclusionQueryivNV_Func glGetOcclusionQueryivNV_ptr; 00210 00211 // Pointer to glGetOcclusionQueryuivNV function 00212 typedef void (APIENTRY *GL_GetOcclusionQueryuivNV_Func) (GLuint id, GLenum pname, GLuint *params); 00213 extern GL_GetOcclusionQueryuivNV_Func glGetOcclusionQueryuivNV_ptr; 00214 00215 extern PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glCompressedTexImage1DARB_ptr; 00216 extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB_ptr; 00217 extern PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glCompressedTexImage3DARB_ptr; 00218 extern PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glCompressedTexSubImage1DARB_ptr; 00219 extern PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glCompressedTexSubImage2DARB_ptr; 00220 extern PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glCompressedTexSubImage3DARB_ptr; 00221 extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB_ptr; 00222 00223 }; 00224 00225 // Pointer to glGenQueriesARB function 00226 typedef void (APIENTRY *GL_GenQueriesARB_Func) (GLuint n, GLuint *ids); 00227 extern GL_GenQueriesARB_Func glGenQueriesARB_ptr; 00228 00229 // Pointer to glDeleteQueriesARB function 00230 typedef void (APIENTRY *GL_DeleteQueriesARB_Func) (GLuint n, const GLuint *ids); 00231 extern GL_DeleteQueriesARB_Func glDeleteQueriesARB_ptr; 00232 00233 // Pointer to glBeginQueryARB function 00234 typedef void (APIENTRY *GL_BeginQueryARB_Func) (GLenum target, GLuint id); 00235 extern GL_BeginQueryARB_Func glBeginQueryARB_ptr; 00236 00237 // Pointer to glEndQueryARB function 00238 typedef void (APIENTRY *GL_EndQueryARB_Func) (GLenum target); 00239 extern GL_EndQueryARB_Func glEndQueryARB_ptr; 00240 00241 // Pointer to glGetQueryObjectuivARB function 00242 typedef void (APIENTRY *GL_GetQueryObjectuivARB_Func) (GLuint id, GLenum pname, GLuint *params); 00243 extern GL_GetQueryObjectuivARB_Func glGetQueryObjectuivARB_ptr; 00244 00245 00246 namespace Ogre { 00247 // Forward declarations 00248 class GLSupport; 00249 class GLRenderSystem; 00250 class GLTexture; 00251 class GLTextureManager; 00252 class GLGpuProgram; 00253 class GLContext; 00254 } 00255 00256 00257 #ifdef OGRE_DEBUG_MODE 00258 00259 #ifndef GL_ERROR_EXCEPT 00260 00261 #define OGRE_GL_GETERROR(ERROR_MSG) {const GLubyte *errString; \ 00262 GLenum errCode = glGetError(); \ 00263 if (errCode != GL_NO_ERROR) { \ 00264 errString = gluErrorString (errCode); \ 00265 LogManager::getSingleton().logMessage ("[GL] :" + Ogre::String(ERROR_MSG) + \ 00266 " : " + Ogre::String( (const char*) errString)); \ 00267 } \ 00268 } 00269 00270 #else //GL_ERROR_EXCEPT 00271 00272 #define OGRE_GL_GETERROR(ERROR_MSG) {const GLubyte *errString; \ 00273 GLenum errCode = glGetError(); \ 00274 if (errCode != GL_NO_ERROR) { \ 00275 errString = gluErrorString (errCode); \ 00276 OGRE_EXCEPT (Exception::ERR_INTERNAL_ERROR, \ 00277 Ogre::String(ERROR_MSG) + \ 00278 " : " + Ogre::String( (const char*) errString), String("")); \ 00279 } \ 00280 } 00281 00282 #endif //GL_ERROR_EXCEPT 00283 00284 #else //OGRE_DEBUG_MODE 00285 00286 #define OGRE_GL_GETERROR() 00287 00288 #endif //OGRE_DEBUG_MODE 00289 00290 #endif
Copyright © 2000-2005 by The OGRE Team
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Feb 12 12:59:45 2006