ignatenkobrain pushed to supertuxkart (master). "Update to 0.9 (..more)"
notifications at fedoraproject.org
notifications at fedoraproject.org
Thu Apr 23 10:17:59 UTC 2015
>From 3e7da34becc2191ef3b17041cc1f5ea3bb875a14 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <i.gnatenko.brain at gmail.com>
Date: Thu, 23 Apr 2015 13:16:41 +0300
Subject: Update to 0.9
Signed-off-by: Igor Gnatenko <i.gnatenko.brain at gmail.com>
diff --git a/.gitignore b/.gitignore
index 278f257..4b06274 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ addon0.6.1-1.zip
/supertuxkart-0.7.3-src.tar.bz2
/supertuxkart-0.8-src.tar.bz2
/supertuxkart-0.8.1-src.tar.bz2
+/supertuxkart-0.9-src.tar.xz
diff --git a/0001-fix-.desktop-file-and-install-destinations.patch b/0001-fix-.desktop-file-and-install-destinations.patch
deleted file mode 100644
index 9cfb6c7..0000000
--- a/0001-fix-.desktop-file-and-install-destinations.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 434083d5647ae052693eff559acbd08de09cbc37 Mon Sep 17 00:00:00 2001
-From: Igor Gnatenko <i.gnatenko.brain at gmail.com>
-Date: Sun, 11 May 2014 22:58:04 +0400
-Subject: [PATCH 1/6] fix .desktop file and install destinations
-
-Signed-off-by: Igor Gnatenko <i.gnatenko.brain at gmail.com>
----
- CMakeLists.txt | 7 +++----
- data/supertuxkart.desktop | 13 +++++++++++++
- data/supertuxkart_desktop.template | 14 --------------
- 3 files changed, 16 insertions(+), 18 deletions(-)
- create mode 100644 data/supertuxkart.desktop
- delete mode 100644 data/supertuxkart_desktop.template
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 09edd58..2d87a98 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -292,9 +292,8 @@ endif()
- # ==== Install target ====
- install(TARGETS supertuxkart RUNTIME DESTINATION ${STK_INSTALL_BINARY_DIR} BUNDLE DESTINATION .)
- install(DIRECTORY ${STK_DATA_DIR} DESTINATION ${STK_INSTALL_DATA_DIR} PATTERN ".svn" EXCLUDE)
--install(FILES ${PROJECT_BINARY_DIR}/supertuxkart.desktop DESTINATION share/applications)
--install(FILES data/supertuxkart_32.png data/supertuxkart_128.png DESTINATION share/pixmaps)
-+install(FILES data/supertuxkart.desktop DESTINATION share/applications)
-+install(FILES data/supertuxkart_32.png DESTINATION share/icons/hicolor/32x32/apps RENAME supertuxkart.png)
-+install(FILES data/supertuxkart_128.png DESTINATION share/icons/hicolor/128x128/apps RENAME supertuxkart.png)
-
- set(PREFIX ${CMAKE_INSTALL_PREFIX})
--configure_file(data/supertuxkart_desktop.template supertuxkart.desktop)
--add_dependencies(supertuxkart supertuxkart.desktop)
-diff --git a/data/supertuxkart.desktop b/data/supertuxkart.desktop
-new file mode 100644
-index 0000000..5fd69ee
---- /dev/null
-+++ b/data/supertuxkart.desktop
-@@ -0,0 +1,13 @@
-+[Desktop Entry]
-+Name=SuperTuxKart
-+Icon=supertuxkart
-+GenericName=A kart racing game
-+GenericName[de_DE]=Ein Kart-Rennspiel
-+GenericName[fr_FR]=Un jeu de karting
-+GenericName[gl]=Xogo de carreiras con karts
-+GenericName[ro_RO]=Un joc de curse cu carturi
-+Exec=supertuxkart-wrapper --no-console
-+Terminal=false
-+StartupNotify=false
-+Type=Application
-+Categories=Game;ActionGame;ArcadeGame;
-diff --git a/data/supertuxkart_desktop.template b/data/supertuxkart_desktop.template
-deleted file mode 100644
-index aeb48ab..0000000
---- a/data/supertuxkart_desktop.template
-+++ /dev/null
-@@ -1,14 +0,0 @@
--[Desktop Entry]
--Name=SuperTuxKart
--Icon=@PREFIX@/share/pixmaps/supertuxkart_128.png
--GenericName=A kart racing game
--GenericName[de_DE]=Ein Kart-Rennspiel
--GenericName[fr_FR]=Un jeu de karting
--GenericName[gl]=Xogo de carreiras con karts
--GenericName[ro_RO]=Un joc de curse cu carturi
--Exec=@PREFIX@/@STK_INSTALL_BINARY_DIR@/supertuxkart --no-console
--Terminal=false
--StartupNotify=false
--Type=Application
--TryExec=@PREFIX@/@STK_INSTALL_BINARY_DIR@/supertuxkart
--Categories=Game;ArcadeGame;
---
-1.9.3
-
diff --git a/0002-unbundle-bullet.patch b/0002-unbundle-bullet.patch
deleted file mode 100644
index 47fe557..0000000
--- a/0002-unbundle-bullet.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 01468f607b03ba612aa9fb401641e611092915cd Mon Sep 17 00:00:00 2001
-From: Igor Gnatenko <i.gnatenko.brain at gmail.com>
-Date: Sun, 11 May 2014 22:59:28 +0400
-Subject: [PATCH 2/6] unbundle bullet
-
-Signed-off-by: Igor Gnatenko <i.gnatenko.brain at gmail.com>
----
- CMakeLists.txt | 12 +++++++-----
- src/physics/btKartRaycast.cpp | 4 ++--
- src/physics/physics.cpp | 32 ++++++++++++++++++++------------
- 3 files changed, 29 insertions(+), 19 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 2d87a98..9672f3f 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -36,9 +36,13 @@ set(STK_INSTALL_BINARY_DIR "bin" CACHE
- set(STK_INSTALL_DATA_DIR "share/supertuxkart" CACHE
- STRING "Install data folder to this directory, absolute or relative to CMAKE_INSTALL_PREFIX")
-
-+include(FindPkgConfig)
-+
- # Build the Bullet physics library
--add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet")
--include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
-+pkg_search_module(BULLET REQUIRED bullet)
-+include_directories(${BULLET_INCLUDE_DIRS})
-+string(REGEX REPLACE "\\." "" BULLET_VERSION_INT ${BULLET_VERSION})
-+add_definitions(-DBULLET_VERSION=${BULLET_VERSION_INT})
-
- # Build the ENet UDP network library
- add_subdirectory("${PROJECT_SOURCE_DIR}/lib/enet")
-@@ -222,9 +226,7 @@ endif()
-
- # Common library dependencies
- target_link_libraries(supertuxkart
-- bulletdynamics
-- bulletcollision
-- bulletmath
-+ ${BULLET_LIBRARIES}
- enet
- stkirrlicht
- ${CURL_LIBRARIES}
-diff --git a/src/physics/btKartRaycast.cpp b/src/physics/btKartRaycast.cpp
-index 13b310f..7c00d42 100644
---- a/src/physics/btKartRaycast.cpp
-+++ b/src/physics/btKartRaycast.cpp
-@@ -63,7 +63,7 @@ void* btKartRaycaster::castRay(const btVector3& from, const btVector3& to,
-
- if (rayCallback.hasHit())
- {
-- btRigidBody* body = btRigidBody::upcast(rayCallback.m_collisionObject);
-+ const btRigidBody* body = btRigidBody::upcast(rayCallback.m_collisionObject);
- if (body && body->hasContactResponse())
- {
- result.m_hitPointInWorld = rayCallback.m_hitPointWorld;
-@@ -88,7 +88,7 @@ void* btKartRaycaster::castRay(const btVector3& from, const btVector3& to,
- result.m_hitNormalInWorld.getZ());
- #endif
- }
-- return body;
-+ return (void *) body;
- }
- }
- return 0;
-diff --git a/src/physics/physics.cpp b/src/physics/physics.cpp
-index fcff1f0..b49446a 100644
---- a/src/physics/physics.cpp
-+++ b/src/physics/physics.cpp
-@@ -432,14 +432,24 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies,
- btStackAlloc* stackAlloc,
- btDispatcher* dispatcher)
- {
-- btScalar returnValue=
-- btSequentialImpulseConstraintSolver::solveGroup(bodies, numBodies,
-- manifold, numManifolds,
-- constraints,
-- numConstraints, info,
-- debugDrawer,
-- stackAlloc,
-- dispatcher);
-+ #if BULLET_VERSION >= 282
-+ btScalar returnValue=
-+ btSequentialImpulseConstraintSolver::solveGroup(bodies, numBodies,
-+ manifold, numManifolds,
-+ constraints,
-+ numConstraints, info,
-+ debugDrawer,
-+ dispatcher);
-+ #else
-+ btScalar returnValue=
-+ btSequentialImpulseConstraintSolver::solveGroup(bodies, numBodies,
-+ manifold, numManifolds,
-+ constraints,
-+ numConstraints, info,
-+ debugDrawer,
-+ stackAlloc,
-+ dispatcher);
-+ #endif
- int currentNumManifolds = m_dispatcher->getNumManifolds();
- // We can't explode a rocket in a loop, since a rocket might collide with
- // more than one object, and/or more than once with each object (if there
-@@ -450,10 +460,8 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies,
- btPersistentManifold* contact_manifold =
- m_dynamics_world->getDispatcher()->getManifoldByIndexInternal(i);
-
-- btCollisionObject* objA =
-- static_cast<btCollisionObject*>(contact_manifold->getBody0());
-- btCollisionObject* objB =
-- static_cast<btCollisionObject*>(contact_manifold->getBody1());
-+ const btCollisionObject* objA = contact_manifold->getBody0();
-+ const btCollisionObject* objB = contact_manifold->getBody1();
-
- unsigned int num_contacts = contact_manifold->getNumContacts();
- if(!num_contacts) continue; // no real collision
---
-1.9.3
-
diff --git a/0003-unbundle-enet.patch b/0003-unbundle-enet.patch
deleted file mode 100644
index 9486457..0000000
--- a/0003-unbundle-enet.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From f71003a718a75843a4936702ec3c2bd90e804e3f Mon Sep 17 00:00:00 2001
-From: Igor Gnatenko <i.gnatenko.brain at gmail.com>
-Date: Wed, 14 May 2014 16:28:29 +0400
-Subject: [PATCH 3/6] unbundle enet
-
-Signed-off-by: Igor Gnatenko <i.gnatenko.brain at gmail.com>
----
- CMakeLists.txt | 6 +++---
- cmake/FindENet.cmake | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 52 insertions(+), 3 deletions(-)
- create mode 100644 cmake/FindENet.cmake
-
-diff --git a/cmake/FindENet.cmake b/cmake/FindENet.cmake
-new file mode 100644
-index 0000000..b6c146c
---- /dev/null
-+++ b/cmake/FindENet.cmake
-@@ -0,0 +1,49 @@
-+# - Try to find enet
-+# Once done this will define
-+#
-+# ENET_FOUND - system has enet
-+# ENet_INCLUDE_DIRS - the enet include directory
-+# ENet_LIBRARIES - the libraries needed to use enet
-+#
-+# $ENETDIR is an environment variable used for finding enet.
-+#
-+# Borrowed from The Mana World
-+# http://themanaworld.org/
-+#
-+# Several changes and additions by Fabian 'x3n' Landau
-+# Lots of simplifications by Adrian Friedli
-+# > www.orxonox.net <
-+
-+FIND_PATH(ENet_INCLUDE_DIRS enet/enet.h
-+ PATHS
-+ $ENV{ENETDIR}
-+ /usr/local
-+ /usr
-+ PATH_SUFFIXES include
-+ )
-+
-+FIND_LIBRARY(ENet_LIBRARY
-+ NAMES enet
-+ PATHS
-+ $ENV{ENETDIR}
-+ /usr/local
-+ /usr
-+ PATH_SUFFIXES lib
-+ )
-+
-+# handle the QUIETLY and REQUIRED arguments and set ENET_FOUND to TRUE if
-+# all listed variables are TRUE
-+INCLUDE(FindPackageHandleStandardArgs)
-+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ENet DEFAULT_MSG ENet_LIBRARY ENet_INCLUDE_DIRS)
-+
-+IF (ENET_FOUND)
-+ IF(WIN32)
-+ SET(WINDOWS_ENET_DEPENDENCIES "ws2_32;winmm")
-+ SET(ENet_LIBRARIES ${ENet_LIBRARY} ${WINDOWS_ENET_DEPENDENCIES})
-+ ELSE(WIN32)
-+ SET(ENet_LIBRARIES ${ENet_LIBRARY})
-+ ENDIF(WIN32)
-+ENDIF (ENET_FOUND)
-+
-+MARK_AS_ADVANCED(ENet_LIBRARY ENet_LIBRARIES ENet_INCLUDE_DIRS)
-+
---
-1.9.3
-
---- a/CMakeLists.txt~ 2014-10-15 05:18:41.000000000 -0500
-+++ b/CMakeLists.txt 2014-10-15 05:23:37.792191084 -0500
-@@ -225,7 +226,7 @@
- bulletdynamics
- bulletcollision
- bulletmath
-- enet
-+ ${ENet_LIBRARIES}
- stkirrlicht
- ${CURL_LIBRARIES}
- ${OGGVORBIS_LIBRARIES}
---- a/CMakeLists.txt~ 2014-10-15 05:40:11.000000000 -0500
-+++ b/CMakeLists.txt 2014-10-15 05:40:51.372219546 -0500
-@@ -41,8 +41,8 @@
- include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
-
- # Build the ENet UDP network library
--add_subdirectory("${PROJECT_SOURCE_DIR}/lib/enet")
--include_directories("${PROJECT_SOURCE_DIR}/lib/enet/include")
-+find_package(ENet REQUIRED)
-+include_directories(${ENet_INCLUDE_DIRS})
-
- # Build the irrlicht library
- add_subdirectory("${PROJECT_SOURCE_DIR}/lib/irrlicht")
diff --git a/0004-unbundle-irrlicht.patch b/0004-unbundle-irrlicht.patch
deleted file mode 100644
index afa30a7..0000000
--- a/0004-unbundle-irrlicht.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From d86ff9a4e8ee4d7df53f26a686a0e4defcd749be Mon Sep 17 00:00:00 2001
-From: Igor Gnatenko <i.gnatenko.brain at gmail.com>
-Date: Wed, 14 May 2014 16:39:13 +0400
-Subject: [PATCH 4/6] unbundle irrlicht
-
-Signed-off-by: Igor Gnatenko <i.gnatenko.brain at gmail.com>
----
- CMakeLists.txt | 8 ++---
- cmake/FindIrrlicht.cmake | 94 ++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 98 insertions(+), 4 deletions(-)
- create mode 100644 cmake/FindIrrlicht.cmake
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index bd525f8..861b76c 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -49,8 +49,8 @@ find_package(ENet REQUIRED)
- include_directories(${ENet_INCLUDE_DIRS})
-
- # Build the irrlicht library
--add_subdirectory("${PROJECT_SOURCE_DIR}/lib/irrlicht")
--include_directories("${PROJECT_SOURCE_DIR}/lib/irrlicht/include")
-+find_package(Irrlicht REQUIRED)
-+include_directories(${IRRLICHT_INCLUDE_DIR})
-
- # Build the Wiiuse library
- # Note: wiiuse MUST be declared after irrlicht, since otherwise
-@@ -228,10 +228,10 @@ endif()
- target_link_libraries(supertuxkart
- ${BULLET_LIBRARIES}
- ${ENet_LIBRARIES}
-- stkirrlicht
-+ ${IRRLICHT_LIBRARIES}
-+ IrrXML
- ${CURL_LIBRARIES}
- ${OGGVORBIS_LIBRARIES}
-- ${IRRLICHT_XF86VM_LIBRARY}
- ${OPENAL_LIBRARY}
- ${OPENGL_LIBRARIES})
-
-diff --git a/cmake/FindIrrlicht.cmake b/cmake/FindIrrlicht.cmake
-new file mode 100644
-index 0000000..8c94ec2
---- /dev/null
-+++ b/cmake/FindIrrlicht.cmake
-@@ -0,0 +1,94 @@
-+#FindIrrlicht.cmake
-+
-+set(IRRLICHT_SOURCE_DIR "" CACHE PATH "Path to irrlicht source directory (optional)")
-+
-+if( UNIX )
-+ # Unix
-+else( UNIX )
-+ # Windows
-+endif( UNIX )
-+
-+# Find include directory
-+
-+if(NOT IRRLICHT_SOURCE_DIR STREQUAL "")
-+ set(IRRLICHT_SOURCE_DIR_INCLUDE
-+ "${IRRLICHT_SOURCE_DIR}/include"
-+ )
-+
-+ set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a Irrlicht Irrlicht.lib)
-+
-+ if(WIN32)
-+ if(MSVC)
-+ set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-visualstudio")
-+ set(IRRLICHT_LIBRARY_NAMES Irrlicht.lib)
-+ else()
-+ set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-gcc")
-+ set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a libIrrlicht.dll.a)
-+ endif()
-+ else()
-+ set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Linux")
-+ set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a)
-+ endif()
-+
-+ FIND_PATH(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
-+ PATHS
-+ ${IRRLICHT_SOURCE_DIR_INCLUDE}
-+ NO_DEFAULT_PATH
-+ )
-+
-+ FIND_LIBRARY(IRRLICHT_LIBRARY NAMES ${IRRLICHT_LIBRARY_NAMES}
-+ PATHS
-+ ${IRRLICHT_SOURCE_DIR_LIBS}
-+ NO_DEFAULT_PATH
-+ )
-+
-+else()
-+
-+ FIND_PATH(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
-+ PATHS
-+ /usr/local/include/irrlicht
-+ /usr/include/irrlicht
-+ )
-+
-+ FIND_LIBRARY(IRRLICHT_LIBRARY NAMES libIrrlicht.so Irrlicht
-+ PATHS
-+ /usr/local/lib
-+ /usr/lib
-+ /usr/lib64
-+ )
-+endif()
-+
-+MESSAGE(STATUS "IRRLICHT_SOURCE_DIR = ${IRRLICHT_SOURCE_DIR}")
-+MESSAGE(STATUS "IRRLICHT_INCLUDE_DIR = ${IRRLICHT_INCLUDE_DIR}")
-+MESSAGE(STATUS "IRRLICHT_LIBRARY = ${IRRLICHT_LIBRARY}")
-+
-+# On windows, find the dll for installation
-+if(WIN32)
-+ if(MSVC)
-+ FIND_FILE(IRRLICHT_DLL NAMES Irrlicht.dll
-+ PATHS
-+ "${IRRLICHT_SOURCE_DIR}/bin/Win32-VisualStudio"
-+ DOC "Path of the Irrlicht dll (for installation)"
-+ )
-+ else()
-+ FIND_FILE(IRRLICHT_DLL NAMES Irrlicht.dll
-+ PATHS
-+ "${IRRLICHT_SOURCE_DIR}/bin/Win32-gcc"
-+ DOC "Path of the Irrlicht dll (for installation)"
-+ )
-+ endif()
-+ MESSAGE(STATUS "IRRLICHT_DLL = ${IRRLICHT_DLL}")
-+endif(WIN32)
-+
-+# handle the QUIETLY and REQUIRED arguments and set IRRLICHT_FOUND to TRUE if
-+# all listed variables are TRUE
-+INCLUDE(FindPackageHandleStandardArgs)
-+FIND_PACKAGE_HANDLE_STANDARD_ARGS(IRRLICHT DEFAULT_MSG IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR)
-+
-+IF(IRRLICHT_FOUND)
-+ SET(IRRLICHT_LIBRARIES ${IRRLICHT_LIBRARY})
-+ELSE(IRRLICHT_FOUND)
-+ SET(IRRLICHT_LIBRARIES)
-+ENDIF(IRRLICHT_FOUND)
-+
-+MARK_AS_ADVANCED(IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR IRRLICHT_DLL)
---
-1.9.3
-
diff --git a/0006-Adding-a-Wiimote-with-other-one-alredy-placed-Bug-12.patch b/0006-Adding-a-Wiimote-with-other-one-alredy-placed-Bug-12.patch
deleted file mode 100644
index 38a3226..0000000
--- a/0006-Adding-a-Wiimote-with-other-one-alredy-placed-Bug-12.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From 1eb131f4d3b7f9cb160c2c525208e75780c439ac Mon Sep 17 00:00:00 2001
-From: pgabor <peterffy95 at gmail.com>
-Date: Sat, 15 Mar 2014 21:15:04 +0100
-Subject: [PATCH 6/6] Adding a Wiimote with other one alredy placed - Bug:
- #1209 fixed
-
-(cherry picked from commit f84f49dfc8ae9b407ecb2794aef0cef26de531b7)
----
- src/input/wiimote_manager.cpp | 78 ++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 77 insertions(+), 1 deletion(-)
-
-diff --git a/src/input/wiimote_manager.cpp b/src/input/wiimote_manager.cpp
-index 61be4e0..0203c74 100644
---- a/src/input/wiimote_manager.cpp
-+++ b/src/input/wiimote_manager.cpp
-@@ -17,6 +17,7 @@
- // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
- #ifdef ENABLE_WIIUSE
-+#define WCONST
-
- #include "input/wiimote_manager.hpp"
-
-@@ -60,24 +61,99 @@ WiimoteManager::~WiimoteManager()
- */
- void WiimoteManager::launchDetection(int timeout)
- {
-+ // It's only needed on systems with bluez, because wiiuse_find does not find alredy connected wiimotes
-+#ifdef WIIUSE_BLUEZ
-+ //Cleans up the config and the disconnected wiimotes
-+ int number_previous_wiimotes = 0;
-+ wiimote_t** previous_wiimotes = (wiimote_t**) malloc(sizeof(struct wiimote_t*) * MAX_WIIMOTES);
-+ memset(previous_wiimotes,0,sizeof(struct wiimote_t*) * MAX_WIIMOTES);
-+ for (unsigned int i = 0; i < m_wiimotes.size(); i++)
-+ {
-+ if (WIIMOTE_IS_CONNECTED(m_all_wiimote_handles[i]))
-+ {
-+ previous_wiimotes[i]=m_all_wiimote_handles[i];
-+ m_all_wiimote_handles[i] = NULL;
-+ number_previous_wiimotes++;
-+ }
-+ }
-+
-+ //To prevent segmentation fault, have to delete NULLs
-+ wiimote_t** deletable_wiimotes = (wiimote_t**) malloc(sizeof(struct wiimote_t*) * (m_wiimotes.size()-number_previous_wiimotes));
-+ memset(deletable_wiimotes,0,sizeof(struct wiimote_t*) * (m_wiimotes.size()-number_previous_wiimotes));
-+ int number_deletables = 0;
-+ for (unsigned int i = 0; i < m_wiimotes.size(); i++)
-+ {
-+ if (m_all_wiimote_handles[i] != NULL)
-+ {
-+ deletable_wiimotes[number_deletables++] = m_all_wiimote_handles[i];
-+ }
-+ }
-+ m_all_wiimote_handles = wiiuse_init(MAX_WIIMOTES);
-+ wiiuse_cleanup(deletable_wiimotes, number_deletables);
-+
-+#endif
-+
- // Stop WiiUse, remove wiimotes, gamepads, gamepad configs.
- cleanup();
-
-- m_all_wiimote_handles = wiiuse_init(MAX_WIIMOTES);
-+ m_all_wiimote_handles = wiiuse_init(MAX_WIIMOTES);
-
- // Detect wiimotes
- int nb_found_wiimotes = wiiuse_find(m_all_wiimote_handles, MAX_WIIMOTES, timeout);
-
-+#ifndef WIIUSE_BLUEZ
- // Couldn't find any wiimote?
- if(nb_found_wiimotes == 0)
- return;
-+#endif
-+
-+#ifdef WIIUSE_BLUEZ
-+ // Couldn't find any wiimote?
-+ if(nb_found_wiimotes + number_previous_wiimotes == 0)
-+ return;
-+#endif
-
- // Try to connect to all found wiimotes
- int nb_wiimotes = wiiuse_connect(m_all_wiimote_handles, nb_found_wiimotes);
-
-+#ifndef WIIUSE_BLUEZ
- // Couldn't connect to any wiimote?
- if(nb_wiimotes == 0)
- return;
-+#endif
-+
-+#ifdef WIIUSE_BLUEZ
-+ // Couldn't connect to any wiimote?
-+ if(nb_wiimotes + number_previous_wiimotes == 0)
-+ return;
-+
-+ //Merges previous and new wiimote's list
-+ int number_merged_wiimotes = 0;
-+ for (int i = 0; i < number_previous_wiimotes && i + nb_wiimotes < MAX_WIIMOTES; i++)
-+ {
-+ m_all_wiimote_handles[i+nb_wiimotes] = previous_wiimotes[i];
-+ previous_wiimotes[i] = NULL;
-+ m_all_wiimote_handles[i]->unid = nb_wiimotes+i+1;
-+ number_merged_wiimotes++;
-+ }
-+ nb_wiimotes += number_merged_wiimotes;
-+
-+ //To prevent segmentation fault, have to delete NULLs
-+ number_deletables = 0;
-+ number_deletables = 0;
-+ deletable_wiimotes = (wiimote_t**) malloc(sizeof(struct wiimote_t*) * (number_previous_wiimotes-number_merged_wiimotes));
-+ memset(deletable_wiimotes,0,sizeof(struct wiimote_t*) * (number_previous_wiimotes-number_merged_wiimotes));
-+ for (int i = 0; i < number_previous_wiimotes; i++)
-+ {
-+ if (previous_wiimotes[i] != NULL)
-+ {
-+ deletable_wiimotes[number_deletables++] = previous_wiimotes[i];
-+ }
-+ }
-+ // Cleans up wiimotes which ones didn't fit in limit
-+ wiiuse_cleanup(deletable_wiimotes, number_deletables);
-+
-+#endif
-
- // ---------------------------------------------------
- // Create or find a GamepadConfig for all wiimotes
---
-1.9.3
-
diff --git a/sources b/sources
index 9d1ca13..973bc45 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-aa31ecf883dc35859eec76c667f1a6d6 supertuxkart-0.8.1-src.tar.bz2
+ae07569ab02c88ca4d49017df7731923 supertuxkart-0.9-src.tar.xz
diff --git a/supertuxkart-fhs.patch b/supertuxkart-fhs.patch
deleted file mode 100644
index 7bb001d..0000000
--- a/supertuxkart-fhs.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up SuperTuxKart-0.8/src/Makefile.am~ SuperTuxKart-0.8/src/Makefile.am
---- SuperTuxKart-0.8/src/Makefile.am~ 2012-10-24 02:16:11.000000000 +0200
-+++ SuperTuxKart-0.8/src/Makefile.am 2013-08-04 16:46:50.822215408 +0200
-@@ -5,8 +5,7 @@ SUBDIRS = ide
- bindir=$(prefix)/games
- bin_PROGRAMS = supertuxkart
-
--AM_CPPFLAGS = -DSUPERTUXKART_DATADIR="\"$(datadir)/games/$(PACKAGE)/\"" \
-- -I$(srcdir)/../lib/bullet/src/ -I$(srcdir)/../lib/enet/include/
-+AM_CPPFLAGS = -DSUPERTUXKART_DATADIR="\"$(datadir)/$(PACKAGE)/\""
-
- supertuxkart_SOURCES = \
- main.cpp \
diff --git a/supertuxkart-mesa-fix.patch b/supertuxkart-mesa-fix.patch
deleted file mode 100644
index e6d3d22..0000000
--- a/supertuxkart-mesa-fix.patch
+++ /dev/null
@@ -1,5191 +0,0 @@
---- lib/irrlicht/source/Irrlicht/COpenGLExtensionHandler.h 2013-11-13 17:55:29.000000000 -0600
-+++ lib/irrlicht/source/Irrlicht/COpenGLExtensionHandler.h 2014-10-15 09:24:51.307589643 -0500
-@@ -1,2591 +1,2597 @@
--// 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 <windows.h>
-- #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
-- #define GL_GLEXT_LEGACY 1
-- #endif
-- #include <GL/gl.h>
-- #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 <OpenGL/gl.h>
-- #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 <SDL/SDL_video.h>
-- #include <SDL/SDL_opengl.h>
-- #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 <GL/gl.h>
-- #include <GL/glx.h>
-- #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_get_program_binary,
-- IRR_ARB_geometry_shader4,
-- 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)
-- #ifdef __clang__
-- glProgramParameteriEXT((long)program, pname, value);
-- #else
-- glProgramParameteriEXT((long GLuint)program, pname, value);
-- #endif
--#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
--
-+// 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 <windows.h>
-+ #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
-+ #define GL_GLEXT_LEGACY 1
-+ #endif
-+ #include <GL/gl.h>
-+ #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
-+ typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-+ #include "glext.h"
-+ #endif
-+ #include "wglext.h"
-+
-+ #ifdef _MSC_VER
-+ #pragma comment(lib, "OpenGL32.lib")
-+ #endif
-+
-+#elif defined(_IRR_COMPILE_WITH_OSX_DEVICE_)
-+ #include "MacOSX/CIrrDeviceMacOSX.h"
-+ #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
-+ #define GL_GLEXT_LEGACY 1
-+ #endif
-+ #include <OpenGL/gl.h>
-+ #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
-+ typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-+ #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 <SDL/SDL_video.h>
-+ #include <SDL/SDL_opengl.h>
-+ typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-+ #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 <GL/gl.h>
-+ #include <GL/glx.h>
-+ #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
-+ typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-+ #include <GL/glext.h>
-+ #undef GLX_ARB_get_proc_address // avoid problems with local glxext.h
-+ #include <GL/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_get_program_binary,
-+ IRR_ARB_geometry_shader4,
-+ 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
-+ {
-+ if (COpenGLExtensionHandler::IRR_EXT_packed_depth_stencil)
-+ return true;
-+ 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)
-+ #ifdef __clang__
-+ glProgramParameteriEXT((long)program, pname, value);
-+ #else
-+ glProgramParameteriEXT((long GLuint)program, pname, value);
-+ #endif
-+#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
-+
diff --git a/supertuxkart-unbundle-enet.patch b/supertuxkart-unbundle-enet.patch
new file mode 100644
index 0000000..bb8eed6
--- /dev/null
+++ b/supertuxkart-unbundle-enet.patch
@@ -0,0 +1,76 @@
+diff -uNr supertuxkart-0.9.orig/cmake/FindENet.cmake supertuxkart-0.9/cmake/FindENet.cmake
+--- supertuxkart-0.9.orig/cmake/FindENet.cmake 1970-01-01 03:00:00.000000000 +0300
++++ supertuxkart-0.9/cmake/FindENet.cmake 2015-04-23 12:40:36.636115363 +0300
+@@ -0,0 +1,49 @@
++# - Try to find enet
++# Once done this will define
++#
++# ENET_FOUND - system has enet
++# ENet_INCLUDE_DIRS - the enet include directory
++# ENet_LIBRARIES - the libraries needed to use enet
++#
++# $ENETDIR is an environment variable used for finding enet.
++#
++# Borrowed from The Mana World
++# http://themanaworld.org/
++#
++# Several changes and additions by Fabian 'x3n' Landau
++# Lots of simplifications by Adrian Friedli
++# > www.orxonox.net <
++
++FIND_PATH(ENet_INCLUDE_DIRS enet/enet.h
++ PATHS
++ $ENV{ENETDIR}
++ /usr/local
++ /usr
++ PATH_SUFFIXES include
++ )
++
++FIND_LIBRARY(ENet_LIBRARY
++ NAMES enet
++ PATHS
++ $ENV{ENETDIR}
++ /usr/local
++ /usr
++ PATH_SUFFIXES lib
++ )
++
++# handle the QUIETLY and REQUIRED arguments and set ENET_FOUND to TRUE if
++# all listed variables are TRUE
++INCLUDE(FindPackageHandleStandardArgs)
++FIND_PACKAGE_HANDLE_STANDARD_ARGS(ENet DEFAULT_MSG ENet_LIBRARY ENet_INCLUDE_DIRS)
++
++IF (ENET_FOUND)
++ IF(WIN32)
++ SET(WINDOWS_ENET_DEPENDENCIES "ws2_32;winmm")
++ SET(ENet_LIBRARIES ${ENet_LIBRARY} ${WINDOWS_ENET_DEPENDENCIES})
++ ELSE(WIN32)
++ SET(ENet_LIBRARIES ${ENet_LIBRARY})
++ ENDIF(WIN32)
++ENDIF (ENET_FOUND)
++
++MARK_AS_ADVANCED(ENet_LIBRARY ENet_LIBRARIES ENet_INCLUDE_DIRS)
++
+diff -uNr supertuxkart-0.9.orig/CMakeLists.txt supertuxkart-0.9/CMakeLists.txt
+--- supertuxkart-0.9.orig/CMakeLists.txt 2015-04-23 12:40:21.133663270 +0300
++++ supertuxkart-0.9/CMakeLists.txt 2015-04-23 12:40:54.166626600 +0300
+@@ -61,8 +61,8 @@
+ include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
+
+ # Build the ENet UDP network library
+-add_subdirectory("${PROJECT_SOURCE_DIR}/lib/enet")
+-include_directories("${PROJECT_SOURCE_DIR}/lib/enet/include")
++find_package(ENet REQUIRED)
++include_directories(${ENet_INCLUDE_DIRS})
+
+ # Build glew library
+ add_subdirectory("${PROJECT_SOURCE_DIR}/lib/glew")
+@@ -306,7 +306,7 @@
+ bulletdynamics
+ bulletcollision
+ bulletmath
+- enet
++ ${ENet_LIBRARIES}
+ glew
+ stkirrlicht
+ angelscript
diff --git a/supertuxkart-unbundle-wiiuse.patch b/supertuxkart-unbundle-wiiuse.patch
new file mode 100644
index 0000000..a201fec
--- /dev/null
+++ b/supertuxkart-unbundle-wiiuse.patch
@@ -0,0 +1,128 @@
+diff -uNr supertuxkart-0.9.orig/cmake/FindWiiUse.cmake supertuxkart-0.9/cmake/FindWiiUse.cmake
+--- supertuxkart-0.9.orig/cmake/FindWiiUse.cmake 1970-01-01 03:00:00.000000000 +0300
++++ supertuxkart-0.9/cmake/FindWiiUse.cmake 2015-04-23 12:53:36.498155119 +0300
+@@ -0,0 +1,99 @@
++# - try to find WiiUse library
++#
++# Cache Variables: (probably not for direct use in your scripts)
++# WIIUSE_INCLUDE_DIR
++# WIIUSE_LIBRARY
++#
++# Non-cache variables you might use in your CMakeLists.txt:
++# WIIUSE_FOUND
++# WIIUSE_INCLUDE_DIRS
++# WIIUSE_LIBRARIES
++# WIIUSE_RUNTIME_LIBRARIES - aka the dll for installing
++# WIIUSE_RUNTIME_LIBRARY_DIRS
++#
++# Requires these CMake modules:
++# FindPackageHandleStandardArgs (known included with CMake >=2.6.2)
++#
++# Original Author:
++# 2009-2010 Ryan Pavlik <rpavlik at iastate.edu> <abiryan at ryand.net>
++# http://academic.cleardefinition.com
++# Iowa State University HCI Graduate Program/VRAC
++#
++# Copyright Iowa State University 2009-2010.
++# Distributed under the Boost Software License, Version 1.0.
++# (See accompanying file LICENSE_1_0.txt or copy at
++# http://www.boost.org/LICENSE_1_0.txt)
++
++set(WIIUSE_ROOT_DIR
++ "${WIIUSE_ROOT_DIR}"
++ CACHE
++ PATH
++ "Directory to search for WiiUse")
++
++if(CMAKE_SIZEOF_VOID_P MATCHES "8")
++ set(_LIBSUFFIXES /lib64 /lib)
++else()
++ set(_LIBSUFFIXES /lib)
++endif()
++
++find_library(WIIUSE_LIBRARY
++ NAMES
++ wiiuse
++ PATHS
++ "${WIIUSE_ROOT_DIR}"
++ PATH_SUFFIXES
++ "${_LIBSUFFIXES}")
++
++get_filename_component(_libdir "${WIIUSE_LIBRARY}" PATH)
++
++find_path(WIIUSE_INCLUDE_DIR
++ NAMES
++ wiiuse.h
++ HINTS
++ "${_libdir}"
++ "${_libdir}/.."
++ PATHS
++ "${WIIUSE_ROOT_DIR}"
++ PATH_SUFFIXES
++ include/)
++
++set(_deps_check)
++if(WIN32)
++ find_file(WIIUSE_RUNTIME_LIBRARY
++ NAMES
++ wiiuse.dll
++ HINTS
++ "${_libdir}"
++ "${_libdir}/.."
++ PATH_SUFFIXES
++ bin)
++
++ set(WIIUSE_RUNTIME_LIBRARIES "${WIIUSE_RUNTIME_LIBRARY}")
++ get_filename_component(WIIUSE_RUNTIME_LIBRARY_DIRS
++ "${WIIUSE_RUNTIME_LIBRARY}"
++ PATH)
++ list(APPEND _deps_check WIIUSE_RUNTIME_LIBRARY)
++else()
++ set(WIIUSE_RUNTIME_LIBRARY "${WIIUSE_LIBRARY}")
++ set(WIIUSE_RUNTIME_LIBRARIES "${WIIUSE_RUNTIME_LIBRARY}")
++ get_filename_component(WIIUSE_RUNTIME_LIBRARY_DIRS
++ "${WIIUSE_LIBRARY}"
++ PATH)
++endif()
++
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(WiiUse
++ DEFAULT_MSG
++ WIIUSE_LIBRARY
++ WIIUSE_INCLUDE_DIR
++ ${_deps_check})
++
++if(WIIUSE_FOUND)
++ set(WIIUSE_LIBRARIES "${WIIUSE_LIBRARY}")
++ set(WIIUSE_INCLUDE_DIRS "${WIIUSE_INCLUDE_DIR}")
++ mark_as_advanced(WIIUSE_ROOT_DIR)
++endif()
++
++mark_as_advanced(WIIUSE_INCLUDE_DIR
++ WIIUSE_LIBRARY
++ WIIUSE_RUNTIME_LIBRARY)
+diff -uNr supertuxkart-0.9.orig/CMakeLists.txt supertuxkart-0.9/CMakeLists.txt
+--- supertuxkart-0.9.orig/CMakeLists.txt 2015-04-21 14:32:11.300162506 +0300
++++ supertuxkart-0.9/CMakeLists.txt 2015-04-23 12:53:36.497155090 +0300
+@@ -104,10 +104,9 @@
+ # (at least on VS) irrlicht will find wiiuse io.h file because
+ # of the added include directory.
+ if(USE_WIIUSE)
+- if(WIIUSE_BUILD)
+- add_subdirectory("${PROJECT_SOURCE_DIR}/lib/wiiuse")
+- endif()
+ include_directories("${PROJECT_SOURCE_DIR}/lib/wiiuse")
++ find_package(WiiUse REQUIRED)
++ include_directories(${WIIUSE_INCLUDE_DIR})
+ endif()
+
+ # Set include paths
+@@ -358,7 +357,7 @@
+ target_link_libraries(supertuxkart ${PROJECT_SOURCE_DIR}/dependencies/lib/wiiuse.lib)
+ endif()
+ else()
+- target_link_libraries(supertuxkart wiiuse bluetooth)
++ target_link_libraries(supertuxkart ${WIIUSE_LIBRARIES})
+ endif()
+ add_definitions(-DENABLE_WIIUSE)
+
diff --git a/supertuxkart.spec b/supertuxkart.spec
index 6909e11..1f68d2b 100644
--- a/supertuxkart.spec
+++ b/supertuxkart.spec
@@ -1,22 +1,15 @@
Name: supertuxkart
-Version: 0.8.1
-Release: 11%{?dist}
+Version: 0.9
+Release: 1%{?dist}
Summary: Kids 3D go-kart racing game featuring Tux
Group: Amusements/Games
License: GPLv2+ and GPLv3 and CC-BY-SA
URL: http://supertuxkart.sourceforge.net/
-Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}-src.tar.bz2
+Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}-src.tar.xz
Source1: %{name}.6
Source2: supertuxkart-0.7.3-license-clarification.txt
-Patch0: supertuxkart-fhs.patch
-# tracked in github.com/ignatenkobrain/stk-code/ in fedora-0.8.1 branch
-Patch1: 0001-fix-.desktop-file-and-install-destinations.patch
-#Patch2: 0002-unbundle-bullet.patch
-Patch3: 0003-unbundle-enet.patch
-#Patch4: 0004-unbundle-irrlicht.patch
-Patch5: 0005-unbundle-wiiuse.patch
-Patch6: 0006-Adding-a-Wiimote-with-other-one-alredy-placed-Bug-12.patch
-Patch7: supertuxkart-mesa-fix.patch
+Patch0: supertuxkart-unbundle-wiiuse.patch
+Patch1: supertuxkart-unbundle-enet.patch
BuildRequires: cmake
BuildRequires: libvorbis-devel freeglut-devel desktop-file-utils
BuildRequires: openal-soft-devel freealut-devel >= 1.1.0-10 libtool
@@ -24,7 +17,7 @@ BuildRequires: libcurl-devel enet-devel fribidi-devel
BuildRequires: wiiuse-devel bluez-libs-devel
Requires: hicolor-icon-theme opengl-games-utils
# Provide so that yum install tuxkart will work, obsolete for auto upgrade
-Provides: tuxkart = 0.8.1-1
+Provides: tuxkart = %{version}-%{release}
Obsoletes: tuxkart < 0.4.0-6
Requires: %{name}-data = %{version}
@@ -48,15 +41,10 @@ BuildArch: noarch
This package contains the data files for SuperTuxKart.
%prep
-%setup -q -n SuperTuxKart-%{version}
+%setup -q
cp -p %{SOURCE2} .
%patch0 -p1
%patch1 -p1
-#%patch2 -p1
-%patch3 -p1
-#%patch4 -p1
-%patch5 -p1
-%patch7 -p0
# Delete bundled libs
rm -rf lib/enet lib/wiiuse
#sed -i -e '/setAnimationStrength/s/^/\/\//' src/karts/kart_model.cpp
@@ -67,7 +55,7 @@ cd build
LDFLAGS="$LDFLAGS -lX11"
export LDFLAGS
%cmake ../
-make %{?_smp_mflags}
+make VERBOSE=1 %{?_smp_mflags}
%install
cd build
@@ -80,56 +68,6 @@ install -p -m 644 %{SOURCE1} %{buildroot}%{_mandir}/man6
mkdir -p %{buildroot}%{_libdir}
install -m755 lib/irrlicht/libstkirrlicht.so %{buildroot}%{_libdir}/libstkirrlicht.so
-# Register as an application to be visible in the software center
-#
-# NOTE: It would be *awesome* if this file was maintained by the upstream
-# project, translated and installed into the right place during `make install`.
-#
-# See http://www.freedesktop.org/software/appstream/docs/ for more details.
-#
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata
-cat > $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml <<EOF
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2014 Richard Hughes <richard at hughsie.com> -->
-<!--
-BugReportURL: https://github.com/supertuxkart/stk-code/issues/1545
-SentUpstream: 2014-09-18
--->
-<application>
- <id type="desktop">supertuxkart.desktop</id>
- <metadata_license>CC0-1.0</metadata_license>
- <summary>A racing game</summary>
- <description>
- <p>
- SuperTuxKart is a fun 3D kart racing game.
- You can play with up to 4 friends on one PC, racing against each other or
- just try to beat the computer.
- </p>
- <p>
- See the great lighthouse or drive through the sand and visit the pyramids.
- Race underground or in space, watching the stars passing by.
- Have some rest under the palms on the beach (watching the other karts
- overtaking you :) ).
- But don't eat the bananas! Watch for bowling balls, plungers, bubble gum
- and cakes thrown by opponents.
- </p>
- <p>
- You can do a single race against other karts, compete in one of several
- Grand Prix, try to beat the high score in time trials on your own, play
- battle mode against your friends, and more!
- </p>
- </description>
- <url type="homepage">http://supertuxkart.sourceforge.net/</url>
- <screenshots>
- <screenshot type="default">http://supertuxkart.sourceforge.net/persistent/images/4/4d/SuperTuxKart_0.8_screenshot.jpg</screenshot>
- <screenshot>http://supertuxkart.sourceforge.net/persistent/images/1/1f/SuperTuxKart_0.8_screenshot4.jpg</screenshot>
- </screenshots>
- <!-- FIXME: change this to an upstream email address for spec updates
- <updatecontact>someone_who_cares at upstream_project.org</updatecontact>
- -->
-</application>
-EOF
-
%post
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
/sbin/ldconfig
@@ -148,18 +86,23 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
desktop-file-validate %{buildroot}%{_datadir}/applications/*%{name}.desktop
%files
-%doc AUTHORS COPYING ChangeLog README TODO supertuxkart-0.7.3-license-clarification.txt
+%doc AUTHORS COPYING CHANGELOG.md README.md supertuxkart-0.7.3-license-clarification.txt
%{_bindir}/%{name}*
%{_mandir}/man6/%{name}.6.gz
%{_datadir}/appdata/*%{name}.appdata.xml
%{_datadir}/applications/*%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.png
+%{_datadir}/pixmaps/%{name}_*.png
%{_libdir}/libstkirrlicht.so
%files data
%{_datadir}/%{name}
%changelog
+* Thu Apr 23 2015 Igor Gnatenko <i.gnatenko.brain at gmail.com> - 0.9-1
+- Update to 0.9
+- Drop old patches
+
* Mon Apr 06 2015 Jon Ciesla <limburgher at gmail.com> - 0.8.1-11
- Fix FTBFS.
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/supertuxkart.git/commit/?h=master&id=3e7da34becc2191ef3b17041cc1f5ea3bb875a14
More information about the scm-commits
mailing list