From f9158592e1478b2013afc7041d9ed041cf2d2f4a Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Mon, 13 Jan 2014 19:47:58 +1000 Subject: Update Irrlicht to 1.8.1. Include actual change markers this time. lol --- .../source/Irrlicht/COpenGLExtensionHandler.h | 2587 -------------------- 1 file changed, 2587 deletions(-) delete mode 100644 libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h (limited to 'libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h') diff --git a/libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h b/libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h deleted file mode 100644 index 0d132d8..0000000 --- a/libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h +++ /dev/null @@ -1,2587 +0,0 @@ -// Copyright (C) 2002-2012 Nikolaus Gebhardt -// This file is part of the "Irrlicht Engine". -// For conditions of distribution and use, see copyright notice in Irrlicht.h - -#ifndef __C_OPEN_GL_FEATURE_MAP_H_INCLUDED__ -#define __C_OPEN_GL_FEATURE_MAP_H_INCLUDED__ - -#include "IrrCompileConfig.h" -#ifdef _IRR_COMPILE_WITH_OPENGL_ - -#include "EDriverFeatures.h" -#include "irrTypes.h" -#include "os.h" - -#if defined(_IRR_WINDOWS_API_) - // include windows headers for HWND - #define WIN32_LEAN_AND_MEAN - #include - #if defined(_IRR_OPENGL_USE_EXTPOINTER_) - #define GL_GLEXT_LEGACY 1 - #endif - #include - #if defined(_IRR_OPENGL_USE_EXTPOINTER_) - #include "glext.h" - #endif - #include "wglext.h" - - #ifdef _MSC_VER - #pragma comment(lib, "OpenGL32.lib") - #endif - -#elif defined(_IRR_COMPILE_WITH_OSX_DEVICE_) - #include "CIrrDeviceMacOSX.h" - #if defined(_IRR_OPENGL_USE_EXTPOINTER_) - #define GL_GLEXT_LEGACY 1 - #endif - #include - #if defined(_IRR_OPENGL_USE_EXTPOINTER_) - #include "glext.h" - #endif -#elif defined(_IRR_COMPILE_WITH_SDL_DEVICE_) && !defined(_IRR_COMPILE_WITH_X11_DEVICE_) - #if defined(_IRR_OPENGL_USE_EXTPOINTER_) - #define GL_GLEXT_LEGACY 1 - #define GLX_GLXEXT_LEGACY 1 - #else - #define GL_GLEXT_PROTOTYPES 1 - #define GLX_GLXEXT_PROTOTYPES 1 - #endif - #define NO_SDL_GLEXT - #include - #include - #include "glext.h" -#else - #if defined(_IRR_OPENGL_USE_EXTPOINTER_) - #define GL_GLEXT_LEGACY 1 - #define GLX_GLXEXT_LEGACY 1 - #else - #define GL_GLEXT_PROTOTYPES 1 - #define GLX_GLXEXT_PROTOTYPES 1 - #endif - #include - #include - #if defined(_IRR_OPENGL_USE_EXTPOINTER_) - #include "glext.h" - #undef GLX_ARB_get_proc_address // avoid problems with local glxext.h - #include "glxext.h" - #endif -#endif - -#ifndef GL_ARB_shader_objects -/* GL types for program/shader text and shader object handles */ -typedef char GLcharARB; -typedef unsigned int GLhandleARB; -#endif - -#ifndef GL_VERSION_2_0 -/* GL type for program/shader text */ -typedef char GLchar; -#endif - - -namespace irr -{ -namespace video -{ - - -static const char* const OpenGLFeatureStrings[] = { - "GL_3DFX_multisample", - "GL_3DFX_tbuffer", - "GL_3DFX_texture_compression_FXT1", - "GL_AMD_blend_minmax_factor", - "GL_AMD_conservative_depth", - "GL_AMD_debug_output", - "GL_AMD_depth_clamp_separate", - "GL_AMD_draw_buffers_blend", - "GL_AMD_multi_draw_indirect", - "GL_AMD_name_gen_delete", - "GL_AMD_performance_monitor", - "GL_AMD_sample_positions", - "GL_AMD_seamless_cubemap_per_texture", - "GL_AMD_shader_stencil_export", - "GL_AMD_texture_texture4", - "GL_AMD_transform_feedback3_lines_triangles", - "GL_AMD_vertex_shader_tesselator", - "GL_APPLE_aux_depth_stencil", - "GL_APPLE_client_storage", - "GL_APPLE_element_array", - "GL_APPLE_fence", - "GL_APPLE_float_pixels", - "GL_APPLE_flush_buffer_range", - "GL_APPLE_object_purgeable", - "GL_APPLE_rgb_422", - "GL_APPLE_row_bytes", - "GL_APPLE_specular_vector", - "GL_APPLE_texture_range", - "GL_APPLE_transform_hint", - "GL_APPLE_vertex_array_object", - "GL_APPLE_vertex_array_range", - "GL_APPLE_vertex_program_evaluators", - "GL_APPLE_ycbcr_422", - "GL_ARB_base_instance", - "GL_ARB_blend_func_extended", - "GL_ARB_cl_event", - "GL_ARB_color_buffer_float", - "GL_ARB_compatibility", - "GL_ARB_compressed_texture_pixel_storage", - "GL_ARB_conservative_depth", - "GL_ARB_copy_buffer", - "GL_ARB_debug_output", - "GL_ARB_depth_buffer_float", - "GL_ARB_depth_clamp", - "GL_ARB_depth_texture", - "GL_ARB_draw_buffers", - "GL_ARB_draw_buffers_blend", - "GL_ARB_draw_elements_base_vertex", - "GL_ARB_draw_indirect", - "GL_ARB_draw_instanced", - "GL_ARB_ES2_compatibility", - "GL_ARB_explicit_attrib_location", - "GL_ARB_fragment_coord_conventions", - "GL_ARB_fragment_program", - "GL_ARB_fragment_program_shadow", - "GL_ARB_fragment_shader", - "GL_ARB_framebuffer_object", - "GL_ARB_framebuffer_sRGB", - "GL_ARB_get_program_binary", - "GL_ARB_geometry_shader4", - "GL_ARB_gpu_shader5", - "GL_ARB_gpu_shader_fp64", - "GL_ARB_half_float_pixel", - "GL_ARB_half_float_vertex", - "GL_ARB_imaging", - "GL_ARB_instanced_arrays", - "GL_ARB_internalformat_query", - "GL_ARB_map_buffer_alignment", - "GL_ARB_map_buffer_range", - "GL_ARB_matrix_palette", - "GL_ARB_multisample", - "GL_ARB_multitexture", - "GL_ARB_occlusion_query", - "GL_ARB_occlusion_query2", - "GL_ARB_pixel_buffer_object", - "GL_ARB_point_parameters", - "GL_ARB_point_sprite", - "GL_ARB_provoking_vertex", - "GL_ARB_robustness", - "GL_ARB_sample_shading", - "GL_ARB_sampler_objects", - "GL_ARB_seamless_cube_map", - "GL_ARB_separate_shader_objects", - "GL_ARB_shader_atomic_counters", - "GL_ARB_shader_bit_encoding", - "GL_ARB_shader_image_load_store", - "GL_ARB_shader_objects", - "GL_ARB_shader_precision", - "GL_ARB_shader_stencil_export", - "GL_ARB_shader_subroutine", - "GL_ARB_shader_texture_lod", - "GL_ARB_shading_language_100", - "GL_ARB_shading_language_420pack", - "GL_ARB_shading_language_include", - "GL_ARB_shading_language_packing", - "GL_ARB_shadow", - "GL_ARB_shadow_ambient", - "GL_ARB_sync", - "GL_ARB_tessellation_shader", - "GL_ARB_texture_border_clamp", - "GL_ARB_texture_buffer_object", - "GL_ARB_texture_buffer_object_rgb32", - "GL_ARB_texture_compression", - "GL_ARB_texture_compression_bptc", - "GL_ARB_texture_compression_rgtc", - "GL_ARB_texture_cube_map", - "GL_ARB_texture_cube_map_array", - "GL_ARB_texture_env_add", - "GL_ARB_texture_env_combine", - "GL_ARB_texture_env_crossbar", - "GL_ARB_texture_env_dot3", - "GL_ARB_texture_float", - "GL_ARB_texture_gather", - "GL_ARB_texture_mirrored_repeat", - "GL_ARB_texture_multisample", - "GL_ARB_texture_non_power_of_two", - "GL_ARB_texture_query_lod", - "GL_ARB_texture_rectangle", - "GL_ARB_texture_rg", - "GL_ARB_texture_rgb10_a2ui", - "GL_ARB_texture_storage", - "GL_ARB_texture_swizzle", - "GL_ARB_timer_query", - "GL_ARB_transform_feedback2", - "GL_ARB_transform_feedback3", - "GL_ARB_transform_feedback_instanced", - "GL_ARB_transpose_matrix", - "GL_ARB_uniform_buffer_object", - "GL_ARB_vertex_array_bgra", - "GL_ARB_vertex_array_object", - "GL_ARB_vertex_attrib_64bit", - "GL_ARB_vertex_blend", - "GL_ARB_vertex_buffer_object", - "GL_ARB_vertex_program", - "GL_ARB_vertex_shader", - "GL_ARB_vertex_type_2_10_10_10_rev", - "GL_ARB_viewport_array", - "GL_ARB_window_pos", - "GL_ATI_draw_buffers", - "GL_ATI_element_array", - "GL_ATI_envmap_bumpmap", - "GL_ATI_fragment_shader", - "GL_ATI_map_object_buffer", - "GL_ATI_meminfo", - "GL_ATI_pixel_format_float", - "GL_ATI_pn_triangles", - "GL_ATI_separate_stencil", - "GL_ATI_text_fragment_shader", - "GL_ATI_texture_env_combine3", - "GL_ATI_texture_float", - "GL_ATI_texture_mirror_once", - "GL_ATI_vertex_array_object", - "GL_ATI_vertex_attrib_array_object", - "GL_ATI_vertex_streams", - "GL_EXT_422_pixels", - "GL_EXT_abgr", - "GL_EXT_bgra", - "GL_EXT_bindable_uniform", - "GL_EXT_blend_color", - "GL_EXT_blend_equation_separate", - "GL_EXT_blend_func_separate", - "GL_EXT_blend_logic_op", - "GL_EXT_blend_minmax", - "GL_EXT_blend_subtract", - "GL_EXT_clip_volume_hint", - "GL_EXT_cmyka", - "GL_EXT_color_subtable", - "GL_EXT_compiled_vertex_array", - "GL_EXT_convolution", - "GL_EXT_coordinate_frame", - "GL_EXT_copy_texture", - "GL_EXT_cull_vertex", - "GL_EXT_depth_bounds_test", - "GL_EXT_direct_state_access", - "GL_EXT_draw_buffers2", - "GL_EXT_draw_instanced", - "GL_EXT_draw_range_elements", - "GL_EXT_fog_coord", - "GL_EXT_framebuffer_blit", - "GL_EXT_framebuffer_multisample", - "GL_EXT_framebuffer_multisample_blit_scaled", - "GL_EXT_framebuffer_object", - "GL_EXT_framebuffer_sRGB", - "GL_EXT_geometry_shader4", - "GL_EXT_gpu_program_parameters", - "GL_EXT_gpu_shader4", - "GL_EXT_histogram", - "GL_EXT_index_array_formats", - "GL_EXT_index_func", - "GL_EXT_index_material", - "GL_EXT_index_texture", - "GL_EXT_light_texture", - "GL_EXT_misc_attribute", - "GL_EXT_multi_draw_arrays", - "GL_EXT_multisample", - "GL_EXT_packed_depth_stencil", - "GL_EXT_packed_float", - "GL_EXT_packed_pixels", - "GL_EXT_paletted_texture", - "GL_EXT_pixel_buffer_object", - "GL_EXT_pixel_transform", - "GL_EXT_pixel_transform_color_table", - "GL_EXT_point_parameters", - "GL_EXT_polygon_offset", - "GL_EXT_provoking_vertex", - "GL_EXT_rescale_normal", - "GL_EXT_secondary_color", - "GL_EXT_separate_shader_objects", - "GL_EXT_separate_specular_color", - "GL_EXT_shader_image_load_store", - "GL_EXT_shadow_funcs", - "GL_EXT_shared_texture_palette", - "GL_EXT_stencil_clear_tag", - "GL_EXT_stencil_two_side", - "GL_EXT_stencil_wrap", - "GL_EXT_subtexture", - "GL_EXT_texture", - "GL_EXT_texture3D", - "GL_EXT_texture_array", - "GL_EXT_texture_buffer_object", - "GL_EXT_texture_compression_latc", - "GL_EXT_texture_compression_rgtc", - "GL_EXT_texture_compression_s3tc", - "GL_EXT_texture_cube_map", - "GL_EXT_texture_env_add", - "GL_EXT_texture_env_combine", - "GL_EXT_texture_env_dot3", - "GL_EXT_texture_filter_anisotropic", - "GL_EXT_texture_integer", - "GL_EXT_texture_lod_bias", - "GL_EXT_texture_mirror_clamp", - "GL_EXT_texture_object", - "GL_EXT_texture_perturb_normal", - "GL_EXT_texture_shared_exponent", - "GL_EXT_texture_snorm", - "GL_EXT_texture_sRGB", - "GL_EXT_texture_sRGB_decode", - "GL_EXT_texture_swizzle", - "GL_EXT_timer_query", - "GL_EXT_transform_feedback", - "GL_EXT_vertex_array", - "GL_EXT_vertex_array_bgra", - "GL_EXT_vertex_attrib_64bit", - "GL_EXT_vertex_shader", - "GL_EXT_vertex_weighting", - "GL_EXT_x11_sync_object", - "GL_FfdMaskSGIX", - "GL_GREMEDY_frame_terminator", - "GL_GREMEDY_string_marker", - "GL_HP_convolution_border_modes", - "GL_HP_image_transform", - "GL_HP_occlusion_test", - "GL_HP_texture_lighting", - "GL_IBM_cull_vertex", - "GL_IBM_multimode_draw_arrays", - "GL_IBM_rasterpos_clip", - "GL_IBM_texture_mirrored_repeat", - "GL_IBM_vertex_array_lists", - "GL_INGR_blend_func_separate", - "GL_INGR_color_clamp", - "GL_INGR_interlace_read", - "GL_INGR_palette_buffer", - "GL_INTEL_parallel_arrays", - "GL_INTEL_texture_scissor", - "GL_MESA_pack_invert", - "GL_MESA_resize_buffers", - "GL_MESA_window_pos", - "GL_MESAX_texture_stack", - "GL_MESA_ycbcr_texture", - "GL_NV_blend_square", - "GL_NV_conditional_render", - "GL_NV_copy_depth_to_color", - "GL_NV_copy_image", - "GL_NV_depth_buffer_float", - "GL_NV_depth_clamp", - "GL_NV_evaluators", - "GL_NV_explicit_multisample", - "GL_NV_fence", - "GL_NV_float_buffer", - "GL_NV_fog_distance", - "GL_NV_fragment_program", - "GL_NV_fragment_program2", - "GL_NV_fragment_program4", - "GL_NV_fragment_program_option", - "GL_NV_framebuffer_multisample_coverage", - "GL_NV_geometry_program4", - "GL_NV_geometry_shader4", - "GL_NV_gpu_program4", - "GL_NV_gpu_program5", - "GL_NV_gpu_shader5", - "GL_NV_half_float", - "GL_NV_light_max_exponent", - "GL_NV_multisample_coverage", - "GL_NV_multisample_filter_hint", - "GL_NV_occlusion_query", - "GL_NV_packed_depth_stencil", - "GL_NV_parameter_buffer_object", - "GL_NV_parameter_buffer_object2", - "GL_NV_pixel_data_range", - "GL_NV_point_sprite", - "GL_NV_present_video", - "GL_NV_primitive_restart", - "GL_NV_register_combiners", - "GL_NV_register_combiners2", - "GL_NV_shader_buffer_load", - "GL_NV_shader_buffer_store", - "GL_NV_tessellation_program5", - "GL_NV_texgen_emboss", - "GL_NV_texgen_reflection", - "GL_NV_texture_barrier", - "GL_NV_texture_compression_vtc", - "GL_NV_texture_env_combine4", - "GL_NV_texture_expand_normal", - "GL_NV_texture_multisample", - "GL_NV_texture_rectangle", - "GL_NV_texture_shader", - "GL_NV_texture_shader2", - "GL_NV_texture_shader3", - "GL_NV_transform_feedback", - "GL_NV_transform_feedback2", - "GL_NV_vdpau_interop", - "GL_NV_vertex_array_range", - "GL_NV_vertex_array_range2", - "GL_NV_vertex_attrib_integer_64bit", - "GL_NV_vertex_buffer_unified_memory", - "GL_NV_vertex_program", - "GL_NV_vertex_program1_1", - "GL_NV_vertex_program2", - "GL_NV_vertex_program2_option", - "GL_NV_vertex_program3", - "GL_NV_vertex_program4", - "GL_NV_video_capture", - "GL_OES_read_format", - "GL_OML_interlace", - "GL_OML_resample", - "GL_OML_subsample", - "GL_PGI_misc_hints", - "GL_PGI_vertex_hints", - "GL_REND_screen_coordinates", - "GL_S3_s3tc", - "GL_SGI_color_matrix", - "GL_SGI_color_table", - "GL_SGI_depth_pass_instrument", - "GL_SGIS_detail_texture", - "GL_SGIS_fog_function", - "GL_SGIS_generate_mipmap", - "GL_SGIS_multisample", - "GL_SGIS_pixel_texture", - "GL_SGIS_point_line_texgen", - "GL_SGIS_point_parameters", - "GL_SGIS_sharpen_texture", - "GL_SGIS_texture4D", - "GL_SGIS_texture_border_clamp", - "GL_SGIS_texture_color_mask", - "GL_SGIS_texture_edge_clamp", - "GL_SGIS_texture_filter4", - "GL_SGIS_texture_lod", - "GL_SGIS_texture_select", - "GL_SGI_texture_color_table", - "GL_SGIX_async", - "GL_SGIX_async_histogram", - "GL_SGIX_async_pixel", - "GL_SGIX_blend_alpha_minmax", - "GL_SGIX_calligraphic_fragment", - "GL_SGIX_clipmap", - "GL_SGIX_convolution_accuracy", - "GL_SGIX_depth_pass_instrument", - "GL_SGIX_depth_texture", - "GL_SGIX_flush_raster", - "GL_SGIX_fog_offset", - "GL_SGIX_fog_scale", - "GL_SGIX_fragment_lighting", - "GL_SGIX_framezoom", - "GL_SGIX_igloo_interface", - "GL_SGIX_impact_pixel_texture", - "GL_SGIX_instruments", - "GL_SGIX_interlace", - "GL_SGIX_ir_instrument1", - "GL_SGIX_list_priority", - "GL_SGIX_pixel_texture", - "GL_SGIX_pixel_tiles", - "GL_SGIX_polynomial_ffd", - "GL_SGIX_reference_plane", - "GL_SGIX_resample", - "GL_SGIX_scalebias_hint", - "GL_SGIX_shadow", - "GL_SGIX_shadow_ambient", - "GL_SGIX_sprite", - "GL_SGIX_subsample", - "GL_SGIX_tag_sample_buffer", - "GL_SGIX_texture_add_env", - "GL_SGIX_texture_coordinate_clamp", - "GL_SGIX_texture_lod_bias", - "GL_SGIX_texture_multi_buffer", - "GL_SGIX_texture_scale_bias", - "GL_SGIX_texture_select", - "GL_SGIX_vertex_preclip", - "GL_SGIX_ycrcb", - "GL_SGIX_ycrcba", - "GL_SGIX_ycrcb_subsample", - "GL_SUN_convolution_border_modes", - "GL_SUN_global_alpha", - "GL_SUN_mesh_array", - "GL_SUN_slice_accum", - "GL_SUN_triangle_list", - "GL_SUN_vertex", - "GL_SUNX_constant_data", - "GL_WIN_phong_shading", - "GL_WIN_specular_fog", - // unofficial stuff - "GL_NVX_gpu_memory_info" -}; - - -class COpenGLExtensionHandler -{ - public: - enum EOpenGLFeatures { - IRR_3DFX_multisample = 0, - IRR_3DFX_tbuffer, - IRR_3DFX_texture_compression_FXT1, - IRR_AMD_blend_minmax_factor, - IRR_AMD_conservative_depth, - IRR_AMD_debug_output, - IRR_AMD_depth_clamp_separate, - IRR_AMD_draw_buffers_blend, - IRR_AMD_multi_draw_indirect, - IRR_AMD_name_gen_delete, - IRR_AMD_performance_monitor, - IRR_AMD_sample_positions, - IRR_AMD_seamless_cubemap_per_texture, - IRR_AMD_shader_stencil_export, - IRR_AMD_texture_texture4, - IRR_AMD_transform_feedback3_lines_triangles, - IRR_AMD_vertex_shader_tesselator, - IRR_APPLE_aux_depth_stencil, - IRR_APPLE_client_storage, - IRR_APPLE_element_array, - IRR_APPLE_fence, - IRR_APPLE_float_pixels, - IRR_APPLE_flush_buffer_range, - IRR_APPLE_object_purgeable, - IRR_APPLE_rgb_422, - IRR_APPLE_row_bytes, - IRR_APPLE_specular_vector, - IRR_APPLE_texture_range, - IRR_APPLE_transform_hint, - IRR_APPLE_vertex_array_object, - IRR_APPLE_vertex_array_range, - IRR_APPLE_vertex_program_evaluators, - IRR_APPLE_ycbcr_422, - IRR_ARB_base_instance, - IRR_ARB_blend_func_extended, - IRR_ARB_cl_event, - IRR_ARB_color_buffer_float, - IRR_ARB_compatibility, - IRR_ARB_compressed_texture_pixel_storage, - IRR_ARB_conservative_depth, - IRR_ARB_copy_buffer, - IRR_ARB_debug_output, - IRR_ARB_depth_buffer_float, - IRR_ARB_depth_clamp, - IRR_ARB_depth_texture, - IRR_ARB_draw_buffers, - IRR_ARB_draw_buffers_blend, - IRR_ARB_draw_elements_base_vertex, - IRR_ARB_draw_indirect, - IRR_ARB_draw_instanced, - IRR_ARB_ES2_compatibility, - IRR_ARB_explicit_attrib_location, - IRR_ARB_fragment_coord_conventions, - IRR_ARB_fragment_program, - IRR_ARB_fragment_program_shadow, - IRR_ARB_fragment_shader, - IRR_ARB_framebuffer_object, - IRR_ARB_framebuffer_sRGB, - IRR_ARB_geometry_shader4, - IRR_ARB_get_program_binary, - IRR_ARB_gpu_shader5, - IRR_ARB_gpu_shader_fp64, - IRR_ARB_half_float_pixel, - IRR_ARB_half_float_vertex, - IRR_ARB_imaging, - IRR_ARB_instanced_arrays, - IRR_ARB_internalformat_query, - IRR_ARB_map_buffer_alignment, - IRR_ARB_map_buffer_range, - IRR_ARB_matrix_palette, - IRR_ARB_multisample, - IRR_ARB_multitexture, - IRR_ARB_occlusion_query, - IRR_ARB_occlusion_query2, - IRR_ARB_pixel_buffer_object, - IRR_ARB_point_parameters, - IRR_ARB_point_sprite, - IRR_ARB_provoking_vertex, - IRR_ARB_robustness, - IRR_ARB_sample_shading, - IRR_ARB_sampler_objects, - IRR_ARB_seamless_cube_map, - IRR_ARB_separate_shader_objects, - IRR_ARB_shader_atomic_counters, - IRR_ARB_shader_bit_encoding, - IRR_ARB_shader_image_load_store, - IRR_ARB_shader_objects, - IRR_ARB_shader_precision, - IRR_ARB_shader_stencil_export, - IRR_ARB_shader_subroutine, - IRR_ARB_shader_texture_lod, - IRR_ARB_shading_language_100, - IRR_ARB_shading_language_420pack, - IRR_ARB_shading_language_include, - IRR_ARB_shading_language_packing, - IRR_ARB_shadow, - IRR_ARB_shadow_ambient, - IRR_ARB_sync, - IRR_ARB_tessellation_shader, - IRR_ARB_texture_border_clamp, - IRR_ARB_texture_buffer_object, - IRR_ARB_texture_buffer_object_rgb32, - IRR_ARB_texture_compression, - IRR_ARB_texture_compression_bptc, - IRR_ARB_texture_compression_rgtc, - IRR_ARB_texture_cube_map, - IRR_ARB_texture_cube_map_array, - IRR_ARB_texture_env_add, - IRR_ARB_texture_env_combine, - IRR_ARB_texture_env_crossbar, - IRR_ARB_texture_env_dot3, - IRR_ARB_texture_float, - IRR_ARB_texture_gather, - IRR_ARB_texture_mirrored_repeat, - IRR_ARB_texture_multisample, - IRR_ARB_texture_non_power_of_two, - IRR_ARB_texture_query_lod, - IRR_ARB_texture_rectangle, - IRR_ARB_texture_rg, - IRR_ARB_texture_rgb10_a2ui, - IRR_ARB_texture_storage, - IRR_ARB_texture_swizzle, - IRR_ARB_timer_query, - IRR_ARB_transform_feedback2, - IRR_ARB_transform_feedback3, - IRR_ARB_transform_feedback_instanced, - IRR_ARB_transpose_matrix, - IRR_ARB_uniform_buffer_object, - IRR_ARB_vertex_array_bgra, - IRR_ARB_vertex_array_object, - IRR_ARB_vertex_attrib_64bit, - IRR_ARB_vertex_blend, - IRR_ARB_vertex_buffer_object, - IRR_ARB_vertex_program, - IRR_ARB_vertex_shader, - IRR_ARB_vertex_type_2_10_10_10_rev, - IRR_ARB_viewport_array, - IRR_ARB_window_pos, - IRR_ATI_draw_buffers, - IRR_ATI_element_array, - IRR_ATI_envmap_bumpmap, - IRR_ATI_fragment_shader, - IRR_ATI_map_object_buffer, - IRR_ATI_meminfo, - IRR_ATI_pixel_format_float, - IRR_ATI_pn_triangles, - IRR_ATI_separate_stencil, - IRR_ATI_text_fragment_shader, - IRR_ATI_texture_env_combine3, - IRR_ATI_texture_float, - IRR_ATI_texture_mirror_once, - IRR_ATI_vertex_array_object, - IRR_ATI_vertex_attrib_array_object, - IRR_ATI_vertex_streams, - IRR_EXT_422_pixels, - IRR_EXT_abgr, - IRR_EXT_bgra, - IRR_EXT_bindable_uniform, - IRR_EXT_blend_color, - IRR_EXT_blend_equation_separate, - IRR_EXT_blend_func_separate, - IRR_EXT_blend_logic_op, - IRR_EXT_blend_minmax, - IRR_EXT_blend_subtract, - IRR_EXT_clip_volume_hint, - IRR_EXT_cmyka, - IRR_EXT_color_subtable, - IRR_EXT_compiled_vertex_array, - IRR_EXT_convolution, - IRR_EXT_coordinate_frame, - IRR_EXT_copy_texture, - IRR_EXT_cull_vertex, - IRR_EXT_depth_bounds_test, - IRR_EXT_direct_state_access, - IRR_EXT_draw_buffers2, - IRR_EXT_draw_instanced, - IRR_EXT_draw_range_elements, - IRR_EXT_fog_coord, - IRR_EXT_framebuffer_blit, - IRR_EXT_framebuffer_multisample, - IRR_EXT_framebuffer_multisample_blit_scaled, - IRR_EXT_framebuffer_object, - IRR_EXT_framebuffer_sRGB, - IRR_EXT_geometry_shader4, - IRR_EXT_gpu_program_parameters, - IRR_EXT_gpu_shader4, - IRR_EXT_histogram, - IRR_EXT_index_array_formats, - IRR_EXT_index_func, - IRR_EXT_index_material, - IRR_EXT_index_texture, - IRR_EXT_light_texture, - IRR_EXT_misc_attribute, - IRR_EXT_multi_draw_arrays, - IRR_EXT_multisample, - IRR_EXT_packed_depth_stencil, - IRR_EXT_packed_float, - IRR_EXT_packed_pixels, - IRR_EXT_paletted_texture, - IRR_EXT_pixel_buffer_object, - IRR_EXT_pixel_transform, - IRR_EXT_pixel_transform_color_table, - IRR_EXT_point_parameters, - IRR_EXT_polygon_offset, - IRR_EXT_provoking_vertex, - IRR_EXT_rescale_normal, - IRR_EXT_secondary_color, - IRR_EXT_separate_shader_objects, - IRR_EXT_separate_specular_color, - IRR_EXT_shader_image_load_store, - IRR_EXT_shadow_funcs, - IRR_EXT_shared_texture_palette, - IRR_EXT_stencil_clear_tag, - IRR_EXT_stencil_two_side, - IRR_EXT_stencil_wrap, - IRR_EXT_subtexture, - IRR_EXT_texture, - IRR_EXT_texture3D, - IRR_EXT_texture_array, - IRR_EXT_texture_buffer_object, - IRR_EXT_texture_compression_latc, - IRR_EXT_texture_compression_rgtc, - IRR_EXT_texture_compression_s3tc, - IRR_EXT_texture_cube_map, - IRR_EXT_texture_env_add, - IRR_EXT_texture_env_combine, - IRR_EXT_texture_env_dot3, - IRR_EXT_texture_filter_anisotropic, - IRR_EXT_texture_integer, - IRR_EXT_texture_lod_bias, - IRR_EXT_texture_mirror_clamp, - IRR_EXT_texture_object, - IRR_EXT_texture_perturb_normal, - IRR_EXT_texture_shared_exponent, - IRR_EXT_texture_snorm, - IRR_EXT_texture_sRGB, - IRR_EXT_texture_sRGB_decode, - IRR_EXT_texture_swizzle, - IRR_EXT_timer_query, - IRR_EXT_transform_feedback, - IRR_EXT_vertex_array, - IRR_EXT_vertex_array_bgra, - IRR_EXT_vertex_attrib_64bit, - IRR_EXT_vertex_shader, - IRR_EXT_vertex_weighting, - IRR_EXT_x11_sync_object, - IRR_FfdMaskSGIX, - IRR_GREMEDY_frame_terminator, - IRR_GREMEDY_string_marker, - IRR_HP_convolution_border_modes, - IRR_HP_image_transform, - IRR_HP_occlusion_test, - IRR_HP_texture_lighting, - IRR_IBM_cull_vertex, - IRR_IBM_multimode_draw_arrays, - IRR_IBM_rasterpos_clip, - IRR_IBM_texture_mirrored_repeat, - IRR_IBM_vertex_array_lists, - IRR_INGR_blend_func_separate, - IRR_INGR_color_clamp, - IRR_INGR_interlace_read, - IRR_INGR_palette_buffer, - IRR_INTEL_parallel_arrays, - IRR_INTEL_texture_scissor, - IRR_MESA_pack_invert, - IRR_MESA_resize_buffers, - IRR_MESA_window_pos, - IRR_MESAX_texture_stack, - IRR_MESA_ycbcr_texture, - IRR_NV_blend_square, - IRR_NV_conditional_render, - IRR_NV_copy_depth_to_color, - IRR_NV_copy_image, - IRR_NV_depth_buffer_float, - IRR_NV_depth_clamp, - IRR_NV_evaluators, - IRR_NV_explicit_multisample, - IRR_NV_fence, - IRR_NV_float_buffer, - IRR_NV_fog_distance, - IRR_NV_fragment_program, - IRR_NV_fragment_program2, - IRR_NV_fragment_program4, - IRR_NV_fragment_program_option, - IRR_NV_framebuffer_multisample_coverage, - IRR_NV_geometry_program4, - IRR_NV_geometry_shader4, - IRR_NV_gpu_program4, - IRR_NV_gpu_program5, - IRR_NV_gpu_shader5, - IRR_NV_half_float, - IRR_NV_light_max_exponent, - IRR_NV_multisample_coverage, - IRR_NV_multisample_filter_hint, - IRR_NV_occlusion_query, - IRR_NV_packed_depth_stencil, - IRR_NV_parameter_buffer_object, - IRR_NV_parameter_buffer_object2, - IRR_NV_pixel_data_range, - IRR_NV_point_sprite, - IRR_NV_present_video, - IRR_NV_primitive_restart, - IRR_NV_register_combiners, - IRR_NV_register_combiners2, - IRR_NV_shader_buffer_load, - IRR_NV_shader_buffer_store, - IRR_NV_tessellation_program5, - IRR_NV_texgen_emboss, - IRR_NV_texgen_reflection, - IRR_NV_texture_barrier, - IRR_NV_texture_compression_vtc, - IRR_NV_texture_env_combine4, - IRR_NV_texture_expand_normal, - IRR_NV_texture_multisample, - IRR_NV_texture_rectangle, - IRR_NV_texture_shader, - IRR_NV_texture_shader2, - IRR_NV_texture_shader3, - IRR_NV_transform_feedback, - IRR_NV_transform_feedback2, - IRR_NV_vdpau_interop, - IRR_NV_vertex_array_range, - IRR_NV_vertex_array_range2, - IRR_NV_vertex_attrib_integer_64bit, - IRR_NV_vertex_buffer_unified_memory, - IRR_NV_vertex_program, - IRR_NV_vertex_program1_1, - IRR_NV_vertex_program2, - IRR_NV_vertex_program2_option, - IRR_NV_vertex_program3, - IRR_NV_vertex_program4, - IRR_NV_video_capture, - IRR_OES_read_format, - IRR_OML_interlace, - IRR_OML_resample, - IRR_OML_subsample, - IRR_PGI_misc_hints, - IRR_PGI_vertex_hints, - IRR_REND_screen_coordinates, - IRR_S3_s3tc, - IRR_SGI_color_matrix, - IRR_SGI_color_table, - IRR_SGI_depth_pass_instrument, - IRR_SGIS_detail_texture, - IRR_SGIS_fog_function, - IRR_SGIS_generate_mipmap, - IRR_SGIS_multisample, - IRR_SGIS_pixel_texture, - IRR_SGIS_point_line_texgen, - IRR_SGIS_point_parameters, - IRR_SGIS_sharpen_texture, - IRR_SGIS_texture4D, - IRR_SGIS_texture_border_clamp, - IRR_SGIS_texture_color_mask, - IRR_SGIS_texture_edge_clamp, - IRR_SGIS_texture_filter4, - IRR_SGIS_texture_lod, - IRR_SGIS_texture_select, - IRR_SGI_texture_color_table, - IRR_SGIX_async, - IRR_SGIX_async_histogram, - IRR_SGIX_async_pixel, - IRR_SGIX_blend_alpha_minmax, - IRR_SGIX_calligraphic_fragment, - IRR_SGIX_clipmap, - IRR_SGIX_convolution_accuracy, - IRR_SGIX_depth_pass_instrument, - IRR_SGIX_depth_texture, - IRR_SGIX_flush_raster, - IRR_SGIX_fog_offset, - IRR_SGIX_fog_scale, - IRR_SGIX_fragment_lighting, - IRR_SGIX_framezoom, - IRR_SGIX_igloo_interface, - IRR_SGIX_impact_pixel_texture, - IRR_SGIX_instruments, - IRR_SGIX_interlace, - IRR_SGIX_ir_instrument1, - IRR_SGIX_list_priority, - IRR_SGIX_pixel_texture, - IRR_SGIX_pixel_tiles, - IRR_SGIX_polynomial_ffd, - IRR_SGIX_reference_plane, - IRR_SGIX_resample, - IRR_SGIX_scalebias_hint, - IRR_SGIX_shadow, - IRR_SGIX_shadow_ambient, - IRR_SGIX_sprite, - IRR_SGIX_subsample, - IRR_SGIX_tag_sample_buffer, - IRR_SGIX_texture_add_env, - IRR_SGIX_texture_coordinate_clamp, - IRR_SGIX_texture_lod_bias, - IRR_SGIX_texture_multi_buffer, - IRR_SGIX_texture_scale_bias, - IRR_SGIX_texture_select, - IRR_SGIX_vertex_preclip, - IRR_SGIX_ycrcb, - IRR_SGIX_ycrcba, - IRR_SGIX_ycrcb_subsample, - IRR_SUN_convolution_border_modes, - IRR_SUN_global_alpha, - IRR_SUN_mesh_array, - IRR_SUN_slice_accum, - IRR_SUN_triangle_list, - IRR_SUN_vertex, - IRR_SUNX_constant_data, - IRR_WIN_phong_shading, - IRR_WIN_specular_fog, - IRR_NVX_gpu_memory_info, - IRR_OpenGL_Feature_Count - }; - - - // constructor - COpenGLExtensionHandler(); - - // deferred initialization - void initExtensions(bool stencilBuffer); - - //! queries the features of the driver, returns true if feature is available - bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const; - - //! queries the features of the driver, returns true if feature is available - bool queryOpenGLFeature(EOpenGLFeatures feature) const - { - return FeatureAvailable[feature]; - } - - //! show all features with availablity - void dump() const; - - void dumpFramebufferFormats() const; - - // Some variables for properties - bool StencilBuffer; - bool MultiTextureExtension; - bool TextureCompressionExtension; - - // Some non-boolean properties - //! Maxmimum texture layers supported by the fixed pipeline - u8 MaxSupportedTextures; - //! Maxmimum texture layers supported by the engine - u8 MaxTextureUnits; - //! Maximum hardware lights supported - u8 MaxLights; - //! Maximal Anisotropy - u8 MaxAnisotropy; - //! Number of user clipplanes - u8 MaxUserClipPlanes; - //! Number of auxiliary buffers - u8 MaxAuxBuffers; - //! Number of rendertargets available as MRTs - u8 MaxMultipleRenderTargets; - //! Optimal number of indices per meshbuffer - u32 MaxIndices; - //! Maximal texture dimension - u32 MaxTextureSize; - //! Maximal vertices handled by geometry shaders - u32 MaxGeometryVerticesOut; - //! Maximal LOD Bias - f32 MaxTextureLODBias; - //! Minimal and maximal supported thickness for lines without smoothing - GLfloat DimAliasedLine[2]; - //! Minimal and maximal supported thickness for points without smoothing - GLfloat DimAliasedPoint[2]; - //! Minimal and maximal supported thickness for lines with smoothing - GLfloat DimSmoothedLine[2]; - //! Minimal and maximal supported thickness for points with smoothing - GLfloat DimSmoothedPoint[2]; - - //! OpenGL version as Integer: 100*Major+Minor, i.e. 2.1 becomes 201 - u16 Version; - //! GLSL version as Integer: 100*Major+Minor - u16 ShaderLanguageVersion; - - bool OcclusionQuerySupport; - - // public access to the (loaded) extensions. - // general functions - void extGlActiveTexture(GLenum texture); - void extGlClientActiveTexture(GLenum texture); - void extGlPointParameterf(GLint loc, GLfloat f); - void extGlPointParameterfv(GLint loc, const GLfloat *v); - void extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); - void extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); - void extGlCompressedTexImage2D(GLenum target, GLint level, - GLenum internalformat, GLsizei width, GLsizei height, - GLint border, GLsizei imageSize, const void* data); - - // shader programming - void extGlGenPrograms(GLsizei n, GLuint *programs); - void extGlBindProgram(GLenum target, GLuint program); - void extGlProgramString(GLenum target, GLenum format, GLsizei len, const GLvoid *string); - void extGlLoadProgram(GLenum target, GLuint id, GLsizei len, const GLubyte *string); - void extGlDeletePrograms(GLsizei n, const GLuint *programs); - void extGlProgramLocalParameter4fv(GLenum, GLuint, const GLfloat *); - GLhandleARB extGlCreateShaderObject(GLenum shaderType); - GLuint extGlCreateShader(GLenum shaderType); - // note: Due to the type confusion between shader_objects and OpenGL 2.0 - // we have to add the ARB extension for proper method definitions in case - // that handleARB and uint are the same type - void extGlShaderSourceARB(GLhandleARB shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings); - void extGlShaderSource(GLuint shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings); - // note: Due to the type confusion between shader_objects and OpenGL 2.0 - // we have to add the ARB extension for proper method definitions in case - // that handleARB and uint are the same type - void extGlCompileShaderARB(GLhandleARB shader); - void extGlCompileShader(GLuint shader); - GLhandleARB extGlCreateProgramObject(void); - GLuint extGlCreateProgram(void); - void extGlAttachObject(GLhandleARB program, GLhandleARB shader); - void extGlAttachShader(GLuint program, GLuint shader); - void extGlLinkProgramARB(GLhandleARB program); - // note: Due to the type confusion between shader_objects and OpenGL 2.0 - // we have to add the ARB extension for proper method definitions in case - // that handleARB and uint are the same type - void extGlLinkProgram(GLuint program); - void extGlUseProgramObject(GLhandleARB prog); - void extGlUseProgram(GLuint prog); - void extGlDeleteObject(GLhandleARB object); - void extGlDeleteProgram(GLuint object); - void extGlDeleteShader(GLuint shader); - void extGlGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); - void extGlGetAttachedObjects(GLhandleARB program, GLsizei maxcount, GLsizei* count, GLhandleARB* shaders); - void extGlGetInfoLog(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); - void extGlGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog); - void extGlGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog); - void extGlGetObjectParameteriv(GLhandleARB object, GLenum type, GLint *param); - void extGlGetShaderiv(GLuint shader, GLenum type, GLint *param); - void extGlGetProgramiv(GLuint program, GLenum type, GLint *param); - GLint extGlGetUniformLocationARB(GLhandleARB program, const char *name); - GLint extGlGetUniformLocation(GLuint program, const char *name); - void extGlUniform1fv(GLint loc, GLsizei count, const GLfloat *v); - void extGlUniform2fv(GLint loc, GLsizei count, const GLfloat *v); - void extGlUniform3fv(GLint loc, GLsizei count, const GLfloat *v); - void extGlUniform4fv(GLint loc, GLsizei count, const GLfloat *v); - void extGlUniform1bv(GLint loc, GLsizei count, const bool *v); - void extGlUniform2bv(GLint loc, GLsizei count, const bool *v); - void extGlUniform3bv(GLint loc, GLsizei count, const bool *v); - void extGlUniform4bv(GLint loc, GLsizei count, const bool *v); - void extGlUniform1iv(GLint loc, GLsizei count, const GLint *v); - void extGlUniform2iv(GLint loc, GLsizei count, const GLint *v); - void extGlUniform3iv(GLint loc, GLsizei count, const GLint *v); - void extGlUniform4iv(GLint loc, GLsizei count, const GLint *v); - void extGlUniformMatrix2fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v); - void extGlUniformMatrix3fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v); - void extGlUniformMatrix4fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v); - void extGlGetActiveUniformARB(GLhandleARB program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); - void extGlGetActiveUniform(GLuint program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLchar *name); - - // framebuffer objects - void extGlBindFramebuffer(GLenum target, GLuint framebuffer); - void extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); - void extGlGenFramebuffers(GLsizei n, GLuint *framebuffers); - GLenum extGlCheckFramebufferStatus(GLenum target); - void extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); - void extGlBindRenderbuffer(GLenum target, GLuint renderbuffer); - void extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); - void extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers); - void extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); - void extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); - void extGlGenerateMipmap(GLenum target); - void extGlActiveStencilFace(GLenum face); - void extGlDrawBuffers(GLsizei n, const GLenum *bufs); - - // vertex buffer object - void extGlGenBuffers(GLsizei n, GLuint *buffers); - void extGlBindBuffer(GLenum target, GLuint buffer); - void extGlBufferData(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); - void extGlDeleteBuffers(GLsizei n, const GLuint *buffers); - void extGlBufferSubData (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); - void extGlGetBufferSubData (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); - void *extGlMapBuffer (GLenum target, GLenum access); - GLboolean extGlUnmapBuffer (GLenum target); - GLboolean extGlIsBuffer (GLuint buffer); - void extGlGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); - void extGlGetBufferPointerv (GLenum target, GLenum pname, GLvoid **params); - void extGlProvokingVertex(GLenum mode); - void extGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); - void extGlEnableIndexed(GLenum target, GLuint index); - void extGlDisableIndexed(GLenum target, GLuint index); - void extGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst); - void extGlBlendEquationIndexed(GLuint buf, GLenum mode); - void extGlProgramParameteri(GLhandleARB program, GLenum pname, GLint value); - - // occlusion query - void extGlGenQueries(GLsizei n, GLuint *ids); - void extGlDeleteQueries(GLsizei n, const GLuint *ids); - GLboolean extGlIsQuery(GLuint id); - void extGlBeginQuery(GLenum target, GLuint id); - void extGlEndQuery(GLenum target); - void extGlGetQueryiv(GLenum target, GLenum pname, GLint *params); - void extGlGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); - void extGlGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); - - // generic vsync setting method for several extensions - void extGlSwapInterval(int interval); - - // blend operations - void extGlBlendEquation(GLenum mode); - - // the global feature array - bool FeatureAvailable[IRR_OpenGL_Feature_Count]; - - protected: - #if defined(_IRR_OPENGL_USE_EXTPOINTER_) - PFNGLACTIVETEXTUREARBPROC pGlActiveTextureARB; - PFNGLCLIENTACTIVETEXTUREARBPROC pGlClientActiveTextureARB; - PFNGLGENPROGRAMSARBPROC pGlGenProgramsARB; - PFNGLGENPROGRAMSNVPROC pGlGenProgramsNV; - PFNGLBINDPROGRAMARBPROC pGlBindProgramARB; - PFNGLBINDPROGRAMNVPROC pGlBindProgramNV; - PFNGLDELETEPROGRAMSARBPROC pGlDeleteProgramsARB; - PFNGLDELETEPROGRAMSNVPROC pGlDeleteProgramsNV; - PFNGLPROGRAMSTRINGARBPROC pGlProgramStringARB; - PFNGLLOADPROGRAMNVPROC pGlLoadProgramNV; - PFNGLPROGRAMLOCALPARAMETER4FVARBPROC pGlProgramLocalParameter4fvARB; - PFNGLCREATESHADEROBJECTARBPROC pGlCreateShaderObjectARB; - PFNGLSHADERSOURCEARBPROC pGlShaderSourceARB; - PFNGLCOMPILESHADERARBPROC pGlCompileShaderARB; - PFNGLCREATEPROGRAMOBJECTARBPROC pGlCreateProgramObjectARB; - PFNGLATTACHOBJECTARBPROC pGlAttachObjectARB; - PFNGLLINKPROGRAMARBPROC pGlLinkProgramARB; - PFNGLUSEPROGRAMOBJECTARBPROC pGlUseProgramObjectARB; - PFNGLDELETEOBJECTARBPROC pGlDeleteObjectARB; - PFNGLCREATEPROGRAMPROC pGlCreateProgram; - PFNGLUSEPROGRAMPROC pGlUseProgram; - PFNGLDELETEPROGRAMPROC pGlDeleteProgram; - PFNGLDELETESHADERPROC pGlDeleteShader; - PFNGLGETATTACHEDOBJECTSARBPROC pGlGetAttachedObjectsARB; - PFNGLGETATTACHEDSHADERSPROC pGlGetAttachedShaders; - PFNGLCREATESHADERPROC pGlCreateShader; - PFNGLSHADERSOURCEPROC pGlShaderSource; - PFNGLCOMPILESHADERPROC pGlCompileShader; - PFNGLATTACHSHADERPROC pGlAttachShader; - PFNGLLINKPROGRAMPROC pGlLinkProgram; - PFNGLGETINFOLOGARBPROC pGlGetInfoLogARB; - PFNGLGETSHADERINFOLOGPROC pGlGetShaderInfoLog; - PFNGLGETPROGRAMINFOLOGPROC pGlGetProgramInfoLog; - PFNGLGETOBJECTPARAMETERIVARBPROC pGlGetObjectParameterivARB; - PFNGLGETSHADERIVPROC pGlGetShaderiv; - PFNGLGETSHADERIVPROC pGlGetProgramiv; - PFNGLGETUNIFORMLOCATIONARBPROC pGlGetUniformLocationARB; - PFNGLGETUNIFORMLOCATIONPROC pGlGetUniformLocation; - PFNGLUNIFORM1FVARBPROC pGlUniform1fvARB; - PFNGLUNIFORM2FVARBPROC pGlUniform2fvARB; - PFNGLUNIFORM3FVARBPROC pGlUniform3fvARB; - PFNGLUNIFORM4FVARBPROC pGlUniform4fvARB; - PFNGLUNIFORM1IVARBPROC pGlUniform1ivARB; - PFNGLUNIFORM2IVARBPROC pGlUniform2ivARB; - PFNGLUNIFORM3IVARBPROC pGlUniform3ivARB; - PFNGLUNIFORM4IVARBPROC pGlUniform4ivARB; - PFNGLUNIFORMMATRIX2FVARBPROC pGlUniformMatrix2fvARB; - PFNGLUNIFORMMATRIX3FVARBPROC pGlUniformMatrix3fvARB; - PFNGLUNIFORMMATRIX4FVARBPROC pGlUniformMatrix4fvARB; - PFNGLGETACTIVEUNIFORMARBPROC pGlGetActiveUniformARB; - PFNGLGETACTIVEUNIFORMPROC pGlGetActiveUniform; - PFNGLPOINTPARAMETERFARBPROC pGlPointParameterfARB; - PFNGLPOINTPARAMETERFVARBPROC pGlPointParameterfvARB; - PFNGLSTENCILFUNCSEPARATEPROC pGlStencilFuncSeparate; - PFNGLSTENCILOPSEPARATEPROC pGlStencilOpSeparate; - PFNGLSTENCILFUNCSEPARATEATIPROC pGlStencilFuncSeparateATI; - PFNGLSTENCILOPSEPARATEATIPROC pGlStencilOpSeparateATI; - PFNGLCOMPRESSEDTEXIMAGE2DPROC pGlCompressedTexImage2D; - // ARB framebuffer object - PFNGLBINDFRAMEBUFFERPROC pGlBindFramebuffer; - PFNGLDELETEFRAMEBUFFERSPROC pGlDeleteFramebuffers; - PFNGLGENFRAMEBUFFERSPROC pGlGenFramebuffers; - PFNGLCHECKFRAMEBUFFERSTATUSPROC pGlCheckFramebufferStatus; - PFNGLFRAMEBUFFERTEXTURE2DPROC pGlFramebufferTexture2D; - PFNGLBINDRENDERBUFFERPROC pGlBindRenderbuffer; - PFNGLDELETERENDERBUFFERSPROC pGlDeleteRenderbuffers; - PFNGLGENRENDERBUFFERSPROC pGlGenRenderbuffers; - PFNGLRENDERBUFFERSTORAGEPROC pGlRenderbufferStorage; - PFNGLFRAMEBUFFERRENDERBUFFERPROC pGlFramebufferRenderbuffer; - PFNGLGENERATEMIPMAPPROC pGlGenerateMipmap; - // EXT framebuffer object - PFNGLBINDFRAMEBUFFEREXTPROC pGlBindFramebufferEXT; - PFNGLDELETEFRAMEBUFFERSEXTPROC pGlDeleteFramebuffersEXT; - PFNGLGENFRAMEBUFFERSEXTPROC pGlGenFramebuffersEXT; - PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC pGlCheckFramebufferStatusEXT; - PFNGLFRAMEBUFFERTEXTURE2DEXTPROC pGlFramebufferTexture2DEXT; - PFNGLBINDRENDERBUFFEREXTPROC pGlBindRenderbufferEXT; - PFNGLDELETERENDERBUFFERSEXTPROC pGlDeleteRenderbuffersEXT; - PFNGLGENRENDERBUFFERSEXTPROC pGlGenRenderbuffersEXT; - PFNGLRENDERBUFFERSTORAGEEXTPROC pGlRenderbufferStorageEXT; - PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC pGlFramebufferRenderbufferEXT; - PFNGLGENERATEMIPMAPEXTPROC pGlGenerateMipmapEXT; - PFNGLACTIVESTENCILFACEEXTPROC pGlActiveStencilFaceEXT; - PFNGLDRAWBUFFERSARBPROC pGlDrawBuffersARB; - PFNGLDRAWBUFFERSATIPROC pGlDrawBuffersATI; - PFNGLGENBUFFERSARBPROC pGlGenBuffersARB; - PFNGLBINDBUFFERARBPROC pGlBindBufferARB; - PFNGLBUFFERDATAARBPROC pGlBufferDataARB; - PFNGLDELETEBUFFERSARBPROC pGlDeleteBuffersARB; - PFNGLBUFFERSUBDATAARBPROC pGlBufferSubDataARB; - PFNGLGETBUFFERSUBDATAARBPROC pGlGetBufferSubDataARB; - PFNGLMAPBUFFERARBPROC pGlMapBufferARB; - PFNGLUNMAPBUFFERARBPROC pGlUnmapBufferARB; - PFNGLISBUFFERARBPROC pGlIsBufferARB; - PFNGLGETBUFFERPARAMETERIVARBPROC pGlGetBufferParameterivARB; - PFNGLGETBUFFERPOINTERVARBPROC pGlGetBufferPointervARB; - PFNGLPROVOKINGVERTEXPROC pGlProvokingVertexARB; - PFNGLPROVOKINGVERTEXEXTPROC pGlProvokingVertexEXT; - PFNGLCOLORMASKINDEXEDEXTPROC pGlColorMaskIndexedEXT; - PFNGLENABLEINDEXEDEXTPROC pGlEnableIndexedEXT; - PFNGLDISABLEINDEXEDEXTPROC pGlDisableIndexedEXT; - PFNGLBLENDFUNCINDEXEDAMDPROC pGlBlendFuncIndexedAMD; - PFNGLBLENDFUNCIPROC pGlBlendFunciARB; - PFNGLBLENDEQUATIONINDEXEDAMDPROC pGlBlendEquationIndexedAMD; - PFNGLBLENDEQUATIONIPROC pGlBlendEquationiARB; - PFNGLPROGRAMPARAMETERIARBPROC pGlProgramParameteriARB; - PFNGLPROGRAMPARAMETERIEXTPROC pGlProgramParameteriEXT; - PFNGLGENQUERIESARBPROC pGlGenQueriesARB; - PFNGLDELETEQUERIESARBPROC pGlDeleteQueriesARB; - PFNGLISQUERYARBPROC pGlIsQueryARB; - PFNGLBEGINQUERYARBPROC pGlBeginQueryARB; - PFNGLENDQUERYARBPROC pGlEndQueryARB; - PFNGLGETQUERYIVARBPROC pGlGetQueryivARB; - PFNGLGETQUERYOBJECTIVARBPROC pGlGetQueryObjectivARB; - PFNGLGETQUERYOBJECTUIVARBPROC pGlGetQueryObjectuivARB; - PFNGLGENOCCLUSIONQUERIESNVPROC pGlGenOcclusionQueriesNV; - PFNGLDELETEOCCLUSIONQUERIESNVPROC pGlDeleteOcclusionQueriesNV; - PFNGLISOCCLUSIONQUERYNVPROC pGlIsOcclusionQueryNV; - PFNGLBEGINOCCLUSIONQUERYNVPROC pGlBeginOcclusionQueryNV; - PFNGLENDOCCLUSIONQUERYNVPROC pGlEndOcclusionQueryNV; - PFNGLGETOCCLUSIONQUERYIVNVPROC pGlGetOcclusionQueryivNV; - PFNGLGETOCCLUSIONQUERYUIVNVPROC pGlGetOcclusionQueryuivNV; - PFNGLBLENDEQUATIONEXTPROC pGlBlendEquationEXT; - PFNGLBLENDEQUATIONPROC pGlBlendEquation; - #if defined(WGL_EXT_swap_control) - PFNWGLSWAPINTERVALEXTPROC pWglSwapIntervalEXT; - #endif - #if defined(GLX_SGI_swap_control) - PFNGLXSWAPINTERVALSGIPROC pGlxSwapIntervalSGI; - #endif - #if defined(GLX_EXT_swap_control) - PFNGLXSWAPINTERVALEXTPROC pGlxSwapIntervalEXT; - #endif - #if defined(GLX_MESA_swap_control) - PFNGLXSWAPINTERVALMESAPROC pGlxSwapIntervalMESA; - #endif - #endif -}; - -inline void COpenGLExtensionHandler::extGlActiveTexture(GLenum texture) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (MultiTextureExtension && pGlActiveTextureARB) - pGlActiveTextureARB(texture); -#else - if (MultiTextureExtension) -#ifdef GL_ARB_multitexture - glActiveTextureARB(texture); -#else - glActiveTexture(texture); -#endif -#endif -} - -inline void COpenGLExtensionHandler::extGlClientActiveTexture(GLenum texture) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (MultiTextureExtension && pGlClientActiveTextureARB) - pGlClientActiveTextureARB(texture); -#else - if (MultiTextureExtension) - glClientActiveTextureARB(texture); -#endif -} - -inline void COpenGLExtensionHandler::extGlGenPrograms(GLsizei n, GLuint *programs) -{ - if (programs) - memset(programs,0,n*sizeof(GLuint)); -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGenProgramsARB) - pGlGenProgramsARB(n, programs); - else if (pGlGenProgramsNV) - pGlGenProgramsNV(n, programs); -#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) - glGenProgramsARB(n,programs); -#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program) - glGenProgramsNV(n,programs); -#else - os::Printer::log("glGenPrograms not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlBindProgram(GLenum target, GLuint program) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlBindProgramARB) - pGlBindProgramARB(target, program); - else if (pGlBindProgramNV) - pGlBindProgramNV(target, program); -#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) - glBindProgramARB(target, program); -#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program) - glBindProgramNV(target, program); -#else - os::Printer::log("glBindProgram not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlProgramString(GLenum target, GLenum format, GLsizei len, const GLvoid *string) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlProgramStringARB) - pGlProgramStringARB(target, format, len, string); -#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) - glProgramStringARB(target,format,len,string); -#else - os::Printer::log("glProgramString not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlLoadProgram(GLenum target, GLuint id, GLsizei len, const GLubyte *string) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlLoadProgramNV) - pGlLoadProgramNV(target, id, len, string); -#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program) - glLoadProgramNV(target,id,len,string); -#else - os::Printer::log("glLoadProgram not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDeletePrograms(GLsizei n, const GLuint *programs) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDeleteProgramsARB) - pGlDeleteProgramsARB(n, programs); - else if (pGlDeleteProgramsNV) - pGlDeleteProgramsNV(n, programs); -#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) - glDeleteProgramsARB(n,programs); -#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program) - glDeleteProgramsNV(n,programs); -#else - os::Printer::log("glDeletePrograms not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlProgramLocalParameter4fv(GLenum n, GLuint i, const GLfloat *f) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlProgramLocalParameter4fvARB) - pGlProgramLocalParameter4fvARB(n,i,f); -#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) - glProgramLocalParameter4fvARB(n,i,f); -#else - os::Printer::log("glProgramLocalParameter4fv not supported", ELL_ERROR); -#endif -} - -inline GLhandleARB COpenGLExtensionHandler::extGlCreateShaderObject(GLenum shaderType) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlCreateShaderObjectARB) - return pGlCreateShaderObjectARB(shaderType); -#elif defined(GL_ARB_shader_objects) - return glCreateShaderObjectARB(shaderType); -#else - os::Printer::log("glCreateShaderObject not supported", ELL_ERROR); -#endif - return 0; -} - -inline GLuint COpenGLExtensionHandler::extGlCreateShader(GLenum shaderType) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlCreateShader) - return pGlCreateShader(shaderType); -#elif defined(GL_VERSION_2_0) - return glCreateShader(shaderType); -#else - os::Printer::log("glCreateShader not supported", ELL_ERROR); -#endif - return 0; -} - -inline void COpenGLExtensionHandler::extGlShaderSourceARB(GLhandleARB shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlShaderSourceARB) - pGlShaderSourceARB(shader, numOfStrings, strings, lenOfStrings); -#elif defined(GL_ARB_shader_objects) - glShaderSourceARB(shader, numOfStrings, strings, (GLint *)lenOfStrings); -#else - os::Printer::log("glShaderSource not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlShaderSource(GLuint shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlShaderSource) - pGlShaderSource(shader, numOfStrings, strings, lenOfStrings); -#elif defined(GL_VERSION_2_0) - glShaderSource(shader, numOfStrings, strings, (GLint *)lenOfStrings); -#else - os::Printer::log("glShaderSource not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlCompileShaderARB(GLhandleARB shader) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlCompileShaderARB) - pGlCompileShaderARB(shader); -#elif defined(GL_ARB_shader_objects) - glCompileShaderARB(shader); -#else - os::Printer::log("glCompileShader not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlCompileShader(GLuint shader) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlCompileShader) - pGlCompileShader(shader); -#elif defined(GL_VERSION_2_0) - glCompileShader(shader); -#else - os::Printer::log("glCompileShader not supported", ELL_ERROR); -#endif -} - -inline GLhandleARB COpenGLExtensionHandler::extGlCreateProgramObject(void) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlCreateProgramObjectARB) - return pGlCreateProgramObjectARB(); -#elif defined(GL_ARB_shader_objects) - return glCreateProgramObjectARB(); -#else - os::Printer::log("glCreateProgramObject not supported", ELL_ERROR); -#endif - return 0; -} - -inline GLuint COpenGLExtensionHandler::extGlCreateProgram(void) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlCreateProgram) - return pGlCreateProgram(); -#elif defined(GL_VERSION_2_0) - return glCreateProgram(); -#else - os::Printer::log("glCreateProgram not supported", ELL_ERROR); -#endif - return 0; -} - -inline void COpenGLExtensionHandler::extGlAttachObject(GLhandleARB program, GLhandleARB shader) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlAttachObjectARB) - pGlAttachObjectARB(program, shader); -#elif defined(GL_ARB_shader_objects) - glAttachObjectARB(program, shader); -#else - os::Printer::log("glAttachObject not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlAttachShader(GLuint program, GLuint shader) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlAttachShader) - pGlAttachShader(program, shader); -#elif defined(GL_VERSION_2_0) - glAttachShader(program, shader); -#else - os::Printer::log("glAttachShader not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlLinkProgramARB(GLhandleARB program) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlLinkProgramARB) - pGlLinkProgramARB(program); -#elif defined(GL_ARB_shader_objects) - glLinkProgramARB(program); -#else - os::Printer::log("glLinkProgram not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlLinkProgram(GLuint program) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlLinkProgram) - pGlLinkProgram(program); -#elif defined(GL_VERSION_2_0) - glLinkProgram(program); -#else - os::Printer::log("glLinkProgram not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUseProgramObject(GLhandleARB prog) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUseProgramObjectARB) - pGlUseProgramObjectARB(prog); -#elif defined(GL_ARB_shader_objects) - glUseProgramObjectARB(prog); -#else - os::Printer::log("glUseProgramObject not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUseProgram(GLuint prog) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUseProgram) - pGlUseProgram(prog); -#elif defined(GL_VERSION_2_0) - glUseProgram(prog); -#else - os::Printer::log("glUseProgram not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDeleteObject(GLhandleARB object) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDeleteObjectARB) - pGlDeleteObjectARB(object); -#elif defined(GL_ARB_shader_objects) - glDeleteObjectARB(object); -#else - os::Printer::log("glDeleteObject not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDeleteProgram(GLuint object) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDeleteProgram) - pGlDeleteProgram(object); -#elif defined(GL_VERSION_2_0) - glDeleteProgram(object); -#else - os::Printer::log("glDeleteProgram not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDeleteShader(GLuint shader) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDeleteShader) - pGlDeleteShader(shader); -#elif defined(GL_VERSION_2_0) - glDeleteShader(shader); -#else - os::Printer::log("glDeleteShader not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetAttachedObjects(GLhandleARB program, GLsizei maxcount, GLsizei* count, GLhandleARB* shaders) -{ - if (count) - *count=0; -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetAttachedObjectsARB) - pGlGetAttachedObjectsARB(program, maxcount, count, shaders); -#elif defined(GL_ARB_shader_objects) - glGetAttachedObjectsARB(program, maxcount, count, shaders); -#else - os::Printer::log("glGetAttachedObjects not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) -{ - if (count) - *count=0; -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetAttachedShaders) - pGlGetAttachedShaders(program, maxcount, count, shaders); -#elif defined(GL_VERSION_2_0) - glGetAttachedShaders(program, maxcount, count, shaders); -#else - os::Printer::log("glGetAttachedShaders not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetInfoLog(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog) -{ - if (length) - *length=0; -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetInfoLogARB) - pGlGetInfoLogARB(object, maxLength, length, infoLog); -#elif defined(GL_ARB_shader_objects) - glGetInfoLogARB(object, maxLength, length, infoLog); -#else - os::Printer::log("glGetInfoLog not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog) -{ - if (length) - *length=0; -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetShaderInfoLog) - pGlGetShaderInfoLog(shader, maxLength, length, infoLog); -#elif defined(GL_VERSION_2_0) - glGetShaderInfoLog(shader, maxLength, length, infoLog); -#else - os::Printer::log("glGetShaderInfoLog not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog) -{ - if (length) - *length=0; -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetProgramInfoLog) - pGlGetProgramInfoLog(program, maxLength, length, infoLog); -#elif defined(GL_VERSION_2_0) - glGetProgramInfoLog(program, maxLength, length, infoLog); -#else - os::Printer::log("glGetProgramInfoLog not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetObjectParameteriv(GLhandleARB object, GLenum type, GLint *param) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetObjectParameterivARB) - pGlGetObjectParameterivARB(object, type, param); -#elif defined(GL_ARB_shader_objects) - glGetObjectParameterivARB(object, type, param); -#else - os::Printer::log("glGetObjectParameteriv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetShaderiv(GLuint shader, GLenum type, GLint *param) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetShaderiv) - pGlGetShaderiv(shader, type, param); -#elif defined(GL_VERSION_2_0) - glGetShaderiv(shader, type, param); -#else - os::Printer::log("glGetShaderiv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetProgramiv(GLuint program, GLenum type, GLint *param) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetProgramiv) - pGlGetProgramiv(program, type, param); -#elif defined(GL_VERSION_2_0) - glGetProgramiv(program, type, param); -#else - os::Printer::log("glGetProgramiv not supported", ELL_ERROR); -#endif -} - -inline GLint COpenGLExtensionHandler::extGlGetUniformLocationARB(GLhandleARB program, const char *name) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetUniformLocationARB) - return pGlGetUniformLocationARB(program, name); -#elif defined(GL_ARB_shader_objects) - return glGetUniformLocationARB(program, name); -#else - os::Printer::log("glGetUniformLocation not supported", ELL_ERROR); -#endif - return 0; -} - -inline GLint COpenGLExtensionHandler::extGlGetUniformLocation(GLuint program, const char *name) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetUniformLocation) - return pGlGetUniformLocation(program, name); -#elif defined(GL_VERSION_2_0) - return glGetUniformLocation(program, name); -#else - os::Printer::log("glGetUniformLocation not supported", ELL_ERROR); -#endif - return 0; -} - -inline void COpenGLExtensionHandler::extGlUniform1fv(GLint loc, GLsizei count, const GLfloat *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniform1fvARB) - pGlUniform1fvARB(loc, count, v); -#elif defined(GL_ARB_shader_objects) - glUniform1fvARB(loc, count, v); -#else - os::Printer::log("glUniform1fv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniform2fv(GLint loc, GLsizei count, const GLfloat *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniform2fvARB) - pGlUniform2fvARB(loc, count, v); -#elif defined(GL_ARB_shader_objects) - glUniform2fvARB(loc, count, v); -#else - os::Printer::log("glUniform2fv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniform3fv(GLint loc, GLsizei count, const GLfloat *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniform3fvARB) - pGlUniform3fvARB(loc, count, v); -#elif defined(GL_ARB_shader_objects) - glUniform3fvARB(loc, count, v); -#else - os::Printer::log("glUniform3fv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniform4fv(GLint loc, GLsizei count, const GLfloat *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniform4fvARB) - pGlUniform4fvARB(loc, count, v); -#elif defined(GL_ARB_shader_objects) - glUniform4fvARB(loc, count, v); -#else - os::Printer::log("glUniform4fv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniform1iv(GLint loc, GLsizei count, const GLint *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniform1ivARB) - pGlUniform1ivARB(loc, count, v); -#elif defined(GL_ARB_shader_objects) - glUniform1ivARB(loc, count, v); -#else - os::Printer::log("glUniform1iv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniform2iv(GLint loc, GLsizei count, const GLint *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniform2ivARB) - pGlUniform2ivARB(loc, count, v); -#elif defined(GL_ARB_shader_objects) - glUniform2ivARB(loc, count, v); -#else - os::Printer::log("glUniform2iv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniform3iv(GLint loc, GLsizei count, const GLint *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniform3ivARB) - pGlUniform3ivARB(loc, count, v); -#elif defined(GL_ARB_shader_objects) - glUniform3ivARB(loc, count, v); -#else - os::Printer::log("glUniform3iv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniform4iv(GLint loc, GLsizei count, const GLint *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniform4ivARB) - pGlUniform4ivARB(loc, count, v); -#elif defined(GL_ARB_shader_objects) - glUniform4ivARB(loc, count, v); -#else - os::Printer::log("glUniform4iv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniformMatrix2fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniformMatrix2fvARB) - pGlUniformMatrix2fvARB(loc, count, transpose, v); -#elif defined(GL_ARB_shader_objects) - glUniformMatrix2fvARB(loc, count, transpose, v); -#else - os::Printer::log("glUniformMatrix2fv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniformMatrix3fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniformMatrix3fvARB) - pGlUniformMatrix3fvARB(loc, count, transpose, v); -#elif defined(GL_ARB_shader_objects) - glUniformMatrix3fvARB(loc, count, transpose, v); -#else - os::Printer::log("glUniformMatrix3fv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlUniformMatrix4fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUniformMatrix4fvARB) - pGlUniformMatrix4fvARB(loc, count, transpose, v); -#elif defined(GL_ARB_shader_objects) - glUniformMatrix4fvARB(loc, count, transpose, v); -#else - os::Printer::log("glUniformMatrix4fv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetActiveUniformARB(GLhandleARB program, - GLuint index, GLsizei maxlength, GLsizei *length, - GLint *size, GLenum *type, GLcharARB *name) -{ - if (length) - *length=0; -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetActiveUniformARB) - pGlGetActiveUniformARB(program, index, maxlength, length, size, type, name); -#elif defined(GL_ARB_shader_objects) - glGetActiveUniformARB(program, index, maxlength, length, size, type, name); -#else - os::Printer::log("glGetActiveUniform not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetActiveUniform(GLuint program, - GLuint index, GLsizei maxlength, GLsizei *length, - GLint *size, GLenum *type, GLchar *name) -{ - if (length) - *length=0; -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetActiveUniform) - pGlGetActiveUniform(program, index, maxlength, length, size, type, name); -#elif defined(GL_VERSION_2_0) - glGetActiveUniform(program, index, maxlength, length, size, type, name); -#else - os::Printer::log("glGetActiveUniform not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlPointParameterf(GLint loc, GLfloat f) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlPointParameterfARB) - pGlPointParameterfARB(loc, f); -#elif defined(GL_ARB_point_parameters) - glPointParameterfARB(loc, f); -#else - os::Printer::log("glPointParameterf not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlPointParameterfv(GLint loc, const GLfloat *v) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlPointParameterfvARB) - pGlPointParameterfvARB(loc, v); -#elif defined(GL_ARB_point_parameters) - glPointParameterfvARB(loc, v); -#else - os::Printer::log("glPointParameterfv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlStencilFuncSeparate) - pGlStencilFuncSeparate(frontfunc, backfunc, ref, mask); - else if (pGlStencilFuncSeparateATI) - pGlStencilFuncSeparateATI(frontfunc, backfunc, ref, mask); -#elif defined(GL_VERSION_2_0) - glStencilFuncSeparate(frontfunc, backfunc, ref, mask); -#elif defined(GL_ATI_separate_stencil) - glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask); -#else - os::Printer::log("glStencilFuncSeparate not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlStencilOpSeparate) - pGlStencilOpSeparate(face, fail, zfail, zpass); - else if (pGlStencilOpSeparateATI) - pGlStencilOpSeparateATI(face, fail, zfail, zpass); -#elif defined(GL_VERSION_2_0) - glStencilOpSeparate(face, fail, zfail, zpass); -#elif defined(GL_ATI_separate_stencil) - glStencilOpSeparateATI(face, fail, zfail, zpass); -#else - os::Printer::log("glStencilOpSeparate not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, - GLsizei height, GLint border, GLsizei imageSize, const void* data) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlCompressedTexImage2D) - pGlCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); -#elif defined(GL_ARB_texture_compression) - glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); -#else - os::Printer::log("glCompressedTexImage2D not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlBindFramebuffer(GLenum target, GLuint framebuffer) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlBindFramebuffer) - pGlBindFramebuffer(target, framebuffer); - else if (pGlBindFramebufferEXT) - pGlBindFramebufferEXT(target, framebuffer); -#elif defined(GL_ARB_framebuffer_object) - glBindFramebuffer(target, framebuffer); -#elif defined(GL_EXT_framebuffer_object) - glBindFramebufferEXT(target, framebuffer); -#else - os::Printer::log("glBindFramebuffer not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDeleteFramebuffers) - pGlDeleteFramebuffers(n, framebuffers); - else if (pGlDeleteFramebuffersEXT) - pGlDeleteFramebuffersEXT(n, framebuffers); -#elif defined(GL_ARB_framebuffer_object) - glDeleteFramebuffers(n, framebuffers); -#elif defined(GL_EXT_framebuffer_object) - glDeleteFramebuffersEXT(n, framebuffers); -#else - os::Printer::log("glDeleteFramebuffers not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGenFramebuffers(GLsizei n, GLuint *framebuffers) -{ - if (framebuffers) - memset(framebuffers,0,n*sizeof(GLuint)); -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGenFramebuffers) - pGlGenFramebuffers(n, framebuffers); - else if (pGlGenFramebuffersEXT) - pGlGenFramebuffersEXT(n, framebuffers); -#elif defined(GL_ARB_framebuffer_object) - glGenFramebuffers(n, framebuffers); -#elif defined(GL_EXT_framebuffer_object) - glGenFramebuffersEXT(n, framebuffers); -#else - os::Printer::log("glGenFramebuffers not supported", ELL_ERROR); -#endif -} - -inline GLenum COpenGLExtensionHandler::extGlCheckFramebufferStatus(GLenum target) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlCheckFramebufferStatus) - return pGlCheckFramebufferStatus(target); - else if (pGlCheckFramebufferStatusEXT) - return pGlCheckFramebufferStatusEXT(target); - else - return 0; -#elif defined(GL_ARB_framebuffer_object) - return glCheckFramebufferStatus(target); -#elif defined(GL_EXT_framebuffer_object) - return glCheckFramebufferStatusEXT(target); -#else - os::Printer::log("glCheckFramebufferStatus not supported", ELL_ERROR); - return 0; -#endif -} - -inline void COpenGLExtensionHandler::extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlFramebufferTexture2D) - pGlFramebufferTexture2D(target, attachment, textarget, texture, level); - else if (pGlFramebufferTexture2DEXT) - pGlFramebufferTexture2DEXT(target, attachment, textarget, texture, level); -#elif defined(GL_ARB_framebuffer_object) - glFramebufferTexture2D(target, attachment, textarget, texture, level); -#elif defined(GL_EXT_framebuffer_object) - glFramebufferTexture2DEXT(target, attachment, textarget, texture, level); -#else - os::Printer::log("glFramebufferTexture2D not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlBindRenderbuffer(GLenum target, GLuint renderbuffer) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlBindRenderbuffer) - pGlBindRenderbuffer(target, renderbuffer); - else if (pGlBindRenderbufferEXT) - pGlBindRenderbufferEXT(target, renderbuffer); -#elif defined(GL_ARB_framebuffer_object) - glBindRenderbuffer(target, renderbuffer); -#elif defined(GL_EXT_framebuffer_object) - glBindRenderbufferEXT(target, renderbuffer); -#else - os::Printer::log("glBindRenderbuffer not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDeleteRenderbuffers) - pGlDeleteRenderbuffers(n, renderbuffers); - else if (pGlDeleteRenderbuffersEXT) - pGlDeleteRenderbuffersEXT(n, renderbuffers); -#elif defined(GL_ARB_framebuffer_object) - glDeleteRenderbuffers(n, renderbuffers); -#elif defined(GL_EXT_framebuffer_object) - glDeleteRenderbuffersEXT(n, renderbuffers); -#else - os::Printer::log("glDeleteRenderbuffers not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers) -{ - if (renderbuffers) - memset(renderbuffers,0,n*sizeof(GLuint)); -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGenRenderbuffers) - pGlGenRenderbuffers(n, renderbuffers); - else if (pGlGenRenderbuffersEXT) - pGlGenRenderbuffersEXT(n, renderbuffers); -#elif defined(GL_ARB_framebuffer_object) - glGenRenderbuffers(n, renderbuffers); -#elif defined(GL_EXT_framebuffer_object) - glGenRenderbuffersEXT(n, renderbuffers); -#else - os::Printer::log("glGenRenderbuffers not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlRenderbufferStorage) - pGlRenderbufferStorage(target, internalformat, width, height); - else if (pGlRenderbufferStorageEXT) - pGlRenderbufferStorageEXT(target, internalformat, width, height); -#elif defined(GL_ARB_framebuffer_object) - glRenderbufferStorage(target, internalformat, width, height); -#elif defined(GL_EXT_framebuffer_object) - glRenderbufferStorageEXT(target, internalformat, width, height); -#else - os::Printer::log("glRenderbufferStorage not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlFramebufferRenderbuffer) - pGlFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); - else if (pGlFramebufferRenderbufferEXT) - pGlFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer); -#elif defined(GL_ARB_framebuffer_object) - glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); -#elif defined(GL_EXT_framebuffer_object) - glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer); -#else - os::Printer::log("glFramebufferRenderbuffer not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGenerateMipmap(GLenum target) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGenerateMipmap) - pGlGenerateMipmap(target); - else if (pGlGenerateMipmapEXT) - pGlGenerateMipmapEXT(target); -#elif defined(GL_ARB_framebuffer_object) - glGenerateMipmap(target); -#elif defined(GL_EXT_framebuffer_object) - glGenerateMipmapEXT(target); -#else - os::Printer::log("glGenerateMipmap not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlActiveStencilFace(GLenum face) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlActiveStencilFaceEXT) - pGlActiveStencilFaceEXT(face); -#elif defined(GL_EXT_stencil_two_side) - glActiveStencilFaceEXT(face); -#else - os::Printer::log("glActiveStencilFace not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDrawBuffers(GLsizei n, const GLenum *bufs) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDrawBuffersARB) - pGlDrawBuffersARB(n, bufs); - else if (pGlDrawBuffersATI) - pGlDrawBuffersATI(n, bufs); -#elif defined(GL_ARB_draw_buffers) - glDrawBuffersARB(n, bufs); -#elif defined(GL_ATI_draw_buffers) - glDrawBuffersATI(n, bufs); -#else - os::Printer::log("glDrawBuffers not supported", ELL_ERROR); -#endif -} - - -inline void COpenGLExtensionHandler::extGlGenBuffers(GLsizei n, GLuint *buffers) -{ - if (buffers) - memset(buffers,0,n*sizeof(GLuint)); -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGenBuffersARB) - pGlGenBuffersARB(n, buffers); -#elif defined(GL_ARB_vertex_buffer_object) - glGenBuffers(n, buffers); -#else - os::Printer::log("glGenBuffers not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlBindBuffer(GLenum target, GLuint buffer) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlBindBufferARB) - pGlBindBufferARB(target, buffer); -#elif defined(GL_ARB_vertex_buffer_object) - glBindBuffer(target, buffer); -#else - os::Printer::log("glBindBuffer not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlBufferData(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlBufferDataARB) - pGlBufferDataARB(target, size, data, usage); -#elif defined(GL_ARB_vertex_buffer_object) - glBufferData(target, size, data, usage); -#else - os::Printer::log("glBufferData not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDeleteBuffers(GLsizei n, const GLuint *buffers) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDeleteBuffersARB) - pGlDeleteBuffersARB(n, buffers); -#elif defined(GL_ARB_vertex_buffer_object) - glDeleteBuffers(n, buffers); -#else - os::Printer::log("glDeleteBuffers not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlBufferSubData(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlBufferSubDataARB) - pGlBufferSubDataARB(target, offset, size, data); -#elif defined(GL_ARB_vertex_buffer_object) - glBufferSubData(target, offset, size, data); -#else - os::Printer::log("glBufferSubData not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetBufferSubData(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetBufferSubDataARB) - pGlGetBufferSubDataARB(target, offset, size, data); -#elif defined(GL_ARB_vertex_buffer_object) - glGetBufferSubData(target, offset, size, data); -#else - os::Printer::log("glGetBufferSubData not supported", ELL_ERROR); -#endif -} - -inline void *COpenGLExtensionHandler::extGlMapBuffer(GLenum target, GLenum access) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlMapBufferARB) - return pGlMapBufferARB(target, access); - return 0; -#elif defined(GL_ARB_vertex_buffer_object) - return glMapBuffer(target, access); -#else - os::Printer::log("glMapBuffer not supported", ELL_ERROR); - return 0; -#endif -} - -inline GLboolean COpenGLExtensionHandler::extGlUnmapBuffer(GLenum target) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlUnmapBufferARB) - return pGlUnmapBufferARB(target); - return false; -#elif defined(GL_ARB_vertex_buffer_object) - return glUnmapBuffer(target); -#else - os::Printer::log("glUnmapBuffer not supported", ELL_ERROR); - return false; -#endif -} - -inline GLboolean COpenGLExtensionHandler::extGlIsBuffer(GLuint buffer) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlIsBufferARB) - return pGlIsBufferARB(buffer); - return false; -#elif defined(GL_ARB_vertex_buffer_object) - return glIsBuffer(buffer); -#else - os::Printer::log("glDeleteBuffers not supported", ELL_ERROR); - return false; -#endif -} - -inline void COpenGLExtensionHandler::extGlGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetBufferParameterivARB) - pGlGetBufferParameterivARB(target, pname, params); -#elif defined(GL_ARB_vertex_buffer_object) - glGetBufferParameteriv(target, pname, params); -#else - os::Printer::log("glGetBufferParameteriv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetBufferPointerv(GLenum target, GLenum pname, GLvoid **params) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetBufferPointervARB) - pGlGetBufferPointervARB(target, pname, params); -#elif defined(GL_ARB_vertex_buffer_object) - glGetBufferPointerv(target, pname, params); -#else - os::Printer::log("glGetBufferPointerv not supported", ELL_ERROR); -#endif -} - - -inline void COpenGLExtensionHandler::extGlProvokingVertex(GLenum mode) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (FeatureAvailable[IRR_ARB_provoking_vertex] && pGlProvokingVertexARB) - pGlProvokingVertexARB(mode); - else if (FeatureAvailable[IRR_EXT_provoking_vertex] && pGlProvokingVertexEXT) - pGlProvokingVertexEXT(mode); -#elif defined(GL_ARB_provoking_vertex) - glProvokingVertex(mode); -#elif defined(GL_EXT_provoking_vertex) - glProvokingVertexEXT(mode); -#else - os::Printer::log("glProvokingVertex not supported", ELL_ERROR); -#endif -} - - -inline void COpenGLExtensionHandler::extGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlColorMaskIndexedEXT) - pGlColorMaskIndexedEXT(buf, r, g, b, a); -#elif defined(GL_EXT_draw_buffers2) - glColorMaskIndexedEXT(buf, r, g, b, a); -#else - os::Printer::log("glColorMaskIndexed not supported", ELL_ERROR); -#endif -} - - -inline void COpenGLExtensionHandler::extGlEnableIndexed(GLenum target, GLuint index) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlEnableIndexedEXT) - pGlEnableIndexedEXT(target, index); -#elif defined(GL_EXT_draw_buffers2) - glEnableIndexedEXT(target, index); -#else - os::Printer::log("glEnableIndexed not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDisableIndexed(GLenum target, GLuint index) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlDisableIndexedEXT) - pGlDisableIndexedEXT(target, index); -#elif defined(GL_EXT_draw_buffers2) - glDisableIndexedEXT(target, index); -#else - os::Printer::log("glDisableIndexed not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendFunciARB) - pGlBlendFunciARB(buf, src, dst); - else if (FeatureAvailable[IRR_AMD_draw_buffers_blend] && pGlBlendFuncIndexedAMD) - pGlBlendFuncIndexedAMD(buf, src, dst); -#elif defined(GL_ARB_draw_buffers_blend) - glBlendFunciARB(buf, src, dst); -#elif defined(GL_AMD_draw_buffers_blend) - glBlendFuncIndexedAMD(buf, src, dst); -#else - os::Printer::log("glBlendFuncIndexed not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlBlendEquationIndexed(GLuint buf, GLenum mode) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendEquationiARB) - pGlBlendEquationiARB(buf, mode); - else if (FeatureAvailable[IRR_AMD_draw_buffers_blend] && pGlBlendEquationIndexedAMD) - pGlBlendEquationIndexedAMD(buf, mode); -#elif defined(GL_ARB_draw_buffers_blend) - glBlendEquationiARB(buf, mode); -#elif defined(GL_AMD_draw_buffers_blend) - glBlendEquationIndexedAMD(buf, mode); -#else - os::Printer::log("glBlendEquationIndexed not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlProgramParameteri(GLhandleARB program, GLenum pname, GLint value) -{ -#if defined(_IRR_OPENGL_USE_EXTPOINTER_) - if (queryFeature(EVDF_GEOMETRY_SHADER)) - { - if (pGlProgramParameteriARB) - pGlProgramParameteriARB(program, pname, value); - else if (pGlProgramParameteriEXT) - pGlProgramParameteriEXT(program, pname, value); - } -#elif defined(GL_ARB_geometry_shader4) - glProgramParameteriARB(program, pname, value); -#elif defined(GL_EXT_geometry_shader4) - glProgramParameteriEXT((long GLuint)program, pname, value); -#elif defined(GL_NV_geometry_program4) || defined(GL_NV_geometry_shader4) - glProgramParameteriNV(program, pname, value); -#else - os::Printer::log("glProgramParameteri not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGenQueries(GLsizei n, GLuint *ids) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGenQueriesARB) - pGlGenQueriesARB(n, ids); - else if (pGlGenOcclusionQueriesNV) - pGlGenOcclusionQueriesNV(n, ids); -#elif defined(GL_ARB_occlusion_query) - glGenQueriesARB(n, ids); -#elif defined(GL_NV_occlusion_query) - glGenOcclusionQueriesNV(n, ids); -#else - os::Printer::log("glGenQueries not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlDeleteQueries(GLsizei n, const GLuint *ids) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlDeleteQueriesARB) - pGlDeleteQueriesARB(n, ids); - else if (pGlDeleteOcclusionQueriesNV) - pGlDeleteOcclusionQueriesNV(n, ids); -#elif defined(GL_ARB_occlusion_query) - glDeleteQueriesARB(n, ids); -#elif defined(GL_NV_occlusion_query) - glDeleteOcclusionQueriesNV(n, ids); -#else - os::Printer::log("glDeleteQueries not supported", ELL_ERROR); -#endif -} - -inline GLboolean COpenGLExtensionHandler::extGlIsQuery(GLuint id) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlIsQueryARB) - return pGlIsQueryARB(id); - else if (pGlIsOcclusionQueryNV) - return pGlIsOcclusionQueryNV(id); - return false; -#elif defined(GL_ARB_occlusion_query) - return glIsQueryARB(id); -#elif defined(GL_NV_occlusion_query) - return glIsOcclusionQueryNV(id); -#else - return false; -#endif -} - -inline void COpenGLExtensionHandler::extGlBeginQuery(GLenum target, GLuint id) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlBeginQueryARB) - pGlBeginQueryARB(target, id); - else if (pGlBeginOcclusionQueryNV) - pGlBeginOcclusionQueryNV(id); -#elif defined(GL_ARB_occlusion_query) - glBeginQueryARB(target, id); -#elif defined(GL_NV_occlusion_query) - glBeginOcclusionQueryNV(id); -#else - os::Printer::log("glBeginQuery not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlEndQuery(GLenum target) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlEndQueryARB) - pGlEndQueryARB(target); - else if (pGlEndOcclusionQueryNV) - pGlEndOcclusionQueryNV(); -#elif defined(GL_ARB_occlusion_query) - glEndQueryARB(target); -#elif defined(GL_NV_occlusion_query) - glEndOcclusionQueryNV(); -#else - os::Printer::log("glEndQuery not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetQueryiv(GLenum target, GLenum pname, GLint *params) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetQueryivARB) - pGlGetQueryivARB(target, pname, params); -#elif defined(GL_ARB_occlusion_query) - glGetQueryivARB(target, pname, params); -#else - os::Printer::log("glGetQueryivARB not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetQueryObjectivARB) - pGlGetQueryObjectivARB(id, pname, params); - else if (pGlGetOcclusionQueryivNV) - pGlGetOcclusionQueryivNV(id, pname, params); -#elif defined(GL_ARB_occlusion_query) - glGetQueryObjectivARB(id, pname, params); -#elif defined(GL_NV_occlusion_query) - glGetOcclusionQueryivNV(id, pname, params); -#else - os::Printer::log("glGetQueryObjectiv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlGetQueryObjectuivARB) - pGlGetQueryObjectuivARB(id, pname, params); - else if (pGlGetOcclusionQueryuivNV) - pGlGetOcclusionQueryuivNV(id, pname, params); -#elif defined(GL_ARB_occlusion_query) - glGetQueryObjectuivARB(id, pname, params); -#elif defined(GL_NV_occlusion_query) - glGetOcclusionQueryuivNV(id, pname, params); -#else - os::Printer::log("glGetQueryObjectuiv not supported", ELL_ERROR); -#endif -} - -inline void COpenGLExtensionHandler::extGlSwapInterval(int interval) -{ - // we have wglext, so try to use that -#if defined(_IRR_WINDOWS_API_) && defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_) -#ifdef WGL_EXT_swap_control - if (pWglSwapIntervalEXT) - pWglSwapIntervalEXT(interval); -#endif -#endif -#ifdef _IRR_COMPILE_WITH_X11_DEVICE_ - //TODO: Check GLX_EXT_swap_control and GLX_MESA_swap_control -#ifdef GLX_SGI_swap_control - // does not work with interval==0 -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (interval && pGlxSwapIntervalSGI) - pGlxSwapIntervalSGI(interval); -#else - if (interval) - glXSwapIntervalSGI(interval); -#endif -#elif defined(GLX_EXT_swap_control) -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - Display *dpy = glXGetCurrentDisplay(); - GLXDrawable drawable = glXGetCurrentDrawable(); - - if (pGlxSwapIntervalEXT) - pGlxSwapIntervalEXT(dpy, drawable, interval); -#else - pGlXSwapIntervalEXT(dpy, drawable, interval); -#endif -#elif defined(GLX_MESA_swap_control) -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlxSwapIntervalMESA) - pGlxSwapIntervalMESA(interval); -#else - pGlXSwapIntervalMESA(interval); -#endif -#endif -#endif -} - -inline void COpenGLExtensionHandler::extGlBlendEquation(GLenum mode) -{ -#ifdef _IRR_OPENGL_USE_EXTPOINTER_ - if (pGlBlendEquation) - pGlBlendEquation(mode); - else if (pGlBlendEquationEXT) - pGlBlendEquationEXT(mode); -#elif defined(GL_EXT_blend_minmax) || defined(GL_EXT_blend_subtract) || defined(GL_EXT_blend_logic_op) - glBlendEquationEXT(mode); -#elif defined(GL_VERSION_1_2) - glBlendEquation(mode); -#else - os::Printer::log("glBlendEquation not supported", ELL_ERROR); -#endif -} - - -} -} - -#endif - -#endif - -- cgit v1.1