diff --git a/.gitignore b/.gitignore index bb28b08..5e992cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -/build -/.rsconscache -/freetype2gl3 -/freetype2gl3.exe +/build/ +/.waf* +/.lock-waf* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..240c23a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "libs/glm"] + path = libs/glm + url = git://github.com/g-truc/glm.git +[submodule "libs/glcxx"] + path = libs/glcxx + url = git://github.com/holtrop/glcxx.git diff --git a/glcorearb.h b/GL3/gl3.h similarity index 78% rename from glcorearb.h rename to GL3/gl3.h index 9d59db9..9c17d41 100644 --- a/glcorearb.h +++ b/GL3/gl3.h @@ -1,19 +1,12 @@ -#ifndef __glcorearb_h_ -#define __glcorearb_h_ +#ifndef __gl3_h_ +#define __gl3_h_ #ifdef __cplusplus extern "C" { #endif /* -** THIS FILE IS OBSOLETE. Please migrate away from using the -** ".spec" files and the headers generated from them to the -** XML Registry and headers generated from that. See -** http://www.opengl.org/registry/api/README.txt -** for more information. -** -** -** Copyright (c) 2007-2013 The Khronos Group Inc. +** Copyright (c) 2007-2012 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -35,29 +28,41 @@ extern "C" { ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. */ -/* glcorearb.h replaces gl3.h. It is for use with OpenGL core - * profile implementations. +/* This is a draft release of gl3.h, a header for use with OpenGL 3.1, and + * 3.2 and later core profile implementations. The current version is + * available at http://www.opengl.org/registry/ . Please don't package + * gl3.h for release with other software until it's out of draft status. + * The structure of the file may change significantly, and the details + * will probably change slightly as we make sure exactly the right set + * of interfaces is included. * - * glcorearb.h last updated on $Date: 2013-06-13 02:52:31 -0700 (Thu, 13 Jun 2013) $ + * gl3.h last updated on $Date: 2012-06-18 11:26:35 -0700 (Mon, 18 Jun 2012) $ * - * RELEASE NOTES - 2013/06/10 + * RELEASE NOTES - 2012/06/18 * - * glcorearb.h should be placed in the same directory as gl.h and - * included as - * ''. + * gl3.h should be placed under a directory 'GL3' and included as + * ''. * - * glcorearb.h includes only APIs in the latest OpenGL core profile - * implementation together with APIs in newer ARB extensions which can be + * gl3.h is supposed to only include APIs in a OpenGL 3.1 (without + * GL_ARB_compatibility) or OpenGL 3.2-4.2 (inclusive) core profile + * implementation, as well as interfaces for newer ARB extensions which * can be supported by the core profile. It does not, and never will * include functionality removed from the core profile, such as * fixed-function vertex and fragment processing. * - * It is not possible to #include both and either of + * Implementations of OpenGL 3.1 supporting the optional + * GL_ARB_compatibility extension continue to provide that functionality, + * as do implementations of the OpenGL 3.2+ compatibility profiles, and + * source code requiring it should use the traditional and + * headers instead of . + * + * It is not possible to #include both and either of * or in the same source file. * - * Feedback can be given by registering for the Khronos Bugzilla - * (www.khronos.org/bugzilla) and filing issues there under product - * "OpenGL", category "Registry". + * We welcome feedback on gl3.h. Please register for the Khronos Bugzilla + * (www.khronos.org/bugzilla) and file issues there under product + * "OpenGL", category "Registry". Feedback on the opengl.org forums + * may not be responded to in a timely fashion. */ /* Function declaration macros - to move into glplatform.h */ @@ -106,7 +111,7 @@ typedef void GLvoid; /* Boolean */ #define GL_FALSE 0 #define GL_TRUE 1 -/* PrimitiveType */ +/* BeginMode */ #define GL_POINTS 0x0000 #define GL_LINES 0x0001 #define GL_LINE_LOOP 0x0002 @@ -114,7 +119,6 @@ typedef void GLvoid; #define GL_TRIANGLES 0x0004 #define GL_TRIANGLE_STRIP 0x0005 #define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 /* AlphaFunction */ #define GL_NEVER 0x0200 #define GL_LESS 0x0201 @@ -165,7 +169,6 @@ typedef void GLvoid; #define GL_LINE_WIDTH 0x0B21 #define GL_LINE_WIDTH_RANGE 0x0B22 #define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_POLYGON_MODE 0x0B40 #define GL_POLYGON_SMOOTH 0x0B41 #define GL_CULL_FACE 0x0B44 #define GL_CULL_FACE_MODE 0x0B45 @@ -247,9 +250,6 @@ typedef void GLvoid; #define GL_UNSIGNED_INT 0x1405 #define GL_FLOAT 0x1406 #define GL_DOUBLE 0x140A -/* ErrorCode */ -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 /* LogicOp */ #define GL_CLEAR 0x1500 #define GL_AND 0x1501 @@ -493,7 +493,6 @@ typedef void GLvoid; #define GL_DYNAMIC_READ 0x88E9 #define GL_DYNAMIC_COPY 0x88EA #define GL_SAMPLES_PASSED 0x8914 -#define GL_SRC1_ALPHA 0x8589 #endif #ifndef GL_VERSION_2_0 @@ -615,7 +614,7 @@ typedef void GLvoid; #define GL_CONTEXT_FLAGS 0x821E #define GL_COMPRESSED_RED 0x8225 #define GL_COMPRESSED_RG 0x8226 -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 #define GL_RGBA32F 0x8814 #define GL_RGB32F 0x8815 #define GL_RGBA16F 0x881A @@ -837,6 +836,7 @@ typedef void GLvoid; #define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B #define GL_TEXTURE_BINDING_BUFFER 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E #define GL_TEXTURE_RECTANGLE 0x84F5 #define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 #define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 @@ -1022,6 +1022,7 @@ typedef void GLvoid; /* reuse GL_MIN_FRAGMENT_INTERPOLATION_OFFSET */ /* reuse GL_MAX_FRAGMENT_INTERPOLATION_OFFSET */ /* reuse GL_FRAGMENT_INTERPOLATION_OFFSET_BITS */ +/* reuse GL_MAX_VERTEX_STREAMS */ /* Reuse tokens from ARB_gpu_shader_fp64 */ /* reuse GL_DOUBLE_VEC2 */ /* reuse GL_DOUBLE_VEC3 */ @@ -1101,7 +1102,6 @@ typedef void GLvoid; /* reuse GL_MEDIUM_INT */ /* reuse GL_HIGH_INT */ /* reuse GL_SHADER_COMPILER */ -/* reuse GL_SHADER_BINARY_FORMATS */ /* reuse GL_NUM_SHADER_BINARY_FORMATS */ /* reuse GL_MAX_VERTEX_UNIFORM_VECTORS */ /* reuse GL_MAX_VARYING_VECTORS */ @@ -1251,290 +1251,6 @@ typedef void GLvoid; /* reuse GL_TEXTURE_IMMUTABLE_FORMAT */ #endif -#ifndef GL_VERSION_4_3 -#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 -#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E -/* Reuse tokens from ARB_arrays_of_arrays (none, GLSL only) */ -/* Reuse tokens from ARB_fragment_layer_viewport (none, GLSL only) */ -/* Reuse tokens from ARB_shader_image_size (none, GLSL only) */ -/* Reuse tokens from ARB_ES3_compatibility */ -/* reuse GL_COMPRESSED_RGB8_ETC2 */ -/* reuse GL_COMPRESSED_SRGB8_ETC2 */ -/* reuse GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 */ -/* reuse GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 */ -/* reuse GL_COMPRESSED_RGBA8_ETC2_EAC */ -/* reuse GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC */ -/* reuse GL_COMPRESSED_R11_EAC */ -/* reuse GL_COMPRESSED_SIGNED_R11_EAC */ -/* reuse GL_COMPRESSED_RG11_EAC */ -/* reuse GL_COMPRESSED_SIGNED_RG11_EAC */ -/* reuse GL_PRIMITIVE_RESTART_FIXED_INDEX */ -/* reuse GL_ANY_SAMPLES_PASSED_CONSERVATIVE */ -/* reuse GL_MAX_ELEMENT_INDEX */ -/* Reuse tokens from ARB_clear_buffer_object (none) */ -/* Reuse tokens from ARB_compute_shader */ -/* reuse GL_COMPUTE_SHADER */ -/* reuse GL_MAX_COMPUTE_UNIFORM_BLOCKS */ -/* reuse GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS */ -/* reuse GL_MAX_COMPUTE_IMAGE_UNIFORMS */ -/* reuse GL_MAX_COMPUTE_SHARED_MEMORY_SIZE */ -/* reuse GL_MAX_COMPUTE_UNIFORM_COMPONENTS */ -/* reuse GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS */ -/* reuse GL_MAX_COMPUTE_ATOMIC_COUNTERS */ -/* reuse GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS */ -/* reuse GL_MAX_COMPUTE_LOCAL_INVOCATIONS */ -/* reuse GL_MAX_COMPUTE_WORK_GROUP_COUNT */ -/* reuse GL_MAX_COMPUTE_WORK_GROUP_SIZE */ -/* reuse GL_COMPUTE_LOCAL_WORK_SIZE */ -/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER */ -/* reuse GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER */ -/* reuse GL_DISPATCH_INDIRECT_BUFFER */ -/* reuse GL_DISPATCH_INDIRECT_BUFFER_BINDING */ -/* Reuse tokens from ARB_copy_image (none) */ -/* Reuse tokens from KHR_debug */ -/* reuse GL_DEBUG_OUTPUT_SYNCHRONOUS */ -/* reuse GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH */ -/* reuse GL_DEBUG_CALLBACK_FUNCTION */ -/* reuse GL_DEBUG_CALLBACK_USER_PARAM */ -/* reuse GL_DEBUG_SOURCE_API */ -/* reuse GL_DEBUG_SOURCE_WINDOW_SYSTEM */ -/* reuse GL_DEBUG_SOURCE_SHADER_COMPILER */ -/* reuse GL_DEBUG_SOURCE_THIRD_PARTY */ -/* reuse GL_DEBUG_SOURCE_APPLICATION */ -/* reuse GL_DEBUG_SOURCE_OTHER */ -/* reuse GL_DEBUG_TYPE_ERROR */ -/* reuse GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR */ -/* reuse GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR */ -/* reuse GL_DEBUG_TYPE_PORTABILITY */ -/* reuse GL_DEBUG_TYPE_PERFORMANCE */ -/* reuse GL_DEBUG_TYPE_OTHER */ -/* reuse GL_MAX_DEBUG_MESSAGE_LENGTH */ -/* reuse GL_MAX_DEBUG_LOGGED_MESSAGES */ -/* reuse GL_DEBUG_LOGGED_MESSAGES */ -/* reuse GL_DEBUG_SEVERITY_HIGH */ -/* reuse GL_DEBUG_SEVERITY_MEDIUM */ -/* reuse GL_DEBUG_SEVERITY_LOW */ -/* reuse GL_DEBUG_TYPE_MARKER */ -/* reuse GL_DEBUG_TYPE_PUSH_GROUP */ -/* reuse GL_DEBUG_TYPE_POP_GROUP */ -/* reuse GL_DEBUG_SEVERITY_NOTIFICATION */ -/* reuse GL_MAX_DEBUG_GROUP_STACK_DEPTH */ -/* reuse GL_DEBUG_GROUP_STACK_DEPTH */ -/* reuse GL_BUFFER */ -/* reuse GL_SHADER */ -/* reuse GL_PROGRAM */ -/* reuse GL_QUERY */ -/* reuse GL_PROGRAM_PIPELINE */ -/* reuse GL_SAMPLER */ -/* reuse GL_DISPLAY_LIST */ -/* reuse GL_MAX_LABEL_LENGTH */ -/* reuse GL_DEBUG_OUTPUT */ -/* reuse GL_CONTEXT_FLAG_DEBUG_BIT */ -/* reuse GL_STACK_UNDERFLOW */ -/* reuse GL_STACK_OVERFLOW */ -/* Reuse tokens from ARB_explicit_uniform_location */ -/* reuse GL_MAX_UNIFORM_LOCATIONS */ -/* Reuse tokens from ARB_framebuffer_no_attachments */ -/* reuse GL_FRAMEBUFFER_DEFAULT_WIDTH */ -/* reuse GL_FRAMEBUFFER_DEFAULT_HEIGHT */ -/* reuse GL_FRAMEBUFFER_DEFAULT_LAYERS */ -/* reuse GL_FRAMEBUFFER_DEFAULT_SAMPLES */ -/* reuse GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS */ -/* reuse GL_MAX_FRAMEBUFFER_WIDTH */ -/* reuse GL_MAX_FRAMEBUFFER_HEIGHT */ -/* reuse GL_MAX_FRAMEBUFFER_LAYERS */ -/* reuse GL_MAX_FRAMEBUFFER_SAMPLES */ -/* Reuse tokens from ARB_internalformat_query2 */ -/* reuse GL_INTERNALFORMAT_SUPPORTED */ -/* reuse GL_INTERNALFORMAT_PREFERRED */ -/* reuse GL_INTERNALFORMAT_RED_SIZE */ -/* reuse GL_INTERNALFORMAT_GREEN_SIZE */ -/* reuse GL_INTERNALFORMAT_BLUE_SIZE */ -/* reuse GL_INTERNALFORMAT_ALPHA_SIZE */ -/* reuse GL_INTERNALFORMAT_DEPTH_SIZE */ -/* reuse GL_INTERNALFORMAT_STENCIL_SIZE */ -/* reuse GL_INTERNALFORMAT_SHARED_SIZE */ -/* reuse GL_INTERNALFORMAT_RED_TYPE */ -/* reuse GL_INTERNALFORMAT_GREEN_TYPE */ -/* reuse GL_INTERNALFORMAT_BLUE_TYPE */ -/* reuse GL_INTERNALFORMAT_ALPHA_TYPE */ -/* reuse GL_INTERNALFORMAT_DEPTH_TYPE */ -/* reuse GL_INTERNALFORMAT_STENCIL_TYPE */ -/* reuse GL_MAX_WIDTH */ -/* reuse GL_MAX_HEIGHT */ -/* reuse GL_MAX_DEPTH */ -/* reuse GL_MAX_LAYERS */ -/* reuse GL_MAX_COMBINED_DIMENSIONS */ -/* reuse GL_COLOR_COMPONENTS */ -/* reuse GL_DEPTH_COMPONENTS */ -/* reuse GL_STENCIL_COMPONENTS */ -/* reuse GL_COLOR_RENDERABLE */ -/* reuse GL_DEPTH_RENDERABLE */ -/* reuse GL_STENCIL_RENDERABLE */ -/* reuse GL_FRAMEBUFFER_RENDERABLE */ -/* reuse GL_FRAMEBUFFER_RENDERABLE_LAYERED */ -/* reuse GL_FRAMEBUFFER_BLEND */ -/* reuse GL_READ_PIXELS */ -/* reuse GL_READ_PIXELS_FORMAT */ -/* reuse GL_READ_PIXELS_TYPE */ -/* reuse GL_TEXTURE_IMAGE_FORMAT */ -/* reuse GL_TEXTURE_IMAGE_TYPE */ -/* reuse GL_GET_TEXTURE_IMAGE_FORMAT */ -/* reuse GL_GET_TEXTURE_IMAGE_TYPE */ -/* reuse GL_MIPMAP */ -/* reuse GL_MANUAL_GENERATE_MIPMAP */ -/* reuse GL_AUTO_GENERATE_MIPMAP */ -/* reuse GL_COLOR_ENCODING */ -/* reuse GL_SRGB_READ */ -/* reuse GL_SRGB_WRITE */ -/* reuse GL_FILTER */ -/* reuse GL_VERTEX_TEXTURE */ -/* reuse GL_TESS_CONTROL_TEXTURE */ -/* reuse GL_TESS_EVALUATION_TEXTURE */ -/* reuse GL_GEOMETRY_TEXTURE */ -/* reuse GL_FRAGMENT_TEXTURE */ -/* reuse GL_COMPUTE_TEXTURE */ -/* reuse GL_TEXTURE_SHADOW */ -/* reuse GL_TEXTURE_GATHER */ -/* reuse GL_TEXTURE_GATHER_SHADOW */ -/* reuse GL_SHADER_IMAGE_LOAD */ -/* reuse GL_SHADER_IMAGE_STORE */ -/* reuse GL_SHADER_IMAGE_ATOMIC */ -/* reuse GL_IMAGE_TEXEL_SIZE */ -/* reuse GL_IMAGE_COMPATIBILITY_CLASS */ -/* reuse GL_IMAGE_PIXEL_FORMAT */ -/* reuse GL_IMAGE_PIXEL_TYPE */ -/* reuse GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST */ -/* reuse GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST */ -/* reuse GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE */ -/* reuse GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE */ -/* reuse GL_TEXTURE_COMPRESSED_BLOCK_WIDTH */ -/* reuse GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT */ -/* reuse GL_TEXTURE_COMPRESSED_BLOCK_SIZE */ -/* reuse GL_CLEAR_BUFFER */ -/* reuse GL_TEXTURE_VIEW */ -/* reuse GL_VIEW_COMPATIBILITY_CLASS */ -/* reuse GL_FULL_SUPPORT */ -/* reuse GL_CAVEAT_SUPPORT */ -/* reuse GL_IMAGE_CLASS_4_X_32 */ -/* reuse GL_IMAGE_CLASS_2_X_32 */ -/* reuse GL_IMAGE_CLASS_1_X_32 */ -/* reuse GL_IMAGE_CLASS_4_X_16 */ -/* reuse GL_IMAGE_CLASS_2_X_16 */ -/* reuse GL_IMAGE_CLASS_1_X_16 */ -/* reuse GL_IMAGE_CLASS_4_X_8 */ -/* reuse GL_IMAGE_CLASS_2_X_8 */ -/* reuse GL_IMAGE_CLASS_1_X_8 */ -/* reuse GL_IMAGE_CLASS_11_11_10 */ -/* reuse GL_IMAGE_CLASS_10_10_10_2 */ -/* reuse GL_VIEW_CLASS_128_BITS */ -/* reuse GL_VIEW_CLASS_96_BITS */ -/* reuse GL_VIEW_CLASS_64_BITS */ -/* reuse GL_VIEW_CLASS_48_BITS */ -/* reuse GL_VIEW_CLASS_32_BITS */ -/* reuse GL_VIEW_CLASS_24_BITS */ -/* reuse GL_VIEW_CLASS_16_BITS */ -/* reuse GL_VIEW_CLASS_8_BITS */ -/* reuse GL_VIEW_CLASS_S3TC_DXT1_RGB */ -/* reuse GL_VIEW_CLASS_S3TC_DXT1_RGBA */ -/* reuse GL_VIEW_CLASS_S3TC_DXT3_RGBA */ -/* reuse GL_VIEW_CLASS_S3TC_DXT5_RGBA */ -/* reuse GL_VIEW_CLASS_RGTC1_RED */ -/* reuse GL_VIEW_CLASS_RGTC2_RG */ -/* reuse GL_VIEW_CLASS_BPTC_UNORM */ -/* reuse GL_VIEW_CLASS_BPTC_FLOAT */ -/* Reuse tokens from ARB_invalidate_subdata (none) */ -/* Reuse tokens from ARB_multi_draw_indirect (none) */ -/* Reuse tokens from ARB_program_interface_query */ -/* reuse GL_UNIFORM */ -/* reuse GL_UNIFORM_BLOCK */ -/* reuse GL_PROGRAM_INPUT */ -/* reuse GL_PROGRAM_OUTPUT */ -/* reuse GL_BUFFER_VARIABLE */ -/* reuse GL_SHADER_STORAGE_BLOCK */ -/* reuse GL_VERTEX_SUBROUTINE */ -/* reuse GL_TESS_CONTROL_SUBROUTINE */ -/* reuse GL_TESS_EVALUATION_SUBROUTINE */ -/* reuse GL_GEOMETRY_SUBROUTINE */ -/* reuse GL_FRAGMENT_SUBROUTINE */ -/* reuse GL_COMPUTE_SUBROUTINE */ -/* reuse GL_VERTEX_SUBROUTINE_UNIFORM */ -/* reuse GL_TESS_CONTROL_SUBROUTINE_UNIFORM */ -/* reuse GL_TESS_EVALUATION_SUBROUTINE_UNIFORM */ -/* reuse GL_GEOMETRY_SUBROUTINE_UNIFORM */ -/* reuse GL_FRAGMENT_SUBROUTINE_UNIFORM */ -/* reuse GL_COMPUTE_SUBROUTINE_UNIFORM */ -/* reuse GL_TRANSFORM_FEEDBACK_VARYING */ -/* reuse GL_ACTIVE_RESOURCES */ -/* reuse GL_MAX_NAME_LENGTH */ -/* reuse GL_MAX_NUM_ACTIVE_VARIABLES */ -/* reuse GL_MAX_NUM_COMPATIBLE_SUBROUTINES */ -/* reuse GL_NAME_LENGTH */ -/* reuse GL_TYPE */ -/* reuse GL_ARRAY_SIZE */ -/* reuse GL_OFFSET */ -/* reuse GL_BLOCK_INDEX */ -/* reuse GL_ARRAY_STRIDE */ -/* reuse GL_MATRIX_STRIDE */ -/* reuse GL_IS_ROW_MAJOR */ -/* reuse GL_ATOMIC_COUNTER_BUFFER_INDEX */ -/* reuse GL_BUFFER_BINDING */ -/* reuse GL_BUFFER_DATA_SIZE */ -/* reuse GL_NUM_ACTIVE_VARIABLES */ -/* reuse GL_ACTIVE_VARIABLES */ -/* reuse GL_REFERENCED_BY_VERTEX_SHADER */ -/* reuse GL_REFERENCED_BY_TESS_CONTROL_SHADER */ -/* reuse GL_REFERENCED_BY_TESS_EVALUATION_SHADER */ -/* reuse GL_REFERENCED_BY_GEOMETRY_SHADER */ -/* reuse GL_REFERENCED_BY_FRAGMENT_SHADER */ -/* reuse GL_REFERENCED_BY_COMPUTE_SHADER */ -/* reuse GL_TOP_LEVEL_ARRAY_SIZE */ -/* reuse GL_TOP_LEVEL_ARRAY_STRIDE */ -/* reuse GL_LOCATION */ -/* reuse GL_LOCATION_INDEX */ -/* reuse GL_IS_PER_PATCH */ -/* Reuse tokens from ARB_robust_buffer_access_behavior (none) */ -/* Reuse tokens from ARB_shader_storage_buffer_object */ -/* reuse GL_SHADER_STORAGE_BUFFER */ -/* reuse GL_SHADER_STORAGE_BUFFER_BINDING */ -/* reuse GL_SHADER_STORAGE_BUFFER_START */ -/* reuse GL_SHADER_STORAGE_BUFFER_SIZE */ -/* reuse GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS */ -/* reuse GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS */ -/* reuse GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS */ -/* reuse GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS */ -/* reuse GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS */ -/* reuse GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS */ -/* reuse GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS */ -/* reuse GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS */ -/* reuse GL_MAX_SHADER_STORAGE_BLOCK_SIZE */ -/* reuse GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT */ -/* reuse GL_SHADER_STORAGE_BARRIER_BIT */ -/* reuse GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES */ -/* Reuse tokens from ARB_stencil_texturing */ -/* reuse GL_DEPTH_STENCIL_TEXTURE_MODE */ -/* Reuse tokens from ARB_texture_buffer_range */ -/* reuse GL_TEXTURE_BUFFER_OFFSET */ -/* reuse GL_TEXTURE_BUFFER_SIZE */ -/* reuse GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT */ -/* Reuse tokens from ARB_texture_query_levels (none) */ -/* Reuse tokens from ARB_texture_storage_multisample (none) */ -/* Reuse tokens from ARB_texture_view */ -/* reuse GL_TEXTURE_VIEW_MIN_LEVEL */ -/* reuse GL_TEXTURE_VIEW_NUM_LEVELS */ -/* reuse GL_TEXTURE_VIEW_MIN_LAYER */ -/* reuse GL_TEXTURE_VIEW_NUM_LAYERS */ -/* reuse GL_TEXTURE_IMMUTABLE_LEVELS */ -/* Reuse tokens from ARB_vertex_attrib_binding */ -/* reuse GL_VERTEX_ATTRIB_BINDING */ -/* reuse GL_VERTEX_ATTRIB_RELATIVE_OFFSET */ -/* reuse GL_VERTEX_BINDING_DIVISOR */ -/* reuse GL_VERTEX_BINDING_OFFSET */ -/* reuse GL_VERTEX_BINDING_STRIDE */ -/* reuse GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET */ -/* reuse GL_MAX_VERTEX_ATTRIB_BINDINGS */ -#endif - #ifndef GL_ARB_depth_buffer_float #define GL_DEPTH_COMPONENT32F 0x8CAC #define GL_DEPTH32F_STENCIL8 0x8CAD @@ -1566,7 +1282,7 @@ typedef void GLvoid; #define GL_TEXTURE_DEPTH_TYPE 0x8C16 #define GL_UNSIGNED_NORMALIZED 0x8C17 #define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING #define GL_RENDERBUFFER_BINDING 0x8CA7 #define GL_READ_FRAMEBUFFER 0x8CA8 #define GL_DRAW_FRAMEBUFFER 0x8CA9 @@ -1712,9 +1428,9 @@ typedef void GLvoid; #ifndef GL_ARB_copy_buffer #define GL_COPY_READ_BUFFER_BINDING 0x8F36 -#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_READ_BUFFER GL_COPY_READ_BUFFER_BINDING #define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 -#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_COPY_WRITE_BUFFER GL_COPY_WRITE_BUFFER_BINDING #endif #ifndef GL_ARB_depth_clamp @@ -1805,7 +1521,6 @@ typedef void GLvoid; #ifndef GL_ARB_texture_gather #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F #endif #ifndef GL_ARB_texture_query_lod @@ -1961,9 +1676,9 @@ typedef void GLvoid; #ifndef GL_ARB_transform_feedback2 #define GL_TRANSFORM_FEEDBACK 0x8E22 #define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED GL_TRANSFORM_FEEDBACK_PAUSED #define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE GL_TRANSFORM_FEEDBACK_ACTIVE #define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 #endif @@ -1983,7 +1698,6 @@ typedef void GLvoid; #define GL_MEDIUM_INT 0x8DF4 #define GL_HIGH_INT 0x8DF5 #define GL_SHADER_COMPILER 0x8DFA -#define GL_SHADER_BINARY_FORMATS 0x8DF8 #define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB #define GL_MAX_VARYING_VECTORS 0x8DFC @@ -2226,386 +1940,6 @@ typedef void GLvoid; #define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F #endif -#ifndef GL_KHR_texture_compression_astc_ldr -#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 -#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 -#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 -#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 -#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 -#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 -#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 -#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 -#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 -#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 -#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA -#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB -#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC -#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD -#endif - -#ifndef GL_KHR_debug -#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 -#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 -#define GL_DEBUG_SOURCE_API 0x8246 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 -#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 -#define GL_DEBUG_SOURCE_APPLICATION 0x824A -#define GL_DEBUG_SOURCE_OTHER 0x824B -#define GL_DEBUG_TYPE_ERROR 0x824C -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E -#define GL_DEBUG_TYPE_PORTABILITY 0x824F -#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 -#define GL_DEBUG_TYPE_OTHER 0x8251 -#define GL_DEBUG_TYPE_MARKER 0x8268 -#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 -#define GL_DEBUG_TYPE_POP_GROUP 0x826A -#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B -#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C -#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D -#define GL_BUFFER 0x82E0 -#define GL_SHADER 0x82E1 -#define GL_PROGRAM 0x82E2 -#define GL_QUERY 0x82E3 -#define GL_PROGRAM_PIPELINE 0x82E4 -#define GL_SAMPLER 0x82E6 -#define GL_DISPLAY_LIST 0x82E7 -/* DISPLAY_LIST used in compatibility profile only */ -#define GL_MAX_LABEL_LENGTH 0x82E8 -#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES 0x9145 -#define GL_DEBUG_SEVERITY_HIGH 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 -#define GL_DEBUG_SEVERITY_LOW 0x9148 -#define GL_DEBUG_OUTPUT 0x92E0 -#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 -/* reuse GL_STACK_UNDERFLOW */ -/* reuse GL_STACK_OVERFLOW */ -#endif - -#ifndef GL_ARB_arrays_of_arrays -#endif - -#ifndef GL_ARB_clear_buffer_object -#endif - -#ifndef GL_ARB_compute_shader -#define GL_COMPUTE_SHADER 0x91B9 -#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB -#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC -#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD -#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 -#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 -#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 -#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 -#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 -#define GL_MAX_COMPUTE_LOCAL_INVOCATIONS 0x90EB -#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE -#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF -#define GL_COMPUTE_LOCAL_WORK_SIZE 0x8267 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED -#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE -#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF -#define GL_COMPUTE_SHADER_BIT 0x00000020 -#endif - -#ifndef GL_ARB_copy_image -#endif - -#ifndef GL_ARB_texture_view -#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB -#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC -#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD -#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE -#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF -#endif - -#ifndef GL_ARB_vertex_attrib_binding -#define GL_VERTEX_ATTRIB_BINDING 0x82D4 -#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 -#define GL_VERTEX_BINDING_DIVISOR 0x82D6 -#define GL_VERTEX_BINDING_OFFSET 0x82D7 -#define GL_VERTEX_BINDING_STRIDE 0x82D8 -#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 -#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA -#endif - -#ifndef GL_ARB_robustness_isolation -#endif - -#ifndef GL_ARB_ES3_compatibility -#define GL_COMPRESSED_RGB8_ETC2 0x9274 -#define GL_COMPRESSED_SRGB8_ETC2 0x9275 -#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 -#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 -#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 -#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 -#define GL_COMPRESSED_R11_EAC 0x9270 -#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 -#define GL_COMPRESSED_RG11_EAC 0x9272 -#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 -#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 -#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A -#define GL_MAX_ELEMENT_INDEX 0x8D6B -#endif - -#ifndef GL_ARB_explicit_uniform_location -#define GL_MAX_UNIFORM_LOCATIONS 0x826E -#endif - -#ifndef GL_ARB_fragment_layer_viewport -#endif - -#ifndef GL_ARB_framebuffer_no_attachments -#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 -#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 -#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 -#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 -#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 -#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 -#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 -#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 -#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 -#endif - -#ifndef GL_ARB_internalformat_query2 -/* reuse GL_IMAGE_FORMAT_COMPATIBILITY_TYPE */ -/* reuse GL_NUM_SAMPLE_COUNTS */ -/* reuse GL_RENDERBUFFER */ -/* reuse GL_SAMPLES */ -/* reuse GL_TEXTURE_1D */ -/* reuse GL_TEXTURE_1D_ARRAY */ -/* reuse GL_TEXTURE_2D */ -/* reuse GL_TEXTURE_2D_ARRAY */ -/* reuse GL_TEXTURE_3D */ -/* reuse GL_TEXTURE_CUBE_MAP */ -/* reuse GL_TEXTURE_CUBE_MAP_ARRAY */ -/* reuse GL_TEXTURE_RECTANGLE */ -/* reuse GL_TEXTURE_BUFFER */ -/* reuse GL_TEXTURE_2D_MULTISAMPLE */ -/* reuse GL_TEXTURE_2D_MULTISAMPLE_ARRAY */ -/* reuse GL_TEXTURE_COMPRESSED */ -#define GL_INTERNALFORMAT_SUPPORTED 0x826F -#define GL_INTERNALFORMAT_PREFERRED 0x8270 -#define GL_INTERNALFORMAT_RED_SIZE 0x8271 -#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 -#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 -#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 -#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 -#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 -#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 -#define GL_INTERNALFORMAT_RED_TYPE 0x8278 -#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 -#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A -#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B -#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C -#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D -#define GL_MAX_WIDTH 0x827E -#define GL_MAX_HEIGHT 0x827F -#define GL_MAX_DEPTH 0x8280 -#define GL_MAX_LAYERS 0x8281 -#define GL_MAX_COMBINED_DIMENSIONS 0x8282 -#define GL_COLOR_COMPONENTS 0x8283 -#define GL_DEPTH_COMPONENTS 0x8284 -#define GL_STENCIL_COMPONENTS 0x8285 -#define GL_COLOR_RENDERABLE 0x8286 -#define GL_DEPTH_RENDERABLE 0x8287 -#define GL_STENCIL_RENDERABLE 0x8288 -#define GL_FRAMEBUFFER_RENDERABLE 0x8289 -#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A -#define GL_FRAMEBUFFER_BLEND 0x828B -#define GL_READ_PIXELS 0x828C -#define GL_READ_PIXELS_FORMAT 0x828D -#define GL_READ_PIXELS_TYPE 0x828E -#define GL_TEXTURE_IMAGE_FORMAT 0x828F -#define GL_TEXTURE_IMAGE_TYPE 0x8290 -#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 -#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 -#define GL_MIPMAP 0x8293 -#define GL_MANUAL_GENERATE_MIPMAP 0x8294 -#define GL_AUTO_GENERATE_MIPMAP 0x8295 -#define GL_COLOR_ENCODING 0x8296 -#define GL_SRGB_READ 0x8297 -#define GL_SRGB_WRITE 0x8298 -#define GL_SRGB_DECODE_ARB 0x8299 -#define GL_FILTER 0x829A -#define GL_VERTEX_TEXTURE 0x829B -#define GL_TESS_CONTROL_TEXTURE 0x829C -#define GL_TESS_EVALUATION_TEXTURE 0x829D -#define GL_GEOMETRY_TEXTURE 0x829E -#define GL_FRAGMENT_TEXTURE 0x829F -#define GL_COMPUTE_TEXTURE 0x82A0 -#define GL_TEXTURE_SHADOW 0x82A1 -#define GL_TEXTURE_GATHER 0x82A2 -#define GL_TEXTURE_GATHER_SHADOW 0x82A3 -#define GL_SHADER_IMAGE_LOAD 0x82A4 -#define GL_SHADER_IMAGE_STORE 0x82A5 -#define GL_SHADER_IMAGE_ATOMIC 0x82A6 -#define GL_IMAGE_TEXEL_SIZE 0x82A7 -#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 -#define GL_IMAGE_PIXEL_FORMAT 0x82A9 -#define GL_IMAGE_PIXEL_TYPE 0x82AA -#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC -#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD -#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE -#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF -#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 -#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 -#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 -#define GL_CLEAR_BUFFER 0x82B4 -#define GL_TEXTURE_VIEW 0x82B5 -#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 -#define GL_FULL_SUPPORT 0x82B7 -#define GL_CAVEAT_SUPPORT 0x82B8 -#define GL_IMAGE_CLASS_4_X_32 0x82B9 -#define GL_IMAGE_CLASS_2_X_32 0x82BA -#define GL_IMAGE_CLASS_1_X_32 0x82BB -#define GL_IMAGE_CLASS_4_X_16 0x82BC -#define GL_IMAGE_CLASS_2_X_16 0x82BD -#define GL_IMAGE_CLASS_1_X_16 0x82BE -#define GL_IMAGE_CLASS_4_X_8 0x82BF -#define GL_IMAGE_CLASS_2_X_8 0x82C0 -#define GL_IMAGE_CLASS_1_X_8 0x82C1 -#define GL_IMAGE_CLASS_11_11_10 0x82C2 -#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 -#define GL_VIEW_CLASS_128_BITS 0x82C4 -#define GL_VIEW_CLASS_96_BITS 0x82C5 -#define GL_VIEW_CLASS_64_BITS 0x82C6 -#define GL_VIEW_CLASS_48_BITS 0x82C7 -#define GL_VIEW_CLASS_32_BITS 0x82C8 -#define GL_VIEW_CLASS_24_BITS 0x82C9 -#define GL_VIEW_CLASS_16_BITS 0x82CA -#define GL_VIEW_CLASS_8_BITS 0x82CB -#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC -#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD -#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE -#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF -#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 -#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 -#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 -#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 -#endif - -#ifndef GL_ARB_invalidate_subdata -#endif - -#ifndef GL_ARB_multi_draw_indirect -#endif - -#ifndef GL_ARB_program_interface_query -#define GL_UNIFORM 0x92E1 -#define GL_UNIFORM_BLOCK 0x92E2 -#define GL_PROGRAM_INPUT 0x92E3 -#define GL_PROGRAM_OUTPUT 0x92E4 -#define GL_BUFFER_VARIABLE 0x92E5 -#define GL_SHADER_STORAGE_BLOCK 0x92E6 -/* reuse GL_ATOMIC_COUNTER_BUFFER */ -#define GL_VERTEX_SUBROUTINE 0x92E8 -#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 -#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA -#define GL_GEOMETRY_SUBROUTINE 0x92EB -#define GL_FRAGMENT_SUBROUTINE 0x92EC -#define GL_COMPUTE_SUBROUTINE 0x92ED -#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE -#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF -#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 -#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 -#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 -#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 -#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 -#define GL_ACTIVE_RESOURCES 0x92F5 -#define GL_MAX_NAME_LENGTH 0x92F6 -#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 -#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 -#define GL_NAME_LENGTH 0x92F9 -#define GL_TYPE 0x92FA -#define GL_ARRAY_SIZE 0x92FB -#define GL_OFFSET 0x92FC -#define GL_BLOCK_INDEX 0x92FD -#define GL_ARRAY_STRIDE 0x92FE -#define GL_MATRIX_STRIDE 0x92FF -#define GL_IS_ROW_MAJOR 0x9300 -#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 -#define GL_BUFFER_BINDING 0x9302 -#define GL_BUFFER_DATA_SIZE 0x9303 -#define GL_NUM_ACTIVE_VARIABLES 0x9304 -#define GL_ACTIVE_VARIABLES 0x9305 -#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 -#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 -#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 -#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 -#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A -#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B -#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C -#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D -#define GL_LOCATION 0x930E -#define GL_LOCATION_INDEX 0x930F -#define GL_IS_PER_PATCH 0x92E7 -/* reuse GL_NUM_COMPATIBLE_SUBROUTINES */ -/* reuse GL_COMPATIBLE_SUBROUTINES */ -#endif - -#ifndef GL_ARB_robust_buffer_access_behavior -#endif - -#ifndef GL_ARB_shader_image_size -#endif - -#ifndef GL_ARB_shader_storage_buffer_object -#define GL_SHADER_STORAGE_BUFFER 0x90D2 -#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 -#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 -#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 -#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 -#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 -#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 -#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 -#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA -#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB -#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC -#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD -#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE -#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF -#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 -#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 -/* reuse GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS */ -#endif - -#ifndef GL_ARB_stencil_texturing -#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA -#endif - -#ifndef GL_ARB_texture_buffer_range -#define GL_TEXTURE_BUFFER_OFFSET 0x919D -#define GL_TEXTURE_BUFFER_SIZE 0x919E -#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F -#endif - -#ifndef GL_ARB_texture_query_levels -#endif - -#ifndef GL_ARB_texture_storage_multisample -#endif - /*************************************************************/ @@ -2705,22 +2039,13 @@ typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLen typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); #endif -#ifndef GL_KHR_debug -typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); -#endif - #ifndef GL_NV_vdpau_interop typedef GLintptr GLvdpauSurfaceNV; #endif -#ifndef GL_OES_fixed_point -/* GLint must be 32 bits, a relatively safe assumption on modern CPUs */ -typedef GLint GLfixed; -#endif - #ifndef GL_VERSION_1_0 #define GL_VERSION_1_0 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glCullFace (GLenum mode); GLAPI void APIENTRY glFrontFace (GLenum mode); GLAPI void APIENTRY glHint (GLenum target, GLenum mode); @@ -2769,7 +2094,7 @@ GLAPI void APIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum GLAPI GLboolean APIENTRY glIsEnabled (GLenum cap); GLAPI void APIENTRY glDepthRange (GLdouble near, GLdouble far); GLAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLCULLFACEPROC) (GLenum mode); typedef void (APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode); typedef void (APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode); @@ -2822,7 +2147,7 @@ typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLs #ifndef GL_VERSION_1_1 #define GL_VERSION_1_1 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); GLAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); GLAPI void APIENTRY glGetPointerv (GLenum pname, GLvoid* *params); @@ -2837,7 +2162,7 @@ GLAPI void APIENTRY glBindTexture (GLenum target, GLuint texture); GLAPI void APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); GLAPI void APIENTRY glGenTextures (GLsizei n, GLuint *textures); GLAPI GLboolean APIENTRY glIsTexture (GLuint texture); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count); typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); typedef void (APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, GLvoid* *params); @@ -2856,14 +2181,14 @@ typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture); #ifndef GL_VERSION_1_2 #define GL_VERSION_1_2 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void APIENTRY glBlendEquation (GLenum mode); GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); @@ -2874,7 +2199,7 @@ typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, #ifndef GL_VERSION_1_3 #define GL_VERSION_1_3 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glActiveTexture (GLenum texture); GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); @@ -2884,7 +2209,7 @@ GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); @@ -2898,18 +2223,18 @@ typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint le #ifndef GL_VERSION_1_4 #define GL_VERSION_1_4 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); -GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); +GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount); GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param); GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params); GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param); GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount); typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); @@ -2918,7 +2243,7 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *p #ifndef GL_VERSION_1_5 #define GL_VERSION_1_5 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids); GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids); GLAPI GLboolean APIENTRY glIsQuery (GLuint id); @@ -2938,7 +2263,7 @@ GLAPI GLvoid* APIENTRY glMapBuffer (GLenum target, GLenum access); GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target); GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, GLvoid* *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); @@ -2962,7 +2287,7 @@ typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs); GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); @@ -3056,7 +2381,7 @@ GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v); GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v); GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); @@ -3154,14 +2479,14 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, #ifndef GL_VERSION_2_1 #define GL_VERSION_2_1 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); @@ -3176,7 +2501,7 @@ typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei co /* ARB_framebuffer_object */ /* ARB_map_buffer_range */ /* ARB_vertex_array_object */ -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data); GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data); @@ -3235,7 +2560,7 @@ GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLu GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value); GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); GLAPI const GLubyte * APIENTRY glGetStringi (GLenum name, GLuint index); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); @@ -3301,14 +2626,14 @@ typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint ind /* OpenGL 3.1 also reuses entry points from these extensions: */ /* ARB_copy_buffer */ /* ARB_uniform_buffer_object */ -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); +#ifdef GL3_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer); GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); +#endif /* GL3_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); #endif @@ -3320,11 +2645,11 @@ typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); /* ARB_provoking_vertex */ /* ARB_sync */ /* ARB_texture_multisample */ -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data); GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params); GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); @@ -3342,9 +2667,9 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum atta /* ARB_texture_swizzle (no entry points) */ /* ARB_timer_query */ /* ARB_vertex_type_2_10_10_10_rev */ -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); #endif @@ -3362,13 +2687,13 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divi /* ARB_texture_gather (no entry points) */ /* ARB_transform_feedback2 */ /* ARB_transform_feedback3 */ -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glMinSampleShading (GLfloat value); GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode); GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha); GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst); GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value); typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); @@ -3403,40 +2728,13 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, /* ARB_texture_storage */ #endif -#ifndef GL_VERSION_4_3 -#define GL_VERSION_4_3 1 -/* OpenGL 4.3 reuses entry points from these extensions: */ -/* ARB_arrays_of_arrays (no entry points, GLSL only) */ -/* ARB_fragment_layer_viewport (no entry points, GLSL only) */ -/* ARB_shader_image_size (no entry points, GLSL only) */ -/* ARB_ES3_compatibility (no entry points) */ -/* ARB_clear_buffer_object */ -/* ARB_compute_shader */ -/* ARB_copy_image */ -/* KHR_debug (includes ARB_debug_output commands promoted to KHR without suffixes) */ -/* ARB_explicit_uniform_location (no entry points) */ -/* ARB_framebuffer_no_attachments */ -/* ARB_internalformat_query2 */ -/* ARB_invalidate_subdata */ -/* ARB_multi_draw_indirect */ -/* ARB_program_interface_query */ -/* ARB_robust_buffer_access_behavior (no entry points) */ -/* ARB_shader_storage_buffer_object */ -/* ARB_stencil_texturing (no entry points) */ -/* ARB_texture_buffer_range */ -/* ARB_texture_query_levels (no entry points) */ -/* ARB_texture_storage_multisample */ -/* ARB_texture_view */ -/* ARB_vertex_attrib_binding */ -#endif - #ifndef GL_ARB_depth_buffer_float #define GL_ARB_depth_buffer_float 1 #endif #ifndef GL_ARB_framebuffer_object #define GL_ARB_framebuffer_object 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer); GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); @@ -3457,7 +2755,7 @@ GLAPI void APIENTRY glGenerateMipmap (GLenum target); GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); @@ -3490,10 +2788,10 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum #ifndef GL_ARB_map_buffer_range #define GL_ARB_map_buffer_range 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); #endif @@ -3508,12 +2806,12 @@ typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintpt #ifndef GL_ARB_vertex_array_object #define GL_ARB_vertex_array_object 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glBindVertexArray (GLuint array); GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays); GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays); GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array); typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); @@ -3522,7 +2820,7 @@ typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array); #ifndef GL_ARB_uniform_buffer_object #define GL_ARB_uniform_buffer_object 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); @@ -3530,7 +2828,7 @@ GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *unif GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); @@ -3542,9 +2840,9 @@ typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint un #ifndef GL_ARB_copy_buffer #define GL_ARB_copy_buffer 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); #endif @@ -3554,16 +2852,16 @@ typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum w #ifndef GL_ARB_draw_elements_base_vertex #define GL_ARB_draw_elements_base_vertex 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); -GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); -#endif /* GLCOREARB_PROTOTYPES */ +GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex); +GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, const GLint *basevertex); +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, const GLint *basevertex); #endif #ifndef GL_ARB_fragment_coord_conventions @@ -3572,9 +2870,9 @@ typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, cons #ifndef GL_ARB_provoking_vertex #define GL_ARB_provoking_vertex 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glProvokingVertex (GLenum mode); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); #endif @@ -3584,7 +2882,7 @@ typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); #ifndef GL_ARB_sync #define GL_ARB_sync 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags); GLAPI GLboolean APIENTRY glIsSync (GLsync sync); GLAPI void APIENTRY glDeleteSync (GLsync sync); @@ -3592,7 +2890,7 @@ GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *params); GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync); typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync); @@ -3604,12 +2902,12 @@ typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei #ifndef GL_ARB_texture_multisample #define GL_ARB_texture_multisample 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val); GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); @@ -3622,12 +2920,12 @@ typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); #ifndef GL_ARB_draw_buffers_blend #define GL_ARB_draw_buffers_blend 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode); GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha); GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst); GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); @@ -3636,9 +2934,9 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcR #ifndef GL_ARB_sample_shading #define GL_ARB_sample_shading 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value); #endif @@ -3656,14 +2954,14 @@ typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value); #ifndef GL_ARB_shading_language_include #define GL_ARB_shading_language_include 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name); GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length); GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name); GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length); @@ -3678,10 +2976,10 @@ typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLch #ifndef GL_ARB_blend_func_extended #define GL_ARB_blend_func_extended 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); #endif @@ -3696,7 +2994,7 @@ typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLcha #ifndef GL_ARB_sampler_objects #define GL_ARB_sampler_objects 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers); GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers); GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler); @@ -3711,7 +3009,7 @@ GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params); GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers); typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers); typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler); @@ -3742,11 +3040,11 @@ typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenu #ifndef GL_ARB_timer_query #define GL_ARB_timer_query 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target); GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params); GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params); typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params); @@ -3754,7 +3052,7 @@ typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, #ifndef GL_ARB_vertex_type_2_10_10_10_rev #define GL_ARB_vertex_type_2_10_10_10_rev 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value); GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value); GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value); @@ -3793,7 +3091,7 @@ GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean nor GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value); typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); @@ -3836,10 +3134,10 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, #ifndef GL_ARB_draw_indirect #define GL_ARB_draw_indirect 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const GLvoid *indirect); GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const GLvoid *indirect); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect); typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect); #endif @@ -3850,7 +3148,7 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type #ifndef GL_ARB_gpu_shader_fp64 #define GL_ARB_gpu_shader_fp64 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x); GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y); GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z); @@ -3869,7 +3167,7 @@ GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboole GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); @@ -3892,7 +3190,7 @@ typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, #ifndef GL_ARB_shader_subroutine #define GL_ARB_shader_subroutine 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name); GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name); GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); @@ -3901,7 +3199,7 @@ GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices); GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params); GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name); typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name); typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); @@ -3914,10 +3212,10 @@ typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shad #ifndef GL_ARB_tessellation_shader #define GL_ARB_tessellation_shader 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value); GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); #endif @@ -3928,7 +3226,7 @@ typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat #ifndef GL_ARB_transform_feedback2 #define GL_ARB_transform_feedback2 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id); GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids); GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids); @@ -3936,7 +3234,7 @@ GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id); GLAPI void APIENTRY glPauseTransformFeedback (void); GLAPI void APIENTRY glResumeTransformFeedback (void); GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids); typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); @@ -3948,12 +3246,12 @@ typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id) #ifndef GL_ARB_transform_feedback3 #define GL_ARB_transform_feedback3 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream); GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id); GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index); GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); @@ -3962,13 +3260,13 @@ typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index #ifndef GL_ARB_ES2_compatibility #define GL_ARB_ES2_compatibility 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glReleaseShaderCompiler (void); GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f); GLAPI void APIENTRY glClearDepthf (GLfloat d); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); @@ -3978,11 +3276,11 @@ typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); #ifndef GL_ARB_get_program_binary #define GL_ARB_get_program_binary 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); @@ -3990,7 +3288,7 @@ typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pnam #ifndef GL_ARB_separate_shader_objects #define GL_ARB_separate_shader_objects 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program); GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program); GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar* const *strings); @@ -4051,7 +3349,7 @@ GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline); GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar* const *strings); @@ -4116,7 +3414,7 @@ typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GL #ifndef GL_ARB_vertex_attrib_64bit #define GL_ARB_vertex_attrib_64bit 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x); GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y); GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); @@ -4127,7 +3425,7 @@ GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); @@ -4142,7 +3440,7 @@ typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname #ifndef GL_ARB_viewport_array #define GL_ARB_viewport_array 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v); @@ -4153,7 +3451,7 @@ GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdou GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f); GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data); GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v); typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v); @@ -4168,20 +3466,20 @@ typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLd #ifndef GL_ARB_cl_event #define GL_ARB_cl_event 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); #endif #ifndef GL_ARB_debug_output #define GL_ARB_debug_output 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const GLvoid *userParam); GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const GLvoid *userParam); @@ -4190,8 +3488,20 @@ typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei #ifndef GL_ARB_robustness #define GL_ARB_robustness 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void); +GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values); +GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values); +GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values); +GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern); +GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); +GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); +GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); +GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); @@ -4199,8 +3509,20 @@ GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params); GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params); GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values); +typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern); +typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); @@ -4216,14 +3538,14 @@ typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint locati #ifndef GL_ARB_base_instance #define GL_ARB_base_instance 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); -GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); -GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL3_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); +#endif /* GL3_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); #endif #ifndef GL_ARB_shading_language_420pack @@ -4232,12 +3554,12 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (G #ifndef GL_ARB_transform_feedback_instanced #define GL_ARB_transform_feedback_instanced 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount); -GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#ifdef GL3_PROTOTYPES +GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei primcount); +GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); +#endif /* GL3_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); #endif #ifndef GL_ARB_compressed_texture_pixel_storage @@ -4250,9 +3572,9 @@ typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum m #ifndef GL_ARB_internalformat_query #define GL_ARB_internalformat_query 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); #endif @@ -4262,18 +3584,18 @@ typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum int #ifndef GL_ARB_shader_atomic_counters #define GL_ARB_shader_atomic_counters 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); #endif #ifndef GL_ARB_shader_image_load_store #define GL_ARB_shader_image_load_store 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); #endif @@ -4284,14 +3606,14 @@ typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); #ifndef GL_ARB_texture_storage #define GL_ARB_texture_storage 1 -#ifdef GLCOREARB_PROTOTYPES +#ifdef GL3_PROTOTYPES GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -#endif /* GLCOREARB_PROTOTYPES */ +#endif /* GL3_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); @@ -4300,242 +3622,6 @@ typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum ta typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); #endif -#ifndef GL_KHR_texture_compression_astc_ldr -#define GL_KHR_texture_compression_astc_ldr 1 -#endif - -#ifndef GL_KHR_debug -#define GL_KHR_debug 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam); -GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message); -GLAPI void APIENTRY glPopDebugGroup (void); -GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); -GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); -typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); -typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void); -typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); -typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -#endif - -#ifndef GL_ARB_arrays_of_arrays -#define GL_ARB_arrays_of_arrays 1 -#endif - -#ifndef GL_ARB_clear_buffer_object -#define GL_ARB_clear_buffer_object 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); -GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); -GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); -GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data); -#endif - -#ifndef GL_ARB_compute_shader -#define GL_ARB_compute_shader 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); -GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); -typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); -#endif - -#ifndef GL_ARB_copy_image -#define GL_ARB_copy_image 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); -#endif - -#ifndef GL_ARB_texture_view -#define GL_ARB_texture_view 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); -#endif - -#ifndef GL_ARB_vertex_attrib_binding -#define GL_ARB_vertex_attrib_binding 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex); -GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor); -GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex); -GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); -typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); -typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); -#endif - -#ifndef GL_ARB_robustness_isolation -#define GL_ARB_robustness_isolation 1 -#endif - -#ifndef GL_ARB_ES3_compatibility -#define GL_ARB_ES3_compatibility 1 -#endif - -#ifndef GL_ARB_explicit_uniform_location -#define GL_ARB_explicit_uniform_location 1 -#endif - -#ifndef GL_ARB_fragment_layer_viewport -#define GL_ARB_fragment_layer_viewport 1 -#endif - -#ifndef GL_ARB_framebuffer_no_attachments -#define GL_ARB_framebuffer_no_attachments 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param); -GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param); -GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); -#endif - -#ifndef GL_ARB_internalformat_query2 -#define GL_ARB_internalformat_query2 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); -#endif - -#ifndef GL_ARB_invalidate_subdata -#define GL_ARB_invalidate_subdata 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); -GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level); -GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length); -GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer); -GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments); -GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); -typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); -typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); -typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); -#endif - -#ifndef GL_ARB_multi_draw_indirect -#define GL_ARB_multi_draw_indirect 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); -GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); -#endif - -#ifndef GL_ARB_program_interface_query -#define GL_ARB_program_interface_query 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params); -GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name); -GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); -GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name); -GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); -typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); -typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); -typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); -#endif - -#ifndef GL_ARB_robust_buffer_access_behavior -#define GL_ARB_robust_buffer_access_behavior 1 -#endif - -#ifndef GL_ARB_shader_image_size -#define GL_ARB_shader_image_size 1 -#endif - -#ifndef GL_ARB_shader_storage_buffer_object -#define GL_ARB_shader_storage_buffer_object 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); -#endif - -#ifndef GL_ARB_stencil_texturing -#define GL_ARB_stencil_texturing 1 -#endif - -#ifndef GL_ARB_texture_buffer_range -#define GL_ARB_texture_buffer_range 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -#endif - -#ifndef GL_ARB_texture_query_levels -#define GL_ARB_texture_query_levels 1 -#endif - -#ifndef GL_ARB_texture_storage_multisample -#define GL_ARB_texture_storage_multisample 1 -#ifdef GLCOREARB_PROTOTYPES -GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -#endif /* GLCOREARB_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -#endif - #ifdef __cplusplus } diff --git a/gl3w.c b/GL3/gl3w.c similarity index 89% rename from gl3w.c rename to GL3/gl3w.c index 1b129f0..1e9d08e 100644 --- a/gl3w.c +++ b/GL3/gl3w.c @@ -1,4 +1,4 @@ -#include "gl3w.h" +#include #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN 1 @@ -651,6 +651,18 @@ PFNGLDEBUGMESSAGEINSERTARBPROC gl3wDebugMessageInsertARB; PFNGLDEBUGMESSAGECALLBACKARBPROC gl3wDebugMessageCallbackARB; PFNGLGETDEBUGMESSAGELOGARBPROC gl3wGetDebugMessageLogARB; PFNGLGETGRAPHICSRESETSTATUSARBPROC gl3wGetGraphicsResetStatusARB; +PFNGLGETNMAPDVARBPROC gl3wGetnMapdvARB; +PFNGLGETNMAPFVARBPROC gl3wGetnMapfvARB; +PFNGLGETNMAPIVARBPROC gl3wGetnMapivARB; +PFNGLGETNPIXELMAPFVARBPROC gl3wGetnPixelMapfvARB; +PFNGLGETNPIXELMAPUIVARBPROC gl3wGetnPixelMapuivARB; +PFNGLGETNPIXELMAPUSVARBPROC gl3wGetnPixelMapusvARB; +PFNGLGETNPOLYGONSTIPPLEARBPROC gl3wGetnPolygonStippleARB; +PFNGLGETNCOLORTABLEARBPROC gl3wGetnColorTableARB; +PFNGLGETNCONVOLUTIONFILTERARBPROC gl3wGetnConvolutionFilterARB; +PFNGLGETNSEPARABLEFILTERARBPROC gl3wGetnSeparableFilterARB; +PFNGLGETNHISTOGRAMARBPROC gl3wGetnHistogramARB; +PFNGLGETNMINMAXARBPROC gl3wGetnMinmaxARB; PFNGLGETNTEXIMAGEARBPROC gl3wGetnTexImageARB; PFNGLREADNPIXELSARBPROC gl3wReadnPixelsARB; PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC gl3wGetnCompressedTexImageARB; @@ -673,62 +685,6 @@ PFNGLTEXSTORAGE3DPROC gl3wTexStorage3D; PFNGLTEXTURESTORAGE1DEXTPROC gl3wTextureStorage1DEXT; PFNGLTEXTURESTORAGE2DEXTPROC gl3wTextureStorage2DEXT; PFNGLTEXTURESTORAGE3DEXTPROC gl3wTextureStorage3DEXT; -PFNGLDEBUGMESSAGECONTROLPROC gl3wDebugMessageControl; -PFNGLDEBUGMESSAGEINSERTPROC gl3wDebugMessageInsert; -PFNGLDEBUGMESSAGECALLBACKPROC gl3wDebugMessageCallback; -PFNGLGETDEBUGMESSAGELOGPROC gl3wGetDebugMessageLog; -PFNGLPUSHDEBUGGROUPPROC gl3wPushDebugGroup; -PFNGLPOPDEBUGGROUPPROC gl3wPopDebugGroup; -PFNGLOBJECTLABELPROC gl3wObjectLabel; -PFNGLGETOBJECTLABELPROC gl3wGetObjectLabel; -PFNGLOBJECTPTRLABELPROC gl3wObjectPtrLabel; -PFNGLGETOBJECTPTRLABELPROC gl3wGetObjectPtrLabel; -PFNGLCLEARBUFFERDATAPROC gl3wClearBufferData; -PFNGLCLEARBUFFERSUBDATAPROC gl3wClearBufferSubData; -PFNGLCLEARNAMEDBUFFERDATAEXTPROC gl3wClearNamedBufferDataEXT; -PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC gl3wClearNamedBufferSubDataEXT; -PFNGLDISPATCHCOMPUTEPROC gl3wDispatchCompute; -PFNGLDISPATCHCOMPUTEINDIRECTPROC gl3wDispatchComputeIndirect; -PFNGLCOPYIMAGESUBDATAPROC gl3wCopyImageSubData; -PFNGLTEXTUREVIEWPROC gl3wTextureView; -PFNGLBINDVERTEXBUFFERPROC gl3wBindVertexBuffer; -PFNGLVERTEXATTRIBFORMATPROC gl3wVertexAttribFormat; -PFNGLVERTEXATTRIBIFORMATPROC gl3wVertexAttribIFormat; -PFNGLVERTEXATTRIBLFORMATPROC gl3wVertexAttribLFormat; -PFNGLVERTEXATTRIBBINDINGPROC gl3wVertexAttribBinding; -PFNGLVERTEXBINDINGDIVISORPROC gl3wVertexBindingDivisor; -PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC gl3wVertexArrayBindVertexBufferEXT; -PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC gl3wVertexArrayVertexAttribFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC gl3wVertexArrayVertexAttribIFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC gl3wVertexArrayVertexAttribLFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC gl3wVertexArrayVertexAttribBindingEXT; -PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC gl3wVertexArrayVertexBindingDivisorEXT; -PFNGLFRAMEBUFFERPARAMETERIPROC gl3wFramebufferParameteri; -PFNGLGETFRAMEBUFFERPARAMETERIVPROC gl3wGetFramebufferParameteriv; -PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC gl3wNamedFramebufferParameteriEXT; -PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC gl3wGetNamedFramebufferParameterivEXT; -PFNGLGETINTERNALFORMATI64VPROC gl3wGetInternalformati64v; -PFNGLINVALIDATETEXSUBIMAGEPROC gl3wInvalidateTexSubImage; -PFNGLINVALIDATETEXIMAGEPROC gl3wInvalidateTexImage; -PFNGLINVALIDATEBUFFERSUBDATAPROC gl3wInvalidateBufferSubData; -PFNGLINVALIDATEBUFFERDATAPROC gl3wInvalidateBufferData; -PFNGLINVALIDATEFRAMEBUFFERPROC gl3wInvalidateFramebuffer; -PFNGLINVALIDATESUBFRAMEBUFFERPROC gl3wInvalidateSubFramebuffer; -PFNGLMULTIDRAWARRAYSINDIRECTPROC gl3wMultiDrawArraysIndirect; -PFNGLMULTIDRAWELEMENTSINDIRECTPROC gl3wMultiDrawElementsIndirect; -PFNGLGETPROGRAMINTERFACEIVPROC gl3wGetProgramInterfaceiv; -PFNGLGETPROGRAMRESOURCEINDEXPROC gl3wGetProgramResourceIndex; -PFNGLGETPROGRAMRESOURCENAMEPROC gl3wGetProgramResourceName; -PFNGLGETPROGRAMRESOURCEIVPROC gl3wGetProgramResourceiv; -PFNGLGETPROGRAMRESOURCELOCATIONPROC gl3wGetProgramResourceLocation; -PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC gl3wGetProgramResourceLocationIndex; -PFNGLSHADERSTORAGEBLOCKBINDINGPROC gl3wShaderStorageBlockBinding; -PFNGLTEXBUFFERRANGEPROC gl3wTexBufferRange; -PFNGLTEXTUREBUFFERRANGEEXTPROC gl3wTextureBufferRangeEXT; -PFNGLTEXSTORAGE2DMULTISAMPLEPROC gl3wTexStorage2DMultisample; -PFNGLTEXSTORAGE3DMULTISAMPLEPROC gl3wTexStorage3DMultisample; -PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC gl3wTextureStorage2DMultisampleEXT; -PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEXT; static void load_procs(void) { @@ -1258,6 +1214,18 @@ static void load_procs(void) gl3wDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC) get_proc("glDebugMessageCallbackARB"); gl3wGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) get_proc("glGetDebugMessageLogARB"); gl3wGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC) get_proc("glGetGraphicsResetStatusARB"); + gl3wGetnMapdvARB = (PFNGLGETNMAPDVARBPROC) get_proc("glGetnMapdvARB"); + gl3wGetnMapfvARB = (PFNGLGETNMAPFVARBPROC) get_proc("glGetnMapfvARB"); + gl3wGetnMapivARB = (PFNGLGETNMAPIVARBPROC) get_proc("glGetnMapivARB"); + gl3wGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC) get_proc("glGetnPixelMapfvARB"); + gl3wGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC) get_proc("glGetnPixelMapuivARB"); + gl3wGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC) get_proc("glGetnPixelMapusvARB"); + gl3wGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC) get_proc("glGetnPolygonStippleARB"); + gl3wGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC) get_proc("glGetnColorTableARB"); + gl3wGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC) get_proc("glGetnConvolutionFilterARB"); + gl3wGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC) get_proc("glGetnSeparableFilterARB"); + gl3wGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC) get_proc("glGetnHistogramARB"); + gl3wGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC) get_proc("glGetnMinmaxARB"); gl3wGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC) get_proc("glGetnTexImageARB"); gl3wReadnPixelsARB = (PFNGLREADNPIXELSARBPROC) get_proc("glReadnPixelsARB"); gl3wGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) get_proc("glGetnCompressedTexImageARB"); @@ -1280,60 +1248,4 @@ static void load_procs(void) gl3wTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC) get_proc("glTextureStorage1DEXT"); gl3wTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC) get_proc("glTextureStorage2DEXT"); gl3wTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC) get_proc("glTextureStorage3DEXT"); - gl3wDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC) get_proc("glDebugMessageControl"); - gl3wDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC) get_proc("glDebugMessageInsert"); - gl3wDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC) get_proc("glDebugMessageCallback"); - gl3wGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC) get_proc("glGetDebugMessageLog"); - gl3wPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC) get_proc("glPushDebugGroup"); - gl3wPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC) get_proc("glPopDebugGroup"); - gl3wObjectLabel = (PFNGLOBJECTLABELPROC) get_proc("glObjectLabel"); - gl3wGetObjectLabel = (PFNGLGETOBJECTLABELPROC) get_proc("glGetObjectLabel"); - gl3wObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC) get_proc("glObjectPtrLabel"); - gl3wGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC) get_proc("glGetObjectPtrLabel"); - gl3wClearBufferData = (PFNGLCLEARBUFFERDATAPROC) get_proc("glClearBufferData"); - gl3wClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC) get_proc("glClearBufferSubData"); - gl3wClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC) get_proc("glClearNamedBufferDataEXT"); - gl3wClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) get_proc("glClearNamedBufferSubDataEXT"); - gl3wDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC) get_proc("glDispatchCompute"); - gl3wDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC) get_proc("glDispatchComputeIndirect"); - gl3wCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC) get_proc("glCopyImageSubData"); - gl3wTextureView = (PFNGLTEXTUREVIEWPROC) get_proc("glTextureView"); - gl3wBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC) get_proc("glBindVertexBuffer"); - gl3wVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC) get_proc("glVertexAttribFormat"); - gl3wVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC) get_proc("glVertexAttribIFormat"); - gl3wVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC) get_proc("glVertexAttribLFormat"); - gl3wVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC) get_proc("glVertexAttribBinding"); - gl3wVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC) get_proc("glVertexBindingDivisor"); - gl3wVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) get_proc("glVertexArrayBindVertexBufferEXT"); - gl3wVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) get_proc("glVertexArrayVertexAttribFormatEXT"); - gl3wVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) get_proc("glVertexArrayVertexAttribIFormatEXT"); - gl3wVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) get_proc("glVertexArrayVertexAttribLFormatEXT"); - gl3wVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) get_proc("glVertexArrayVertexAttribBindingEXT"); - gl3wVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) get_proc("glVertexArrayVertexBindingDivisorEXT"); - gl3wFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC) get_proc("glFramebufferParameteri"); - gl3wGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC) get_proc("glGetFramebufferParameteriv"); - gl3wNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) get_proc("glNamedFramebufferParameteriEXT"); - gl3wGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) get_proc("glGetNamedFramebufferParameterivEXT"); - gl3wGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC) get_proc("glGetInternalformati64v"); - gl3wInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC) get_proc("glInvalidateTexSubImage"); - gl3wInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC) get_proc("glInvalidateTexImage"); - gl3wInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC) get_proc("glInvalidateBufferSubData"); - gl3wInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC) get_proc("glInvalidateBufferData"); - gl3wInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC) get_proc("glInvalidateFramebuffer"); - gl3wInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC) get_proc("glInvalidateSubFramebuffer"); - gl3wMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC) get_proc("glMultiDrawArraysIndirect"); - gl3wMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC) get_proc("glMultiDrawElementsIndirect"); - gl3wGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC) get_proc("glGetProgramInterfaceiv"); - gl3wGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC) get_proc("glGetProgramResourceIndex"); - gl3wGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC) get_proc("glGetProgramResourceName"); - gl3wGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC) get_proc("glGetProgramResourceiv"); - gl3wGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC) get_proc("glGetProgramResourceLocation"); - gl3wGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) get_proc("glGetProgramResourceLocationIndex"); - gl3wShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC) get_proc("glShaderStorageBlockBinding"); - gl3wTexBufferRange = (PFNGLTEXBUFFERRANGEPROC) get_proc("glTexBufferRange"); - gl3wTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC) get_proc("glTextureBufferRangeEXT"); - gl3wTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC) get_proc("glTexStorage2DMultisample"); - gl3wTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC) get_proc("glTexStorage3DMultisample"); - gl3wTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) get_proc("glTextureStorage2DMultisampleEXT"); - gl3wTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) get_proc("glTextureStorage3DMultisampleEXT"); } diff --git a/gl3w.h b/GL3/gl3w.h similarity index 88% rename from gl3w.h rename to GL3/gl3w.h index 06bdd54..f95a394 100644 --- a/gl3w.h +++ b/GL3/gl3w.h @@ -1,8 +1,7 @@ #ifndef __gl3w_h_ #define __gl3w_h_ -//#include -#include "glcorearb.h" +#include #ifndef __gl_h_ #define __gl_h_ @@ -544,6 +543,18 @@ extern PFNGLDEBUGMESSAGEINSERTARBPROC gl3wDebugMessageInsertARB; extern PFNGLDEBUGMESSAGECALLBACKARBPROC gl3wDebugMessageCallbackARB; extern PFNGLGETDEBUGMESSAGELOGARBPROC gl3wGetDebugMessageLogARB; extern PFNGLGETGRAPHICSRESETSTATUSARBPROC gl3wGetGraphicsResetStatusARB; +extern PFNGLGETNMAPDVARBPROC gl3wGetnMapdvARB; +extern PFNGLGETNMAPFVARBPROC gl3wGetnMapfvARB; +extern PFNGLGETNMAPIVARBPROC gl3wGetnMapivARB; +extern PFNGLGETNPIXELMAPFVARBPROC gl3wGetnPixelMapfvARB; +extern PFNGLGETNPIXELMAPUIVARBPROC gl3wGetnPixelMapuivARB; +extern PFNGLGETNPIXELMAPUSVARBPROC gl3wGetnPixelMapusvARB; +extern PFNGLGETNPOLYGONSTIPPLEARBPROC gl3wGetnPolygonStippleARB; +extern PFNGLGETNCOLORTABLEARBPROC gl3wGetnColorTableARB; +extern PFNGLGETNCONVOLUTIONFILTERARBPROC gl3wGetnConvolutionFilterARB; +extern PFNGLGETNSEPARABLEFILTERARBPROC gl3wGetnSeparableFilterARB; +extern PFNGLGETNHISTOGRAMARBPROC gl3wGetnHistogramARB; +extern PFNGLGETNMINMAXARBPROC gl3wGetnMinmaxARB; extern PFNGLGETNTEXIMAGEARBPROC gl3wGetnTexImageARB; extern PFNGLREADNPIXELSARBPROC gl3wReadnPixelsARB; extern PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC gl3wGetnCompressedTexImageARB; @@ -566,62 +577,6 @@ extern PFNGLTEXSTORAGE3DPROC gl3wTexStorage3D; extern PFNGLTEXTURESTORAGE1DEXTPROC gl3wTextureStorage1DEXT; extern PFNGLTEXTURESTORAGE2DEXTPROC gl3wTextureStorage2DEXT; extern PFNGLTEXTURESTORAGE3DEXTPROC gl3wTextureStorage3DEXT; -extern PFNGLDEBUGMESSAGECONTROLPROC gl3wDebugMessageControl; -extern PFNGLDEBUGMESSAGEINSERTPROC gl3wDebugMessageInsert; -extern PFNGLDEBUGMESSAGECALLBACKPROC gl3wDebugMessageCallback; -extern PFNGLGETDEBUGMESSAGELOGPROC gl3wGetDebugMessageLog; -extern PFNGLPUSHDEBUGGROUPPROC gl3wPushDebugGroup; -extern PFNGLPOPDEBUGGROUPPROC gl3wPopDebugGroup; -extern PFNGLOBJECTLABELPROC gl3wObjectLabel; -extern PFNGLGETOBJECTLABELPROC gl3wGetObjectLabel; -extern PFNGLOBJECTPTRLABELPROC gl3wObjectPtrLabel; -extern PFNGLGETOBJECTPTRLABELPROC gl3wGetObjectPtrLabel; -extern PFNGLCLEARBUFFERDATAPROC gl3wClearBufferData; -extern PFNGLCLEARBUFFERSUBDATAPROC gl3wClearBufferSubData; -extern PFNGLCLEARNAMEDBUFFERDATAEXTPROC gl3wClearNamedBufferDataEXT; -extern PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC gl3wClearNamedBufferSubDataEXT; -extern PFNGLDISPATCHCOMPUTEPROC gl3wDispatchCompute; -extern PFNGLDISPATCHCOMPUTEINDIRECTPROC gl3wDispatchComputeIndirect; -extern PFNGLCOPYIMAGESUBDATAPROC gl3wCopyImageSubData; -extern PFNGLTEXTUREVIEWPROC gl3wTextureView; -extern PFNGLBINDVERTEXBUFFERPROC gl3wBindVertexBuffer; -extern PFNGLVERTEXATTRIBFORMATPROC gl3wVertexAttribFormat; -extern PFNGLVERTEXATTRIBIFORMATPROC gl3wVertexAttribIFormat; -extern PFNGLVERTEXATTRIBLFORMATPROC gl3wVertexAttribLFormat; -extern PFNGLVERTEXATTRIBBINDINGPROC gl3wVertexAttribBinding; -extern PFNGLVERTEXBINDINGDIVISORPROC gl3wVertexBindingDivisor; -extern PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC gl3wVertexArrayBindVertexBufferEXT; -extern PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC gl3wVertexArrayVertexAttribFormatEXT; -extern PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC gl3wVertexArrayVertexAttribIFormatEXT; -extern PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC gl3wVertexArrayVertexAttribLFormatEXT; -extern PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC gl3wVertexArrayVertexAttribBindingEXT; -extern PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC gl3wVertexArrayVertexBindingDivisorEXT; -extern PFNGLFRAMEBUFFERPARAMETERIPROC gl3wFramebufferParameteri; -extern PFNGLGETFRAMEBUFFERPARAMETERIVPROC gl3wGetFramebufferParameteriv; -extern PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC gl3wNamedFramebufferParameteriEXT; -extern PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC gl3wGetNamedFramebufferParameterivEXT; -extern PFNGLGETINTERNALFORMATI64VPROC gl3wGetInternalformati64v; -extern PFNGLINVALIDATETEXSUBIMAGEPROC gl3wInvalidateTexSubImage; -extern PFNGLINVALIDATETEXIMAGEPROC gl3wInvalidateTexImage; -extern PFNGLINVALIDATEBUFFERSUBDATAPROC gl3wInvalidateBufferSubData; -extern PFNGLINVALIDATEBUFFERDATAPROC gl3wInvalidateBufferData; -extern PFNGLINVALIDATEFRAMEBUFFERPROC gl3wInvalidateFramebuffer; -extern PFNGLINVALIDATESUBFRAMEBUFFERPROC gl3wInvalidateSubFramebuffer; -extern PFNGLMULTIDRAWARRAYSINDIRECTPROC gl3wMultiDrawArraysIndirect; -extern PFNGLMULTIDRAWELEMENTSINDIRECTPROC gl3wMultiDrawElementsIndirect; -extern PFNGLGETPROGRAMINTERFACEIVPROC gl3wGetProgramInterfaceiv; -extern PFNGLGETPROGRAMRESOURCEINDEXPROC gl3wGetProgramResourceIndex; -extern PFNGLGETPROGRAMRESOURCENAMEPROC gl3wGetProgramResourceName; -extern PFNGLGETPROGRAMRESOURCEIVPROC gl3wGetProgramResourceiv; -extern PFNGLGETPROGRAMRESOURCELOCATIONPROC gl3wGetProgramResourceLocation; -extern PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC gl3wGetProgramResourceLocationIndex; -extern PFNGLSHADERSTORAGEBLOCKBINDINGPROC gl3wShaderStorageBlockBinding; -extern PFNGLTEXBUFFERRANGEPROC gl3wTexBufferRange; -extern PFNGLTEXTUREBUFFERRANGEEXTPROC gl3wTextureBufferRangeEXT; -extern PFNGLTEXSTORAGE2DMULTISAMPLEPROC gl3wTexStorage2DMultisample; -extern PFNGLTEXSTORAGE3DMULTISAMPLEPROC gl3wTexStorage3DMultisample; -extern PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC gl3wTextureStorage2DMultisampleEXT; -extern PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEXT; #define glCullFace gl3wCullFace #define glFrontFace gl3wFrontFace @@ -1149,6 +1104,18 @@ extern PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEX #define glDebugMessageCallbackARB gl3wDebugMessageCallbackARB #define glGetDebugMessageLogARB gl3wGetDebugMessageLogARB #define glGetGraphicsResetStatusARB gl3wGetGraphicsResetStatusARB +#define glGetnMapdvARB gl3wGetnMapdvARB +#define glGetnMapfvARB gl3wGetnMapfvARB +#define glGetnMapivARB gl3wGetnMapivARB +#define glGetnPixelMapfvARB gl3wGetnPixelMapfvARB +#define glGetnPixelMapuivARB gl3wGetnPixelMapuivARB +#define glGetnPixelMapusvARB gl3wGetnPixelMapusvARB +#define glGetnPolygonStippleARB gl3wGetnPolygonStippleARB +#define glGetnColorTableARB gl3wGetnColorTableARB +#define glGetnConvolutionFilterARB gl3wGetnConvolutionFilterARB +#define glGetnSeparableFilterARB gl3wGetnSeparableFilterARB +#define glGetnHistogramARB gl3wGetnHistogramARB +#define glGetnMinmaxARB gl3wGetnMinmaxARB #define glGetnTexImageARB gl3wGetnTexImageARB #define glReadnPixelsARB gl3wReadnPixelsARB #define glGetnCompressedTexImageARB gl3wGetnCompressedTexImageARB @@ -1171,62 +1138,6 @@ extern PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEX #define glTextureStorage1DEXT gl3wTextureStorage1DEXT #define glTextureStorage2DEXT gl3wTextureStorage2DEXT #define glTextureStorage3DEXT gl3wTextureStorage3DEXT -#define glDebugMessageControl gl3wDebugMessageControl -#define glDebugMessageInsert gl3wDebugMessageInsert -#define glDebugMessageCallback gl3wDebugMessageCallback -#define glGetDebugMessageLog gl3wGetDebugMessageLog -#define glPushDebugGroup gl3wPushDebugGroup -#define glPopDebugGroup gl3wPopDebugGroup -#define glObjectLabel gl3wObjectLabel -#define glGetObjectLabel gl3wGetObjectLabel -#define glObjectPtrLabel gl3wObjectPtrLabel -#define glGetObjectPtrLabel gl3wGetObjectPtrLabel -#define glClearBufferData gl3wClearBufferData -#define glClearBufferSubData gl3wClearBufferSubData -#define glClearNamedBufferDataEXT gl3wClearNamedBufferDataEXT -#define glClearNamedBufferSubDataEXT gl3wClearNamedBufferSubDataEXT -#define glDispatchCompute gl3wDispatchCompute -#define glDispatchComputeIndirect gl3wDispatchComputeIndirect -#define glCopyImageSubData gl3wCopyImageSubData -#define glTextureView gl3wTextureView -#define glBindVertexBuffer gl3wBindVertexBuffer -#define glVertexAttribFormat gl3wVertexAttribFormat -#define glVertexAttribIFormat gl3wVertexAttribIFormat -#define glVertexAttribLFormat gl3wVertexAttribLFormat -#define glVertexAttribBinding gl3wVertexAttribBinding -#define glVertexBindingDivisor gl3wVertexBindingDivisor -#define glVertexArrayBindVertexBufferEXT gl3wVertexArrayBindVertexBufferEXT -#define glVertexArrayVertexAttribFormatEXT gl3wVertexArrayVertexAttribFormatEXT -#define glVertexArrayVertexAttribIFormatEXT gl3wVertexArrayVertexAttribIFormatEXT -#define glVertexArrayVertexAttribLFormatEXT gl3wVertexArrayVertexAttribLFormatEXT -#define glVertexArrayVertexAttribBindingEXT gl3wVertexArrayVertexAttribBindingEXT -#define glVertexArrayVertexBindingDivisorEXT gl3wVertexArrayVertexBindingDivisorEXT -#define glFramebufferParameteri gl3wFramebufferParameteri -#define glGetFramebufferParameteriv gl3wGetFramebufferParameteriv -#define glNamedFramebufferParameteriEXT gl3wNamedFramebufferParameteriEXT -#define glGetNamedFramebufferParameterivEXT gl3wGetNamedFramebufferParameterivEXT -#define glGetInternalformati64v gl3wGetInternalformati64v -#define glInvalidateTexSubImage gl3wInvalidateTexSubImage -#define glInvalidateTexImage gl3wInvalidateTexImage -#define glInvalidateBufferSubData gl3wInvalidateBufferSubData -#define glInvalidateBufferData gl3wInvalidateBufferData -#define glInvalidateFramebuffer gl3wInvalidateFramebuffer -#define glInvalidateSubFramebuffer gl3wInvalidateSubFramebuffer -#define glMultiDrawArraysIndirect gl3wMultiDrawArraysIndirect -#define glMultiDrawElementsIndirect gl3wMultiDrawElementsIndirect -#define glGetProgramInterfaceiv gl3wGetProgramInterfaceiv -#define glGetProgramResourceIndex gl3wGetProgramResourceIndex -#define glGetProgramResourceName gl3wGetProgramResourceName -#define glGetProgramResourceiv gl3wGetProgramResourceiv -#define glGetProgramResourceLocation gl3wGetProgramResourceLocation -#define glGetProgramResourceLocationIndex gl3wGetProgramResourceLocationIndex -#define glShaderStorageBlockBinding gl3wShaderStorageBlockBinding -#define glTexBufferRange gl3wTexBufferRange -#define glTextureBufferRangeEXT gl3wTextureBufferRangeEXT -#define glTexStorage2DMultisample gl3wTexStorage2DMultisample -#define glTexStorage3DMultisample gl3wTexStorage3DMultisample -#define glTextureStorage2DMultisampleEXT gl3wTextureStorage2DMultisampleEXT -#define glTextureStorage3DMultisampleEXT gl3wTextureStorage3DMultisampleEXT #ifdef __cplusplus } diff --git a/GLProgram.cc b/GLProgram.cc deleted file mode 100644 index 6338b48..0000000 --- a/GLProgram.cc +++ /dev/null @@ -1,99 +0,0 @@ -#include "GLProgram.h" -#include -#include - -using namespace std; - -GLProgram::GLProgram() -{ - m_id = 0; -} - -GLProgram::~GLProgram() -{ - if (m_id > 0) - { - glDeleteProgram(m_id); - } -} - -bool GLProgram::create(const char *v_source, const char *f_source, ...) -{ - va_list va; - va_start(va, f_source); - bool rv = createv(v_source, f_source, va); - va_end(va); - return rv; -} - -bool GLProgram::create(const uint8_t *v_source, const uint8_t *f_source, ...) -{ - va_list va; - va_start(va, f_source); - bool rv = createv((const char *) v_source, (const char *) f_source, va); - va_end(va); - return rv; -} - -bool GLProgram::createv(const char *v_source, const char *f_source, va_list va) -{ - if (v_source == NULL || f_source == NULL) - return false; - if (!m_v_shader.create(GL_VERTEX_SHADER, v_source)) - { - cerr << "Failed vertex shader source:" << endl << v_source << endl; - return false; - } - if (!m_f_shader.create(GL_FRAGMENT_SHADER, f_source)) - { - cerr << "Failed fragment shader source:" << endl << f_source << endl; - return false; - } - m_id = glCreateProgram(); - if (m_id <= 0) - { - cerr << "Error allocating GL program object" << endl; - return false; - } - glAttachShader(m_id, m_v_shader.get_id()); - glAttachShader(m_id, m_f_shader.get_id()); - - for (;;) - { - const char *attribute_name = va_arg(va, const char *); - if (attribute_name == NULL) - break; - GLuint attribute_index = va_arg(va, uint32_t); - glBindAttribLocation(m_id, attribute_index, attribute_name); - } - - glLinkProgram(m_id); - - GLint link_status; - glGetProgramiv(m_id, GL_LINK_STATUS, &link_status); - if (link_status != GL_TRUE) - { - GLint log_length; - glGetProgramiv(m_id, GL_INFO_LOG_LENGTH, &log_length); - if (log_length > 0) - { - char *log = new char[log_length]; - glGetProgramInfoLog(m_id, log_length, &log_length, log); - cerr << "Program log:" << endl << log << endl; - delete[] log; - } - return false; - } - - for (;;) - { - const char *uniform_name = va_arg(va, const char *); - if (uniform_name == NULL) - break; - GLint loc = glGetUniformLocation(m_id, uniform_name); - m_uniform_locations.push_back(loc); - m_uniform_location_names[uniform_name] = loc; - } - - return true; -} diff --git a/GLProgram.h b/GLProgram.h deleted file mode 100644 index cdd2ea3..0000000 --- a/GLProgram.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef GLPROGRAM_H -#define GLPROGRAM_H - -#include -#include "GLShader.h" -#include -#include -#include - -class GLProgram -{ - public: - GLProgram(); - ~GLProgram(); - bool create(const char *v_source, const char *f_source, ...); - bool create(const uint8_t *v_source, const uint8_t *f_source, ...); - bool createv(const char *v_source, const char *f_source, va_list va); - GLuint get_id() { return m_id; } - void use() { glUseProgram(m_id); } - GLint uniform(int i) { return m_uniform_locations[i]; } - GLint uniform(const std::string & s) { return m_uniform_location_names[s]; } - protected: - GLuint m_id; - GLShader m_v_shader; - GLShader m_f_shader; - std::vector m_uniform_locations; - std::map m_uniform_location_names; -}; - -#endif diff --git a/GLShader.cc b/GLShader.cc deleted file mode 100644 index 3f99a9f..0000000 --- a/GLShader.cc +++ /dev/null @@ -1,59 +0,0 @@ -#include "GLShader.h" -#include - -using namespace std; - -GLShader::GLShader() -{ - m_id = 0; -} - -GLShader::~GLShader() -{ - if (m_id > 0) - { - glDeleteShader(m_id); - } -} - -bool GLShader::create(GLenum shaderType, const char *source) -{ - GLint status; - - m_id = glCreateShader(shaderType); - if (m_id > 0) - { - glShaderSource(m_id, 1, &source, NULL); - - glCompileShader(m_id); - - glGetShaderiv(m_id, GL_COMPILE_STATUS, &status); - if (status == GL_TRUE) - { - return true; - } - - GLint log_length; - cerr << "Error compiling "; - switch (shaderType) - { - case GL_VERTEX_SHADER: - cerr << "vertex"; - break; - case GL_FRAGMENT_SHADER: - cerr << "fragment"; - break; - } - cerr << " shader" << endl; - glGetShaderiv(m_id, GL_INFO_LOG_LENGTH, &log_length); - if (log_length > 0) - { - char * log = new char[log_length]; - glGetShaderInfoLog(m_id, log_length, &log_length, log); - cerr << "Shader Log:" << endl << log << endl; - delete[] log; - } - glDeleteShader(m_id); - } - return false; -} diff --git a/GLShader.h b/GLShader.h deleted file mode 100644 index b7578c5..0000000 --- a/GLShader.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef GLSHADER_H -#define GLSHADER_H - -#include "gl3w.h" - -class GLShader -{ - public: - GLShader(); - ~GLShader(); - bool create(GLenum shaderType, const char *source); - GLuint get_id() { return m_id; } - bool valid() { return m_id > 0; } - protected: - GLuint m_id; -}; - -#endif diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 13b1a06..0000000 --- a/Gemfile +++ /dev/null @@ -1,5 +0,0 @@ -source "http://rubygems.org" - -gem "rscons" -gem "rake" -gem "json" diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index eed2c67..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,14 +0,0 @@ -GEM - remote: http://rubygems.org/ - specs: - json (1.8.1) - rake (10.3.2) - rscons (1.4.3) - -PLATFORMS - ruby - -DEPENDENCIES - json - rake - rscons diff --git a/Makefile b/Makefile index 2376de0..efab526 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,11 @@ -ifeq ($(OS),Windows_NT) - GL_LIB := opengl32 -else - GL_LIB := GL -endif -CFLAGS := $(shell freetype-config --cflags) $(shell sdl2-config --cflags) -CXXFLAGS := $(CFLAGS) -LDFLAGS := -l$(GL_LIB) -ldl -lfreetype $(shell sdl2-config --libs) $(shell freetype-config --libs) - -freetype2gl3: gl3w.o freetype2gl3.o GLShader.o GLProgram.o - $(CXX) -o $@ $^ $(LDFLAGS) +.PHONY: build +build: + ./waf build .PHONY: clean clean: - -rm -f freetype2gl3 + ./waf clean + +.PHONY: distclean +distclean: + ./waf distclean diff --git a/Rakefile.rb b/Rakefile.rb deleted file mode 100644 index b146e78..0000000 --- a/Rakefile.rb +++ /dev/null @@ -1,21 +0,0 @@ -require "bundler" -Bundler.setup(:default) - -require "rake/clean" -require "rscons" - -NAME = "freetype2gl3" - -task :default do - Rscons::Environment.new do |env| - env.build_root = "build" - env["LIBS"] += ["SDL2", "GL", "dl", "freetype"] - env["CXXFLAGS"] += `freetype-config --cflags`.split(" ") - env["LDFLAGS"] += `freetype-config --libs`.split(" ") - env.Program("^/#{NAME}", Dir["*.{cc,c}"]) - end -end - -task :clean do - Rscons.clean -end diff --git a/app.cc b/app.cc new file mode 100644 index 0000000..e71c095 --- /dev/null +++ b/app.cc @@ -0,0 +1,236 @@ +#include +#include +#include "glcxx.hpp" +#include "GL3/gl3w.h" +#include +#include "glm/glm.hpp" +#include "glm/gtc/matrix_transform.hpp" + +using namespace std; + +std::shared_ptr program; +std::shared_ptr cube_buffer; +std::shared_ptr cube_array; +static struct +{ + GLint ambient; + GLint specular; + GLint shininess; + GLint tex; + GLint projection; + GLint modelview; +} uniforms; +glm::mat4 modelview; +glm::mat4 projection; +std::shared_ptr texture; +GLubyte texture_data[16][16][4]; + +#define WIDTH 800 +#define HEIGHT 800 + +bool init(void) +{ + glClearColor (0.0, 0.0, 0.0, 0.0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); +#if 0 + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +#endif + glViewport(0, 0, WIDTH, HEIGHT); + try + { + program = glcxx::Program::create( + glcxx::Shader::create_from_file(GL_VERTEX_SHADER, "cube.v.glsl"), + glcxx::Shader::create_from_file(GL_FRAGMENT_SHADER, "cube.f.glsl"), + "position", 0, + "normal", 1, + "tex_coord", 2); + uniforms.ambient = program->get_uniform_location("ambient"); + uniforms.specular = program->get_uniform_location("specular"); + uniforms.shininess = program->get_uniform_location("shininess"); + uniforms.tex = program->get_uniform_location("tex"); + uniforms.projection = program->get_uniform_location("projection"); + uniforms.modelview = program->get_uniform_location("modelview"); + + cube_buffer = glcxx::Buffer::create(GL_ARRAY_BUFFER, GL_STATIC_DRAW, + {-1, -1, 1, 0, 0, 1, 0, 0, + 1, -1, 1, 0, 0, 1, 1, 0, + 1, 1, 1, 0, 0, 1, 1, 1, + -1, 1, 1, 0, 0, 1, 0, 1}); + cube_array = glcxx::Array::create(); + cube_array->bind(); + cube_buffer->bind(); + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + glEnableVertexAttribArray(2); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), NULL); + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (void *)(3 * sizeof(GLfloat))); + glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (void *)(6 * sizeof(GLfloat))); + + projection = glm::perspective((float)(60.0 * M_PI / 180.0), (float)WIDTH / (float)HEIGHT, 0.1f, 1000.0f); + + for (int i = 0; i < 16; i++) + { + for (int j = 0; j < 16; j++) + { + if (((j / 2) & 1) == ((i / 2) & 1)) + { + texture_data[i][j][0] = 255; + texture_data[i][j][1] = 255; + texture_data[i][j][2] = 255; + texture_data[i][j][3] = 255; + } + else + { + texture_data[i][j][0] = 100; + texture_data[i][j][1] = 100; + texture_data[i][j][2] = 100; + texture_data[i][j][3] = 100; + } + } + } + + texture = glcxx::Texture::create(); + glActiveTexture(GL_TEXTURE0); + texture->bind(GL_TEXTURE_2D); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, &texture_data[0][0][0]); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + } + catch (glcxx::Error & e) + { + cerr << "glcxx error: " << e.what() << endl; + return false; + } + return true; +} + +static void draw_cube() +{ + static const struct + { + int counts; + float axis[3]; + } rotations[] = { + {0, {0, 0, 0}}, + {1, {1, 0, 0}}, + {2, {1, 0, 0}}, + {3, {1, 0, 0}}, + {1, {0, 1, 0}}, + {3, {0, 1, 0}}, + }; + + glm::mat4 modelview_backup = modelview; + + program->use(); + cube_array->bind(); + + glUniform4f(uniforms.ambient, 0.2, 0.2, 0.2, 0.2); + glUniform4f(uniforms.specular, 1.0, 1.0, 1.0, 1.0); + glUniform1f(uniforms.shininess, 150.0); + glUniform1i(uniforms.tex, 0); + glUniformMatrix4fv(uniforms.projection, 1, GL_FALSE, &projection[0][0]); + + for (unsigned int i = 0; i < sizeof(rotations) / sizeof(rotations[0]); i++) + { + if (rotations[i].counts > 0) + { + modelview = glm::rotate(modelview_backup, + (float)(M_PI / 2.0 * rotations[i].counts), + glm::vec3(rotations[i].axis[0], + rotations[i].axis[1], + rotations[i].axis[2])); + } + glUniformMatrix4fv(uniforms.modelview, 1, GL_FALSE, &modelview[0][0]); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + } + + modelview = modelview_backup; +} + +void display(SDL_Window * window) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + modelview = glm::lookAt(glm::vec3(-1, -8, 7), + glm::vec3(0, 0, 0), + glm::vec3(0, 0, 1)); + modelview = glm::rotate(modelview, (float)(SDL_GetTicks() / 1000.0), glm::vec3(0, 0, 1)); + modelview = glm::translate(modelview, glm::vec3(3, 0, 0)); + + draw_cube(); + + SDL_GL_SwapWindow(window); +} + +static SDL_Event UpdateEvent; + +static Uint32 UpdateCallback(Uint32 interval, void * param) +{ + SDL_PushEvent(&UpdateEvent); + return interval; +} + +int main(int argc, char *argv[]) +{ + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER)) + { + printf("Failed to initialize SDL!\n"); + return 1; + } + + atexit(SDL_Quit); + + SDL_Window * window = SDL_CreateWindow(argv[0], + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + WIDTH, + HEIGHT, + SDL_WINDOW_OPENGL); + if (!window) + { + printf("Failed to create window!\n"); + SDL_Quit(); + return 2; + } + + (void)SDL_GL_CreateContext(window); + + if (gl3wInit()) + { + cerr << "Failed to initialize GL3W" << endl; + return 2; + } + if (!gl3wIsSupported(3, 0)) + { + cerr << "OpenGL 3.0 is not supported!" << endl; + return 2; + } + + if (!init()) + { + return 2; + } + + UpdateEvent.type = SDL_USEREVENT; + UpdateEvent.user.code = 0; + SDL_AddTimer(25, UpdateCallback, NULL); + display(window); + SDL_Event event; + while (SDL_WaitEvent(&event)) + { + if (event.type == SDL_QUIT) + break; + else if (event.type == SDL_KEYDOWN) + { + if (event.key.keysym.sym == SDLK_ESCAPE) + break; + if (event.key.keysym.sym == SDLK_RETURN) + display(window); + } + else if (event.type == SDL_USEREVENT) + { + display(window); + } + } +} diff --git a/configure b/configure new file mode 100755 index 0000000..a9d33b7 --- /dev/null +++ b/configure @@ -0,0 +1,2 @@ +#!/bin/sh +exec ./waf configure "$@" diff --git a/cube.f.glsl b/cube.f.glsl new file mode 100644 index 0000000..eefeafb --- /dev/null +++ b/cube.f.glsl @@ -0,0 +1,36 @@ + +uniform vec4 ambient, specular; +uniform float shininess; +uniform sampler2D tex; + +varying vec3 pos_i; +varying vec3 normal_i; +varying vec2 tex_coord_i; + +void main(void) +{ + vec3 n, lightDir; + vec4 color; + float NdotL, RdotEye; + + lightDir = normalize(vec3(-0.1, 0, -0.9)); + vec4 texture_color = texture2D(tex, tex_coord_i); + color = texture_color * ambient; /* ambient light */ + n = normalize(normal_i); + + NdotL = dot(n, -lightDir); + + if (NdotL > 0.0) + { + /* diffuse component */ + color += texture_color * NdotL; + /* specular component */ + RdotEye = dot(normalize(-pos_i), normalize(reflect(-lightDir, n))); + if (RdotEye > 0.0) + { + color += clamp(specular * pow(RdotEye, shininess), 0.0, 1.0); + } + } + + gl_FragColor = color; +} diff --git a/cube.v.glsl b/cube.v.glsl new file mode 100644 index 0000000..9780d82 --- /dev/null +++ b/cube.v.glsl @@ -0,0 +1,19 @@ + +uniform mat4 projection; +uniform mat4 modelview; + +attribute vec3 pos; +attribute vec3 normal; +attribute vec2 tex_coord; + +varying vec3 pos_i; +varying vec3 normal_i; +varying vec2 tex_coord_i; + +void main(void) +{ + gl_Position = projection * modelview * vec4(pos, 1); + pos_i = gl_Position.xyz; + tex_coord_i = tex_coord; + normal_i = (modelview * vec4(normal, 0)).xyz; +} diff --git a/freetype2gl3.cc b/freetype2gl3.cc deleted file mode 100644 index 732c81e..0000000 --- a/freetype2gl3.cc +++ /dev/null @@ -1,174 +0,0 @@ -#include "gl3w.h" -#include -#include -#include -#include FT_FREETYPE_H -#include "GLProgram.h" - -using namespace std; - -#define WIDTH 500 -#define HEIGHT 500 - -static FT_Library ft; -static FT_Face face; -static GLProgram program; -static GLint uniform_tex; -static GLint uniform_color; - -const char vertex_shader[] = -"#version 120\n" -"\n" -"attribute vec4 coord;\n" -"\n" -"varying vec2 tex_coord_i;\n" -"\n" -"void main(void)\n" -"{\n" -" gl_Position = vec4(coord.xy * 2.0 / 500.0, 0, 1);\n" -" tex_coord_i = coord.zw;\n" -"}\n"; - -const char fragment_shader[] = -"varying vec2 tex_coord_i;\n" -"\n" -"uniform sampler2D tex;\n" -"uniform vec4 color;\n" -"\n" -"void main(void)\n" -"{\n" -" gl_FragColor = vec4(1, 1, 1, texture2D(tex, tex_coord_i).a) * color;\n" -"}\n"; - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - program.create(vertex_shader, fragment_shader, - "coord", 0, NULL, - "tex", "color", NULL); - uniform_tex = program.uniform("tex"); - uniform_color = program.uniform("color"); - program.use(); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - -void display(SDL_Window * window) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - if (FT_Load_Char(face, 'h', FT_LOAD_RENDER) != 0) - { - cerr << "Failed to load character" << endl; - } - GLuint texture_id; - glActiveTexture(GL_TEXTURE0); - glGenTextures(1, &texture_id); - glBindTexture(GL_TEXTURE_2D, texture_id); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, - 0, - GL_ALPHA, - face->glyph->bitmap.width, - face->glyph->bitmap.rows, - 0, - GL_ALPHA, - GL_UNSIGNED_BYTE, - face->glyph->bitmap.buffer); - GLuint vbo; - glGenBuffers(1, &vbo); - glEnableVertexAttribArray(0); - glBindBuffer(GL_ARRAY_BUFFER, vbo); - glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); - GLfloat color[4] = {1, 0.6, 0, 1.0}; - glUniform1i(uniform_tex, 0); - glUniform4fv(uniform_color, 1, color); - GLfloat box[4][4] = { - {0, 0, 0, 0}, - {face->glyph->bitmap.width, 0, 1, 0}, - {0, -face->glyph->bitmap.rows, 0, 1}, - {face->glyph->bitmap.width, -face->glyph->bitmap.rows, 1, 1} - }; - glBufferData(GL_ARRAY_BUFFER, sizeof(box), box, GL_STATIC_DRAW); - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - SDL_GL_SwapWindow(window); -} - -int main(int argc, char *argv[]) -{ - if (argc < 2) - { - cerr << "Usage: " << argv[0] << " " << endl; - return 1; - } - - if (SDL_Init(SDL_INIT_VIDEO)) - { - cerr << "Failed to initialize SDL!" << endl; - return 1; - } - - atexit(SDL_Quit); - - SDL_Window * window = SDL_CreateWindow(argv[0], - SDL_WINDOWPOS_UNDEFINED, - SDL_WINDOWPOS_UNDEFINED, - WIDTH, - HEIGHT, - SDL_WINDOW_OPENGL); - if (!window) - { - cerr << "Failed to create window!" << endl; - SDL_Quit(); - return 2; - } - - SDL_GLContext gl_context = SDL_GL_CreateContext(window); - - if (gl3wInit() != 0) - { - cerr << "Failed to gl3wInit()" << endl; - SDL_Quit(); - return 2; - } - - if (!gl3wIsSupported(3, 0)) - { - cerr << "OpenGL 3.0 is not supported!" << endl; - SDL_Quit(); - return 2; - } - - if (FT_Init_FreeType(&ft) != 0) - { - cerr << "Could not FT_Init_FreeType()" << endl; - return 2; - } - - if (FT_New_Face(ft, argv[1], 0, &face) != 0) - { - cerr << "Could not load font " << argv[1] << endl; - return 2; - } - - FT_Set_Pixel_Sizes(face, 0, 20); - - init(); - display(window); - SDL_Event event; - while (SDL_WaitEvent(&event)) - { - if (event.type == SDL_QUIT) - break; - else if (event.type == SDL_KEYDOWN) - { - if (event.key.keysym.sym == SDLK_ESCAPE) - break; - if (event.key.keysym.sym == SDLK_RETURN) - display(window); - } - } -} diff --git a/libs/glcxx b/libs/glcxx new file mode 160000 index 0000000..c55c2ae --- /dev/null +++ b/libs/glcxx @@ -0,0 +1 @@ +Subproject commit c55c2ae3b58d621d3127af7ed5980f7055cba486 diff --git a/libs/glm b/libs/glm new file mode 160000 index 0000000..be53ceb --- /dev/null +++ b/libs/glm @@ -0,0 +1 @@ +Subproject commit be53cebcd3ec3366e30f520bfaa35991274fc390 diff --git a/waf b/waf new file mode 100755 index 0000000..8700929 --- /dev/null +++ b/waf @@ -0,0 +1,170 @@ +#!/usr/bin/env python +# encoding: ISO8859-1 +# Thomas Nagy, 2005-2016 + +""" +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +""" + +import os, sys, inspect + +VERSION="1.8.20" +REVISION="c859ca7dc3693011756f4edf45c36626" +GIT="8e4f6ea5f13d692848c1225cab94bce59d0d9a19" +INSTALL='' +C1='#3' +C2='#-' +C3='#,' +cwd = os.getcwd() +join = os.path.join + + +WAF='waf' +def b(x): + return x +if sys.hexversion>0x300000f: + WAF='waf3' + def b(x): + return x.encode() + +def err(m): + print(('\033[91mError: %s\033[0m' % m)) + sys.exit(1) + +def unpack_wafdir(dir, src): + f = open(src,'rb') + c = 'corrupt archive (%d)' + while 1: + line = f.readline() + if not line: err('run waf-light from a folder containing waflib') + if line == b('#==>\n'): + txt = f.readline() + if not txt: err(c % 1) + if f.readline() != b('#<==\n'): err(c % 2) + break + if not txt: err(c % 3) + txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00')) + + import shutil, tarfile + try: shutil.rmtree(dir) + except OSError: pass + try: + for x in ('Tools', 'extras'): + os.makedirs(join(dir, 'waflib', x)) + except OSError: + err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir) + + os.chdir(dir) + tmp = 't.bz2' + t = open(tmp,'wb') + try: t.write(txt) + finally: t.close() + + try: + t = tarfile.open(tmp) + except: + try: + os.system('bunzip2 t.bz2') + t = tarfile.open('t') + tmp = 't' + except: + os.chdir(cwd) + try: shutil.rmtree(dir) + except OSError: pass + err("Waf cannot be unpacked, check that bzip2 support is present") + + try: + for x in t: t.extract(x) + finally: + t.close() + + for x in ('Tools', 'extras'): + os.chmod(join('waflib',x), 493) + + if sys.hexversion<0x300000f: + sys.path = [join(dir, 'waflib')] + sys.path + import fixpy2 + fixpy2.fixdir(dir) + + os.remove(tmp) + os.chdir(cwd) + + try: dir = unicode(dir, 'mbcs') + except: pass + try: + from ctypes import windll + windll.kernel32.SetFileAttributesW(dir, 2) + except: + pass + +def test(dir): + try: + os.stat(join(dir, 'waflib')) + return os.path.abspath(dir) + except OSError: + pass + +def find_lib(): + src = os.path.abspath(inspect.getfile(inspect.getmodule(err))) + base, name = os.path.split(src) + + #devs use $WAFDIR + w=test(os.environ.get('WAFDIR', '')) + if w: return w + + #waf-light + if name.endswith('waf-light'): + w = test(base) + if w: return w + err('waf-light requires waflib -> export WAFDIR=/folder') + + dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) + for i in (INSTALL,'/usr','/usr/local','/opt'): + w = test(i + '/lib/' + dirname) + if w: return w + + #waf-local + dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname) + w = test(dir) + if w: return w + + #unpack + unpack_wafdir(dir, src) + return dir + +wafdir = find_lib() +sys.path.insert(0, wafdir) + +if __name__ == '__main__': + + from waflib import Scripting + Scripting.waf_entry_point(cwd, VERSION, wafdir) + +#==> +#BZh91AY&SYE~jQn#,Y#, §%H4#,`b{ސ#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,:)ۧ5_Z]h.nݺjJt}ԖSL,U)åHovǻǻu;ާt]zo{ ѭݧwӝ:\Omv=pO#,#,#,t#,#,ϳ@0:-l _`#,}c˘U5 nqtiΕӴh;{h#3t=9݆0$J#3c@E4IPZ$${{c07{@{v*Yk-6[Nνv}gm=ozޏo/w5OvxwyeZwnwkn]jSv#,4/{v5@#3Nly]&AW|稀 ov#3^dU((#,+X+Z!^x#,=ww>}#,}k[Y;x;{z=k{vU秫}viě=瞏}zz^#,ou}`/k[#,%#3P:whRw;Y8GOo;վ3uEYngaGW{wm#,#,#,#,ov3_w֦z}ﮞGEGqGn커mv={v׻lb7:"=]5gͳ{x =뽵6>/o{W_v#-S#-wv_/O8yŔt+{z^x3 x_C}l=}c#,0z]#3}o#-׳_nެmK}ej{;{nh]Ǝw{Ϋ>O(ܮyѾw#,18P697ޯx=uTJ`1mqkþz}{N[pvҥ)E \m'ih={ۼo{׽|l>Wv狀;0f:}p뵄Rs}$ewwn5랻O7};%4#, d#,&& d2 SdMCGѦ?KV#3g!EAح1txQ>H#tYWVڶy)QTUvadi2ӆY[#n |^Wh}w^I*$=]ؼOu|2ni,X%]rk{?\ Za6 kUI,b-Eգ0#3z20†:r@SV[!?Cj<F i4jf |M.` &, @݂1nZ *h[\ɤ)5dQE rT+<FnBS)"ڔĥ&lr<$"R$s(:PxW^6J[b2(=ԣGU[|6]N:W.I:.[˼`z%fB0hi3EkU:=e)6J(u1*AG)\w$4ölk#,j?d5"홸kV|us$NҌ6j8ڹS5N8<8Z9Pِ-0}hzvƁG F}Dx8f(ZΚچ{M$@dI#3-DM{d [&iY&J`-<#-P,*hA*xZ2e.EJє78WЬPfG,mh:l>cמ}=%nX.`,k B #*7q[xT<5B^N4\`F*#31 ?i=!"6Qخ, ,>Ws'T5p,4鄃RpH:G}~y|ǟT`PJsPEoΥEv#W*}LYޢ5! 4K&dh<;_J8Ჴ!!"g9sN~l#-b+&wͷeci3橢)Of#-hL(>(N !KBvGuH6bGtF,+ZABct:m.;:!#-$-ρ*v)`.e%}[hMT-(Ij9Br4d{bwNgHDK\obK;MCj|%jB#,ϪvGXZ+bA7ӔƵ7JIXM!|wchz<#Rw>JM!invZ3?-4Xዸ*U5\.xUIAa2Vo*ҟ7bT::)Q?(tCZƈ#-҃#3߼M#,߶zc񟚵B~%:0pw-{1@´~Kv./ Vc))#-*n؉mURoɿ 2}wNEϞCdPDNi=WӚb[ ʩIŐ8B̺"_cZSY$NYbR+Qe w%|Ux#ct`SuB>ԫU%]p.݀x;[ 2L{Ҹ+D#3Y.;;Qge}߄4s O#n1G%Ht(bzi}:'r:GE)z8kC#3Dss)Dݩgt#KÓ.Pw8DK{y[ɂQDt;[^sXLuYQxVR9H`Mux:]V)u76_|wҌYP?ܹf1?Y˙? tt>={Y+EC9y^0qwÃXFA?^wv\MT#3I-<7NMޓ|z9&WBnBՉМ(1BP0A(T#-UwokzcHb @HKm"1xHȦT.ye*. HABԏ!+ӵ:m~iJZyT FVqH7~;:0'L}O;U ^Ϙv…zm̜}2^a"Xs+Ws꺕Vyʩt:e8^KT' 16x0]hDv^\lͱlENK+2*MӏF*J Q}ٍjh'tq8x Ŀxr A=?3z=wm:xp#3aS,bTom#,wUfKʌZ|2r1u b6׳ս!Jck)jVO#3f;B&|Cl<YlkK^Y#- K*hZ!SֱEQ5v) ToV} Q"/tkQW3<漏%)N !v|#T_{uո?f"0Gg.(sp~&ߗMYrd W3F+#ͬlkyG,*x5C`'i~G>w9w5yLf8$uEf bqsN&+9{0c,53QdУZҤǍa,_eUJN.j<,;4|DhGqu_0?I#-1r妐c&nh3a#3XDHn6LbŸxQУuf*hC]5מ0:BͪkP/d/GE&8ķ2}jw^ 82[{K*JB*e#3NZZ(ZST Ti :5 DQ,uzoۢDI=ꗸ.JʕxܝE.8"Ɯ~=~ob!'I%8Sn7;w2n~?rlt"_oq|y<.8__+Eg[Һ q-#-9#- y#3RN5pLA3S~),&{s$y[QBcH҇1ôВVF2#-m)##NLGAgӃa#-ū\HB ޴WZ(cwmm#-䢰tOjyeGN9,BBjFCŠhNLHwpR]9Yr^i2Yq9V#3!ˇ/]12fYU\tLJ aXnvbi~NKEY\sNiK #+Лt(> #'4R7[/s405+h^4#-w)9<оvǮ|%>XQ5#"NT\2髏(TYrf#RP%K|bxKw &fSHtveƗmO#i?D_B NFO{oߧ=֑_ދM%1[}#i#,#-w?uM=}Q7tRk%5o-B!}~4blvfO^D?ޤ#3D'2~[ѵ*ɬr꒏+ Dˊ{6v-ci4)F$)YMoQY$ !dDQgl>%RM˾}F[Dm#-Ъ;FY#3٨@wy@%E'%U=x\sUaP_Iv&W51 U#3o]4Zv"3<_Jvi`[v#3˞Gơ} ?'Ū9%#3ff֌SRiy$Z!+͋ߢ#3%!D>0~|:ő-M'#cD+vdK9oAVϥN:ZF() ҲƔa#-3Q٭C ~C 07TUBEe[((G\IIުKD+QߚYß\>]:=)5겢Kӫ,::f''߷3MjrLɝ5 ^yЪ2M#,0|]T[VݖNmvildX,~]q!L(O?o#,j]*5BhbO jO*ˆJ1dj^9CKf'=]%A!So<,|3M#\~*e*oDjDHKГ3MuԐn=Y#3(; U c51U82 4vH_~:[\#,2#,&##`UoQݗb}|ְ\ piǾ,f+#Um{G !T!}+n8xV`zkeUiDMvhed *Y_M#HUK35lR1k/21#-iNޱ^d5{$.R~ϲ?zJHi,9F)Dgv2ܛqyOkH@n0Pp1Dlp;Dƣ`,do:n<'ńa찲7pVCrAMOb<xjp\=FӻYPpN!SԸXn3?lraz9jjVZkMoe@NygEl3W+i;\HeEP~~FPHMXZ8IѮ=SF9g!8ywW4`w7Dzc_ΤXv]A z$jNC8<#-m#:^tiyט\+7Y%e^en0֩q}#-k3p2!Oa5m) b4(Ό-qm D)&X@cN@Y٢އjLqƞgϽhwܿ,& @yg9dY>[5v5ƐKmjk]H:jHH N -R|n [#3 h0LĤO=;TfC]lILҞ}+DwG='YNt8w%:"Wfzce5uҍ#3,{hH*s%2);y5in!{Q/| xc/-25e^:Sy=Pm} 4}ͻ\\^Y;x:g[w]/9{x.oy?{}2%\zxmoM[ (#3r8 =E)VlmG TUuwyi^w#1$XZdȠZ;[΍kq}ߧ#LRSV(kC0bhumR*26Aa zV %YbTyg8a^,2*l<_#-NE'$TVcK?U;|>DR}X`l~[8 e曳nvŗiT Lȑ#-KB@$3 7^oUÇ$lXR'&֌atɝsM\b'vQIŕFz[;Wu5o}8`3$f;8e#-ZFv% \Z6Jƌ+5&&S?#InAքMPSC9͔ZąE]q7CLonZWt6D@V*ۂR"R 0{sEyt1ߑ#3uI(`"X "*d-IhhBoYJ+ "$@(J$F)&khquQ"CF{Irk5Z+*l]7ժҗr*ϩWUފ%_\B*ڂ/w03ikxzzuUǫknpl:<#-G;J#-N#3n#3mEL==fi>F,&\ >J7(#3H0Q車W2ՓuRv*h# `/֎I$/Lߪoy+*#-C-NjI̧e߀h9Kk[<)}~#-he-bgF33s> LѶ1t[ᱯ\3סω$H]-,wa )ړRq8JCoDIWX7ؖ3 cH1ۦcCsCtVDuMW#yp!)H  3-F4ib*QnJհi2C:;_>WZf|!#0@ȕ+Mi/놢|6Q84Dr¢H4I#- I.aϿ=ڝb#,%9/,t jG- fUxjr3:1ȸ.Qy`hiA>bъqx!Ij#9.r,wc|ĭFrF2ER-kV)]&=Ƃl@P.6!A0I;g xԢQUm=S|2'U2ZK.Z(QEP`eϭL+kFHǫꏜCWiK˹^oSP|5GeL2HLݲ,`DϘ~[ɚ#3!J/MKM[uኔQ",DW ;nXYR vĿ].6ٽ[0!Z6ܹ2$F("7U@N4] XX}a*9Ď}놟>UT6Ape{ʹ|v~gPw@Ba=ݭ,.Iي@}rvKcn5V#>\azH؆"KQn[kI5ۛ[9׾I1>`#-Rnr~f֡ nRRuvM8:=aO*#,=F=7G4Cn'G!/FTo1:薢57cZ X7QIGGN`Tv&'۝7+ItɨӨy:~O>8s{ <jv]ue|F2}]IԾDŪkZ$G@{ux}fzˋMvrCOOsz;DU{+xIw]1#-RI99 vO =TaїW^̭|~my5]/-~92Sfohq_׻4[>c?^eGY:רgw!]$(.5M$Dz=,qbX¼sUPk'6qNRhHRrmeYݏҾMmrp+0!B5V]\ϊ%DƚPp'HJHV'4;I ?$j%c~M\K,Hq|Oswsܑb-[D̐ Tke,\ɉ Rĩ?3ZTm'㝷[VW.ta3A$Z,~a[?~L6mh\0RB?Z5~o"1WwUp!|0;!_CV#3.KF?zTI{xr0&!(":A"EF\0Q!!P"+ ,<_#,L_ho{Pm׳WSW#m%Ȁ` IA!|.}PW//+hnpq-D$ȏ&y%C rr_gRK?Uکe#-X{3dld i*l}p'ē:L/IedSB#-<`Vߢ-W-{bw4,8/>h\:%T /cY~֒@K6)6N 0u*GwKi3$Q"JO'JVkU5UdPH{%$G->&=|/WGo|~>Hjz 4yⅼ+G/~tW/$t/(Sk~@(/,l#ζ2Amr^w>7ۭr&*9f߫ MdϾ~E/U䧲0jC;٦16_uXfÒZ}{x#UV)4CF7k[F* `xHp;#LZl?m:c鏷Rw.->X.l#-}-<ի e7x<#-&Rfx)AzT&|%.fhx"Wֻʍ55Yd-ygqh)߯~@Yjyv6urXq=!VlLvo!wßn$l#RvHR)=N ҿGt73Bˢ41Q Jȏ4$FLb?4#3 :ld>S"u#!ӋEF~B=z3[fGs'>Ι ̜`h阍3M H#mOډs $sd+x6<%סۘNPsLRbUM7|j"sTjꛠꈈ0;7Lwxq+_YMbQJ}vA3dE;TEE#,#-A陦D52bdI_ٳw~i+1c2::.]{.ޯfpsi#-xT{3 3Gƚ/P?ftimʼrQuBUa~TrIx'S?Cޡ[yk[fA-x%F8N<_!Sߺϫ~4}+ӻ"rmw>g=4}=~>z<#-fl>}'>gnm7VGd#3m9գǻ3ˮ6JEN.S]:UU:k;9e츷5w15[eoA~_朗ѽSIR$#3\C~Z\W<&8ݶtِOU|jxAPe ʝV2}[召6mr<.ɭ}~yk|فO%Y)q_yǞWo_51/U[XiNYpX[ŀ^YrO]/n{kvtWm0ɸms}j˝ppG|Kװ3mٶaȗ|~lmٺywXo?c|MB-^UT|߸&5yQ1N4PcTwpx/}MgCXHE9I?:>IP$M1Z3#-j`rca$~hiro/z?fm ~gXuW3kճN֔>\1l㣠tryyJaPCfgd.e}+N3T 2)_4+xf.(Aj[ҷ{.jvS+/ʩIiӪqʜAnnmq~Y%9Bu*7[a;?<'04Y$r%3[o尯>H+ >.NޚS#-ҦNCO){e:hžݰ]uso894N4[Wvu#-۱V͕QC"?GhϨò"u퍬#;jj:1\ysGkNUegd$IK0C=7˅ɣ]IW->R&eNnf-M5/;w"[Ѩ2ơcmewpߖq,odLlò~J| r aM8y)?6 rg4 ]1W<#3 aՌO7^~#3R8IWK~sߗmŹˌx#-pMXɽfCr3?5aƤbiteFarxvOo>R#-ՅQ^hJѢ%uVrIYLjKdx*~o.hoTb&[h1i\1=}m.|\R|y"\55&HVGصx}?ӫ_3^BO8Gw#,,Z'ӓZo?(]&R#q >3]~Z\Dgy>r#K|G䯧5=wY1ꬢTz'0#c< j1f+?g61´zaҷ%hlR$P`40f Dk/.onn˵W)Sd5۾5o|LHi<Җ L#qFA( EDaR4+3*YkJwb4!9^ԛ56l#0mM#,,LL6t(N(ô4#!8@(4AE'ϸ.Z.DGv8]P9F\en>I(Awi_y*ŗ\?,9`6/Dx=o׮9lsvSRi,w$8.E*41 V#,Q$עx-U/v32̴摜#-vML;wM|N+o?)|#-r;Xw:[@\bh>2{;mM,yK'Pu ;}imƝ&VbeE[%t.]B$$.5}rh3kYd٫){n;㌒K#q Z#-˭B[cZ2j[+o՝sShE_,r9HQ;srgML&%u6#c$#Ԉ#-Dk.٤laYpvD1nB__ѫi??=_DyAQH"35aP ֙S b #CJÆE5к e1DJ1+Fp##f%w)AT`+Q`}C"6"a =^ z#-W[-b&xf±y vG*Ysd#3dL ̖4OZQT=;O[D]Q2PX0Ya)P5m<82F\Q+ #-nwhuV73(h]0hwV]C-dJVBAE1>2 V. @62=76L(:rY"'Na@E]Uk#=}#·FTSheC#h>v?%4 "S?K=gg2q[kyӖvAi%Fv%.tIPWX-?D4Hu=:_=(\a{8h$L Dpi2$HF߾V#3vg|Z4!cKkiЁ6 l(5 D-Tih #,XiT079ڪY\IN'Ʃ"SZ$w&sǿ9??U(s9Yknkwg2EkGa/9&EJQx6\l֕`8@#W:$cژH5H1܃e;"4(ƴ"_`:+ӈҭײZl9D/5v"Xf0,0Zxc߶ukT4XVc-#*V>btpCq#-™m|9Ad;BQ t1cNZT&LŦ[X 9y'r8҃H"&쑍!(ֳRו$S*H#-3bȺPQLY)WjYG$Z0ɩ4NX#I(9NlGqVdcLprvaGQ#3&y'a9 ~p_F,ՙ!g;0vg<ؑȬNyIcܖ˩?..:v~.aw+UnwQo16⪌>g0QoS|Tf]$;LO+KuN4: g쾒DyS3B!:MY[:.ӎ9`(M8"OW}fqDyA9곃/50b`ëC;hBڬ3Lii&rvOqg=oX[rå@cCYdGxi͌I#e+!թ6-20|h.A;r(lcȣQ6Ncg(LNT@TPZiys|]N>JjzUxexhd&x hLY-VBc!2$?:/lvDΥYP-IG2N9+8oN6Dڶ/texeƋoUT;I#@iBO9oq #-H#3HIHX^\Ym;"rp\"]~ˡХST!޺vАzޟO6v1#]miI`r'r/i\DRB#-?Tu-)2CYeyR[|qtL9(!WJgOHqn.?__Yo$u2(M:{3Y=8p=*^Q5~+akD߶GiR"'r[wa3/}Ҕ_c6ޚ}\-vC'taڢA{bM?1^{фmv)6wU]!ˬRs.Apµn%#q뻙o]5ԇ!qꦜ_̡^?o{UC K4ygX壐q̳h=5mzXJWmqǕ.HmV3NNc3z濺%X+-|mR_9G]aêfYKl1`X#-L#-`Z1ǃ%fD#3gΣ(2 Λ:m@Lc-m-ϧ>ƛZϻ'#4b<''Kg`iPlf#mꠟdux}TvsfQR&6 4#--Ol4Z:J!56F=?tۻJ;Ht(_;v;51tyOm27$l]l"/uN'Y_Pm@n]a[Y`(N;8ۊ$N|F^Ac狪B%ۉ²ڭkvQQ/E1_T|xyk`h9w6kЮ72Iίi+#[R9+ b-.LΤ)5(r+NjhxYMϺM=^Y^;MM]qOIss_ٟ^__m],uI$'/x/j;reQ$ogu{e+򆲦ʲp{زI]Z8*((ˉh#39yHt(Cfe/P̜sMzAI!."fk?^5? oMO=:L$G~zm`яB#-rmyxϣϜB$S6ÜǶ #-Y"[#J6 BܫC="RO p}uUmuVdK7v&di1"]}[Θu_dPcpVE*qp:yKQ6_޳4@SyǯL2@h7å{|oRF>-y1y_|L_eڧyTCeX4d)tyq9U,_8zGgEX9ꏞ5<Չqr }/:>w۵4/ J̌3Ql'H*l#0۷>/#֪s9< PmV%|z)\ 񕵃 0 g*kz?Dz|;_O&6Rc &ЕPYk7cz:;x⇢cgq_H;Ɖ=Jlx]9{}ߴ*LβҺz>c'hyw/>$M_Xc'CDfٜz1+v~kcA>|sC4mG/9>/trR0SQi)*cNV)t[/y*ú/yG {Ƥդ%#nrZ~ZY#-v>FzT]|ܑ@sXpt4b_<kOm4j"c)r~)Feuoq/x̧#3gb Y^D;g'[ͳ~'M19z2kZ%.δn<=#<Wc]Wg,ŐMϪ GFzx̬7!*vdrmE#3צU"=*zEԿkV<ʊ鉎;;GvۙLO=3qsDp 8䊍 g|W#$V4G/o|^t]27K7#3m٪L6kUlսdE^ScmM"O(;\l^}#3WY~ZxYZ"̸]f`!㷖]1v۽kdܭrSຓU:uU3T٫l#-W@GC*T"4_.wg 8^iF̳wI("&@ATۊot_/3߇ ,#^?Tc*ioR-;Kv6B5a|ZVy4N:=#3@q#\.EȳACIH 7&}fg+'[/e4([ӌ!jέc."!wf6QH0GU莙"h!+xT#3B2&ad΃ R޲ hR#3DMhDc7,O=P1]0|eɇUlwfqA,85:FpDIyv%|V7*޸WIRxwR$-|[fV4\5պ "ި[ugYe hotڵ0#-2/cn,[]SqĴ z{8K=a8(9wDPW,z;߆"ܱ5'xl&~%N'Yni1u7d#3]淕%e@3|?z_auuX5e\ F?nlKNGCqּdKSPLuLO>PaZ6[X^f)MDookZ s۝|*kz]xGb;;.;EǴwΡ;a'/[ʩ ܷBvUȔ1.S1kD!ӲSL1쪻u^hc[-"8 8-(6bT59=uo{>\B1#-jY=ɠgYK, 1AVnԫk,xӻ*8/ަH3*a(# 7i+L=6W+nyɴ y$=)p pMGHse.yjJejǴꤽT5`CNg#,@ !d䣰}/*(lwy:A=.$đ0e|VifXX$۱*X-}Rё}rߌ&Gќy8c{e}G5\jƣ=p HKXOlpLP8[>|pݯ^V۹43A Ѐ#,r1E&_um8{?[X[]t&icZ:1R uᢡⅼLBVўW_`F#,Yu랻7dݴrJ;٩r?|f0xbCN {=/3_:%ouo9g#DDcLp,NY14Ҷ1w9*)pΔ?ϡNFҙbw4vܣQB̥Sг m4iԥwNI()4LD?<Ɔx1|z#ͷ/Vm kzpB~uLY ffA^D9ߔt2J  <[imqn&Pބ~Y}ДZGp7wyѶmkpnr>[Zq^0[65I(L2`nŨL.%U22#3Rz;ȉhP}N,̐&W#-6!L)o:}=ơ:$AEc" " !˸Ńi Gͯ.[jhvh>V;TyDj4W%na^ 7nb"W&U rW{|&z$%2f|Sx4!>_ƥ#-\KMh(PzLrqzf{!PL1ʔ8Òhp6}gyrsr`@_`wγ?"V[rz k]#-tנ/Irk \9 DIEEY6cFc]9)pVg,'d=TU NB oMRpM\ל y8 wxC"rgxBO x6 ѪشOӾZh8vB<,#3+!2ū] :=QЂt#:߂(z 5Sd>&2CCt:~WŔq vRY-0U2Ⱦ$6T̤ȓu \7!( J#,~ŀ!@h{" FμwMsRHc&0b.(g JDs7ʷ?J3}S*Br{o=tͶa#-J*#4WF:cTf#3$i݃ԎaY-Uu%`w_@SULIaU|ɞÍ@zt]#3 {IZ#,gbb$-;pm "m <$ݚJg #B!^LE{ojسӡ2,ȯc@ρ#3n^|::];of3.#33̅jBRv%CKkG\g`!1'-$pbVȁP[NȭE}OUpna M3Ki17l{*PiҨpt$ɺV܈f=@|}P'+r:g?ʑU:-yKA+w?#-Ua=Sp`K1DPyd'>[z2}xqygrťF٦i01~]#cj'aHh1K9QQ;5zLpgӄɂ ,Ŏфd#3gPdt n'z!a<kLr qCedPkk)Xn}@f6 g i锥4AY/H#rE#[#,–D*/Jx%ѳxB,a#B!M!#- !m-yGWyyqŗ˕ٵ&\rfd0E#O#-/eUQB-_В#3HaM#}OI&myz OH o;Rlpff#-T)BLPEKf#hWYUYAƶz" x<3C:Lgs3luexuLK*ŋ)Ub IܖpM5`,M4dUS;gYgMc܂78-Ywџ iah1BuW_g鵝g0Ah*@lYѪYlm DE"AePޚ́:!ׁdwY#3K@5ŕ޳27 g#,* #,m$3$Q@~d~QνQy]1"0"@pgk8JLbMn>V%ANl -']ȜP| m5@.k@%r+sFvu6Z#;6({ت1" .p#[r8#,b$+} #3*}{MȰ+ 4**Qd)>C590;Xw@AfY+QTUbդI&7a?[f"$C7]6)1jRنT"ID]bXn^u2% a ă ˛.P#3M%R2f#OI!O_dϋ>{IPy4yT3*wϫ p`"ER$G"ad5#-Fݬ@B+jL@!lo-mP7"k"bť<\[`AQdQatG= 8G B:3q1#H~_V_Tυ\+QR+"T#,)TȂH ^IJypfk6Xfv!'@>5\ dڧD x3#-e\fTo_sܘT(Q7BlxNokdkƒA*Ahd#3=o=O@U#-c F;0Gq*, &M*p1{C~W2yѸ#3%#PFOn#s=/{|ۨϧ9-d=fQu:ᓐ2#3P{pv5׉#,I= 3w\pNwlcM-U#3ߊWSXCitw$WG~ yJM-ǩlo{Ft( ~H)͠5G!U'tERtUdߜBDH$ n(HE#3 i*mMK[#3Tw.d G`UsgS<]@W ۴D6BGt!F I,6k׳=qUg|q~J}k櫲\~۵-fiw3#i8pR`e_@O͙ZMc2Y~vtָHJr;N}*1N9ㆯٟ-lǚ!oJ"s@uBNE5XV#-Ӯ,GDo 4,#ٶp&1#-߁J{؋KK9ln@k9mYSJǓPpΉXcįWam#-@)3Vzi&'tCG3@Ȑiyn#,NfܪC#,do1A_ô/Q! gj?ppg/NL[VXvg/$߭bXzz;Bo9,J34|g/>!_$`fk@ffUU3(xRk xgmF&QO1m-K<dz|cGEQ*{O R xW2usVCcb0?mF'tBN#'O6 ?kAG2p˻۩,)*/&nѢ1 FFbcB2(SSjP_cPޑ0_s @tϒ"2>XM!F-6ZUn8AXJzc#-f~m.>pTֱ͆m6R?KCw7h0vv/[9l}/'^7ךHؠh>y}{oai13B>)˄ {I=fdʇ(}mcGv4#-P;(_Y޸;lgt] X&L݉92,PF1#,jI r'<7WR$x6N6"Znb]sқ1j)WI! C)Һ?h;8n.}GoY0pk\Fӥ@fӜ#-LLLT>#)}\>,|xwvd N΍bS!ʱ#W+,}Z Zw~d+C5".dw8nEe:(^>#-y'd6G}0JDZ_4ccVz,CӴ@y|ԋm_Vmrn4窨e5WgaDͳcgG\H7{Ww]G<:vs%#- 1 >,K2ibVL?/d8Mf 'b##3G&}\ yݯC]#-bdȓ̸-:1FP7ŲsS!#ޣ8gK_z3קnӻmOtéC#-5 գ-}|aMEqbi~k6!j`_򱂳/S{V5=pjyqկϲٙ%^tⱧ~h`ЛD~{7iOi}VUQ%M,k\Y6@4s~}h|TegMM)gLj@FؽBJ3Ƭ珦f5բ~n<ܸ Z6";O=(0VGhzipUusVWMy L|]&pT|h-کDZy/#-:H7q'tә#-25לa7"8#'ԝ*Ϫ /L"ĦI6A૭;xm\L]bHHB,iz#፿-BRT*W[#3dEA-xŬ%)lV_Er4GaЇq[g\gFP!D&}*FT)LlG7Q^^]#-Vq/Tx,W;ttqaUg#y>:aA>WINQg^ljuFuS#ºeA9&:X ׬J[; uwiǖ %5@:,Ch*tyQCm-se֓"ͯ# *6yIK^ie{#I 8~uPKzyI2D΍jtAylU!][W#elU=u#m"ߥ)v#-jjv1O 3.)O<俞gYljGOaeE˿tr]3Oe!!ڶ+qkpDc);wg0Nrޣ|^GMG'#-j4[&DBg\j[f)4 +vFbg$~/כ$sqJPUyKs;hKCEJ:"5;0U<8CĎ#qͫikXя0xnǙOTuԿ$f[w'\ĔLЗ74{v>jH 1ψ_8#3|\-QkGm#A}UHp)]m9r H[vAP"4̈M+dyęV*ʟ`k R#3+bai W )8&/xrRz}&L_4Q0\pb!Nm(׷jm羋ʷr'j"Ubb2Tg9҃1'qKW:#3K4O"29D||wﶫM谈-˨D2[NiKy26^@>Jiϫ#-kxdwnC̸C7C0_Da rl16.m>_LO#,'4d;\?gI2ʱY?Bb1{"~/?\Qxrc vLY!OIc0)<9|"LZ@ՕnG(`Y/ONy\[<s14ۤl拚;9N#3Ln4 ['MkbIL߹\\Q?#Hqe##4WUA?]Gt Zp :ǒՠfj }1HskSs@vɰQ'Vsd_9ilN6ܲ[+'N:Tz(3ecaQ c3pI&Ӥ$:wh7@}^噬'[)J4*TP3OFu~|]q(xX>HS? a zO#9Χg#3ɠr=/9.iS Y ~|5~E:vs쏲:sxA23]5:S9$Hme]ZqQEPP5P(1$3>v#u.;,wYLQwUK(RNFz7+96 9#3KAEu1nq gx2Ti#-SS0-G„E`ݤ ,Wג TxGOX(@mfbeOk-tWVB&w=gcGtۄ#-@L98j"U⾢g*)k]TٯSEuGQZ;,B]#l9aK:' aDen]jo;θ nǮtظ5']<ՋC)o]ç\#-W63\c"%'kt9읇:7 I=yv!d<\T;)kƚͧ8^]0R8 mL714lzܐW79<9A ?:&a,14&y}ǪGRAOI ExU~DOVL!irc pb$#!pO N鰏BښcU:bxh*Grf&#-f2J&fEVQfE*)J9iXʥt74r8:dg *؀&e)HѢO.]2iA=B1/8SCIVQ^Dz[] ;LjxWwuo.*SC9 T;*Np wFNzxC7K[_V`W?s=΂%21f»&[4iTR/3I8h(C'cS0S|3V溴C8gN1F!w#k)w{sT>Ne~h[l󲖚wdMGAF7I}9QXrM.=.qbB`[a^ym7Ot͇4z~TU7ZuÚs.MtBL&&^2N$69wJMm NQ}G_l6.SY;TBI!T}.܊,ޣ /i ty=7COc#-mTL%8i43`)2LקMz-)!m2` `aS^z_mJmcQXƶdz<ȽRi##3;7PR*&uV?V55q&9,C忌Iڕݥyl/ {c\ޮ׍t(5 ȶEmb8#Fj()!&I$ɖ|xNs;1d޼DtW8UR5S`5pYg"c0c5-= 'V#-v'#-^[n Fz^`#3~-g =?$[ג#oO{xL>ܴwxaKtF:Dwl뎪7o.|^0H҇ҙ1R)F qq#,,>@0O!v#3Q47Df*fcS[3qLGv5~cŴ d;'үGLj}7bt>{ln_)A9d/?v<ۤҶJ(%9l K#?!;9P]vY;tc]G\vB9vِ5#3>[JI-/9vAE29>Y^5[Q>M G2o ;} O.oFa#ǟن0U FjujEc9tblLadAHHɵkj#~b`d0mr*Ϋ-W<:;n&2udn Y2h,_=-*o+r{= 6vnd$nE˛F8ۑusr>M5-sgLX(rܘ/W ¶&{9xֆf#,Vf۪n3qG;~NkOwMZyr+eMϾ~&fRUMrŰ)kԳP[Qʶixa;3nlK><1A&W?#3#3ˌȅ2͢./g򵇬!!tiz+2-#3ǡC+Y#-WWJϿlp؛X բp")[Z·^؊G*F@V=8#x| V9vbz=Xky#,#-sd;<$dX:"b#3 'kCJ}N[/q_i|n\I~oo$cnÚ#,JsVv򹼫CqM9/fyg_g˱*?/V?{׌Z Xӑ `VVAf\e 8} GeT*Bt >y?W 7#,D (A%g#,LGZ*V\Kxjn  $w #FĢ5JEZ K?9gsE&;"g&p4<݈ EO.G`Gb# <~*N0Ⱦ'yy#,hq]Iײmލ7?`-$uـpbeA#3H{<CJPaRzfȱuUMO-A[ 'O 0ZA#3#,}Ͼ/ٗޮO"B6ã曓| !Kc!a`~py %gՅH#?w5:$}Zm /xB`ux!Sou]wXt,¶,2twnwe;h6 NʡIEi( n~F5v3>??m_2@8ۮ|i&ɑ >3vqv $y:|F1 DG PQlN3YnHM#w&q vA[E }kwrt7(U!?KJS/T(BJ`948v)!eW:r,cI(@zչZ(s_)dFZgIQVvI |+zJ#-~M$˭@?ude6x;###5ِr#37px<0],Ee뷩{}TS30#Z|ՃilٽtA1' YP—E\OC(rFoߍ:bؼlM]8~8/j,;Hƒb*p]K#,ؕ@Z"l|wBjA,2rtD⒴X%Fb)#-;5N~T\ZKF(x,ӐcQ&KGRR??Cw/!!)7rT;#,nR^A(`#,uyh@4iY.Cuz *7PJ[ZBhl0FDfIR 0ƅH35E:6|GH`H$#vUTB#-ܣܰ0~/h5{#,242=ŞеҜ˩!#-B2uHݲP%?tTQ1ʗi%#-XGߗWuWY;.cOZ2RC5Qa#3_$y)E17Ckq7&Lލf6@{y,|36LtY醻Ӆ!(ڨ*̨ik B1dT$U?TWJ,"t"K]`LN/4것es|OћѰ#,?-Hr9$H-j^A(oyU;= SPx#-Z7dN"6أ+5uybZ ] Hc8$]5LAޙWDz<:0 QFm[(Hۂ`#- ьmXFÎ{SFB){̫C#,}@K s@\_-#3߻I\n566ן?7zı'݁ℏ#&&X8k8+NCZ8}(p9$n"Db`gHBx?dn~0EAj{Kw~gC#3ǸS4F8G+R \'90-94Vǐ>3ÙM#:tSD);@DHBBkgO:POqB&=j}T/~wOAHF1m}\ռOhxwv2^4O 5z ,SUWI2oP-rtl#,Y"')'*ya=_J9yvt[mog(ddo]/F>B"{8rTu}AdD]iU}1'JPu=Hv\lX:PgᗬBniI!@MstҢX#3 L!#3]G$de blHY{bFWpJgSZ")@V{} 3=J#UDĆ N2\x$d9aQz̺{Mz8 8A_~uI]`PpF-x ,1ڥڪ`"Un@Vnxj9xyP:6)AS#,7v?t:FE/w!ȷgjh#,L`~I"%ݱ?auaQ,#- 3iL%!"[iH fBX*ԥX6NSL)Oғ[w#,襪wUX*#3?wM_"tSCtC~w7:CV,`0{'S6(ovYAtjjXmGmѻ?ʼ!_!1ͣwv~'PR$$ev A%!$( J/8`)%$GAœPCHIiZ7֊l2j\J.И& #,@eUȦl[,MB#3#3H @8"4A3<~@(rD #-ZI߀Ov~<FiP"H",8*ҔAw0wޅSJwq5S2V;UI>sl<.TL1EP~{Zj0U* i2}=毧޶wj;qFĂFʦg\]hgo3ty$gW30h@=A&Jgf>@%|( bO acZ~h6eTH$0@h0f,2#3BZ!r _J9ak5<<@vׇ@n:@ϗ>y# -.C;Ɖ3lܝ'E,\3pf=]=v7F,rb`{gkjTt2#-,~yrJ=0#Ctr#3% =y$pU)X oX*W{{IqKR&FStD(=C{K~6 b-3H8F O$$'I5}߃Ͷq=`-IŜBခF1fG(E$? P?D/]MIA)d8ϯ2!+rL @a=`vi}ay0BNG*8+w#t"w\ nZ<`כŹ~H\ҞfBoL1d1dXШ#%-L;v17~fXyEB ̿LRiH#3=~LSdT-eP`1SruL~evP}Y.QXpF%I(b L)5/En3, "~cr;~#б֌3VJX"b8 8:aǨ<C|~ lXgin#,#,63Cp`T6KS n]FD&趡h#-!snAT„;vcG/]v%u^ҺDQV3 @, 7Ëo,^]@1K I2mF/2Eh0(OOι,傫7b%|~{i$h'dĉz8cT44`"(ܹ s ~L͈5'uהlY>wmQ&~9ήgt&z]ƙm7ST<6ec=".s_g.E+Ū9N3I.E Kvsw#3$!$_L-~@OgI$=@x)[Xpp]?kەhEG5CJvCz-Ƒ#90B.>'ƅ٘#-#-3$ʉ2-Qlb`8=]/vk2/=I#3|_kwNioHÉޟ)e(_CdYHQKp6dv M?R~?a;^/ E:6~uRtT6Z$sz׽7s󃷑$栓L"Rrtݒa=pqF{) iGad,JO~>#3u~zDϔD#,u>@#-нOQޙ:eh޳:Ѡp~ר=#FX:e:S552'kC o`0c.pn#-hsrp@ !Q+__߹|{kgNj1(#3"ϸYcft(#,<7]):[0hF\3Zr\y}0?c0TTFk=$Elmaԓ#,XA&tiR5PL1,U?l!}ϵ;VcDB roxCxxP ęչ `DL7ZLnK_r;S) |O31( H&wk6d.+oHIP:Iw| ?p Ed@>c=cUiLQP "sL~7ԔhZ߬hHLP.0,),G̙4iz/PP @M H(r@R#$IdR#3M_$D(Pw7HdCɼ@B;8nA[r3g׶ljo;*ǔ!GV!?7قF[rȄtt_bVH#3HHNƚJNQz1i<8ѩ_zc7Q=o߶)SmX #3@E"('RkĆ#-C-09O,9—KC^Ih8SJ,a:`r4ND{)#3UgUw2CtGNQ%Nˊ~Hvc _wrɑ;-d1+aTGе@Y'θ0Ju44`”[lE'sL#,Ҹ*'B I,A$#3L3#-ף,a#3ph3NQ]#-wD2Cګ5s&gAݞ;pתL\Ќ*a|8Lݓ7>9=:,D@FZ* m#_e|z{∿݈Fy4Tж,HY[ 8 Wa }Ivc>/'3"7A0T#-} .<#-"#LM#-%ELѠԤDBi=9:}pClILv,HEl{8}3Uh8fUQZl¡ɂ|O{ϡ?_'KGq!ܦk6YiRl0)]EVawhtHwՙף؅3'5[.VȽ;sJh}k?i7`X:K|9>=F0=d7qByXx&'z=\ug4i;@ =BxUZ>ln +vs5{bd!MyP2nj(^#I1 5UH hkh5#,Kz4%wޘ9z˞˛ WԞeKFfdfTQ 0ժ1oLjesG%6_zCڻ!uv>^cVIkSn-d#,S#`#Gt̼5$X6?m+CV@De40;vU[N3#-/wW4rI|LRXFM 5RQAQ,$'}r"]vypdM'"$wչ":&b׉8/|0a~l'\Cy бNhjp7#-«!X!ho1ES!|q[jėÔ=>S!A^MiXgI*#-3FFC"D#-"`6Җq#P!E%#,#BAA>ԉb {->d||/=LJ`6&!l m.Ërxa#-JyܰD"iEw>!~?zXUZf) ą˾];#-cҗ;KW[6x<Ux4_q5mfsQbK|!BݲD2C:e3>[ldi;wmfsl,|zVy,}dC\kYjq߱9#ssⶳo;΍Tض\"l2ds>A449ur7020zK PF?˶ZSVY80ډ,;w׻_Wn\9DK9&Rvm8)9j77< 1S3)(#3<R0AtvL߃r}ՑddlymF#R{b@. Td5)lNQmea=iU,iqLmŸh Hg@o2-P**,gRq 3z=) ֍hH`oD0*f0.KasJǠkl:zNyS6NA`h"lgCDz$$RAqa8J&D3fɯmd$3ޕMM/Hp~Pp5F- NX$H;EMcLQ}rV5ѻr`DCqԠfh@a `ofq(~)VPvC"f6#-,fSƱGB#2`G$j1u#,F.꼜`_th{SB9}^{kdp7Hh{1W#-BsXAԷ=FEqm20ѡ46{ڭ5vkq-rMV2`(ˋϚlwXm™MR-h4~!{dk2F{˺q Z)U uh &dy9b<ӳ=UȦd3tȌP{#,f73),hDHNG)7{43ة(,} 9aecm]ꮪ]y\ )Ͽ`ed.J\X)5sZNcs{XYμ*׸ >}p|7XS3{*&hR7V#X($F쏑2t#,cpYXN%{=EMYfL$-QM#-S p"2LpO뀕qh]Ko3m.t#";)卨Kfuь#-q_m?|B1dUȿbĸ~#-x ABP<<#k]W2p3 (HM ?#>#3_z֨S#3 !`ܧ=FABboy4WUYeȥ1@Yg=JHn}#-)#,H4Y!`aؒLJ-oߥ@wsپ)pVVN?|^chAˀ ǧ%,'r*5IE6/%؊5GufE:WW奬bp:Hx-!!?Wp" CbXZ#-#,"B(H9 ˔T1R )#,hu#,x P&カ(#3f\?C5äyk1Q@RjTQDH_l\Bp`]26UoyiYQACcw ;7 U&?BJ|@#S$)LtZ*6#,#-%(هm@KrpvΈ#,| |u FDd#,B B }Fy"#,ADFF`cvo6TK\{mB#3\x'Z50(0#,P2ÂHBo'nod^e${۷U^˗&&IywrƸx9撲\;yNr|ɬS܅%R͕f3$l(&&zb)&H\M?R^?TV+{-t&C\:Ìz!çSM(c-n]2 p};sj3ikx$ r$R h ET "!@#E|:#-(|ǧٻKv*#3W#3v\eÙIЫa 8H9(rkY R%4B<] ’lD ˲yǛu.?aw kϭP8}''pixCK9 U^BKx_i/vt@T{q>)s2r xDcUA{U&es}B/!|#QP}'3e&җ#,,"#3-#-_l13FDC( !װDզE,YO<0.B"sOiuX}ߥZu9ذ <~On9G iqpXx0;YeIܜE'CGjGWn}_/f(cf" K;m`JL*6 zU0~Q"S!DWT:p;A#-]* ?삀mD,,!ybT3Wd2z ߄ͧ[>M%pd!D 6>~R78 }v6!OhhpJm18瀖+6;@]<6?xAGzvJ"`ktf#,<=L] 꼷>}G4h8oY~mҍ07k֛sn; /g6!Da&]xN_lC<#3LMzzMf2!7AΠ4jlK3{%VYs+5!M{]+ z395;Dz_|bƚۚyۻ (VnJ>;Z1!ˋ&k#-+vUqoK]6#͍6s!:vԱ,7 P5jo# yMZ[[_ViWk(/kշH s1gaHf|#-`groDnu#,40\B )6L5bDg|> k#-Ѻ ;dMAKr#T.۸'Xw9g>(rʽw7tD\H9.]#3i9xG`H3#3$cs;9a̜&(e}bjJPVzb,| b^$/ޯ#,ǞsRM#3FbFD,1ӭÐr#,|i8A]͓8e#3huBSAU5#wkбhm97QWBť0J˗=eVf@l_N#3˞^Q$TƔ2GLE-#,Sdݓhݶmw~Uw]kƦPŀE80d0/p#-\;Y@I`D$I`X$ y~=z{o.`\|7u9<,fgBK0 I~Ut٦m_@hD>#-(M7HDW53q\!HQiy'A:<@[z|jn]h;D)F#dHTM%l }\(a3Ng:ۉmJ AF RR#3ABxbDP#,g-a*Ҍn|`.]yW࿈gnOw#3ҽl)80XA^^}b|Ia.iGE#ԪFnq<#-h8IPKxސI!#-T:l2!Ө6M.%ϸɄζҿq2Ax.. bbF#nQ燏E1,"xVLCB{#3<0AU͋#,6aG#3!A 7c$`*i#GC#2W`U/k[͡8},Tk;u\h(H?Kt%iAl'8I. G#3MB{P $*h2̜%d0'.58[#-qKl $ ;b#,F%a,{y#-ϖ f0/؋% yޚh#-4j-I-drcԌS.6b15 QbQBCuskmyzR n3P#*0#Uj*=<^*6H  ŁcuuI\kUZE^p5#kR]tF7z!Nnb}`uv0eAFE)bӛ_k@fAu}~w5:[Ӽ ü,7Tߠ̛,i[6ӵݚ('55edM{]C'#PL( ƨP5&C|;D+Z !02hv 1-i@(qDɖLSY.eFdDҊP`d#-P{PB,FoUzx})ܞ[~4AŜ-\8ӑtb3ӛ5Lm%j Rkx&o2ijd؟ȃ-]B8r(Z`%%0pR;zó)`!N9o[v1_4T-ݙXMDK벆%#3jNq{. :"XCmt3ψcHP&ҍ&49*(hC;6hELۆd+6ߜ6̥9*{.x7۶v4ɠOIK0T(>Pt0jG#,8Oac-&.ʢ'G04 #,E3#}GӼn,nh #3.@ %Z#,g ZNfXA eƐ] URX"X@[7l!4DA@h=ɾaVj@XVR\G#,6 &Zd\~f^ZQ#2f82z ":jyM;=jٳ$KxSpG=RDb~WӸ{Q/4,̸ctA< DI! Kۧo#-fŭ3έ)`m[bb-UFڵSkWk)"#-HPϦxz<#30Y_Ŭ&%J}vK#,v&vzQ9"wɦa L3%-uṱ"d#3MR$kv鉓ZM%hTfH#34jbRhEQ"RXddcJFbRl&&diHiA "1Ai@~/q̧ Ȼ6#-0=&4O7oF?${#-,f ?ii#-t>!]R|_b#-ޒ #,Vv80"fa,%sn0#,0U'MkBJG)ץJ ǧ#-L/ڒnU媬#3AT0рqf#-#,w#-r{ c1ji)&JVe*"fvo,e%0!Fi֯92-3[OhI*dBls }Եz"19!H νdz>SJCˣϮ!v]%/USa]E#- ~ۗv\{(,`7d}MCfHHAd$,3O.}l5}y%j6{pvoim~@Y`o3n$Y&D2xWIXq^uM8vgJcZA]&kM8.F$ףiL9#30YZv; wR&HC̝[O]z!cK'կx!4Ӥ#zyhMoGB4μ/rh́ yc03#,.z ,Ҷj!Mk\nn]TFO$$B  qTW'|:8q0|'U=2QA#-Ѭ#3[[vG PHd5$r;˽^\ٶ̓)#-S޵t8Y:fcf.2^By51-,.KWZ1fR@KH'fhztJ&R_1/Bi;(*lJچ30@id|2\_#3.- bbqO&X$zN8R㩧YY<9Ŋk*3.Ls/6i3Y;KK A ; kl::*Mx7ۣ& ̗(1 43cEw9\B FcdL"kO<+& ڝ e4PlipXliҗZ9rE#-9;0#3>#3S\S j#!b$GM68L7"Dm}А4zрweYH&rD^$?-zQsj)l9(#.'$7?x8ff3QxNYլWMa9t#3SkF0M16Nƴ 5#-}nT()&XFRE۔= 7'hGy.\"񫿎oZ`k)mRgJeE90"l2[-+IF#-9,1iBQ90}F7erWMkͲSpd5L#3#--kѬlNqF0QަnC#BdD4D͹Ґ`^g1GAl\9$k!Z| 㣙*(Lٗ2j-C(0~ƶ3`E9h몗1P 2F#-++F!S;X%3 8][TƎ3l(\OUEEƉ18vr'iW\vbw C$7 t*ID#-uZ9PdIBU:^|t5#-#-[˼]:#.-#9= kCEeq[vn7"|iATi,I'Y͇~#3ISL bĻ5+Q*CM 'Rlo[#-#3 IWS'#32~B -%&J3Yf *L&)䔀2 V4F @]REAiY6T$l/5,f̙@ݙ,ՑL=tq#32rgS+A"ueҔeْ&7AE&TI8`둜z#mlpc٤t&MKy7LI0u+h5 YƂwR\>F2r4;utѽPP}RJAf#D҄kY նxxb ƣ(#-јl2g1FNy Z0)$%0Dr>+]DXj(L :#,9H#P[ hIXS9`+ĉ̉0oSBXۅ"ǭ鎎Yb2Du D6b=ƁtwH{D!`fJi.(C8(^d, j1Fbizv7!#-Q,])TP(5Q$f$Y]rt ;C3Eq UQ>ȁ$h3#,fsƌrRD%Ɔ]L3jYV/uw ]]8 (t]1-$pq1Lh!N% n8cu#-W#-ݘlL&wUd#3791wE8laJ%ޜC#dubg#3#,$"`H4-7lP8RF_^~ d'H@$a# $ !C}C@0&;ĥHpACt*PU(`1Ŵ%!*Aݖ";F~YLʁA6HFEhٓvB.)v¥ӋɜZVpGgC$ 4VёRFox㓸2f|U2T7{UCn#,9@"c˂#3B1#P#,\iPIPc{a"D#, S`^>h%#-D0u㯩0&e"HAhU={ Er@'z(7z>y~U$n4i+n*-_+08M|;l .S CO׀yc3t˕/-D7"+~t%?V$Իf#,mh sgx#-7&)mpX"$)[L1(.YB{7f^`0."DhǢ2N`Z]-#'hΆ#%R==?XΌHȳ"Q#-bf | -[Is-OAjX-Tm)ѵDIQKLDA$"H^#NL>A-֧_KȺ;Tww{gjBi.B1$BȈ  0*eTA i+.8>h N>wkv];ݥ=ɊB) *KDvw)=QhLo)Tc%D~vШb)#,\% 1 Vnǚ Ph}Ad0M11(d%U00c:^0rg]dsy5 nq8M13-34ZחF6tl2K +#3JXhXTPBBT^ %,[pb)i} !]Lcrm!/gћvg".k(i1I#,I>!'w|hܢ HV(cbt >Q!ume%+D$?c#,c.VYgg#-U&U0fPƈt]ȊægӦ ͖e{aZ&دPdmcuq 602\p^7np/ 8kg3XXMBm7k\lJ2 X`niJgRFg'+tLRfHG&vFÝCPulaӆflۈ;3T)DʙXv YA),g].A aSQQEӳ9R[T(a1#3i\#3pa]f aKp$$aL*d@!LB 3 #-AP$$I (` /k裐l\)"/!B'AYwzV(ulgE2b^?C7P~ss,'(4#-x|g8EhqiM*b` 5r=H0L$2F(FH#3 Y4>LNwZ;hs#3}e8>=eM9}\mpՋEakwFV"&YN#IdjMywso|zV.1NCTc6 #YNu685JD&3iyo49M:BRSKH6$4과6avgSXѩwZaWL+9.- .ndLܻ i>4lxWLWSBҵĕ+5%xn%Sc Ģ:}MJrYgLq>0y2!G8瑤;!EcY+@\Nhcr'7#,f$ YuֈvYT-vY#-O\IC ĵys|ث^y&]hDRPҌHdY.(PC9Ȕ_|nQ1 K1 =.q:uΙw;':2&ۭ]wvL=y \iD$YѦJD)E6+QmMiț+cjjQLRP H$HE`Y6w_)`4jH)DH#/=H-u&#-d<, %Dt6wA`OXnN,I>'Xc" ;OaK,={**&C) &X5q#-c`kFf$HA#-Lwgzt$x>=LCsq9~?L^#3Ҍ1!u#,Vd3EB؅DXR#-BDt8Q*춼#3S8 Gӎ-3t [n۸Qj!AgN0bKs\mje2+@Rőrtv~U)qD+F3?6$ackĽ]Hcj1)TA&FUI1s4biԌM2f43!El0z ZL5$ȩ-kTԱ{Qwt-jv(RZĪYV+cM&*jɊi&5mBU6վU-y^Y2ie6f٭kf1iS^utM6]&]em)1+hKZIKA:噭{qB1ῌV*}_6z(߃7f),t[ģQ0ORsr޷Ikykk|h7if[)5RvjVhĈA*#3!kKfھ-7FI-e6զٴٖJhIlXdhIR%MD3e36SQ%%Ƥ&e24IMH6$-6FY6&*+6kJ#-LRe&b2ML)f65DdHڒeSZԳIƔɩJe[%Zwkli,JJfJ6SmVUQUjhSloUrIFI ,l{ä}b:6[7777Xm`cB'~烁Vb'{vг*K`n{}r:E`~{2؞oO<8Gtz!F+c][:k(&c]c'V cD2B"Gp-m?*҆Q2(&JEał)TiCusI-/ooe~ @M*gquX yt5Vj܊F#,>ܓ)!c7a~D&]@C%[^ud-ćIa`squ"y+/T"ǡP<|.I`Q}UYdQDu u$#3#:a'k,1B2N@J,og*/b#YTph,}/=Fw;jOIʀ +Ċ@+#-fWvE yw#,#,#3U.QJT%I1(#3W"' ]M!3 />:28FNb}N;wDɱ!cN1£vZ3CD{P=2x.J$MLkr0vYxnYp{`In?>#,F-?oV"Ey]ъ0VI2"1(.Y"bVKِ#3#- |uIa#)iLΌhA3ݎB#-vKIp`g )!՝҃J@KIip5M~0] #-Xa[U[oҀ#/#-|pY i)9n=y#,A|¨4" JԙSU*\,x\Hn^J]>Ո Waڤ7%B/G|/#, "mtC[մ CfxI~Fe #-'9e$`GO57lGM4#Gursyp9yg]<?wBP@P^ i8,>s@Y[U+:>۽10yS糝cQP6M+!]"Lhe3Ve-t<ȆL&5 $rixe3'›F$Bl~ܽ(?O+xljeS, 7̹wDgQ{6#-fC#,` W $ŠM9Bc-I;O~5ٜ >7s:5P))#3+;$W4Rp94cT &Ž9 Xw/#yH+,v"@Ӊe$Y R;m.txw}.6r#{+"z;&qH7=%k4#3E5H*1h\%0TҩМc2zŮϖwIK۫γb7x-rRxorD A툔nQHcM3 eIZ&7%ASŏ'=#,vz^Z@/]z}Æ^_>zɌ8~ qozemE<#,%&"NtS$˵*HܾAfv${E7)ɧ~RdF+ R]Sc#Ng#>n,)æ,yS̀V=w]%ܤZ 4enAd&4ǨT냐"ccPPF*I~;O-"!ae7gv󙏟ߙUg 3RMp˻E:ufm^0#] X֊hT [ ,9Ԛk$K^6i-XٶY3馱ZWr+E6ѭ{J5ނ T#3b?V0$ D01,3Pa;46f:X%XEXDZq16H'ކ.oU -AӖj`Myce"7 aK3lhX(%#-&}T DHi;mc쪐c##ŧ;-Ffi<;fuђ}SJHHE!FIZVPE2FFjԗ`)z/T hP~'&E@QRA"u,Z?-ܕL,}q0E0#3| F@QU#3?%j%nqﷄYͤl0UA:T>ߺH#,f"=TkZuf` P@@F33#3jlA#,,y+Xz -{B*,y ]fmڨJ-nVb^ Q $ؖ#,8k}2* *)J A#3HrGLt°ƃѸrazSܔjNgN{T p!uWW޳౼k?)B~Ot=쵍9k:k4X%oyv|'`93o&Jwk&okd$;T̂R.3םW-U!P1좿) i6H~i-hsqm{5_*0[5z$\ks] #-i@F!RWFn0G&-a% BII!Ljˢ,#-R,"nD`3M#-8c1!䴗:knGƱzj/X\ h1Zh#lH2,@sA(֤n;$#-!66člQ2.\`TVæTި#-"(ZkO=Iq#-d#3+]S22U#iH6K1(i#-ʼn~ OWz!!SP ;?\ -#k֤lO}sZӮ5imkyEy6`mk\K$HL #,Z*&D UbwD&pARKW8kXv( )%_][#3sOVAAÅ0N *T5j E2R 6L&pU[sdxC2~HeE OMX(ΝLi! ͹6+}旮Y5b͐cQTT (#3finh#3IM$wM5CU@4B AX;#Pw#-qAA@#-?c* `\,A&R,YbN*l"/}b8ܪU#,eT~=! !F5az79-HCܾ fq3<)h/Ny}͈UI5{|vFBP$! T׍T߻>=p@E}8%;Bkh&o-~i]tIFɩ1RfeFiYOeu&P%(IQ Pzs$0C͖=P(V}~i5}|!-Gķc~ҌfLKFmԪLIPAE40ѧݟU2u[/VClmzmW"( R(&R B.!e+6U #-IFM[ 1xw#30; I&Çێ^G[ r%^C}KŐ,h@# ":0"758loMmn9\6hkȥ.7MYP~I:OF͚N;ZfU?bPe4a &A ){#,?-#-;?oyLi#-3 ϓt?,@.&uɦ~١&nfPdK49힇;ԟd6d螵>E[(}»#,AX{ń,XEH(ZI Hm-Ihfk& $v֙JcQE4LLU1,U+me4Z&kciAV-iFTTVP Hj~@ژDki9nƉAQrAAѫkZj5kZn*0[*UwhD*T#3Abez30G('+A2P5X4Y_'p`;#y*D@: $#,| ېuܓǔ5 #-"Da(RE#33D,eP441S&QEx<;l{Pxk?M[M 7珫]( 6Or'sa7j=yk:1X#3$"kÎx>g6t{μoi$|GanTK#-P AqDkD=1\=]fVYB2@S)`1Xi4m}҅Sձr5s?,l!%"ۯ!є;IB{1q@$Xd~WK%t; \FRhh=u ͆%05'C,-ZsPaNk%_Mf6b#-QtE2RgB~%ۻz+&c#30BI^[Vc`4=1IHqbSb#civi&tz֩fYM-]3y wóo"&Cn# #fNXk͵hH7̓X"Ud@54VW3O9 q!5anΤy|:X0V4H6C9iԥ'!X$9)j?\0e1+sGb#,J@:%Z;m]ZRjZ6eL֨)Ze~vȕmvlkh+d N1ꅏ5-76=#3k5d*sys2f;SEAM ! U P)|\}]ʧ!8֤_~`m"jlsm:"SWTX)a` #-ӭEq29O#3jjg_ThVo<%eۜ-B_d3VuJyaF)}lϾ9nv o9x#MZ{[$#3NUK _#3 -ݱXm)h sIۭxh#,[ܻL`i7кNVTb`2;eJmQ*DAo(Ŋ" (bK5>ws91rtxYVU(ZZŭ\UG$=D>|ˤ5oys](ZiYDDyO#3L:dáA:i cUz|;/#,rArF <$#, U@8id}EjC~2s1 MPNrhݺ5M(Kiim#,#D.1V5ep=֬bE,,fh;?S(7<ۉ7(ߢ~'8#+%}١y]XWn[Old ClWbMU^5;u;\+ _gy(1C+eiͥ#-i[84#lۚ;Q#3BK] oh\1b-ngߋL_[ZlHR])D<\DĖ/cDD&3Wv~̗c!+oA eQ5@5SWz9mrC; scKpr;wͤ;(?Zx'4"T5 : $t mD!L#3ΰElg`?a&hfE}*D/01}hVxPoW0!ug`yܽ"03z\U *^KR=p,Q>aGUI&az>@_>ss$X@b"H726GّaB;)@8| tܔ2H5Mr qy4o`2,#b#-0k<J1xPiaDiB==\ guouYj)<9o @#3T0.խ#,yګ}^*[mmڦmi-kxZ#3(]Zm\u;H@?BL^- Fqվ]}'#38;OXXJd#-D.'s#,ېuGY*~@ khh#3-DT@#- XVh3Q#3ءwƃ~ܪPQMR:U8((^!A/ E#3!G%F`NYOO1#-4'H#dhF@U#6HE!Vd#Vч${_o;=Zct,~_vhrVFޡ,F_.)ZN .@Mإ5zmGc3z;m;Jʍ94h%vvHG7}{a˺)_1DKY#`VFI p,䵾7|݌:sxj.K-ԻlJۺdi&j.ު{*X FS.!5#3"#- qĤ2"%%Pjac cZ4#-Dr(&B)"h`)0Т 1]?**C l(*`""ʹ/:;wYS4]'oiR*rN40,+@slmJ͔bZMlJ%j#3MSb$U)i^]֌i4"lQc#3l""Ҩey||vhdٛM2FTˈaYʩRc`j&7YH\WW y\T]dTTBh?4Duqv&n+t#-}\#A⛂XC!LmqƟE̓#,Eb!JFLUD#3,qX͝Z6o%XJ81AiL$Ek72D@74d,fJTBaƨ#3d@xی iu`Pi-+B+i#,Lhc31o6# #`Lec90r1j&J#-dqgʕ =?6#E="=h"lCҙH5Ս<3(!~:ZK=}f1g#3ػ.*3!z,71L&"ᖰ:oO*o@iH#uDq/v4j/hl1T;p2-}k%6-CBRLjwTH!B.LFUiAƔk,ɊCM"ͤ"ZiBo[&72P+!e2zZ#-ٽg!!*+z(%TJFiiMDUnoR=~0xmf\)DTI-(B B#-T6ҤT 0`1D#-*B1!0coEV ˯qAgK;QSu5ՇXHhI6)M1d׭mw-v*Y#-҆MY-=xR^M^yٻ.xS>3Cŧ1M|lrcB{uJ;uKX0MfW eX7k4N֒{jɣc([†!=DeܝFEuf01G\bGK/YȒ`aC1#,$fq[l\ەG"0I=EA=r֡%IY+z71Vpu蛞8"]]qV<#+ҜcQRK ל]<7C95%m750t\x h#-}@\|o٫VEcl%RUEhU06,`H[ p:K@TL-4x򷎖MmUpm:MWRZەwnFfkEusK6hF̅-;me|MUגVj A@ZI+dpȊ}|=2!^:Аhme˂j֔VX%+=2Aa p)e]W|ŅO:KfIHX@2aM\ݭڢ+xʤvجJl[eEU3hQLѬI23T1m3Id,,B@Ht A;>,ɹK$ $!3#-nE/F^.thǃ Q`M/쭔w@Z6h4V׊/nJ);mv%6حdJSjҪH$  Zh0z~`Ld iRO:Rd9r#-3P67BDVFA$Ptqm@}v l(8uU8D`z)C Ce#}Azw/V0Cb0QF@?K5y&mf,FE[TlcUcJY 2$hˊnc,zd3Cv:%p1`v"#ݾCGip^WB\&R;:>Q8dun:n}n3g2uPJu#Uܝo9&Ŗ %OC"Y-%xiL'}AG'O:2wÁX+vSzN=㸈MmKTQ6P =8*Ȍ"(ȁ"'b$D&sZUdχQlՍHm0>҆Ͽ >D 0@-~K̨e|5iTM[YJ^KVk]MhPih7;k4~[AHd"jI" )15i-؟ jDEeyܫ{HM!14AkL.+OzTmPALS5jRqJ!k`9#," (bB+Kj,.!jl-%3,@xO8}QMDDcq,.y#3:<Aô IΣ-)Vdfp9F1ؖ~>s#,CBи"]q"@]y}9:z=NGo7dh<<̷CB;?(3*TTXʟ4(/ deg'N:p8ۃ!yܖ(΀TǍPUA v&ɷ䘎YJ蒗,( #!;Ui"j-}u#?}4zH,)ji-I r."1 PZֲrly`)E]`Q?-սB8T:7L$_elѻz``|HӜg *zT#,/Q=:fId:MH#3D  Xl?s‚*%@3?٠`h⫺%!#,+P$UQ(F?X\I_1loy^yp7]̴JraiMI2V2^-lZ4,h6KxMt֓Gt7vÝ +6sSJӖ̱N1cm6iRdڍ&λ%u6gu]IlZ,sUͫ;j E.*.&`qGd2 w2g:?sCOT`ê/!DDzcENPl>P$F N}^kװ˻!4n93 #,w{֛ "1Hf٫ۚڷޭ\W\#,4~vTdՍUKC-j"zbԪ*H"*Sj*(km䇖%#,+7Tj0;m_Cnj)VD) $P^mkm-^|Wǚ3֢QYm "#-)mLi2"eA\qaB|O\ۗH$Q1B!#,jzN"H,ȪD0Hq-#3"#,F#,HRjLͱ[j%&MB<5a" `RUSZ#,ˆ8* Zsh@INpSk)#,BB0ۦ63]oP&bl6 #ff~Wߍ]A‡ڜX ХW$%6Y''D!q'm'kP {#,bQ/Gr=-`B֢?qKPi&5+FF H"D l.ՕPѸZQ"G#3a-B"04#,mٺ QQ$HEݠ:#35Q⫖/d- #,!Djcy£|Uʬ#3 M`miwc#,$ dɖY2eʱb6)Xѱ{1EB@$DFPQP$b] a2:82I~1^#-@)=OG^kdj#DYA0Pd#-`*!{xO58(=ڨ2F0'@{8D(B {' d hȰa%Ī"A(ČQi +v{!#3a3AgO6zY#,nX!lChകKIϤki&u[bH%P2PB<];u{^Ajf7dT$&L0ĠVGTm#,+hjPLڙ?7vv@y"O1/#-懁ABA>FxTW|UAwDa86:" |H[[^)/`#3(ԟdC5AF\ow,F[7@m8*-a0t:o#ˊ$*ۋ_8jMCE2`N5l{`:IC\VQpnU<8->t_4??Ux{,Lt>6=Iv/#3L=?.VM@D:^Uh/=o|UT`$sP {"iȄc*}kbж#)59 AdkS bm8T&i`8֎`tLC$;e#uLI9TX 0J=9g5=.}Ke"{`o4R w'W!lvb#;l[c}p!kmw^Gs*evcWs- :~SK@ݲFM<Mwx{zcd8^@Ԫ:=5a!:S"X$G _qc>5иC iL$DXݖY $l7Csۨxnb#3ёzv˯q%CZC9Ԑ$n#-6?Gr4ko&k\ #$5v=(*)?rO1P[\m6B"<^[t䕑Ɖ2-ZgT#o2ORwD2 >6sٍ ሮi!#,#,j,YsZR@KmZg7y1@c)n-);rFV\1#,Ts+F$jf78Xx rڥ?p|َFZV(!r {DJe1l#Kl#-d`+BmpR).?A`ؗGP<^"-1 #h#$'O$>zB}`UwH0U#-ʟ523?*}02 T7udc5=ݏlt+!7̙{ #-Cѐ;W6g!~k#-"bCmj1mTW#3&YL^%3Z ֆf'W~`bMH#,cJ9n3336w:_Fw̲-Ŝ718q1Pana՟=@dUBE!B0bwoufP]6FT ؒbc2ɐM4DţeN,KނYLR酠Zij iP@aMG1a'g!$3<7 mZ(U_f=Vd*f~H.a;C Y~hbk#,9fT{P A~Ph#M"ޓ;K(ǔHi6fdeaJSbPeaeM%i!eJT~5HH:t&c6:霵a%%kUiJ5gI!Lj#8fkÈ-G{dK6Uwϡ}g3mw|Y)'qxO&P9eq8{}heU$9H}I{:hF [s(ؘ;0fȈi-*@4!BQ bJ"4lLPaDd)Dեxz T#36#3Ix•rHXUFP eRBV#, AM4-M͉H#3l{{,"f#,.&P_P7$7#-H;Qv>3E@_q=4QJ(1 sܩ#,FY1.X64/c@OiD)ht^s3L7yP!r)JOʟ!KGу 1blxbq#3]]5mSAB-Qh1D8Yd z+YrҪH81CMA@-0ـ(!C75&dntKbj0HRI9[QUzUS:Peo('j|k'Y2 l` I#,m#-r^9Ey(MktxokƮ#3@#Fʅ 18j^;\WAc:#-DK0-j#-"|@|֚{Cd4e@I#,GȊ #,z@ˁȊic~ikO'_CS#~ M@OcXcUG|9K[K]ȭU$#3`.BT%p@d$M%Z`o,X(R`Nf D""B#3#,#,uRCҪ~>~Ntb}C@Ģa˩;d̿Рy7%aC &OWQ TGpfu>aڭ6Lmme(idƌM#-i&RRLMUQmUҩJjkQaA#|-ɌlD44ƠXFF!X< U,#-f*EZ7HŠX`[dhr d*EFт4i#3#3SX嶖ۦTUAL!@Q,B}?^vc„ Ba(HUrUv˩mn@)ZrZo(@<2C~&jΟUisEU)^}Q#, TMTrhʀyIpADƒ;מ]tWK33|]|[nU6UUJ@ )vCcD.HP=+gk^ 3k@QEkd.Xw` 𿍅I;coKcagBKVӽȽЅ j\!Щ<"D8|IFPsg0I3NTuzA!ՑBٯNTaͷFOW]CxKP,\5s范5ml1-'[5RҖ;.#,:pSɛsh'[%= a9rΜ@y^]S9|Sq;̅5kauqUxK\#-@!NK坭]#-YD6PfvpL1X!#3Cs<*L#,=QR"P5%\虆YB}mNiWa ':X\(DnePhvL}6)AVS{аjnV?knٍ2ExFcC\Cv׵8Qί"T#39ƺ5|HF(TO0K ::k@v0pl2q~|Ŏ%͵.|3gH9LF۸Jص-NedBպG+zxǘ!ĮB;UQ8(B:c62)#-XRLF4V jSfa'ZdmHnNg#,m3k7rqЛ51;wGWѿoJD.܁ߥ:K~EXeɡ;l`M;}]f`֬6׊7( SRt-p#,!鹩Fm9dڥo%^G*^|Pyil0;~+q緛E29S[Nގ8IkmK#301D :){n{sAM<:/5׏5NnThnչ84hAR,fJuq#-#ϝ4t{=.͹I{yzg:߷Mr:3֜l6\d6ز ^PAc+sE6zG}tcz#7RLL7mh8xtzm;|FB3pr-O2qlf{с$(?X@i֛> 7#<=6V#3%&&i.P b0%XLiTSrHp"S U,bmc\nmGi⊼oV1V쉩UEЏwWΫCP#3TEE#36`1MYK#-Ccv/iGZ"1E!U܎ykKmZDT%)Ϫ)Un uHҔ;DxL(Ńi;2?lkɔAWD~faU {Z(Buh% H#"WʠӍ=H4k*n"0 dCʄv=HW MRi 1EYTR#ĈHT:YQ}3l$i`Q}&J[kQbɺPb:MXb3%%1woT]92r0#0BXFn<7帑6n@Ѡ6dX\$܉m6R-ڤM^Ef{F^b8E;#:BcD`ƅϟϕ7MҺe|ljixFT.QfqA3+1%٭!2T6z}Ek;jVFڻm48MF1=(I#0kg@ZfڍR-LQTP 0 ic#36Qe{rh #cPu1VSVt "Va-6@d Z&_pXm#ڰita?G$lsJӂ Ånl.,$n81j”++$m$c(ja=5sVR28v"Mt=.26 ,mJ8G*\#3gQ#3}*ff:>&X"כUqN. 9ܲ㖝9ޖ̥08:_DFaZ JF$go)]##-gtU  z[ "O`}Zg87s13#,ey;leJs;,Taq zL}[ŪP``r6}t6+#,B6iB>bB P#3H&Q(8#3G4b eSgy[i T2۳ $UUFJ2*{Wi9ٖFju;蝓#, h'``Cy{?FW W׾+dȷ4`T"e?,D6j+U0ۏV+L*."ygl{νfP<`k"`2 &墚$~bNbjny_2xS?FRC@$L66Jjj6E6bU\p9{'x)n+V!)+mҍDbM!e&jel&-lUlҒcffLYlR)FdZ&Fƛ%)JVR,0ɡBFPddE_+0<{A׼rܨ=pWQ7\Ow#,yߤل"O}z$>3Z!AI6.F126GwAwpnz]D436ܿc i~A(go^`B=2eD6ǻ uCI0D[ }ZWϹc{!c/X+]_smEDkkEkk#3M#3KPfhZRkZR>eπ`NgEFi?—ypԀDA4އ?,4VDLuAі68MZ}41,`i##,x9& a4<)EV{jh к[%{Iaf2#0Hn0EK{JT4"qddWD)x֟d8L&5 @doj6m7Hŕ٠\F]HpqUXP8K!qCsq#RFͪ#,bb#3 \yI$8T'JhiJ(R@Prw=7;}HoBso՝Lv1|w! /b`@86:%U8l Մ.`K6 =:p+SNp &aGeWq.[.|CRTW@~SQ*):# a ,C`I#8>G3!]+i=MU#-khaѱ(b#ۣv26_g5^;_bt'EF}ƀ$RT#$_#bö\9hz8.ܩ2R(a☍%Bx0:#3LA;F[K"[@U `tQkwmJ֌R)Iy#нJ->;``ĢeM 1^l ~3hUd*h b·&?/ {{=͈V5PC#-RTڷ݆|޸kϕLg7:K 3aW*Y.!Ċz|P͚)U6?]VmU"yyGpl 8R%T:+}PKm.TQDPȐ#,L̉k-b\?#-V9ƒ=MXS2" `nŋ(@DYpp$(YE&ѝ"g`2j;#, zѱfk@2%̡Y:)ٜb U.!\7CͰN$,ECrN0ąc U\\ӫGT4fJ-A\j=4бVE7#3A3:: ޤ#Y-ms=rkܲX"ζ5I pW데ۥ/#!#3 V*K!aB8P\`lqj ]#-ӡ`u˶&9fV=6:rS1,zv%60\3! kL0q8evNq8D3qf%H+LHh6"SH&!#,)iiHҧR㤣jCévSTo+1rw3Q^O#-"X3Fxzc|`CF8 :p|q;%XKֆ#,t:!H`ZDQ,3#\XcXAh7mj%*AONu|mqr+RfCvcmVN0ltBhYLhF0`8ksC,$#3]'F 9WF:sS0p8#-PFg $8U!"ofA&yKTe c,P&4W9HDHٖ)Ƨ_jŹ pW lZtW9GVvr5-LңG( biQ0XwjQn7qㆎd306Lc"#-B\]u7F4Ŷr(rbi^Bp_YِQ#Ep!G㒡 1>n51La=:#؋ZusѣM*p9kIXOb[WL3f#-GMG+%ԝǔ`V+t`t@m83%T~ii~#1r-&#-Dhv% )s%vq*gdC-;AA}9IƎ/$0i6#3`$e sgS5Z`[KZl6n0&@1WYv",;CɏZҾehcXaUwNr<6s16g3 ošU#-\\n۩C_#.%2&;dK S'0/ `n;3HMj"2byQ*7uSM2qu>L4pNaZ]#-#- ɕܠ酘e̷#D" C!:l%I@3731V$UF15#-S$T 6bh!/eRʺQj Z !FQ2hkr6n&d2!P&#D7u%QH%QSSt93I#,`.;f&E hTWDwfX8H؈XQM|#-jSBWqL%LԐv J=_b(*1ho:|%x"C5QXDQ@ foF=30q5_iD5M+bj':֫3,;J/FYFo6U=y*G۽È sՍqU&Y n=Q@Z\wjwp  w1Mp@a'aՐ_#3)MNҲ"};52j6mSeJ"oĹ03ViZlK bx,UDJ|MMqҺJx\R$B}*#-+ٲO.~#։ޓfȊ6^e"v/}H}eR'I$L辻܇#,#-)2r>ZdAGHjBK^UiK.J5+#-?gr"cj(.As >zű5Dm}q3,%"'QȐSa'Pms<#3:vөj"$E}f!PBG~3p@=YX:iYuxYz̥2|RBqnf|Su{Y=wBuP"ny$J%"/ftMN4 I/78iًHOj#3yaI 4 .T#,3DG~c>0I~->I?F)d y{zj[hٖ52iL%C(ec5 "鮔RƄ(VR2N_d8~[JUT"2rrP$ E`AA^l{:0>GS)UӠbl$2@|@Rj#3~G_0^ "E#-Lb|*75`OorK1zXXM92<)_7Bw_Ƚ$r745D m?zs`#3RDXs-?–k+*#-դO&w@Bœ%w/,"ιX’RE!(tpUml?).X^.m5]-ʡ/uۨ &KQD Q底66+#3 ~Ċn o>GyAACp,3bJXz{@{;d@`$$A HA Xe-I~_ڍu_)TCQ4e,ҵ#3yRB0/"TD K]#-LHsHNu@?SMsf&MDͨVZdm 'yJԵ{h#,D""PMTw Q&bK9:~[bs'K=p$X#-n2 yd=#-{0%$!EvKHipbAK/փtaq`2 Ge8=jaaLNLA}@ hJB#3TjJlڛiӾwn.lw`UWP%#3l0J(H(HZe˿u#-#pazZH*x1d*~ݜB>!~Bh7 %섭6@-L?v<|ZtlrvKc?m_TK#-LTdkbJ#3Pc+~F׈m%@SSel_? X @y6K"bK#%aC'f"r{5l\JX˹I@L QCP &R44"s chBVdq L{Fe˺?s uĵ[ӺNe:j45: "kԃPni:VP8KcY&d9hTJK@]PP#3K #CD#,#,fGssw`9DQ,@.Eh#-YóY1AXuZ5zzRu$E'B#3P?: W '̘ίhB1.PU\a xK,Cٍu.1/i{ۿwww[?y?? ?7>?}\Lax8f1RWbGcQ#3E.+\hV &ŦS CJ{N&&ti7A\#-DM*\2zhi|(3ڸiC\6~6%ģO..rT`#-Bl; 0^SN =eLJ~fx9ۤ5(_KVt՛yf Pb{U{h#-ސYrqx2xcX0eDa$%~Cm΅1W+kۆ#^ݗDRׇgLFqbf 銐P.wS~@]#hH&ᒆq|'X~61$0P˴e!C5X#,0$K{>bXG`녂|o܆]wX0ѵ"936-ZQ5ss[YD.%BATZʶJkLC`.vWu0@7q`*@EKbJ.JPtC~Hޑ$}u0~ǛZVYvpLо0!~9R*#C}Rф-6c 4)FsTJul~RW8Ay9Hsae]*Se`nL2\as. #:*l4O#-'&^}'/e,Ȅ@ʈjI2PaYQJ^kZ|u**Rhm_(мfӬ"5a+O(~Zm3/ xg5) 22H#-"Q`TS.7Ϡ<*,XJƒ0?+QtCE |ˡ-3<G7OeC`+~F§How֢0*$@E+%l|^Uk󢍢Kh zzj8y#,jA̹8';}, 6kObtq1nYk<#DZͣ珳H<r:g .LeX&C_F0k;cg>BdO rE8PE~j +#<== +#-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v2\n\niQIcBAABCgAGBQJW3BWfAAoJEGelZe39+Q5kRU0P/iqc7D5tlzWrwTr9j9oQCMBa\n7HnJ+rYewgLX/zK07XgsIDa0OyNy7emdG+YRe2EYQHyn+V4QJl7VZLW8cbG0EJiY\n0Nfjhy6Dk28H9TA3vLkOwFkoQK/jYKFMARZhUOpdQYJ93xmHOkEF/o2Uoa3QtY6O\noouGuE+iU5RT0r675Sb7X4m8/Lcv1HO2EKhPG4dNWPUytupGVEA/eyDldIOViDN5\nYUc6Oa6yWOP9g88TjeeT4KcbpxneHAC8AOBRmMjR4/o2ioBX4mMHehJOuEXxJwoD\n4WE/jTQgf0icAmfm1okg/kJGXE+/QNgvWSfWxgL6/RLHwEA+DNrBI9u8rD3o2VLI\nHdcyvjWHJfEIWDowZY4XjbhJRvN1dthfcxfXMuBdBuEn275d+JoJZXhHCgvKMqTO\nkirZrlPcGESPNTiESvScOD3zrONpdKcWGbUaY2bI7nn+m/JwsEuueA8Me2l27R8M\nmUBycqxI5iHMLXEzQO2LztRVsx9tF23ReaLAj0mj9G32qjYwKiu49tPFrGywLlnq\nJpRZQGUH4AX51GEYed/9uzoTb0L8PbGuQhRYhtaSY+WT+nxq4gnrhm4v+rvcXGXi\nA440RRlTP2AqZXXNMUP03DV26/5O2zVzssPhtN9W5aNb07LJH3vj1cjiRp/m++Sa\nxGMK2mRBBCWRJ5m/YyrH\n=pYvc\n-----END PGP SIGNATURE-----\n diff --git a/wscript b/wscript new file mode 100644 index 0000000..0a243bf --- /dev/null +++ b/wscript @@ -0,0 +1,39 @@ +import os + +def options(opt): + opt.load("compiler_c compiler_cxx") + +def configure(conf): + conf.load("compiler_c compiler_cxx") + conf.env.INCLUDES += ["libs/glcxx/include"] + conf.env.INCLUDES += ["libs/glm"] + conf.env.INCLUDES += ["."] + conf.env.DEFINES += ['''GLCXX_GL_INCLUDE="GL3/gl3w.h"'''] + conf.env.CXXFLAGS += ["-Wall"] + conf.env.CXXFLAGS += ["-std=gnu++14"] + conf.check_cfg(package = "sdl2", args = "--cflags --libs") + if "MINGW" in os.popen("uname").read(): + # TODO: set CXX to mingw32-g++ + pass + if os.listdir("libs/glcxx") == []: + print("Fetching git submodules...") + from subprocess import Popen + Popen(["git", "submodule", "update", "--init"]).wait() + +def build(bld): + sources = ["app.cc"] + \ + bld.path.ant_glob("libs/glcxx/src/**/*.cpp") + \ + bld.path.ant_glob("GL3/**/*.c") + + libs = [] + if "MINGW" in os.popen("uname").read(): + libs += ["opengl32", "mingw32"] + else: + libs += ["dl", "GL"] + bld.program( + source = sources, + target = "app", + uselib = "SDL2", + lib = libs, + linkflags = ["-Wl,-rpath,$ORIGIN"], + install_path = None)