1 2 #ifndef __GL_EXTENSIONS_H__ 3 #define __GL_EXTENSIONS_H__ 4 5 6 #ifdef WIN32 7 #define WIN32_LEAN_AND_MEAN 8 #include <windows.h> 9 // �ǡ����Ѵ��������˥�̵���� 10 #pragma warning(disable : 4244) // MIPS 11 #pragma warning(disable : 4136) // X86 12 #pragma warning(disable : 4051) // ALPHA 13 #endif 14 15 #define GL_GLEXT_PROTOTYPES 16 17 #include <GL/gl.h> 18 #include <GL/glut.h> 19 20 #include "MString.H" 21 #include "Math3D.H" 22 23 24 //#define DONOT_USE_GL_VERSION_1_1 25 26 27 //#define DONOT_USE_ARB_multitexture 28 //#define DONOT_USE_SGIS_multitexture 29 //#define DONOT_USE_EXT_multitexture 30 31 //#define DONOT_USE_GLUT_GAME_MODE 32 //#define DONOT_USE_GLUT_KEYBOARD_STATUS 33 //#define DONOT_USE_GLUT_FULL_SCREEN 34 //#define DONOT_USE_GLUT_SET_CURSOR 35 36 #if (GLUT_API_VERSION >= 3) 37 #define IS_SUPPORTED_GLUT_FULL_SCREEN 38 #define IS_SUPPORTED_GLUT_SET_CURSOR 39 #endif 40 41 #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) 42 #define IS_SUPPORTED_GLUT_GAME_MODE 43 #define IS_SUPPORTED_GLUT_KEYBOARD_STATUS 44 #endif 45 46 #if defined DONOT_USE_GLUT_GAME_MODE && defined IS_SUPPORTED_GLUT_GAME_MODE 47 #undef IS_SUPPORTED_GLUT_GAME_MODE 48 #endif 49 50 #if defined DONOT_USE_GLUT_FULL_SCREEN && defined IS_SUPPORTED_GLUT_FULL_SCREEN 51 #undef IS_SUPPORTED_GLUT_FULL_SCREEN 52 #endif 53 54 #if defined DONOT_USE_GLUT_SET_CURSOR && defined IS_SUPPORTED_GLUT_SET_CURSOR 55 #undef IS_SUPPORTED_GLUT_SET_CURSOR 56 #endif 57 58 59 #if defined WIN32 && defined MESA 60 #ifndef __WIN32__ 61 #define __WIN32__ 62 #endif // #ifndef __WIN32__ 63 #endif // #if defined WIN32 && defined MESA 64 65 66 // OpenGL-1.0 �Τ��� 67 #if defined DONOT_USE_GL_VERSION_1_1 && defined GL_VERSION_1_1 68 #undef GL_VERSION_1_1 69 70 // OpenGL-1.1 �ʹߤΥإå��Ǥ����������ʤ����̻� 71 #undef GL_POLYGON_OFFSET_FILL 72 #undef GL_POLYGON_OFFSET_POINT 73 #undef GL_POLYGON_OFFSET_LINE 74 #undef GL_POLYGON_OFFSET_FILL 75 #undef GL_POLYGON_OFFSET_FACTOR 76 #undef GL_POLYGON_OFFSET_UNITS 77 78 #undef GL_ALPHA4 79 #undef GL_ALPHA8 80 #undef GL_ALPHA12 81 #undef GL_ALPHA16 82 #undef GL_LUMINANCE4 83 #undef GL_LUMINANCE8 84 #undef GL_LUMINANCE12 85 #undef GL_LUMINANCE16 86 #undef GL_LUMINANCE4_ALPHA4 87 #undef GL_LUMINANCE6_ALPHA2 88 #undef GL_LUMINANCE8_ALPHA8 89 #undef GL_LUMINANCE12_ALPHA4 90 #undef GL_LUMINANCE12_ALPHA12 91 #undef GL_LUMINANCE16_ALPHA16 92 #undef GL_INTENSITY 93 #undef GL_INTENSITY4 94 #undef GL_INTENSITY8 95 #undef GL_INTENSITY12 96 #undef GL_INTENSITY16 97 #undef GL_R3_G3_B2 98 #undef GL_RGB4 99 #undef GL_RGB5 100 #undef GL_RGB8 101 #undef GL_RGB10 102 #undef GL_RGB12 103 #undef GL_RGB16 104 #undef GL_RGBA2 105 #undef GL_RGBA4 106 #undef GL_RGB5_A1 107 #undef GL_RGBA8 108 #undef GL_RGB10_A2 109 #undef GL_RGBA12 110 #undef GL_RGBA16 111 112 #undef GL_TEXTURE_RED_SIZE 113 #undef GL_TEXTURE_GREEN_SIZE 114 #undef GL_TEXTURE_BLUE_SIZE 115 #undef GL_TEXTURE_ALPHA_SIZE 116 #undef GL_TEXTURE_LUMINANCE_SIZE 117 #undef GL_TEXTURE_INTENSITY_SIZE 118 #undef GL_PROXY_TEXTURE_1D 119 #undef GL_PROXY_TEXTURE_2D 120 121 #undef GL_TEXTURE_INTERNAL_FORMAT 122 123 #endif // #if defined DONOT_USE_GL_VERSION_1_1 && defined GL_VERSION_1_1 124 125 126 // Texture internal formats (OpenGL-1.0) 127 #ifndef GL_VERSION_1_1 128 129 #define GL_ALPHA4 0x803B 130 #define GL_ALPHA8 0x803C 131 #define GL_ALPHA12 0x803D 132 #define GL_ALPHA16 0x803E 133 #define GL_LUMINANCE4 0x803F 134 #define GL_LUMINANCE8 0x8040 135 #define GL_LUMINANCE12 0x8041 136 #define GL_LUMINANCE16 0x8042 137 #define GL_LUMINANCE4_ALPHA4 0x8043 138 #define GL_LUMINANCE6_ALPHA2 0x8044 139 #define GL_LUMINANCE8_ALPHA8 0x8045 140 #define GL_LUMINANCE12_ALPHA4 0x8046 141 #define GL_LUMINANCE12_ALPHA12 0x8047 142 #define GL_LUMINANCE16_ALPHA16 0x8048 143 #define GL_INTENSITY 0x8049 144 #define GL_INTENSITY4 0x804A 145 #define GL_INTENSITY8 0x804B 146 #define GL_INTENSITY12 0x804C 147 #define GL_INTENSITY16 0x804D 148 #define GL_R3_G3_B2 0x2A10 149 #define GL_RGB4 0x804F 150 #define GL_RGB5 0x8050 151 #define GL_RGB8 0x8051 152 #define GL_RGB10 0x8052 153 #define GL_RGB12 0x8053 154 #define GL_RGB16 0x8054 155 #define GL_RGBA2 0x8055 156 #define GL_RGBA4 0x8056 157 #define GL_RGB5_A1 0x8057 158 #define GL_RGBA8 0x8058 159 #define GL_RGB10_A2 0x8059 160 #define GL_RGBA12 0x805A 161 #define GL_RGBA16 0x805B 162 163 #define GL_TEXTURE_RED_SIZE 0x805C 164 #define GL_TEXTURE_GREEN_SIZE 0x805D 165 #define GL_TEXTURE_BLUE_SIZE 0x805E 166 #define GL_TEXTURE_ALPHA_SIZE 0x805F 167 #define GL_TEXTURE_LUMINANCE_SIZE 0x8060 168 #define GL_TEXTURE_INTENSITY_SIZE 0x8061 169 #define GL_PROXY_TEXTURE_1D 0x8063 170 #define GL_PROXY_TEXTURE_2D 0x8064 171 172 #define GL_TEXTURE_INTERNAL_FORMAT 0x1003 // = GL_TEXTURE_COMPONENTS 173 174 #endif 175 176 177 178 #ifdef WIN32 179 #define DEFAULT_OPENGL32_DLL "opengl32.dll" 180 #endif // #ifdef WIN32 181 182 183 // �ޥ���ƥ�������λ��Ѥˤ� OpenGL-1.1 �ʹߤ�ɬ�� 184 #ifndef GL_VERSION_1_1 185 186 #ifndef DONOT_USE_ARB_multitexture 187 #define DONOT_USE_ARB_multitexture 188 #endif // DONOT_USE_SGIS_multitexture 189 190 #ifndef DONOT_USE_SGIS_multitexture 191 #define DONOT_USE_SGIS_multitexture 192 #endif // DONOT_USE_SGIS_multitexture 193 194 #ifndef DONOT_USE_EXT_multitexture 195 #define DONOT_USE_EXT_multitexture 196 #endif // DONOT_USE_SGIS_multitexture 197 198 #endif // #ifndef GL_VERSION_1_1 199 200 201 // OpenGL �С������ʾ������ʲ�����ޤǡ� 202 float GetOpenGLVersion() ; 203 204 205 // multitexture �ݡ��Ȥ���С�������̤��� 206 #if 1 207 #define GL_VERSION_multitexture 208 #endif 209 #define GL_VERSION_multitexture_F 9999.9f 210 211 // separate_specular_color �ݡ��Ȥ���С�������1.2�� 212 #ifdef GL_VERSION_1_2 213 #define GL_VERSION_separate_specular_color 214 #endif 215 #define GL_VERSION_separate_specular_color_F 1.2f 216 217 // texture_filter_anisotropic �ݡ��Ȥ���С�������̤��� 218 #ifdef GL_VERSION_1_ 219 #define GL_VERSION_texture_filter_anisotropic 220 #endif 221 #define GL_VERSION_texture_filter_anisotropic_F 9999.9f 222 223 // texture object �ݡ��Ȥ���С�������1.1�� 224 #ifdef GL_VERSION_1_1 225 #define GL_VERSION_texture_object 226 #endif 227 #define GL_VERSION_texture_object_F 1.1f 228 229 // polygon offset �ݡ��Ȥ���С�������1.1�� 230 #ifdef GL_VERSION_1_1 231 #define GL_VERSION_polygon_offset 232 #endif 233 #define GL_VERSION_polygon_offset_F 1.1f 234 235 // texture_cube_map �ݡ��Ȥ���С�������̤��� 236 #if 1 237 #define GL_VERSION_texture_cube_map 238 #endif 239 #define GL_VERSION_texture_cube_map_F 9999.9f 240 241 // texture_compression �ݡ��Ȥ���С�������̤��� 242 #if 1 243 #define GL_VERSION_texture_compression 244 #endif 245 #define GL_VERSION_texture_compression_F 9999.9f 246 247 // texture_compression_s3tc �ݡ��Ȥ���С������ʥ��ݡ��Ȥ�������ʤ����� 248 #ifdef GL_VERSION_1_ 249 #define GL_VERSION_texture_compression_s3tc 250 #endif 251 #define GL_VERSION_texture_compression_s3tc_F 9999.9f 252 253 // texture_compression_FXT1 �ݡ��Ȥ���С������ʥ��ݡ��Ȥ�������ʤ����� 254 #ifdef GL_VERSION_1_ 255 #define GL_VERSION_texture_compression_FXT1 256 #endif 257 #define GL_VERSION_texture_compression_FXT1_F 9999.9f 258 259 260 // OpenGL Extension ��Ϣ��Windows WGL �Τߡ� 261 #if defined(WIN32) && !defined(MESA) 262 263 // �ޥ���ƥ��������Ϣ 264 265 // ARB_multitexture 266 #ifndef GL_ARB_multitexture 267 #define GL_ARB_multitexture 268 269 // define 270 #define GL_ACTIVE_TEXTURE_ARB 0x84E0 271 #define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 272 #define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 273 #define GL_TEXTURE0_ARB 0x84C0 274 #define GL_TEXTURE1_ARB 0x84C1 275 #define GL_TEXTURE2_ARB 0x84C2 276 #define GL_TEXTURE3_ARB 0x84C3 277 278 #endif // #ifndef GL_ARB_multitexture 279 280 // ARB_multitexture functions 281 typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); 282 typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); 283 typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); 284 typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); 285 typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); 286 typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); 287 typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); 288 typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); 289 typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); 290 typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); 291 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); 292 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); 293 typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); 294 typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); 295 typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); 296 typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); 297 typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); 298 typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); 299 typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); 300 typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); 301 typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); 302 typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); 303 typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); 304 typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); 305 typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); 306 typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); 307 typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); 308 typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); 309 typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); 310 typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); 311 typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); 312 typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); 313 typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum target); 314 typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum target); 315 316 extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB ; 317 extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB ; 318 319 320 #ifndef GL_SGIS_multitexture 321 #define GL_SGIS_multitexture 322 323 // define from 324 // SGIS_multitexture (from 3Dfx OpenGL Beta 2.1 "gl.h") 325 #ifndef MESA 326 #define GL_TEXTURE0_SGIS 0x835E 327 #define GL_TEXTURE1_SGIS 0x835F 328 329 // Mesa 330 #else 331 #define GL_SELECTED_TEXTURE_SGIS 0x835C 332 #define GL_SELECTED_TEXTURE_COORD_SET_SGIS 0x835D 333 #define GL_MAX_TEXTURES_SGIS 0x835E 334 #define GL_TEXTURE0_SGIS 0x835F 335 #define GL_TEXTURE1_SGIS 0x8360 336 #define GL_TEXTURE2_SGIS 0x8361 337 #define GL_TEXTURE3_SGIS 0x8362 338 #define GL_TEXTURE_COORD_SET_SOURCE_SGIS 0x8363 339 340 #endif // #ifndef MESA ... #else 341 342 #endif // #ifndef GL_SGIS_multitexture 343 344 // SGIS_multitexture functions 345 typedef void (APIENTRY * PFNGLSELECTTEXTURESGISPROC) (GLenum target); 346 typedef void (APIENTRY * PFNGLSELECTTEXTURECOORDSETSGISPROC) (GLenum target); 347 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FSGISPROC) (GLenum target, GLfloat s, GLfloat t); 348 349 extern PFNGLSELECTTEXTURESGISPROC glSelectTextureSGIS ; 350 extern PFNGLSELECTTEXTURECOORDSETSGISPROC glSelectTextureCoordSetSGIS ; 351 extern PFNGLMULTITEXCOORD2FSGISPROC glMultiTexCoord2fSGIS ; 352 353 354 // EXT_multitexture 355 #ifndef GL_EXT_multitexture 356 #define GL_EXT_multitexture 357 358 // define 359 #define GL_SELECTED_TEXTURE_EXT 0x83C0 360 #define GL_SELECTED_TEXTURE_COORD_SET_EXT 0x83C1 361 #define GL_SELECTED_TEXTURE_TRANSFORM_EXT 0x83C2 362 #define GL_MAX_TEXTURES_EXT 0x83C3 363 #define GL_MAX_TEXTURE_COORD_SETS_EXT 0x83C4 364 #define GL_TEXTURE_ENV_COORD_SET_EXT 0x83C5 365 #define GL_TEXTURE0_EXT 0x83C6 366 #define GL_TEXTURE1_EXT 0x83C7 367 #define GL_TEXTURE2_EXT 0x83C8 368 #define GL_TEXTURE3_EXT 0x83C9 369 370 #endif // #ifndef GL_EXT_multitexture 371 372 // EXT_multitexture functions 373 typedef void (APIENTRY * PFNGLSELECTTEXTUREEXTPROC) (GLenum target); 374 typedef void (APIENTRY * PFNGLSELECTTEXTURECOORDSETEXTPROC) (GLenum target); 375 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FEXTPROC) (GLenum target, GLfloat s, GLfloat t); 376 377 extern PFNGLSELECTTEXTUREEXTPROC glSelectTextureEXT ; 378 extern PFNGLSELECTTEXTURECOORDSETEXTPROC glSelectTextureCoordSetEXT ; 379 extern PFNGLMULTITEXCOORD2FEXTPROC glMultiTexCoord2fEXT ; 380 381 382 // EXT_texture_object 383 #ifndef GL_EXT_texture_object 384 #define GL_EXT_texture_object 385 386 // define 387 #define GL_TEXTURE_PRIORITY_EXT 0x8066 388 #define GL_TEXTURE_RESIDENT_EXT 0x8067 389 390 #define GL_TEXTURE_1D_BINDING_EXT 0x8068 391 #define GL_TEXTURE_2D_BINDING_EXT 0x8069 392 #define GL_TEXTURE_3D_BINDING_EXT 0x806A 393 394 #endif // #ifndef GL_EXT_texture_object 395 396 // EXT_texture_object functions 397 typedef void (APIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures) ; 398 typedef void (APIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, GLuint *textures) ; 399 typedef void (APIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture) ; 400 typedef GLboolean (APIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture) ; 401 402 extern PFNGLGENTEXTURESEXTPROC glGenTexturesEXT ; 403 extern PFNGLDELETETEXTURESEXTPROC glDeleteTexturesEXT ; 404 extern PFNGLBINDTEXTUREEXTPROC glBindTextureEXT ; 405 extern PFNGLISTEXTUREEXTPROC glIsTextureEXT ; 406 407 408 // EXT_polygon_offset 409 #ifndef GL_EXT_polygon_offset 410 #define GL_EXT_polygon_offset 411 412 // define 413 #define GL_POLYGON_OFFSET_EXT 0x8037 414 #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 415 #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 416 417 #endif // #ifndef GL_EXT_polygon_offset 418 419 // GL_EXT_polygon_offset functions 420 typedef void (APIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat facter, GLfloat bias) ; 421 422 extern PFNGLPOLYGONOFFSETEXTPROC glPolygonOffsetEXT ; 423 424 425 426 #endif // #if defined(_WIN32) && !defined(MESA) 427 428 429 // �ޥ���ƥ�����������礷�����ե������ʼ��̻Ҥϴ� ^^;�� 430 431 #ifdef WIN32 432 typedef void (APIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum target) ; 433 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t) ; 434 #else 435 typedef void (* PFNGLACTIVETEXTUREPROC) (GLenum target) ; 436 typedef void (* PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t) ; 437 #endif // #ifdef WIN32 ... #else 438 439 extern PFNGLACTIVETEXTUREPROC p_glActiveTexture ; 440 extern PFNGLMULTITEXCOORD2FPROC p_glMultiTexCoord2f ; 441 442 extern GLenum DEF_GL_MAX_TEXTURE_UNITS ; 443 extern GLenum DEF_GL_TEXTURE0 ; 444 extern GLenum DEF_GL_TEXTURE1 ; 445 extern GLenum DEF_GL_TEXTURE2 ; 446 extern GLenum DEF_GL_TEXTURE3 ; 447 448 // OpenGL �� multitexture �ݡ��Ȥ��ʤ��С������ξ�� 449 #ifndef GL_VERSION_multitexture 450 451 #define glActiveTexture (*p_glActiveTexture) 452 #define glMultiTexCoord2f (*p_glMultiTexCoord2f) 453 #define GL_MAX_TEXTURE_UNITS DEF_GL_MAX_TEXTURE_UNITS 454 #define GL_TEXTURE0 DEF_GL_TEXTURE0 455 #define GL_TEXTURE1 DEF_GL_TEXTURE1 456 #define GL_TEXTURE2 DEF_GL_TEXTURE2 457 #define GL_TEXTURE3 DEF_GL_TEXTURE3 458 459 #endif // #ifndef GL_VERSION_multitexture 460 461 462 // OpenGL Extension ���ݡ��ȥ����å� 463 int IsSupported_OpenGLExtension(const String& name) ; 464 465 // multitexture ��Ϣ���ݡ��ȥ����å� 466 int IsSupported_ARB_multitexture() ; 467 int IsSupported_SGIS_multitexture() ; 468 int IsSupported_EXT_multitexture() ; 469 char *IsSupported_multitexture(int flag_ARB = TRUE, int flag_EXT = TRUE, int flag_SGIS = TRUE) ; 470 471 // ���ݡ��ȼ��� 472 #define CURRENT_NAME_GL_VERSION_multitexture "OpenGL-1.? Multi-Texture" 473 #define CURRENT_NAME_GL_ARB_multitexture "GL_ARB_multitexture" 474 #define CURRENT_NAME_GL_EXT_multitexture "GL_EXT_multitexture" 475 #define CURRENT_NAME_GL_SGIS_multitexture "GL_SGIS_multitexture" 476 477 478 // �ؿ��ɲä��ʤ����ѥ��ɲäΤߤγ�ĥ��ǽ 479 // ����ॵ�ݡ��ȤΤߤǻ��Ѳ�ǽ 480 481 // �ե������ǥ��� 482 483 // WIN_phong_shading 484 // �ؿ����ɲäϤʤ����ѥ����ɲäΤߤǤ��뤿�ᡢ�����Τߤ��б��� OK 485 #ifndef GL_WIN_phong_shading 486 #define GL_WIN_phong_shading 487 // define 488 #define GL_PHONG_WIN ((GLenum)0x80EA) 489 #define GL_PHONG_HINT_WIN ((GLenum)0x80EB) 490 491 #endif // #ifndef GL_WIN_phong_shading 492 493 494 // Separate Specular Color 495 496 // OpenGL �� separate_specular_color �ݡ��Ȥ��ʤ��С�������1.2 ̤���ˤΤ� 497 // �ؿ����ɲäϤʤ����ѥ����ɲäΤߤǤ��뤿�ᡢ�����Τߤ��б��� OK 498 #ifndef GL_VERSION_separate_specular_color 499 500 #define GL_LIGHT_MODEL_COLOR_CONTROL ((GLenum)0x81F8) 501 #define GL_SINGLE_COLOR ((GLenum)0x81F9) 502 #define GL_SEPARATE_SPECULAR_COLOR ((GLenum)0x81FA) 503 504 #endif // #ifndef GL_VERSION_separate_specular_color 505 506 507 // Separate Specular Color Extensions 508 // OpenGL �С������˴ؤ�餺���å� 509 510 // EXT_separate_specular_color 511 #ifndef GL_EXT_separate_specular_color 512 #define GL_EXT_separate_specular_color 513 514 // define 515 #define GL_LIGHT_MODEL_COLOR_CONTROL_EXT GL_LIGHT_MODEL_COLOR_CONTROL 516 #define GL_SINGLE_COLOR_EXT GL_SINGLE_COLOR 517 #define GL_SEPARATE_SPECULAR_COLOR_EXT GL_SEPARATE_SPECULAR_COLOR 518 519 #endif // #ifndef GL_EXT_separate_specular_color 520 521 // ARB_separate_specular_color 522 #ifndef GL_ARB_separate_specular_color 523 #define GL_ARB_separate_specular_color 524 525 // define 526 #define GL_LIGHT_MODEL_COLOR_CONTROL_ARB GL_LIGHT_MODEL_COLOR_CONTROL 527 #define GL_SINGLE_COLOR_ARB GL_SINGLE_COLOR 528 #define GL_SEPARATE_SPECULAR_COLOR_ARB GL_SEPARATE_SPECULAR_COLOR 529 530 #endif // #ifndef GL_ARB_separate_specular_color 531 532 533 // �������ꤳ�����顪���������������������������������������������������������������������� 534 535 // Texture Filter Anisotropic 536 537 // OpenGL �� texture_filter_anisotropic �ݡ��Ȥ��ʤ��С�������̤��ˤΤ� 538 // �ؿ����ɲäϤʤ����ѥ����ɲäΤߤǤ��뤿�ᡢ�����Τߤ��б��� OK 539 #ifndef GL_VERSION_texture_filter_anisotropic 540 541 // �С��������������ݡ��Ȥ��줿�����ǡ������˷���ʸ��ߤ�̤��ʤΤǻ���� 542 // �⤷�������ͤ������ͤȰۤʤ���ϡ��ѿ���ưŪ�˥��åȤ���褦�ѹ���ɬ�פʤΤ���� 543 #define GL_TEXTURE_MAX_ANISOTROPY ((GLenum)0x84fe) 544 #define GL_MAX_TEXTURE_MAX_ANISOTROPY ((GLenum)0x84ff) 545 546 #endif // #ifndef GL_VERSION_texture_filter_anisotropic 547 548 549 // Texture Filter Anisotropic Extensions 550 // OpenGL �С������˴ؤ�餺���å� 551 552 // EXT_texture_filter_anisotropic 553 #ifndef GL_EXT_texture_filter_anisotropic 554 #define GL_EXT_texture_filter_anisotropic 555 556 // define 557 #define GL_TEXTURE_MAX_ANISOTROPY_EXT ((GLenum)0x84fe) 558 #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT ((GLenum)0x84ff) 559 560 #endif // #ifndef GL_EXT_texture_filter_anisotropic 561 562 563 // Texture Reflection �Υѥ� 564 // �������Ǥϸ���� OK 565 // OpenGL �� texture_cube_map �ݡ��Ȥ��ʤ��С�������̤��ˤΤ� 566 567 // �С��������������ݡ��Ȥ��줿�����ǡ������˷���ʸ��ߤ�̤��ʤΤǻ���� 568 // �⤷�������ͤ������ͤȰۤʤ���ϡ��ѿ���ưŪ�˥��åȤ���褦�ѹ���ɬ�פʤΤ���� 569 #ifndef GL_VERSION_texture_cube_map 570 #define GL_NORMAL_MAP ((GLenum)0x8511) 571 #define GL_REFLECTION_MAP ((GLenum)0x8512) 572 #endif // #ifndef GL_VERSION_texture_cube_map 573 574 // texture_cube_map extensions 575 // OpenGL �С������˴ؤ�餺���å� 576 577 // ARB_texture_cube_map 578 #ifndef GL_ARB_texture_cube_map 579 #define GL_ARB_texture_cube_map 580 581 #define GL_NORMAL_MAP_ARB GL_NORMAL_MAP 582 #define GL_REFLECTION_MAP_ARB GL_REFLECTION_MAP 583 584 #define GL_TEXTURE_CUBE_MAP_ARB ((GLenum)0x8513) 585 #define GL_TEXTURE_BINDING_CUBE_MAP_ARB ((GLenum)0x8514) 586 587 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB ((GLenum)0x8515) 588 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB ((GLenum)0x8516) 589 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB ((GLenum)0x8517) 590 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB ((GLenum)0x8518) 591 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB ((GLenum)0x8519) 592 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB ((GLenum)0x851a) 593 594 #endif // #ifndef GL_ARB_texture_cube_map 595 596 #define GL_EXT_texture_cube_map 597 598 // EXT_texture_cube_map 599 #ifndef GL_EXT_texture_cube_map 600 #define GL_EXT_texture_cube_map 601 602 #define GL_NORMAL_MAP_EXT GL_NORMAL_MAP 603 #define GL_REFLECTION_MAP_EXT GL_REFLECTION_MAP 604 605 #define GL_TEXTURE_CUBE_MAP_EXT ((GLenum)0x8513) 606 #define GL_TEXTURE_BINDING_CUBE_MAP_EXT ((GLenum)0x8514) 607 608 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT ((GLenum)0x8515) 609 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT ((GLenum)0x8516) 610 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT ((GLenum)0x8517) 611 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT ((GLenum)0x8518) 612 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT ((GLenum)0x8519) 613 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT ((GLenum)0x851a) 614 615 #endif // #ifndef GL_EXT_texture_cube_map 616 617 // NV_texgen_reflection 618 // OpenGL �С������˴ؤ�餺���å� 619 #ifndef GL_NV_texgen_reflection 620 #define GL_NV_texgen_reflection 621 622 #define GL_NORMAL_MAP_NV GL_NORMAL_MAP 623 #define GL_REFLECTION_MAP_NV GL_REFLECTION_MAP 624 625 #endif // #ifndef GL_NV_texgen_reflection 626 627 // GL_ARB_texture_cube_map ���ݡ��ȥ����å� 628 int IsSupported_ARB_texture_cube_map() ; 629 630 // GL_EXT_texture_cube_map ���ݡ��ȥ����å� 631 int IsSupported_EXT_texture_cube_map() ; 632 633 // GL_NV_texgen_reflection ���ݡ��ȥ����å� 634 int IsSupported_NV_texgen_reflection() ; 635 636 // texgen_reflection ��Ϣ���ݡ��ȥ����å� 637 // GL_ARB_texture_cube_map �⤷���� 638 // GL_EXT_texture_cube_map �⤷���� 639 // GL_NV_texgen_reflection �ݡ��Ȥ��Ƥ��뤫 640 char *IsSupported_texgen_reflection(int flag_ARB_texture_cube_map = TRUE, 641 int flag_EXT_texture_cube_map = TRUE, 642 int flag_NV_texgen_reflection = TRUE) ; 643 644 // ���ݡ��ȼ��� 645 #define CURRENT_NAME_GL_ARB_texture_cube_map "GL_ARB_texture_cube_map" 646 #define CURRENT_NAME_GL_EXT_texture_cube_map "GL_EXT_texture_cube_map" 647 #define CURRENT_NAME_GL_NV_texgen_reflection "GL_NV_texgen_reflection" 648 649 650 // texture_compression 651 // �С��������������ݡ��Ȥ��줿�����ǡ������˷���ʸ��ߤ�̤��ʤΤǻ���� 652 // �⤷�������ͤ������ͤȰۤʤ���ϡ��ѿ���ưŪ�˥��åȤ���褦�ѹ���ɬ�פʤΤ���� 653 #ifndef GL_VERSION_texture_compression 654 #define GL_COMPRESSED_ALPHA ((GLenum)0x84E9) 655 #define GL_COMPRESSED_LUMINANCE ((GLenum)0x84EA) 656 #define GL_COMPRESSED_LUMINANCE_ALPHA ((GLenum)0x84EB) 657 #define GL_COMPRESSED_INTENSITY ((GLenum)0x84EC) 658 #define GL_COMPRESSED_RGB ((GLenum)0x84ED) 659 #define GL_COMPRESSED_RGBA ((GLenum)0x84EE) 660 #endif // #ifndef GL_VERSION_texture_compression 661 662 // �Ȥꤢ���� OpenGL �С������˴ؤ�餺���å� 663 #ifndef GL_ARB_texture_compression 664 #define GL_ARB_texture_compression 665 666 #define GL_COMPRESSED_ALPHA_ARB GL_COMPRESSED_ALPHA 667 #define GL_COMPRESSED_LUMINANCE_ARB GL_COMPRESSED_LUMINANCE 668 #define GL_COMPRESSED_LUMINANCE_ALPHA_ARB GL_COMPRESSED_LUMINANCE_ALPHA 669 #define GL_COMPRESSED_INTENSITY_ARB GL_COMPRESSED_INTENSITY 670 #define GL_COMPRESSED_RGB_ARB GL_COMPRESSED_RGB 671 #define GL_COMPRESSED_RGBA_ARB GL_COMPRESSED_RGBA 672 673 #endif // #ifndef GL_ARB_texture_compression 674 675 // GL_ARB_texture_compression ���ݡ��ȥ����å� 676 int IsSupported_ARB_texture_compression_Enum() ; 677 678 // texgen_reflection ��Ϣ���ݡ��ȥ����å��ʤ������ȡ�����Τߤ� OK�� 679 // ���ߤΤȤ��� GL_ARB_texture_compression �ʤΥ����ˤݡ��Ȥ��Ƥ��뤫 680 char *IsSupported_texture_compression_Enum(int flag_ARB_texture_compression) ; 681 682 // ���ݡ��ȼ��� 683 #define CURRENT_NAME_GL_VERSION_texture_compression "OpenGL-1.? Texture Compression" 684 #define CURRENT_NAME_GL_ARB_texture_compression "GL_ARB_texture_compression" 685 686 // texture_compression_s3tc 687 #ifndef GL_VERSION_texture_compression_s3tc 688 #define GL_COMPRESSED_RGB_S3TC_DXT1 ((GLenum)0x83F0) 689 #define GL_COMPRESSED_RGBA_S3TC_DXT1 ((GLenum)0x83F1) 690 #define GL_COMPRESSED_RGBA_S3TC_DXT3 ((GLenum)0x83F2) 691 #define GL_COMPRESSED_RGBA_S3TC_DXT5 ((GLenum)0x83F3) 692 #endif // #ifndef GL_VERSION_texture_compression_s3tc 693 694 #define GL_EXT_texture_compression_s3tc 695 696 #ifndef GL_EXT_texture_compression_s3tc 697 #define GL_EXT_texture_compression_s3tc 698 699 #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT GL_COMPRESSED_RGB_S3TC_DXT1 700 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT GL_COMPRESSED_RGBA_S3TC_DXT1 701 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT GL_COMPRESSED_RGBA_S3TC_DXT3 702 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT GL_COMPRESSED_RGBA_S3TC_DXT5 703 704 #endif // #ifndef GL_EXT_texture_compression_s3tc 705 706 // texture_compression_FXT1 707 #ifndef GL_VERSION_texture_compression_FXT1 708 #define GL_COMPRESSED_RGB_FXT1 ((GLenum)0x86B0) 709 #define GL_COMPRESSED_RGBA_FXT1 ((GLenum)0x86B1) 710 #endif // #ifndef GL_VERSION_texture_compression_FXT1 711 712 #ifndef GL_3DFX_texture_compression_FXT1 713 #define GL_3DFX_texture_compression_FXT1 714 715 #define GL_COMPRESSED_RGB_FXT1_3DFX GL_COMPRESSED_RGB_FXT1 716 #define GL_COMPRESSED_RGBA_FXT1_3DFX GL_COMPRESSED_RGBA_FXT1 717 718 #endif // #ifndef GL_EXT_texture_compression_s3tc 719 720 721 // GL_EXT_texture_compression_s3tc ���ݡ��ȥ����å� 722 int IsSupported_EXT_texture_compression_s3tc() ; 723 724 // S3TC ��Ϣ���ݡ��ȥ����å� 725 char *IsSupported_texture_compression_s3tc(int flag_EXT_texture_compression_s3tc) ; 726 727 // ���ݡ��ȼ��� 728 #define CURRENT_NAME_GL_VERSION_texture_compression_s3tc "OpenGL-1.? Texture Compression S3TC" // ���ݡ��Ȥ�������ʤ��� 729 #define CURRENT_NAME_GL_EXT_texture_compression_s3tc "GL_EXT_texture_compression_s3tc" 730 731 732 // GL_3DFX_texture_compression_FXT1 ���ݡ��ȥ����å� 733 int IsSupported_3DFX_texture_compression_FXT1() ; 734 735 // FXT1 ��Ϣ���ݡ��ȥ����å� 736 char *IsSupported_texture_compression_FXT1(int flag_3DFX_texture_compression_FXT1) ; 737 738 // ���ݡ��ȼ��� 739 #define CURRENT_NAME_GL_VERSION_texture_compression_FXT1 "OpenGL-1.? Texture Compression S3TC" // ���ݡ��Ȥ�������ʤ��� 740 #define CURRENT_NAME_GL_3DFX_texture_compression_FXT1 "GL_3DFX_texture_compression_FXT1" 741 742 743 744 // �������ꤳ���ޤǡ����������������������������������������������������������������������� 745 746 747 // �ƥ������㡦���֥����������祤�ե����� 748 749 #ifdef WIN32 750 typedef void (APIENTRY * PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures) ; 751 #ifdef MESA 752 typedef void (APIENTRY * PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures) ; 753 #else 754 typedef void (APIENTRY * PFNGLDELETETEXTURESPROC) (GLsizei n, GLuint *textures) ; 755 #endif // #ifdef MESA 756 typedef void (APIENTRY * PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture) ; 757 typedef GLboolean (APIENTRY * PFNGLISTEXTUREPROC) (GLuint texture) ; 758 #else 759 typedef void (* PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures) ; 760 typedef void (* PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures) ; 761 typedef void (* PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture) ; 762 typedef GLboolean (* PFNGLISTEXTUREPROC) (GLuint texture) ; 763 #endif // #ifdef WIN32 ... #else 764 765 extern PFNGLGENTEXTURESPROC p_glGenTextures ; 766 extern PFNGLDELETETEXTURESPROC p_glDeleteTextures ; 767 extern PFNGLBINDTEXTUREPROC p_glBindTexture ; 768 extern PFNGLISTEXTUREPROC p_glIsTexture ; 769 770 // OpenGL �� texture object �ݡ��Ȥ��ʤ��С������ξ�� 771 #ifndef GL_VERSION_texture_object 772 773 #define glGenTextures (*p_glGenTextures) 774 #define glDeleteTextures (*p_glDeleteTextures) 775 #define glBindTexture (*p_glBindTexture) 776 #define glIsTexture (*p_glIsTexture) 777 778 #endif // #ifndef GL_VERSION_texture_object 779 780 // texture object ��Ϣ���ݡ��ȥ����å� 781 int IsSupported_EXT_texture_object() ; 782 char *IsSupported_texture_object(int flag_EXT = TRUE) ; 783 784 // ���ݡ��ȼ��� 785 #define CURRENT_NAME_GL_VERSION_texture_object "OpenGL-1.1 Texture Object" 786 #define CURRENT_NAME_GL_EXT_texture_object "GL_EXT_texture_object" 787 788 789 // �ݥꥴ���ե��å����祤�ե����� 790 791 #ifdef WIN32 792 typedef void (APIENTRY * PFNGLPOLYGONOFFSETPROC) (GLfloat facter, GLfloat units) ; 793 #else 794 typedef void (* PFNGLPOLYGONOFFSETPROC) (GLfloat facter, GLfloat units) ; 795 #endif // #ifdef WIN32 ... #else 796 797 extern PFNGLPOLYGONOFFSETPROC p_glPolygonOffset ; 798 extern GLenum DEF_GL_POLYGON_OFFSET_POINT ; 799 extern GLenum DEF_GL_POLYGON_OFFSET_LINE ; 800 extern GLenum DEF_GL_POLYGON_OFFSET_FILL ; 801 extern GLenum DEF_GL_POLYGON_OFFSET_FACTOR ; 802 extern GLenum DEF_GL_POLYGON_OFFSET_UNITS ; 803 804 // OpenGL �� polygon offset �ݡ��Ȥ��ʤ��С������ξ�� 805 #ifndef GL_VERSION_polygon_offset 806 807 #define glPolygonOffset (*p_glPolygonOffset) 808 #define GL_POLYGON_OFFSET_POINT DEF_GL_POLYGON_OFFSET_POINT 809 #define GL_POLYGON_OFFSET_LINE DEF_GL_POLYGON_OFFSET_LINE 810 #define GL_POLYGON_OFFSET_FILL DEF_GL_POLYGON_OFFSET_FILL 811 #define GL_POLYGON_OFFSET_FACTOR DEF_GL_POLYGON_OFFSET_FACTOR 812 #define GL_POLYGON_OFFSET_UNITS DEF_GL_POLYGON_OFFSET_UNITS 813 814 #endif // #ifndef GL_VERSION_polygon_offset 815 816 // polygon offset ��Ϣ���ݡ��ȥ����å� 817 int IsSupported_EXT_polygon_offset() ; 818 char *IsSupported_polygon_offset(int flag_EXT = TRUE) ; 819 820 // ���ݡ��ȼ��� 821 #define CURRENT_NAME_GL_VERSION_polygon_offset "OpenGL-1.1 Polygon Offset" 822 #define CURRENT_NAME_GL_EXT_polygon_offset "GL_EXT_polygon_offset" 823 824 825 // multitexture coord ���� 826 // 827 // target ����ꤹ����ϡ������� 828 // IsSupported_multitexture() �ˤ����ѵ�ǽ����Ͽ��ɬ�� 829 // 830 // IsSupported_SGIS_multitexture() �ϻ��Ѥ��ʤ������ɤ� 831 // �ޤ���SGIS �Ǥϴ���Ū�� 832 // GL_MAX_TEXTURE_UNITS �ϻ����Բġʤ��ʤ餺����˥åȤȤߤʤ��������ɤ��� 833 // 834 // target �λ��꤬�ʤ���� glTexCoord2f() ������ 835 void TexCoord2f(GLfloat s, GLfloat t, int target = 0) ; 836 837 838 // glVertex3f() ������˥������ 839 // 840 // s, t �ˤ���ɸ���꤬ͭ���ʾ��ϡ� 841 // glVetex() ������ glTexCoord2f() ������ 842 // 843 // target �����ꤵ�줿��硢 844 // �� target �μ����ƥ��������˥åȤ˥ƥ��������ɸ���å� 845 // 846 // target ����ꤹ����ϡ������� 847 // IsSupported_multitexture() �ˤ����ѵ�ǽ����Ͽ��ɬ�� 848 // 849 // IsSupported_SGIS_multitexture() �ϻ��Ѥ��ʤ������ɤ� 850 // �ޤ���SGIS �Ǥϴ���Ū�� 851 // GL_MAX_TEXTURE_UNITS �ϻ����Բġʤ��ʤ餺����˥åȤȤߤʤ��������ɤ��� 852 void Vertex3fWithTexAxis(GLfloat vx, GLfloat vy, GLfloat vz, GLfloat *s0 = NULL, GLfloat *t0 = NULL) ; 853 854 void Vertex3fWithTexAxis(GLfloat vx, GLfloat vy, GLfloat vz, 855 int target0, GLfloat *s0 = NULL, GLfloat *t0 = NULL, 856 int target1 = -1, GLfloat *s1 = NULL, GLfloat *t1 = NULL, 857 int target2 = -1, GLfloat *s2 = NULL, GLfloat *t2 = NULL, 858 int target3 = -1, GLfloat *s3 = NULL, GLfloat *t3 = NULL) ; 859 860 861 // glVertex3fv() ������˥������ 862 // 863 // s, t �ˤ���ɸ���꤬ͭ���ʾ��ϡ� 864 // glVetex() ������ glTexCoord2f() ������ 865 // 866 // target �����ꤵ�줿��硢 867 // �� target �μ����ƥ��������˥åȤ˥ƥ��������ɸ���å� 868 // 869 // target ����ꤹ����ϡ������� 870 // IsSupported_multitexture() �ˤ����ѵ�ǽ����Ͽ��ɬ�� 871 // 872 // IsSupported_SGIS_multitexture() �ϻ��Ѥ��ʤ������ɤ� 873 // �ޤ���SGIS �Ǥϴ���Ū�� 874 // GL_MAX_TEXTURE_UNITS �ϻ����Բġʤ��ʤ餺����˥åȤȤߤʤ��������ɤ��� 875 void Vertex3fvWithTexAxis(GLfloat v[3], GLfloat *s0 = NULL, GLfloat *t0 = NULL) ; 876 877 void Vertex3fvWithTexAxis(GLfloat v[3], 878 int target0, GLfloat *s0 = NULL, GLfloat *t0 = NULL, 879 int target1 = -1, GLfloat *s1 = NULL, GLfloat *t1 = NULL, 880 int target2 = -1, GLfloat *s2 = NULL, GLfloat *t2 = NULL, 881 int target3 = -1, GLfloat *s3 = NULL, GLfloat *t3 = NULL) ; 882 883 884 // multitexture ���ѻ��κ���ƥ��������˥åȿ� 885 // �����Ȥ� SGIS_multitexture �ξ��ϣ� 886 // IsSupported_*_multitexture() ��̤������ξ�祼�� 887 GLint GetMaxTextureUnits() ; 888 889 // anisotropic filtering ���ѻ��κ��� max anisotropy 890 GLfloat GetMaxTextureMaxAnisotropy() ; 891 892 // WIN_phong_shading ���ݡ��ȥ����å� 893 int IsSupported_WIN_phong_shading() ; 894 895 // separate_specular_color ��Ϣ���ݡ��ȥ����å� 896 int IsSupported_ARB_separate_specular_color() ; 897 int IsSupported_EXT_separate_specular_color() ; 898 char *IsSupported_separate_specular_color(int flag_ARB = TRUE, int flag_EXT = TRUE) ; 899 // ���ݡ��ȼ��� 900 #define CURRENT_NAME_GL_VERSION_separate_specular_color "OpenGL-1.2 Separate Specular Color" 901 #define CURRENT_NAME_GL_ARB_separate_specular_color "GL_ARB_separate_specular_color" 902 #define CURRENT_NAME_GL_EXT_separate_specular_color "GL_EXT_separate_specular_color" 903 904 // texture_filter_anisotropic ��Ϣ���ݡ��ȥ����å� 905 int IsSupported_EXT_texture_filter_anisotropic() ; 906 char *IsSupported_texture_filter_anisotropic(int flag_EXT = TRUE) ; 907 // ���ݡ��ȼ��� 908 #define CURRENT_NAME_GL_VERSION_texture_filter_anisotropic "OpenGL-1.? Texture Filter Anisotropic" 909 #define CURRENT_NAME_GL_EXT_texture_filter_anisotropic "GL_EXT_texture_filter_anisotropic" 910 911 912 // ����ͭ���ˤʤäƤ������祤�ե����� 913 String CurrentInterface_multitexture() ; 914 String CurrentInterface_separate_specular_color() ; 915 String CurrentInterface_texture_filter_anisotropic() ; 916 String CurrentInterface_texture_object() ; 917 String CurrentInterface_polygon_offset() ; 918 String CurrentInterface_texture_cube_map() ; 919 String CurrentInterface_texgen_reflection() ; 920 String CurrentInterfaceEnum_texture_compression() ; 921 String CurrentInterface_texture_compression_s3tc() ; 922 String CurrentInterface_texture_compression_FXT1() ; 923 924 925 #if defined(DONOT_USE_ARB_multitexture) && defined(GL_ARB_multitexture) 926 #undef GL_ARB_multitexture 927 #endif 928 929 #if defined(DONOT_USE_SGIS_multitexture) && defined(GL_SGIS_multitexture) 930 #undef GL_SGIS_multitexture 931 #endif 932 933 #if defined(DONOT_USE_EXT_multitexture) && defined(GL_EXT_multitexture) 934 #undef GL_EXT_multitexture 935 #endif 936 937 938 #ifdef WIN32 939 940 // Win32 941 // opengl32.dll ����� 942 // ���ߤΤȤ���Win32 �� Mesa DLL ����Ѥ������� 943 class OpenGLDLLCtrl 944 { 945 public: 946 HINSTANCE hLibOpenGL32 ; 947 948 static OpenGLDLLCtrl openGLDLLCtrl ; 949 950 void LoadLibrary(const String& openGL32_DLL = DEFAULT_OPENGL32_DLL) 951 { 952 if (!hLibOpenGL32 && openGL32_DLL != "") 953 hLibOpenGL32 = ::LoadLibrary(openGL32_DLL) ; 954 } 955 FreeLibrary()956 void FreeLibrary() 957 { 958 if (hLibOpenGL32) 959 ::FreeLibrary(hLibOpenGL32) ; 960 961 hLibOpenGL32 = NULL ; 962 } 963 964 // ���ȥ饯�� 965 OpenGLDLLCtrl(const String& openGL32_DLL = "") 966 { 967 hLibOpenGL32 = NULL ; 968 LoadLibrary(openGL32_DLL) ; 969 } 970 GetProcAddress(const String & procedureName)971 void *GetProcAddress(const String& procedureName) 972 { 973 if (!hLibOpenGL32) 974 LoadLibrary(DEFAULT_OPENGL32_DLL) ; 975 976 if (hLibOpenGL32) 977 return ::GetProcAddress(hLibOpenGL32, procedureName) ; 978 else 979 return NULL ; 980 } 981 ~OpenGLDLLCtrl()982 ~OpenGLDLLCtrl() { FreeLibrary() ; } 983 984 } ; 985 986 #endif // #ifdef WIN32 987 988 989 // Texture Internal Formats 990 GLint InternalFormat(String str) ; 991 String InternalFormatString(GLint internalFormat) ; 992 993 #endif // #ifndef __GL_EXTENSIONS_H__ 994