00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __RE_OGLExt_h__
00021 #define __RE_OGLExt_h__
00022
00023 #include "RE_API.h"
00024 #include "RE_OGL.h"
00025 #include "RE_Extension.h"
00026
00027 class UT_SymbolTable;
00028
00029 class re_ExtData;
00030
00031 class RE_API RE_OGLExt
00032 {
00033 public:
00034 RE_OGLExt();
00035
00036
00037
00038 void initialize();
00039
00040
00041 static bool hasExtension( RE_Extension ext );
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 RE_PFNGLBLENDCOLOREXTPROC glBlendColor;
00052
00053
00054 RE_PFNGLBLENDEQUATIONEXTPROC glBlendEquation;
00055
00056
00057 RE_PFNGLCONVOLUTIONFILTER1DEXTPROC glConvolutionFilter1D;
00058
00059
00060 RE_PFNGLHISTOGRAMEXTPROC glHistogram;
00061
00062
00063 RE_PFNGLTEXIMAGE3DPROC glTexImage3D;
00064 RE_PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
00065
00066
00067 RE_PFNGLPOLYGONOFFSETEXTPROC glPolygonOffsetEXT;
00068
00069
00070 RE_PFNGLPOLYGONOFFSETEXTPROC glPolygonOffset;
00071
00072
00073 RE_PFNGLACTIVETEXTUREPROC glActiveTexture;
00074 RE_PFNGLCLIENTACTIVETEXTUREPROC glClientActiveTexture;
00075
00076 RE_PFNGLFOGCOORDFEXTPROC glFogCoordf;
00077
00078
00079 RE_PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObject;
00080 RE_PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObject;
00081 RE_PFNGLDELETEOBJECTARBPROC glDeleteObject;
00082 RE_PFNGLSHADERSOURCEARBPROC glShaderSource;
00083 RE_PFNGLCOMPILESHADERARBPROC glCompileShader;
00084 RE_PFNGLLINKPROGRAMARBPROC glLinkProgram;
00085 RE_PFNGLDETACHOBJECTARBPROC glDetachObject;
00086 RE_PFNGLATTACHOBJECTARBPROC glAttachObject;
00087 RE_PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObject;
00088 RE_PFNGLGETINFOLOGARBPROC glGetInfoLog;
00089 RE_PFNGLGETHANDLEARBPROC glGetHandle;
00090 RE_PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fv;
00091 RE_PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fv;
00092 RE_PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fv;
00093 RE_PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fv;
00094 RE_PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4f;
00095 RE_PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3f;
00096 RE_PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2f;
00097 RE_PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1f;
00098 RE_PFNGLUNIFORM1FVARBPROC glUniform1fv;
00099 RE_PFNGLUNIFORM2FVARBPROC glUniform2fv;
00100 RE_PFNGLUNIFORM3FVARBPROC glUniform3fv;
00101 RE_PFNGLUNIFORM4FVARBPROC glUniform4fv;
00102 RE_PFNGLUNIFORM1FARBPROC glUniform1f;
00103 RE_PFNGLUNIFORM2FARBPROC glUniform2f;
00104 RE_PFNGLUNIFORM3FARBPROC glUniform3f;
00105 RE_PFNGLUNIFORM4FARBPROC glUniform4f;
00106 RE_PFNGLUNIFORM1IVARBPROC glUniform1iv;
00107 RE_PFNGLUNIFORM2IVARBPROC glUniform2iv;
00108 RE_PFNGLUNIFORM3IVARBPROC glUniform3iv;
00109 RE_PFNGLUNIFORM4IVARBPROC glUniform4iv;
00110 RE_PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocation;
00111 RE_PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fv;
00112 RE_PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fv;
00113 RE_PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fv;
00114 RE_PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfv;
00115 RE_PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameteriv;
00116 RE_PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttrib;
00117 RE_PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniform;
00118 RE_PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocation;
00119 RE_PFNGLGETSHADERIVPROC glGetShaderiv;
00120 RE_PFNGLGETPROGRAMIVPROC glGetProgramiv;
00121
00122 RE_PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffers;
00123 RE_PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffers;
00124 RE_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatus;
00125 RE_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2D;
00126 RE_PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebuffer;
00127
00128 RE_PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffers;
00129 RE_PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffers;
00130 RE_PFNGLISRENDERBUFFEREXTPROC glIsRenderbuffer;
00131 RE_PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbuffer;
00132 RE_PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorage;
00133 RE_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbuffer;
00134
00135 RE_PFNGLDRAWBUFFERSARBPROC glDrawBuffers;
00136
00137
00138 RE_PFNGLLOCKARRAYSEXTPROC glLockArrays;
00139 RE_PFNGLUNLOCKARRAYSEXTPROC glUnlockArrays;
00140
00141
00142
00143 RE_PFNGLGENBUFFERSARBPROC glGenBuffers;
00144 RE_PFNGLBINDBUFFERARBPROC glBindBuffer;
00145 RE_PFNGLBUFFERDATAARBPROC glBufferData;
00146 RE_PFNGLDELETEBUFFERSARBPROC glDeleteBuffers;
00147 RE_PFNGLBUFFERSUBDATAARBPROC glBufferSubData;
00148 RE_PFNGLMAPBUFFERARBPROC glMapBuffer;
00149 RE_PFNGLUNMAPBUFFERARBPROC glUnmapBuffer;
00150
00151 #ifdef WIN32
00152 RE_PFNWGLSWAPINTERVALPROC wglSwapIntervalEXT;
00153 RE_PFNWGLGETEXTENSIONSSTRINGPROC wglGetExtensionsStringEXT;
00154 #elif !defined(MBSD_COCOA)
00155 RE_PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI;
00156 #endif
00157
00158 private:
00159 static void setupTheExtensions();
00160 static void checkExtensions(re_ExtData *exts,
00161 const UT_SymbolTable &syms);
00162 static void enableExtension( RE_Extension ext );
00163 static void disableExtension( RE_Extension ext );
00164 static bool *theExtensions;
00165 };
00166
00167 RE_API extern void REsetOGLExt( RE_OGLExt *new_ext );
00168 RE_API extern RE_OGLExt * REgetOGLExt();
00169
00170 #endif // __RE_OGLExt_h__