PowerVR Software Development Kit |
00001 /*!*************************************************************************** 00002 @File OGLES/PVRTglesExt.h 00003 00004 @Brief GL extensions. 00005 00006 @Author PowerVR 00007 00008 @Date June 2004 00009 00010 @Copyright Copyright 2003-2004 by Imagination Technologies Limited. 00011 All rights reserved. No part of this software, either 00012 material or conceptual may be copied or distributed, 00013 transmitted, transcribed, stored in a retrieval system 00014 or translated into any human or computer language in any 00015 form by any means, electronic, mechanical, manual or 00016 other-wise, or disclosed to third parties without the 00017 express written permission of Imagination Technologies 00018 Limited, Unit 8, HomePark Industrial Estate, 00019 King's Langley, Hertfordshire, WD4 8LZ, U.K. 00020 00021 @Platform Independant 00022 00023 @Description GL extensions. 00024 00025 $Revision: 1.14 $ 00026 *****************************************************************************/ 00027 #ifndef _PVRTGLESEXT_H_ 00028 #define _PVRTGLESEXT_H_ 00029 00030 /**************************************************************************** 00031 ** Build options 00032 ****************************************************************************/ 00033 00034 #ifndef APIENTRY 00035 #define APIENTRY 00036 #endif 00037 #ifndef GL_APIENTRY 00038 #define GL_APIENTRY 00039 #endif 00040 00041 #define GL_PVRTGLESEXT_VERSION 1 00042 00043 /************************************************************************** 00044 ****************************** GL EXTENSIONS ****************************** 00045 **************************************************************************/ 00046 00047 class CPVRTglesExt 00048 { 00049 public: 00050 /* 00051 GL_OES_matrix_palette 00052 */ 00053 typedef void (GL_APIENTRY * PFNGLCURRENTPALETTEMATRIXOES) (GLuint matrixpaletteindex); 00054 typedef void (GL_APIENTRY * PFNGLLOADPALETTEFROMMODELVIEWMATRIXOES) (void); 00055 typedef void (GL_APIENTRY * PFNGLMATRIXINDEXPOINTEROES) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 00056 typedef void (GL_APIENTRY * PFNGLWEIGHTPOINTEROES) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 00057 00058 /* Function pointers */ 00059 PFNGLCURRENTPALETTEMATRIXOES glCurrentPaletteMatrixOES; 00060 PFNGLLOADPALETTEFROMMODELVIEWMATRIXOES glLoadPaletteFromModelViewMatrixOES; 00061 PFNGLMATRIXINDEXPOINTEROES glMatrixIndexPointerOES; 00062 PFNGLWEIGHTPOINTEROES glWeightPointerOES; 00063 00064 /* 00065 GL_IMG_texture_env_enhanced_fixed_function 00066 */ 00067 /* Tokens */ 00068 #define GL_MODULATE_COLOR_IMG 0x8C04 00069 #define GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05 00070 #define GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06 00071 #define GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07 00072 #define GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08 00073 #define GL_ADD_BLEND_IMG 0x8C09 00074 #ifndef GL_DOT3_RGBA 00075 #define GL_DOT3_RGBA 0x86AF 00076 #endif 00077 00078 00079 /* 00080 GL_IMG_texture_compression_pvrtc 00081 */ 00082 /* Tokens */ 00083 #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 00084 #define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 00085 #define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 00086 #define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 00087 00088 00089 /* 00090 GL_ARB_texture_env_combine 00091 */ 00092 /* Tokens */ 00093 #define GL_COMBINE 0x8570 00094 #define GL_COMBINE_RGB 0x8571 00095 #define GL_COMBINE_ALPHA 0x8572 00096 #define GL_RGB_SCALE 0x8573 00097 #define GL_ADD_SIGNED 0x8574 00098 #define GL_INTERPOLATE 0x8575 00099 #define GL_CONSTANT 0x8576 00100 #define GL_PRIMARY_COLOR 0x8577 00101 #define GL_PREVIOUS 0x8578 00102 #define GL_SOURCE0_RGB 0x8580 00103 #define GL_SOURCE1_RGB 0x8581 00104 #define GL_SOURCE2_RGB 0x8582 00105 #define GL_SOURCE0_ALPHA 0x8588 00106 #define GL_SOURCE1_ALPHA 0x8589 00107 #define GL_SOURCE2_ALPHA 0x858A 00108 #define GL_OPERAND0_RGB 0x8590 00109 #define GL_OPERAND1_RGB 0x8591 00110 #define GL_OPERAND2_RGB 0x8592 00111 #define GL_OPERAND0_ALPHA 0x8598 00112 #define GL_OPERAND1_ALPHA 0x8599 00113 #define GL_OPERAND2_ALPHA 0x859A 00114 #define GL_SUBTRACT 0x84E7 00115 00116 00117 /* 00118 GL_ARB_texture_env_dot3 00119 */ 00120 /* Tokens */ 00121 #define GL_DOT3_RGB 0x86AE 00122 #ifndef GL_DOT3_RGBA 00123 #define GL_DOT3_RGBA 0x86AF 00124 #endif 00125 00126 00127 /* 00128 GL_IMG_user_clip_plane 00129 */ 00130 /* Tokens */ 00131 #define GL_MAX_CLIP_PLANES 0x0D32 00132 #define GL_CLIP_PLANE0 0x3000 00133 #define GL_CLIP_PLANE1 0x3001 00134 #define GL_CLIP_PLANE2 0x3002 00135 #define GL_CLIP_PLANE3 0x3003 00136 #define GL_CLIP_PLANE4 0x3004 00137 #define GL_CLIP_PLANE5 0x3005 00138 00139 /* Typedefs */ 00140 typedef void (APIENTRY * PFNGLCLIPPLANEFIMG) (GLenum p, GLfloat eqn[4]); 00141 typedef void (APIENTRY * PFNGLCLIPPLANEXIMG) (GLenum p, GLfixed eqn[4]); 00142 00143 /* Function pointers */ 00144 PFNGLCLIPPLANEFIMG glClipPlanefIMG; 00145 PFNGLCLIPPLANEXIMG glClipPlanexIMG; 00146 00147 00148 /* 00149 GL_IMG_vertex_program 00150 */ 00151 /* Tokens */ 00152 #define GL_VERTEX_PROGRAM_ARB 0x8620 00153 #define GL_PROGRAM_STRING_ARB 0x8628 00154 #define GL_PROGRAM_ERROR_STRING_ARB 0x8874 00155 #define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD 00156 #define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 00157 #define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 00158 #define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 00159 #define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 00160 #define GL_MAX_PROGRAM_MATRICES_ARB 0x862F 00161 #define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E 00162 #define GL_MATRIX0_ARB 0x88C0 00163 #define GL_MATRIX1_ARB 0x88C1 00164 #define GL_MATRIX2_ARB 0x88C2 00165 #define GL_MATRIX3_ARB 0x88C3 00166 #define GL_MATRIX4_ARB 0x88C4 00167 #define GL_MATRIX5_ARB 0x88C5 00168 #define GL_MATRIX6_ARB 0x88C6 00169 #define GL_MATRIX7_ARB 0x88C7 00170 #define GL_PROGRAM_FORMAT_BINARY_IMG 0x8C0B 00171 #define GL_UNSIGNED_BYTE_NORM_IMG 0x8C0C 00172 /* IMG_texture_stream */ 00173 #define GL_TEXTURE_STREAM_IMG 0x8C0D 00174 #define GL_TEXTURE_NUM_STREAM_DEVICES_IMG 0x8C0E 00175 #define GL_TEXTURE_STREAM_DEVICE_WIDTH_IMG 0x8C0F 00176 #define GL_TEXTURE_STREAM_DEVICE_HEIGHT_IMG 0x8C10 00177 #define GL_TEXTURE_STREAM_DEVICE_FORMAT_IMG 0x8C11 00178 #define GL_TEXTURE_STREAM_DEVICE_NUM_BUFFERS_IMG 0x8C12 00179 00180 /* Typedefs */ 00181 typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERARB) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); 00182 typedef void (APIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARB) (GLuint index); 00183 typedef void (APIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARB) (GLuint index); 00184 typedef void (APIENTRY * PFNGLPROGRAMSTRINGARB) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); 00185 typedef void (APIENTRY * PFNGLBINDPROGRAMARB) (GLenum target, GLuint program); 00186 typedef void (APIENTRY * PFNGLDELETEPROGRAMSARB) (GLsizei n, const GLuint *programs); 00187 typedef void (APIENTRY * PFNGLGENPROGRAMSARB) (GLsizei n, GLuint *programs); 00188 typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4FARB) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 00189 typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4FVARB) (GLenum target, GLuint index, const GLfloat *params); 00190 typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARB) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 00191 typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARB) (GLenum target, GLuint index, const GLfloat *params); 00192 typedef GLboolean (APIENTRY * PFNGLISPROGRAMARB) (GLuint program); 00193 typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVARB) (GLuint index, const float *v); 00194 typedef void (APIENTRY * PFNGLVERTEXATTRIB4XVIMG) (GLuint index, const GLfixed *v); 00195 typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4XIMG) (GLenum target, GLuint index, GLfixed x, GLfixed y, GLfixed z, GLfixed w); 00196 typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4XVIMG) (GLenum target, GLuint index, const GLfixed *params); 00197 typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4XIMG) (GLenum target, GLuint index, GLfixed x, GLfixed y, GLfixed z, GLfixed w); 00198 typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4XVIMG) (GLenum target, GLuint index, const GLfixed *params); 00199 typedef void (APIENTRY * PFNGLDRAWTEXIOES) (GLint x, GLint y, GLint z, GLint width, GLint height); 00200 typedef void (APIENTRY * PFNGLDRAWTEXIVOES) (const GLint* coords); 00201 typedef void (APIENTRY * PFNGLDRAWTEXSOES) (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); 00202 typedef void (APIENTRY * PFNGLDRAWTEXSVOES) (const GLshort* coords); 00203 typedef void (APIENTRY * PFNGLDRAWTEXXOES) (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); 00204 typedef void (APIENTRY * PFNGLDRAWTEXXVOES) (const GLfixed* coords); 00205 typedef void (APIENTRY * PFNGLDRAWTEXFOES) (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); 00206 typedef void (APIENTRY * PFNGLDRAWTEXFVOES) (const GLfloat* coords); 00207 /* IMG_texture_stream */ 00208 typedef void (APIENTRY * PFNGLGETTEXSTREAMDEVICEATTRIBIVIMG)(GLint device, GLenum pname, GLint *params); 00209 typedef void (APIENTRY * PFNGLTEXBINDSTREAMIMG)(GLint device, GLint deviceoffset); 00210 typedef const GLubyte * (APIENTRY * PFNGLGETTEXSTREAMDEVICENAMEIMG)(GLint device); 00211 /* GL_EXT_multi_draw_arrays */ 00212 typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTS) (GLenum mode, GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); // glvoid 00213 00214 00215 /* Function pointers */ 00216 PFNGLVERTEXATTRIBPOINTERARB glVertexAttribPointerARB; 00217 PFNGLENABLEVERTEXATTRIBARRAYARB glEnableVertexAttribArrayARB; 00218 PFNGLDISABLEVERTEXATTRIBARRAYARB glDisableVertexAttribArrayARB; 00219 PFNGLPROGRAMSTRINGARB glProgramStringARB; 00220 PFNGLBINDPROGRAMARB glBindProgramARB; 00221 PFNGLDELETEPROGRAMSARB glDeleteProgramsARB; 00222 PFNGLGENPROGRAMSARB glGenProgramsARB; 00223 PFNGLISPROGRAMARB glIsProgramARB; 00224 PFNGLPROGRAMENVPARAMETER4FARB glProgramEnvParameter4fARB; 00225 PFNGLPROGRAMENVPARAMETER4FVARB glProgramEnvParameter4fvARB; 00226 PFNGLPROGRAMLOCALPARAMETER4FARB glProgramLocalParameter4fARB; 00227 PFNGLPROGRAMLOCALPARAMETER4FVARB glProgramLocalParameter4fvARB; 00228 PFNGLVERTEXATTRIB4FVARB glVertexAttrib4fvARB; 00229 PFNGLVERTEXATTRIB4XVIMG glVertexAttrib4xvIMG; 00230 PFNGLPROGRAMLOCALPARAMETER4XIMG glProgramLocalParameter4xIMG; 00231 PFNGLPROGRAMLOCALPARAMETER4XVIMG glProgramLocalParameter4xvIMG; 00232 PFNGLPROGRAMENVPARAMETER4XIMG glProgramEnvParameter4xIMG; 00233 PFNGLPROGRAMENVPARAMETER4XVIMG glProgramEnvParameter4xvIMG; 00234 PFNGLDRAWTEXIOES glDrawTexiOES; 00235 PFNGLDRAWTEXIVOES glDrawTexivOES; 00236 PFNGLDRAWTEXSOES glDrawTexsOES; 00237 PFNGLDRAWTEXSVOES glDrawTexsvOES; 00238 PFNGLDRAWTEXXOES glDrawTexxOES; 00239 PFNGLDRAWTEXXVOES glDrawTexxvOES; 00240 PFNGLDRAWTEXFOES glDrawTexfOES; 00241 PFNGLDRAWTEXFVOES glDrawTexfvOES; 00242 /* IMG_texture_stream */ 00243 PFNGLGETTEXSTREAMDEVICEATTRIBIVIMG glGetTexStreamDeviceAttribivIMG; 00244 PFNGLTEXBINDSTREAMIMG glTexBindStreamIMG; 00245 PFNGLGETTEXSTREAMDEVICENAMEIMG glGetTexStreamDeviceNameIMG; 00246 /* GL_EXT_multi_draw_arrays */ 00247 PFNGLMULTIDRAWELEMENTS glMultiDrawElementsEXT; 00248 00249 00250 /************************************************************************** 00251 ****************************** EGL EXTENSIONS ***************************** 00252 **************************************************************************/ 00253 00254 /* 00255 EGL_IMG_power_management 00256 */ 00257 /* Tokens */ 00258 #define EGL_CONTEXT_LOST_IMG 0x300E 00259 00260 public: 00261 /*!*********************************************************************** 00262 @Function Init 00263 @Description Initialises IMG extensions 00264 *************************************************************************/ 00265 void Init(); 00266 00267 // The recommended technique for querying OpenGL extensions; 00268 // from http://opengl.org/resources/features/OGLextensions/ 00269 static bool IsGLExtensionSupported(const char *extension); 00270 }; 00271 00272 00273 /**************************************************************************** 00274 ** Functions 00275 ****************************************************************************/ 00276 00277 00278 #endif /* _PVRTGLESEXT_H_ */ 00279 00280 /***************************************************************************** 00281 End of file (PVRTglesExt.h) 00282 *****************************************************************************/
Copyright © 1999-2006, PowerVR Technologies and partners. PowerVR Technologies is a division of Imagination Technologies Ltd.