[libvd] 01/03: New upstream version 1.1.0+svn7

D Haley mycae-guest at moszumanska.debian.org
Mon Sep 18 00:26:30 UTC 2017


This is an automated email from the git hooks/post-receive script.

mycae-guest pushed a commit to branch master
in repository libvd.

commit c057d58e3bd7a028517fb23cdb8d02e006d14637
Author: D Haley <mycae at gmx.com>
Date:   Mon Sep 18 02:07:27 2017 +0200

    New upstream version 1.1.0+svn7
---
 .svn/entries                                       |     1 +
 .svn/format                                        |     1 +
 ...7876f39998ffd4a2b3c64863af98ffd8b30198.svn-base |    95 +
 ...877624ea5c77efe3b7e39b0f909eda6e25a4ec.svn-base |   339 +
 ...64dc0ce263680c076a1005f35ec906a5cf5a32.svn-base |     0
 ...0f9e9ccf597a1d78183dbb3cc68bab14a060ff.svn-base |   193 +
 ...2a765aab5fbc95c80c2b8292d85964f5c9b056.svn-base |   Bin 0 -> 107125 bytes
 ...398618a38ec9373f79ec9ca4897e6646ac819a.svn-base |   213 +
 ...f1ac54563b63c1be76a333ee887be4be07460e.svn-base |   220 +
 ...990070caab66ecbdf2d5406c1833cc06f6c2e1.svn-base |     0
 ...fdc54befd829d3b7277117b8518e58ff66fde7.svn-base |   177 +
 ...b82818246a0b5d9bde71de5db41c73805a5f5b.svn-base |    76 +
 ...8daf4585a66f8f816e26494ba18db6007ea71c.svn-base |   342 +
 ...226d6d9d4d198c891b9bdb7043d1ac98f6c03c.svn-base |   148 +
 ...fa2ce7c64e17860d295019d4afe332c3680455.svn-base |     0
 ...2d209d203cab6af0a8c4e6aae487dfea635e31.svn-base |   424 +
 ...e9100a3a0019053aadd465f26b4d71582de301.svn-base |   Bin 0 -> 4194304 bytes
 ...0ea9146492ca313446f492dab12dffcca6ba61.svn-base |    42 +
 ...1c86eb521fba6ba89791c178fca767a36d28b4.svn-base |   511 +
 ...4df2776b08f36b721301d50d3b47fd0ea83aaa.svn-base |   Bin 0 -> 15301 bytes
 ...2d6cc33f774186fe9f639c6f486d9016ad8b87.svn-base |   164 +
 ...5cc60f6ebb6896943f8bb81c0e49e4eafcccc5.svn-base |    93 +
 ...2a346442fb62374492b6c894532fdf7c4e9888.svn-base |     0
 ...45cafb1712c5f816edaecf5e94e40b8052d032.svn-base |    69 +
 ...eabc6f978d37a85994d9b9880a822be02eaf23.svn-base |   166 +
 ...f217076747bc43210056d9aecf668ac2fe8b59.svn-base |   Bin 0 -> 89155 bytes
 ...f2989709fcd2db1997c492dd3b6f1e176d9e46.svn-base |    26 +
 ...b18cea89d3f7fe24380d6c2b1bd421c443732d.svn-base |   185 +
 ...f27a0276657c2eb9cc0e1fb438a0e73fca3957.svn-base |     1 +
 ...155bd737f24f6f70017913cd98dcecf190d9f2.svn-base |   Bin 0 -> 135412 bytes
 ...1e6f97915340340e4ea72d725b75003d1f2378.svn-base |   113 +
 ...413a43a0456d7f54e0c27ee896d4f8e0e25d08.svn-base |   Bin 0 -> 262144 bytes
 ...c9fe88e7b441b0319d4fa3e851da2da109f80e.svn-base |   181 +
 ...dfb90fa1b9ce749426b8bca44edf7036366e01.svn-base |   253 +
 ...ea63d1054f2526e32b7986b0d55e13507750b2.svn-base |   152 +
 ...57d89128456888089cce0d59b7c6a9bd4fe4f0.svn-base |   152 +
 ...35e14356b723161bd9daf1f75b3df8330b01bf.svn-base |     5 +
 ...513be72f1879a7ada5102ab4b5d56fb488774e.svn-base |   127 +
 ...8df17f395a397c08b219aa03d759bfdae72ebc.svn-base |   Bin 0 -> 224735 bytes
 ...dfd875d20b2ea973dc326dc2cb90c63eca9a9c.svn-base |   355 +
 ...c8c04874522e180a00e99852e7031d2a7bb1dd.svn-base |    71 +
 ...e581b554599b9016e4696450dfb99a19c24c27.svn-base |   238 +
 ...5658ba67b71ec3f0360f9ba3d7ac92e3ff516e.svn-base |   Bin 0 -> 3288 bytes
 ...5ecf59d0c54674d12efecbb00685909e2260a3.svn-base |   174 +
 ...6175975e5970153ac1214f26174581d6c97e52.svn-base |     0
 ...74589427262479af17df711596b0ff491bcd43.svn-base |     5 +
 ...462662049c2dff3eff418cc28f22ae6d063a2e.svn-base |   114 +
 ...5746a1c690b34927924227f0eb05c84c0f16fe.svn-base |    57 +
 ...65eb8bfac1f9f1ab232a70ee3debdc36947d70.svn-base |   824 ++
 ...061a695191ede614c627a62b7fa0f12ad219a8.svn-base |    91 +
 ...600fd18b96c1681e9c0c28a9c7b7789ed5b0d2.svn-base |   Bin 0 -> 196662 bytes
 ...ee31666088cab223b74838377830fd93d61c19.svn-base |    47 +
 ...f486279a493bde121b60fb01e22d7df663707a.svn-base |   186 +
 ...63acde4b90ef869d4ad963d6d5a94443f0e947.svn-base |   133 +
 ...8a48beeed65b1cc1b8dc0ae74d2609135c2185.svn-base |   127 +
 ...294b3a1a4af6af57fc602763811ea28a8c1535.svn-base |   239 +
 ...4099ef5e82b57f3ec0aaf219ae8d334a52259e.svn-base |   127 +
 ...3f05b175e1ac83a10661d060f041e8c449b1d9.svn-base |    20 +
 ...a04de11cae0435e0516e18822e9a42296e279f.svn-base |     2 +-
 ...a23faa5409811149c477bf3681ff7fb1d8b7e3.svn-base |     0
 ...59c93487e91970a66dfdbeb406fe85399e043a.svn-base | 11359 +++++++++++++++++++
 ...7925877ba6c5114a2ff8e69cc26e5848bb812d.svn-base | 11359 +++++++++++++++++++
 ...8025fcf166eeb36a443617313fe81367ee1c81.svn-base |     2 +-
 ...995cc13ff54de3197fee3206c735f9398d694d.svn-base |    15 +
 ...bfbaaadc7f791eabd79d7232fa72188d35ff77.svn-base |     0
 ...73689f12e79083d84b99dfc48fea5d78bb7a5b.svn-base |   106 +
 ...a74fe8ac00cd1860e6db3b06ff1c50daa07286.svn-base |     0
 ...35a686d1a1037ffc32059fc265c076e6bf15d5.svn-base |   203 +
 ...4d7493a6aaa6dded99c544a893df3abd122fa9.svn-base |     4 +
 ...24a909116e5ca2778d12a0e6e89107f40ec615.svn-base |   205 +
 ...6cae4d6b0baaed564f3fd3703ad8d09fb4c3e4.svn-base |   269 +
 ...d7a5725953b2e11a3aa0610aaf9676d1b0c5be.svn-base |    79 +
 ...8db4e754137bd3e5ee757eb954ed3a07e7a456.svn-base |    58 +
 ...9f8b9a6f4b84ade9709677d4556616c1deba17.svn-base |   522 +
 ...832fdaa638799e8bf927952e8226d4b1003a7e.svn-base |   Bin 0 -> 2352 bytes
 ...a0fa44a38d627c74ee0d95555619ee5abeb8df.svn-base |    96 +
 ...476b7330311e644b49a764e5ac307a9f55445e.svn-base |    71 +
 ...0f2a24cd4dbca28d330e1d80607fd43aa851e6.svn-base |   241 +
 ...8a00f4e179140077c31120fea88ae43a9d1b43.svn-base |    76 +
 ...051e612a0af3910f032a035a8acfe571ed7004.svn-base |   202 +
 ...4e977e96e1b38bdbfa82b14a032bfe500027ee.svn-base |  1078 ++
 ...05db2e680e576b9d5eb959395229147f07dd01.svn-base |   Bin 0 -> 3543 bytes
 ...abd567fa79cbe0196d093a067271361dc6ca8b.svn-base |     0
 ...01086567c830aa84681bf2bc5420e1b60dc713.svn-base |   473 +
 ...d4ef31de7004790bf77e4f3cf1373480d650ea.svn-base |   309 +
 ...01f1fdbcc33ce5ffb6e80473b7bda0906b8c91.svn-base |   117 +
 ...0406cc6fc614ccd05b94d95c30008e753fb69c.svn-base |   418 +
 ...2e050e5104b2f64952a1e2be0ae7c5b0e0fc1b.svn-base |   114 +
 ...fcb28f640205654df5517b608954de768bb749.svn-base |   322 +
 ...4a9fd7e32532c2fd886e963271c898f23a358b.svn-base |   120 +
 ...6a6823f3e1fc69772f720b10507ab83a13aa1e.svn-base |   222 +
 ...770a7c79fa957914d2e42ce9dc293097590db9.svn-base |   881 ++
 ...528e3830878d48611cf35212532d896f2d9edd.svn-base |   111 +
 ...573a6af30162e5cc33adfb00d5918c10dd3d74.svn-base | 10797 ++++++++++++++++++
 ...ad7bd26c2695182e9303830c34a0b1788b1ce3.svn-base |     0
 ...4ddd7be3516c9f42d1f9e2d39ca12f37104035.svn-base |   468 +
 ...c77a65cbcf2407724f554d3a378c67ca15899b.svn-base |   Bin 0 -> 5461 bytes
 ...d6fe749a732acb8165812ee711c7ff83f22fe4.svn-base |   316 +
 ...3a01d72cbb9e74877e19e70423d61ee3a866be.svn-base |     0
 ...3d4285205f14bf138585bb4d0580159885db34.svn-base |   152 +
 ...80b01fe7a8eed047eb75166a94f154c2a7f936.svn-base |    16 +-
 ...3fab1d4c89faa41b12f1c786b8ca29e46f07ca.svn-base |   134 +
 ...86f20b990aff4a9114df7097d748fa40a5805c.svn-base |   467 +
 ...34aaca6f4b7a9f37de65794f5551a18b889c3d.svn-base |    46 +
 ...cef8e9c050ad1af9f2b2c4c8a071dc5a30251c.svn-base |   431 +
 ...8caace2a18c00a2d831d6e84d79d75f896660a.svn-base |   Bin 0 -> 3559 bytes
 ...002d77d79fcea5e273c15ed7128e0187776e62.svn-base |   259 +
 ...ec148c577ed240cb53177cc5ca70a8cb3e5af5.svn-base |   220 +
 ...f27637b92d371a5d9abf5581083b21d29c7d53.svn-base |   Bin 0 -> 75458 bytes
 ...5c18b9a48c79095ae860a2252bc2b418aefac3.svn-base |   266 +
 ...83fc3e20ff40829173b2213f8df411f84d44c3.svn-base |   456 +
 ...7e963d33c8a6f0c78d7b94047ebc2aadbcc01b.svn-base |   445 +
 ...cca3a97e216ae7250f709f643290c1824525a0.svn-base |     0
 ...f5c4ac3852081840cf6306d740b3eb4428742c.svn-base |   222 +
 ...62ce8a1ece460b8c012c1526c267caf1379cc9.svn-base |     0
 ...d7c86e83e502d44dddf6eb0063c208f21cd98c.svn-base |     0
 ...aa0181cc92bca3c54cd4986effd738c697cdd8.svn-base |   Bin 0 -> 196685 bytes
 ...2254d0199204f99ba83419a4245447871f961c.svn-base |    76 +
 ...3650fc70009ecbb64165a158b5780df9473b92.svn-base |   380 +
 .svn/wc.db                                         |   Bin 0 -> 200704 bytes
 .svn/wc.db-journal                                 |     0
 debian/libvd1.triggers                             |     1 -
 122 files changed, 51452 insertions(+), 11 deletions(-)

diff --git a/.svn/entries b/.svn/entries
new file mode 100644
index 0000000..48082f7
--- /dev/null
+++ b/.svn/entries
@@ -0,0 +1 @@
+12
diff --git a/.svn/format b/.svn/format
new file mode 100644
index 0000000..48082f7
--- /dev/null
+++ b/.svn/format
@@ -0,0 +1 @@
+12
diff --git a/.svn/pristine/06/067876f39998ffd4a2b3c64863af98ffd8b30198.svn-base b/.svn/pristine/06/067876f39998ffd4a2b3c64863af98ffd8b30198.svn-base
new file mode 100644
index 0000000..8e4d77d
--- /dev/null
+++ b/.svn/pristine/06/067876f39998ffd4a2b3c64863af98ffd8b30198.svn-base
@@ -0,0 +1,95 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	Mask4D.cpp
+ * @author	Herve Lombaert
+ * @date	March 6th 2007
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <display/mask4d.h>
+
+namespace libvdDisplay
+{
+	Mask4D::Mask4D()
+	:	m_id(0),
+		m_nb_frames(0),
+		m_frame(0)
+	{
+	}
+
+	Mask4D::~Mask4D()
+	{
+		if(glIsList(m_id)) glDeleteLists(m_id,m_nb_frames);
+	}
+
+	void Mask4D::setFrame(unsigned int frame)
+	{
+		CHECKRANGE("frame out of range", frame, 0, m_nb_frames);
+		m_frame = frame;
+	}
+
+
+	unsigned int Mask4D::getFrame() const
+	{
+		return m_frame;
+	}
+
+	
+	unsigned int Mask4D::getNbFrames() const
+	{
+		return m_nb_frames;
+	}
+
+
+	void Mask4D::display()
+	{
+		if(!glIsList(m_id+m_frame)) return;
+
+		/* use regular glColor */
+		glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+		glPushAttrib(GL_ENABLE_BIT);
+		glEnable(GL_COLOR_MATERIAL);
+
+		/* draw list */
+		glCallList(m_id+m_frame);
+
+		glPopAttrib();
+	}
+
+	void Mask4D::clear()
+	{
+		if(glIsList(m_id)) glDeleteLists(m_id,m_nb_frames);
+		m_id = 0;
+		m_nb_frames = 0;
+		m_frame     = 0;
+	}
+
+
+} // namespace
diff --git a/.svn/pristine/06/06877624ea5c77efe3b7e39b0f909eda6e25a4ec.svn-base b/.svn/pristine/06/06877624ea5c77efe3b7e39b0f909eda6e25a4ec.svn-base
new file mode 100644
index 0000000..d511905
--- /dev/null
+++ b/.svn/pristine/06/06877624ea5c77efe3b7e39b0f909eda6e25a4ec.svn-base
@@ -0,0 +1,339 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/debian/source/format b/.svn/pristine/10/1064dc0ce263680c076a1005f35ec906a5cf5a32.svn-base
similarity index 100%
rename from debian/source/format
rename to .svn/pristine/10/1064dc0ce263680c076a1005f35ec906a5cf5a32.svn-base
diff --git a/.svn/pristine/12/120f9e9ccf597a1d78183dbb3cc68bab14a060ff.svn-base b/.svn/pristine/12/120f9e9ccf597a1d78183dbb3cc68bab14a060ff.svn-base
new file mode 100644
index 0000000..865a212
--- /dev/null
+++ b/.svn/pristine/12/120f9e9ccf597a1d78183dbb3cc68bab14a060ff.svn-base
@@ -0,0 +1,193 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <io/ioraw.h>
+#include <io/iobmp.h>
+#include <io/ioscreenshot.h>
+#include <tools/manipworld.h>
+
+#include <display/mask3d.h>
+
+/**
+ * @test Testing 3D mask display
+ */
+
+namespace TestDisplayMask3D
+{
+
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static int gModifiers = 0; // ctrl,alt,shift
+	static MouseButton gButton = NONE;
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+	int winh = 0;
+
+
+	Tools::ManipWorld manipWorld;
+	Display::Mask3D displayMask;
+	unsigned char* mask;
+	unsigned int size[3];
+
+
+	void init()
+	{
+		glClearColor (0.25, 0.4, 0.6, 1.0);
+		glShadeModel(GL_SMOOTH);
+		glEnable(GL_DEPTH_TEST);
+
+		manipWorld.init();
+		manipWorld.translate(0,0,-3.6);
+
+		displayMask.update(mask, size[0], size[1], size[2]);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+		glMatrixMode(GL_MODELVIEW);
+
+		winh = h;
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		
+		GLfloat lightPos[4] = {0,0,5,1};
+		glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
+
+		/* Rotate volume with mouse movement */
+		manipWorld.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(2,2,2);
+
+		glEnable(GL_DEPTH_TEST);
+
+		glColor3f(0.1,0.02,0);
+		displayMask.display();
+
+		glDisable(GL_DEPTH_TEST);
+
+		glPopMatrix();
+		
+		glutSwapBuffers();
+	}
+
+	void mouse(int button, int state, int x, int y)
+	{
+		gModifiers = glutGetModifiers();
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				break;
+
+			case GLUT_RIGHT_BUTTON:
+				gButton = RIGHT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				break;
+
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+			{
+				float dx = (x - gPrevMouse[0]);
+				float dy = (gPrevMouse[1] -y);
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				manipWorld.rotateYAxis(dx);
+				manipWorld.rotateXAxis(dy);
+				glutPostRedisplay();
+				break;
+			}
+			case RIGHT:
+			{
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[1] = y;
+
+				float deltaZoom = 1.0f + dy / 100.0f;
+				manipWorld.zoom(deltaZoom);
+				glutPostRedisplay();
+				break;
+			}
+			default:
+				break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		bool refresh = true;
+
+		switch(key)
+		{
+		case 'q':
+			glutDestroyWindow(winid); // close window, terminate glut loop
+			exit(0); // on OSX for some reason the program does not terminate
+		default: refresh = false; break;
+		}
+
+		if(refresh) glutPostRedisplay();
+	}
+
+	int main_init()
+	{
+		try
+		{
+			size[0] = 64,
+			size[1] = 64,
+			size[2] = 64;
+
+			IO::Raw::read("data/uchar-256x256x185-mask.raw", mask, size[0]*size[1]*size[2]);
+			
+			glutInitWindowSize(250, 250);
+			winid = glutCreateWindow("mask3d");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+
+			return 0;
+		}
+		catch(const Error &e) { e.print(); }
+		catch(...) { printf("unknown error\n"); }
+
+		return 1;
+	}
+
+} // namespace
diff --git a/.svn/pristine/15/152a765aab5fbc95c80c2b8292d85964f5c9b056.svn-base b/.svn/pristine/15/152a765aab5fbc95c80c2b8292d85964f5c9b056.svn-base
new file mode 100644
index 0000000..881d868
Binary files /dev/null and b/.svn/pristine/15/152a765aab5fbc95c80c2b8292d85964f5c9b056.svn-base differ
diff --git a/.svn/pristine/17/17398618a38ec9373f79ec9ca4897e6646ac819a.svn-base b/.svn/pristine/17/17398618a38ec9373f79ec9ca4897e6646ac819a.svn-base
new file mode 100644
index 0000000..8b68018
--- /dev/null
+++ b/.svn/pristine/17/17398618a38ec9373f79ec9ca4897e6646ac819a.svn-base
@@ -0,0 +1,213 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	displayhistogram.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include "msvc/GLee.h"
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <tools/transferfunction/displayhistogram.h>
+
+namespace Tools { namespace TransferFunction
+{
+	DisplayHistogram::DisplayHistogram()
+	:	m_histogram(NULL),
+		m_nbBins(0),
+		m_min(0),
+		m_max(0),
+		m_left(0),
+		m_right(0),
+		m_height(0),
+		m_maxheight(0),
+		m_selected(0),
+		m_lasty(0),
+		m_textureName(0)
+	{}
+
+
+	DisplayHistogram::~DisplayHistogram()
+	{
+		/* free some memory */
+		if(m_nbBins>0) delete [] m_histogram;
+		if(glIsTexture(m_textureName))
+			glDeleteTextures(1, &m_textureName);
+	}
+
+
+	void DisplayHistogram::clamp(float left, float right)
+	{
+		/* update left and right value of visible histogram */
+		m_left  = left;
+		m_right = right;
+
+		/* what is the maximum height in this section */
+		float binSize = (m_max-m_min) / m_nbBins;
+		int leftbin  = static_cast<int>((left-m_min) / binSize);
+		int rightbin = static_cast<int>((right-m_min) / binSize);
+		if(leftbin<0) leftbin = 0;
+		if(rightbin>=(int)m_nbBins) rightbin = m_nbBins-1;
+		m_height = 0;
+
+		/* scan the histogram and find the highest bin */
+		for(int i=leftbin; i<rightbin; ++i)
+		{
+			if(m_histogram[i] > m_height)
+				m_height = (float)m_histogram[i]; // update highest visible bin
+		}
+	}
+
+
+	void DisplayHistogram::updateTexture(unsigned int width, unsigned int height, float r, float g, float b, float a)
+	{
+		/* create new texture */
+		if(!glIsTexture(m_textureName)) glGenTextures(1, &m_textureName);
+		float* texture = new float [width*height*4]; // RGBA
+		for(unsigned int i=0; i<width*height; ++i)
+			texture[i*4+0] = 0,
+			texture[i*4+1] = 0,
+			texture[i*4+2] = 0,
+			texture[i*4+3] = 0;
+
+		/* fill texture */
+		for(unsigned int i=0; i<width; ++i)
+		{
+			/* what bin */
+			unsigned int bin = static_cast<int>((m_nbBins-1)*i/width);
+			CHECKRANGE("bin index", bin, 0, m_nbBins);
+
+			/* whats the bin height */
+			unsigned int max = static_cast<int>((height-1)*m_histogram[bin]/m_maxheight);
+			CHECKRANGE("bin height", max, 0, height);
+
+			/* fill bin */
+			for(unsigned int j=0; j<max; ++j)
+				texture[(j*width+i)*4+0] = r,
+				texture[(j*width+i)*4+1] = g,
+				texture[(j*width+i)*4+2] = b,
+				texture[(j*width+i)*4+3] = a;
+		}
+
+		/* send texture to graphic card */
+		glBindTexture(GL_TEXTURE_2D, m_textureName); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+		glTexImage2D(GL_TEXTURE_2D,
+				 0,
+				 GL_RGBA,
+				 width,
+				 height,
+				 0,
+				 GL_RGBA,
+				 GL_FLOAT,
+				 texture);
+		glCheckError();
+
+		/* free texture now (it is now on graphic card) */
+		delete [] texture;
+	}
+
+
+	void DisplayHistogram::display() const
+	{
+		if(m_histogram)
+		{
+			// texture coordinate of left, right, top limits
+			float u0 = (m_left-m_min)/(m_max-m_min);
+			float u1 = (m_right-m_min)/(m_max-m_min);
+			float v1 = m_height / m_maxheight;
+	
+			glEnable(GL_BLEND);
+			glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+	
+			glEnable(GL_TEXTURE_2D);
+			glBindTexture(GL_TEXTURE_2D, m_textureName); glCheckError();
+	
+			glColor3f(1,1,1);
+	
+			glBegin(GL_QUADS);
+			glTexCoord2f(u0,0);  glVertex3f(-0.5,-0.5,0);
+			glTexCoord2f(u1,0);  glVertex3f(+0.5,-0.5,0);
+			glTexCoord2f(u1,v1); glVertex3f(+0.5,+0.5,0);
+			glTexCoord2f(u0,v1); glVertex3f(-0.5,+0.5,0);
+			glEnd();
+	
+			glDisable(GL_TEXTURE_2D);
+			glDisable(GL_BLEND);
+		}
+	}
+
+
+	bool DisplayHistogram::mouse(float x, float y)
+	{
+		// NB: mouse coordinates are normalized (0..1)
+
+		m_lastx = x;
+		m_lasty = y;
+
+		if(x>=0 && x<=1 && y>=0 && y<=1)
+			m_selected = true;
+		else
+			m_selected = false;
+
+		return m_selected;
+	}
+
+
+	bool DisplayHistogram::motion(float x, float y)
+	{
+		// NB: mouse coordinates are normalized (0..1)
+
+		if(m_selected)
+		{
+				// what is the intensity at mouse position x
+			float lasti = m_lastx*(m_right-m_left) + m_left;
+			float i     =       x*(m_right-m_left) + m_left;
+		
+			// change visible span of histogram with vertical movement
+			float dspan = (m_lasty-y)*(m_max-m_min);
+		
+			// i is the new histogram center
+			float di = lasti - i;
+			if(m_left+di-dspan/2 < m_right+di+dspan/2)
+				clamp(m_left+di-dspan/2, m_right+di+dspan/2);
+		
+			// update last mouse coordinate
+			m_lastx = x;
+			m_lasty = y;
+		}
+
+		return m_selected;
+	}
+
+
+}} // namespace
diff --git a/.svn/pristine/1a/1af1ac54563b63c1be76a333ee887be4be07460e.svn-base b/.svn/pristine/1a/1af1ac54563b63c1be76a333ee887be4be07460e.svn-base
new file mode 100644
index 0000000..6ee4a82
--- /dev/null
+++ b/.svn/pristine/1a/1af1ac54563b63c1be76a333ee887be4be07460e.svn-base
@@ -0,0 +1,220 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <io/ioraw.h>
+#include <tools/manipworld.h>
+
+#include <display/display3d.h>
+//#include "display3d.h"
+#include <display/multidisplay.h>
+
+/**
+ * @test Testing 3D volume renderer
+ */
+
+namespace TestMulti3D
+{
+
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static int gModifiers = 0; // ctrl,alt,shift
+	static MouseButton gButton = NONE;
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+	int winh = 0;
+
+
+	Tools::ManipWorld manipWorld;
+	Display::Volume vr1;
+	Display::Volume vr2;
+	Display::Multi<Display::Volume> displayVolume;
+	unsigned short* v1;
+	unsigned short* v2;
+	unsigned int s1[3];
+	unsigned int s2[3];
+
+
+	void init()
+	{
+		glClearColor (0.25, 0.4, 0.6, 1.0);
+
+		manipWorld.init();
+		manipWorld.translate(0,0,-3.6);
+
+		vr1.update(v1, s1[0], s1[1], s1[2]);
+		vr2.update(v2, s2[0], s2[1], s2[2]);
+
+		vr2.updateRamp(30,95);
+
+		displayVolume.add(&vr1, 0.50f, 0.50f, 0.50f);
+		displayVolume.add(&vr2, 0.65f, 0.35f, 0.35f);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+		glMatrixMode(GL_MODELVIEW);
+
+		winh = h;
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		
+		/* Rotate volume with mouse movement */
+		manipWorld.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(2,2,2);
+
+		glEnable(GL_DEPTH_TEST);
+
+		displayVolume.display();
+		//vr2.display();
+
+		glDisable(GL_DEPTH_TEST);
+
+		glPopMatrix();
+		
+		glutSwapBuffers();
+	}
+
+	void mouse(int button, int state, int x, int y)
+	{
+		gModifiers = glutGetModifiers();
+
+		/* degrade the volume when moving the mouse, so the rendering is interactive */
+		//if(state == GLUT_DOWN) displayVolume.setQuality(0.50);                         // low resolution (interactive)
+		//else                 { displayVolume.setQuality(1.0f); glutPostRedisplay(); }  // full resolution
+
+		/* pick if shift is pressed */
+		if(gModifiers == GLUT_ACTIVE_SHIFT && button == GLUT_LEFT_BUTTON)
+		{
+		}
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				break;
+
+			case GLUT_RIGHT_BUTTON:
+				gButton = RIGHT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				break;
+
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+			{
+				float dx = (x - gPrevMouse[0]);
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				manipWorld.rotateYAxis(dx);
+				manipWorld.rotateXAxis(dy);
+				glutPostRedisplay();
+				break;
+			}
+			case RIGHT:
+			{
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[1] = y;
+
+				float deltaZoom = 1.0f + dy / 100.0f;
+				manipWorld.zoom(deltaZoom);
+				glutPostRedisplay();
+				break;
+			}
+			default:
+				break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		bool refresh = true;
+
+		switch(key)
+		{
+		//case '1': displayVolume.setMode(Display::Volume::VRT); break;
+		//case '2': displayVolume.setMode(Display::Volume::MIP); break;
+		//case '3': displayVolume.setMode(Display::Volume::MPR); break;
+
+		case 'q':
+			glutDestroyWindow(winid); // close window, terminate glut loop
+			exit(0); // on OSX for some reason the program does not terminate
+		default:
+			break;
+		}
+
+		if(refresh) glutPostRedisplay();
+	}
+
+	int main_init()
+	{
+		try
+		{
+			s1[0] = 128,
+			s1[1] = 128,
+			s1[2] = 128;
+
+			s2[0] = 128,
+			s2[1] = 128,
+			s2[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", v1, s1[0]*s1[1]*s1[2]);
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", v2, s2[0]*s2[1]*s2[2]);
+			
+			glutInitWindowSize(250, 250);
+			//glutInitWindowPosition(100, 100);
+			winid = glutCreateWindow("multi");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+		
+			//glutMainLoop();
+			
+			return 0;
+		}
+		catch(const Error &e) { e.print(); }
+		catch(...) { printf("unknown error\n"); }
+
+		return 1;
+	}
+
+} // namespace
diff --git a/debian/libvd1.install b/.svn/pristine/1b/1b990070caab66ecbdf2d5406c1833cc06f6c2e1.svn-base
similarity index 100%
rename from debian/libvd1.install
rename to .svn/pristine/1b/1b990070caab66ecbdf2d5406c1833cc06f6c2e1.svn-base
diff --git a/.svn/pristine/1d/1dfdc54befd829d3b7277117b8518e58ff66fde7.svn-base b/.svn/pristine/1d/1dfdc54befd829d3b7277117b8518e58ff66fde7.svn-base
new file mode 100644
index 0000000..e718374
--- /dev/null
+++ b/.svn/pristine/1d/1dfdc54befd829d3b7277117b8518e58ff66fde7.svn-base
@@ -0,0 +1,177 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	pick.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#include <GL/glu.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#include <OpenGL/glu.h>
+#else
+#include <GL/gl.h>
+#include <GL/glu.h>
+#endif
+
+#include <tools/pick.h>
+#include <error.h>
+
+namespace Tools
+{
+	Pick::Pick()
+	:	m_maxalpha(0.2f),
+		m_displayId(0),
+		m_displayCreated(false)
+	{
+		m_modelview[0]  = 1; m_modelview[1]  = 0; m_modelview[2]  = 0; m_modelview[3]  = 0;
+		m_modelview[4]  = 0; m_modelview[5]  = 1; m_modelview[6]  = 0; m_modelview[7]  = 0;
+		m_modelview[8]  = 0; m_modelview[9]  = 0; m_modelview[10] = 1; m_modelview[11] = 0;
+		m_modelview[12] = 0; m_modelview[13] = 0; m_modelview[14] = 0; m_modelview[15] = 1;
+
+		m_projection[0]  = 1; m_projection[1]  = 0; m_projection[2]  = 0; m_projection[3]  = 0;
+		m_projection[4]  = 0; m_projection[5]  = 1; m_projection[6]  = 0; m_projection[7]  = 0;
+		m_projection[8]  = 0; m_projection[9]  = 0; m_projection[10] = 1; m_projection[11] = 0;
+		m_projection[12] = 0; m_projection[13] = 0; m_projection[14] = 0; m_projection[15] = 1;
+	}
+
+
+	Pick::~Pick()
+	{
+		if(m_displayCreated && glIsList(m_displayId)) glDeleteLists(m_displayId,1);
+	}
+
+
+	void Pick::saveMatrices()
+	{
+		glGetDoublev(GL_MODELVIEW_MATRIX, m_modelview);
+		glGetDoublev(GL_PROJECTION_MATRIX, m_projection);
+	}
+
+
+	void Pick::enable() const
+	{
+		/* save the visualiaztion matrices */
+		glGetDoublev(GL_MODELVIEW_MATRIX, m_modelview);
+		glGetDoublev(GL_PROJECTION_MATRIX, m_projection);
+
+		/* check wether a display list is currently being created */
+		GLint mode;
+		GLint id;
+		glGetIntegerv(GL_LIST_MODE, &mode);
+		glGetIntegerv(GL_LIST_INDEX, &id);
+		if(glIsList(id) && (mode == GL_COMPILE || mode == GL_COMPILE_AND_EXECUTE))
+		{
+			m_displayId = id;
+			m_displayCreated = false;
+		}
+		else
+		{
+			/* check if a display list has already been created */
+			if(!glIsList(m_displayId))
+			{
+				m_displayId = glGenLists(1);
+			}
+
+			/* define the list, all further commands will be
+			 * executed and put in this display list */
+			glNewList(m_displayId, GL_COMPILE_AND_EXECUTE);
+			m_displayCreated = true;
+			glCheckError();
+		}
+	}
+
+
+	void Pick::disable() const
+	{
+		/* end of display list */
+		if(m_displayCreated)
+			glEndList();
+		glCheckError();
+	}
+
+
+	bool Pick::get(int mouse_x, int mouse_y, float &x, float &y, float &z) const
+	{
+		/* saving opengl matrices */
+		GLint viewport[4];
+		glGetIntegerv(GL_VIEWPORT, viewport);
+
+		// set the viewport at the origin (to match the mouse coordinate that has (0,0) as origin)
+		viewport[0] = 0;
+		viewport[1] = 0;
+		glViewport(viewport[0],viewport[1],viewport[2],viewport[3]);
+
+		glMatrixMode(GL_PROJECTION);
+		glPushMatrix();
+		glLoadMatrixd(m_projection); // using saved projection
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixd(m_modelview); // using saved modelview
+
+		/* render object */
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear buffers
+		glAlphaFunc(GL_GREATER, m_maxalpha); // avoid transparent fragment to be rendered
+		glEnable(GL_ALPHA_TEST);
+		glEnable(GL_DEPTH_TEST);
+
+		/* draw objects to be picked */
+		glCallList(m_displayId);
+
+		glDisable(GL_ALPHA_TEST);
+		glDisable(GL_DEPTH_TEST);
+		glFlush();
+
+		/* restoring opengl matrices */
+		glMatrixMode(GL_PROJECTION);
+		glPopMatrix();
+
+		glMatrixMode(GL_MODELVIEW);
+		glPopMatrix();
+
+		/* done with rendering, now do some conversion */
+
+		/* depth of pixel (x,y) */
+		GLfloat mouse_z = 0;
+		glReadPixels(mouse_x, mouse_y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &mouse_z);
+
+		/* what is the 3D position of pixel (x,y) */
+		GLdouble xx,yy,zz;
+		gluUnProject(mouse_x, mouse_y, mouse_z, m_modelview, m_projection, viewport, &xx, &yy, &zz);
+		x = (float)xx; y = (float)yy; z = (float)zz;
+
+		/* if the Z buffer is not the far plane, an object has been hit */
+		if(mouse_z < 1) return true; // object is hit
+		else            return false;
+	}
+
+
+	void Pick::setMaxAlpha(float max)
+	{
+		m_maxalpha = max;
+	}
+
+} // namespace
diff --git a/.svn/pristine/20/20b82818246a0b5d9bde71de5db41c73805a5f5b.svn-base b/.svn/pristine/20/20b82818246a0b5d9bde71de5db41c73805a5f5b.svn-base
new file mode 100644
index 0000000..421b954
--- /dev/null
+++ b/.svn/pristine/20/20b82818246a0b5d9bde71de5db41c73805a5f5b.svn-base
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/** @file slidebar.h
+ *  @author Herve Lombaert
+ *	@date	Feb 7th, 2007
+ *
+ *	Adds a slide bar
+ */
+
+#ifndef SLIDEBAR_H
+#define SLIDEBAR_H
+
+
+namespace Tools
+{
+
+	class SlideBar
+	{
+	public:
+		SlideBar();
+		~SlideBar();
+
+		/** get the slide bar position (between 0..1) */
+		float get() const;
+
+		/** set the slide bar position (between 0..1) */
+		void set(float val);
+
+		/** display the bar */
+		void display() const;
+
+		/** set the slide bar size and position on the screen */
+		void place(int x, int y, int width, int height, int win_width, int win_height);
+
+		/** handle mouse press */
+		bool mouse(int x, int y);
+
+		/** handle mouse motion */
+		bool motion(int x, int y);
+
+		/** reshape the slide bar */
+		void reshape(int w, int h);
+
+	private:
+		float m_val; /// value of the bar between (0..1)
+		int m_posx;
+		int m_posy;
+		int m_width;
+		int m_height;
+		int m_win_width;
+		int m_win_height;
+		bool m_mouse_pressed;
+	};
+
+} // namespace
+
+
+#endif
diff --git a/.svn/pristine/21/218daf4585a66f8f816e26494ba18db6007ea71c.svn-base b/.svn/pristine/21/218daf4585a66f8f816e26494ba18db6007ea71c.svn-base
new file mode 100644
index 0000000..058b6e9
--- /dev/null
+++ b/.svn/pristine/21/218daf4585a66f8f816e26494ba18db6007ea71c.svn-base
@@ -0,0 +1,342 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	ioavi.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <io/ioavi.h>
+
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <error.h>
+
+
+/// swap bytes if cpu is big endian (eg. apple ppc), do nothing if little endian (eg. intel pc)
+#if APPLE
+#define INTCPU(i) i = ((i&0xff000000)>>24) | (((i&0x00ff0000)>>16)<<8) | (((i&0x0000ff00)>>8)<<16) | ((i&0x000000ff)<<24);
+#else
+#define INTCPU(i) ;
+#endif
+
+
+namespace IO
+{
+	void readAVIFrame(const char*            filename,
+	             color<unsigned char>* &frame,
+	             unsigned int          &frame_width,
+	             unsigned int          &frame_height,
+	             unsigned int           frame_nb)
+	{
+		AVI reader(filename);
+		reader.read(frame, frame_nb);
+		reader.getFrameSize(frame_width, frame_height);
+	}
+		
+		
+	void readAVI(const char*            filename,
+	             color<unsigned char>* &image,
+	             unsigned int          &frame_width,
+	             unsigned int          &frame_height,
+	             unsigned int          &nb_frames)
+	{
+		AVI reader(filename);
+		reader.read(image);
+		reader.getFrameSize(frame_width, frame_height);
+		nb_frames = reader.getNbFrames();
+	}
+
+
+	AVI::~AVI()
+	{
+		if(m_fd) fclose(m_fd);
+	}
+
+
+	AVI::AVI(const char* filename)
+	{
+		if(filename) open(filename);
+	}
+
+
+	void AVI::getFrameSize(unsigned int &width, unsigned int &height)
+	{
+		// Check if file is opened
+		if(!m_fd) throw LOCATE(Error("file not opened"));
+
+		width  = m_header.width;
+		height = m_header.height;
+	}
+
+
+	void AVI::open(const char* filename)
+	{
+		if(!filename) throw LOCATE(Error("no filename"));
+
+		// Open file
+		m_fd = fopen(filename, "rb");
+		if(!m_fd) throw LOCATE(Error("open"));
+
+		// Read header
+		readHeader();
+	}
+
+
+	void AVI::close()
+	{
+		if(!m_fd) throw LOCATE(Error("nothing to close"));
+
+		// Close file
+		fclose(m_fd);
+	}
+
+
+	void AVI::readHeader()
+	{
+		size_t bread; /* read bytes */
+		char ident[4];
+		unsigned int size;
+		char *data;
+		bool loop = true;
+
+		// Check if a file is opened
+		if(!m_fd) throw LOCATE(Error("nothing to read"));
+
+		/*******************
+		 * Read file header
+		 *******************/
+
+		/* (RIFF) (filesize) (AVI ) */
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"RIFF",4)) throw LOCATE(Error("not a RIFF file (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		bread = fread(&size, 4, 1, m_fd);	INTCPU(size);
+		
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"AVI ",4)) throw LOCATE(Error("not an AVI file (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		/* (LIST) (header size) (hdrl) : header list */
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"LIST",4)) throw LOCATE(Error("LIST expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		bread = fread(&size, 4, 1, m_fd);
+
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"hdrl",4)) throw LOCATE(Error("hdrl expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		/* (avih) (avi header size) (data) : avi header */
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"avih",4)) throw LOCATE(Error("avih expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		bread = fread(&size, 4, 1, m_fd);	INTCPU(size);
+		if(size != 56) throw LOCATE(Error("wrong header file"));
+
+		/* avi header */
+		bread = fread(&m_header, size, 1, m_fd);
+
+		/* (LIST) (stream headers size) (strl) : list of stream headers */
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"LIST",4)) throw LOCATE(Error("LIST expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		bread = fread(&size, 4, 1, m_fd);	INTCPU(size);
+
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"strl",4)) throw LOCATE(Error("strl expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		/* (strh) (stream header size) (data) : stream header */
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"strh",4)) throw LOCATE(Error("strh expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		bread = fread(&size, 4, 1, m_fd);	INTCPU(size);
+
+		/* stream header */
+		data = (char*)malloc(size);
+		bread = fread(data, 1, size, m_fd);
+		free(data);
+
+		/* (strf) (stream format size) (data) : stream format */
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"strf",4)) throw LOCATE(Error("strf expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		bread = fread(&size, 4, 1, m_fd);	INTCPU(size);
+
+		/* stream format */
+		data = (char*)malloc(size);
+		bread = fread(data, 1, size, m_fd);
+		free(data);
+
+		// stream format read
+
+		while(loop)
+		{
+			/* optional (strn|strd) (size) (data)
+			 * strn - stream name
+			 * strd - stream header */
+			bread = fread(ident, 1, 4, m_fd);
+
+			if( !strncmp(ident,"strn",4) ||
+				!strncmp(ident,"strd",4) )
+			{
+				bread = fread(&size, 4, 1, m_fd);	INTCPU(size);
+
+				/* stream name or stream header */
+				data = (char*)malloc(size);
+				bread = fread(data, 1, size+1, m_fd); /* read name +'\0' */
+				free(data);
+			}
+			else if(!strncmp(ident,"indx",4) ||
+					!strncmp(ident,"idxl",4))
+				return; // need to read chunk index, but it is not necessary
+			else if(!strncmp(ident,"JUNK",4))
+				loop = false; // stop loop, read JUNK padding
+			else
+				throw LOCATE(Error("strn or strd expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+		}
+
+		// optional stream name or stream header read
+
+		/* (JUNK) (size) (padding) : 2k limit */
+		bread = fread(&size, 4, 1, m_fd);	INTCPU(size);
+
+		bread = fseek(m_fd, size, SEEK_CUR); /* jump padding */
+		if(bread) throw LOCATE(Error("jump padding"));
+
+		/* (LIST) (data size) (movie) : list of chunks */
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"LIST",4)) throw LOCATE(Error("LIST expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+
+		bread = fread(&size, 4, 1, m_fd);	INTCPU(size);
+
+		bread = fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"movi",4)) throw LOCATE(Error("movi expected while reading (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+	}
+
+
+	unsigned int AVI::getNbFrames()
+	{
+		if(!m_fd) throw LOCATE(Error("file not opened"));
+
+		return m_header.number_frames;
+	}
+
+
+	void AVI::read(color<unsigned char>* &image, unsigned int frame)
+	{
+		char ident[4];
+		unsigned int size;
+		
+		/*******************
+		 * Read frame
+		 *******************/
+		
+		// Check if file is opened
+		if(!m_fd) throw LOCATE(Error("file not opened"));
+		
+		// Check if the frame requested exist in file
+		if(frame<0 || frame>=m_header.number_frames) throw LOCATE(Error("frame out of bound")); // out of movie
+		
+		// Go to the actual frame
+		unsigned long offset = 2048 + frame*(m_header.width*m_header.height*3+8);
+		fseek(m_fd, offset, SEEK_SET);
+		
+		/* (00db) (frame size) */
+		fread(ident, 1, 4, m_fd);
+		if(strncmp(ident,"00db",4)) throw LOCATE(Error("wrong format"));
+		
+		/* read frame size */
+		fread(&size, 4, 1, m_fd);	INTCPU(size);
+		
+		/* check if frame size is the same as image size */
+		if(size != m_header.width*m_header.height*3) throw LOCATE(Error("wrong frame size"));
+		
+		/* allocate memory for the image */
+		image = new color<unsigned char> [m_header.width * m_header.height];
+		
+		/* read this frame */
+		unsigned int n = (unsigned int)fread(image, 3, m_header.width*m_header.height, m_fd);
+		if(n != m_header.width*m_header.height) throw LOCATE(Error("EOF reached while reading"));
+	}
+
+	void AVI::read(color<unsigned char>* &image) // read whole movie
+	{
+		read(image, 0, m_header.number_frames-1);
+	}
+
+	void AVI::read(color<unsigned char>* &image, unsigned int start, unsigned int end) // read part of the movie
+	{
+		char ident[4];
+		unsigned int size;
+		
+		// Check if file is opened
+		if(!m_fd) throw LOCATE(Error("file not opened"));
+		
+		// Check if the frame requested exist in file
+		if(start<0 || start>=m_header.number_frames) throw LOCATE(Error("start position out of bound")); // out of movie
+		if(end<0   || end>=m_header.number_frames)   throw LOCATE(Error("end position out of bound")); // out of movie
+		if(start>end) throw LOCATE(Error("start position is after end position")); // this may become a reverse reading
+		
+		// Go to the actual frame
+		unsigned long offset = 2048 + start*(m_header.width*m_header.height*3+8);
+		fseek(m_fd, offset, SEEK_SET);
+		
+		/*******************
+		 * Create Image (2D+t)
+		 *******************/
+		
+		image = new color<unsigned char> [m_header.width * m_header.height * (end-start+1)];
+		
+		/*******************
+		* Read file header
+		*******************/
+		
+		for(unsigned int t=0; t<end-start+1; ++t)
+		{
+			/* (00db) (frame size) */
+			fread(ident, 1, 4, m_fd);
+			if(strncmp(ident,"00db",4)) throw LOCATE(Error("wrong format (%c%c%c%c)",ident[0],ident[1],ident[2],ident[3]));
+			
+			/* read frame size */
+			fread(&size, 4, 1, m_fd);	INTCPU(size);
+			
+			/* check if frame size is the same as image size */
+			if(size != m_header.width*m_header.height*3) throw LOCATE(Error("wrong frame size"));
+			
+			/* read this frame */
+			unsigned int n = (unsigned int)fread(&image[t*m_header.width*m_header.height], 3, m_header.width*m_header.height, m_fd);
+			if(n != m_header.width*m_header.height) throw LOCATE(Error("EOF reached while reading"));
+		}
+	}
+
+
+}; // namespace
+
+
diff --git a/.svn/pristine/22/22226d6d9d4d198c891b9bdb7043d1ac98f6c03c.svn-base b/.svn/pristine/22/22226d6d9d4d198c891b9bdb7043d1ac98f6c03c.svn-base
new file mode 100644
index 0000000..fd8040a
--- /dev/null
+++ b/.svn/pristine/22/22226d6d9d4d198c891b9bdb7043d1ac98f6c03c.svn-base
@@ -0,0 +1,148 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	clip.h
+ * @author	Herve Lombaert
+ * @date	November 15th, 2006
+ */
+
+#ifndef CLIP_H
+#define CLIP_H
+
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+#include <vector>
+#include <cmath>
+#include <error.h>
+
+
+namespace Tools
+{
+	/**
+	 * @class Clip
+	 * @brief Clip objects
+	 *
+	 * Clip a scene with a plane. For instance, when visualizing a volume, clipping
+	 * will reveal what is inside the volume
+	 *
+	 * \image html clip.png
+	 * \image latex clip.png
+	 *
+	 * Use and manipulate a clip plane with:
+	 *
+	 * \code
+	 *	Clip plane;
+	 *
+	 *	   plane.enable();
+	 *	// ... draw  ...
+	 *	// plane.display(); // optionnaly draw the plane
+	 *	   plane.disable();
+	 *
+	 *	plane.rotateWithScreen(delta_mouse_x, delta_mouse_y);
+	 *	plane.slide(delta_mouse_y);
+	 * \endcode
+	 *
+	 * Note, there is currently a maximum of 6 available clip planes
+	 * If using more clip planes, an Error will be thrown
+	 */
+
+
+	class Clip
+	{
+	public:
+		Clip();
+		~Clip();
+
+		/** enable clip plane
+		 *  when using this method while drawing every object drawn next will be clipped */
+		void enable();
+
+		/** disable clip plane
+		 *  use this method after enable() while drawing */
+		void disable();
+
+		/** slide plane */
+		void slide(float d);
+
+		/** rotate the plane from its current orientation
+		 *  @param dx a rotation around the plane Y world axis
+		 *  @param dy a rotation around the plane X world axis */
+		void rotateWithWorld(float dx, float dy);
+
+		/** rotate plane with mouse movement
+		 *  this method requires the currnet modelview matrix, it is assumed
+		 *  to be the same as when "enable()" was called
+		 *  @param dx a rotation around the screen Y axis (horizontal movement)
+		 *  @param dy a rotation around the screen X axis (vertical movement) */
+		void rotateWithScreen(float dx, float dy);
+
+		/** display a plane close to the origin
+		 *  @param use_cross_section draw a cross section of a unit centered cube */
+		void display(bool use_cross_section=true) const;
+
+		/** Use identity matrix for the clip plane, that is a plane normal to the Z axis */
+		void init();
+
+		/** Get plane matrix
+		 *  @param m (out) plane matrix (4x4 rotation and translation) */
+		void getPlaneMatrix(float m[]) const;
+
+		/** Set modelview matrix */
+		void setPlaneMatrix(const float m[]);
+
+	private:
+		/** make sure the translation part of the plane matrix
+		 *  is always the shortest distance from plane to origin */
+		void correctMatrix();
+
+		/** Draw a cross section of a centered unit square */
+		void drawCrossSection(const float m[]) const;
+
+		/** Draw a plane */
+		void drawPlane(const float m[]) const;
+
+		static void mult(const float a[], const float b[], float m[]); /// multiply matrices
+		static void transp(float m[]); /// transpose matrix
+
+		/** Manage the plane Id (OpenGL has a limited number of clip planes) */
+		struct PlaneManager {
+			PlaneManager();          ///< init the list of available plane
+			GLenum allocate();       ///< remove a plane from the list of available plane
+			void free(GLenum);       ///< add a plane to the list of available plane
+			enum { NBPLANES = 6 };   ///< GL_CLIP_PLANE0 to GL_CLIP_PLANE5
+			bool m_planes[NBPLANES]; ///< list of available planes
+		};
+
+	private:
+		float m_planeMatrix[16];             ///< plane matrix
+		float m_modelview[16];               ///< modelview matrix (saved in "enable")
+		GLenum m_planeId;                    ///< clip plane id of current object
+		static PlaneManager* m_planeManager; ///< which plane is available next (singleton, so it uplives in a library)
+	};
+
+
+} // namespace
+
+#endif
diff --git a/debian/copyright b/.svn/pristine/22/22fa2ce7c64e17860d295019d4afe332c3680455.svn-base
similarity index 100%
rename from debian/copyright
rename to .svn/pristine/22/22fa2ce7c64e17860d295019d4afe332c3680455.svn-base
diff --git a/.svn/pristine/26/262d209d203cab6af0a8c4e6aae487dfea635e31.svn-base b/.svn/pristine/26/262d209d203cab6af0a8c4e6aae487dfea635e31.svn-base
new file mode 100644
index 0000000..243d908
--- /dev/null
+++ b/.svn/pristine/26/262d209d203cab6af0a8c4e6aae487dfea635e31.svn-base
@@ -0,0 +1,424 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	clip.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <tools/clip.h>
+#include <map>
+#include <utility>
+
+
+namespace Tools
+{
+	Clip::PlaneManager* Clip::m_planeManager = NULL; // which plane is available next
+
+
+	Clip::PlaneManager::PlaneManager()
+	{
+		for(int i=0; i!=NBPLANES; ++i) m_planes[i] = true; // all planes available
+	}
+
+
+	GLenum Clip::PlaneManager::allocate()
+	{
+		// return the first plane
+		for(int i=0; i!=NBPLANES; ++i)
+		{
+			if(m_planes[i])
+			{
+				m_planes[i] = false; // this plane is no longer available
+				return (GL_CLIP_PLANE0+i);
+			}
+		}
+		throw LOCATE(Error("cannot find a new clip plane"));
+	}
+
+
+	void Clip::PlaneManager::free(GLenum plane)
+	{
+		int index = plane-GL_CLIP_PLANE0;
+		if(index>=0 && index<NBPLANES)
+			m_planes[index] = true;
+		else
+			throw LOCATE(Error("Plane %d is not defined by OpenGL", plane));
+	}
+
+
+	Clip::Clip()
+	:	m_planeId(0)
+	{
+		if(!m_planeManager) m_planeManager = new PlaneManager();
+		m_planeId = m_planeManager->allocate();
+		init();
+	}
+
+
+	Clip::~Clip()
+	{
+		m_planeManager->free(m_planeId);
+	}
+
+
+	void Clip::init()
+	{
+		m_planeMatrix[0]  = 1.0f; m_planeMatrix[1]  = 0.0f; m_planeMatrix[2]  = 0.0f; m_planeMatrix[3]  = 0.0f; 
+		m_planeMatrix[4]  = 0.0f; m_planeMatrix[5]  = 1.0f; m_planeMatrix[6]  = 0.0f; m_planeMatrix[7]  = 0.0f; 
+		m_planeMatrix[8]  = 0.0f; m_planeMatrix[9]  = 0.0f; m_planeMatrix[10] = 1.0f; m_planeMatrix[11] = 0.0f; 
+		m_planeMatrix[12] = 0.0f; m_planeMatrix[13] = 0.0f; m_planeMatrix[14] = 0.0f; m_planeMatrix[15] = 1.0f;
+
+		m_modelview[0]  = 1.0f; m_modelview[1]  = 0.0f; m_modelview[2]  = 0.0f; m_modelview[3]  = 0.0f; 
+		m_modelview[4]  = 0.0f; m_modelview[5]  = 1.0f; m_modelview[6]  = 0.0f; m_modelview[7]  = 0.0f; 
+		m_modelview[8]  = 0.0f; m_modelview[9]  = 0.0f; m_modelview[10] = 1.0f; m_modelview[11] = 0.0f; 
+		m_modelview[12] = 0.0f; m_modelview[13] = 0.0f; m_modelview[14] = 0.0f; m_modelview[15] = 1.0f;
+	}
+
+
+	void Clip::slide(float d)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_planeMatrix);
+		glTranslatef(0,0,d);          // do some translation (screen aligned)
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_planeMatrix); // plane matrix is updated
+		glPopMatrix();
+	}
+
+
+	void Clip::rotateWithScreen(float dx, float dy)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_planeMatrix);
+
+		/* we invert the modelview (with the plane matrix) */
+		float matrix[16]; mult(m_modelview, m_planeMatrix, matrix);
+		float inv_matrix[16]; for(unsigned int m=0; m<16; ++m) inv_matrix[m] = matrix[m];
+		transp(inv_matrix); // invert modelview matrix, ignore translation
+
+		glRotatef(dx, inv_matrix[4], inv_matrix[5], inv_matrix[6]); // around plane Y axis
+		glRotatef(-dy, inv_matrix[0], inv_matrix[1], inv_matrix[2]); // around plane X axis
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_planeMatrix); // plane matrix is updated
+		glPopMatrix();
+
+		correctMatrix(); // correct translation part
+	}
+
+
+	void Clip::rotateWithWorld(float dx, float dy)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_planeMatrix);
+
+		glRotatef(dx, 0,1,0); // around plane Y axis
+		glRotatef(dy, 1,0,0); // around plane X axis
+
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_planeMatrix); // plane matrix is updated
+		glPopMatrix();
+
+		correctMatrix(); // correct translation part
+	}
+
+
+	void Clip::getPlaneMatrix(float m[]) const
+	{
+		for(unsigned int i=0; i<16; ++i) m[i] = m_planeMatrix[i];
+	}
+
+
+	void Clip::setPlaneMatrix(const float m[])
+	{
+		for(unsigned int i=0; i<16; ++i) m_planeMatrix[i] = m[i];
+	}
+
+
+	void Clip::enable()
+	{
+		/* distance to the plane from origin */
+		float d = m_planeMatrix[8]*m_planeMatrix[12] + // dot product of up and translation vector
+				  m_planeMatrix[9]*m_planeMatrix[13] +
+				  m_planeMatrix[10]*m_planeMatrix[14];
+
+		/* clip the plane */
+		GLdouble equation[4] = {m_planeMatrix[8], m_planeMatrix[9], m_planeMatrix[10], -d};
+		glClipPlane(m_planeId, equation);
+
+		glEnable(m_planeId);
+
+		/* save modelview matrix, so we can later do screen-aligned rotations */
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview);
+	}
+
+
+	void Clip::disable()
+	{
+		glDisable(m_planeId);
+	}
+
+
+	void Clip::display(bool use_cross_section) const
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+
+		// if we are currently clipping
+		// temporaly disable the clipping plane
+		GLboolean enable = glIsEnabled(m_planeId);
+
+		if(enable) glDisable(m_planeId);
+
+		// Draw a cross section, or a plane
+		if(use_cross_section)
+			drawCrossSection(m_planeMatrix);
+		else
+			drawPlane(m_planeMatrix);
+
+		// reenable clip plane
+		if(enable) glEnable(m_planeId);
+
+		glPopMatrix();
+	}
+
+
+	void Clip::correctMatrix()
+	{
+		/* distance to the plane from origin */
+		float d = m_planeMatrix[8]*m_planeMatrix[12] + // dot product of up and translation vector
+				  m_planeMatrix[9]*m_planeMatrix[13] +
+				  m_planeMatrix[10]*m_planeMatrix[14];
+
+		/* update translation part so it is parralel to the plane normal vector */
+		m_planeMatrix[12] = m_planeMatrix[8]*d;
+		m_planeMatrix[13] = m_planeMatrix[9]*d;
+		m_planeMatrix[14] = m_planeMatrix[10]*d;
+	}
+
+
+	void Clip::mult(const float a[], const float b[], float m[])
+	{
+		for(unsigned int i=0; i<16; ++i) m[i] = 0;
+
+		for(unsigned int i=0; i<4; ++i)
+			for(unsigned int j=0; j<4; ++j)
+				for(unsigned int k=0; k<4; ++k)
+			m[j*4+i] = m[j*4+i] + a[k*4+i] * b[j*4+k];
+	}
+
+
+	void Clip::transp(float m[])
+	{
+		for(unsigned int j=0; j<4; ++j)
+			for(unsigned int i=0; i<j; ++i)
+		{
+			float a = m[j*4+i];
+			m[j*4+i] = m[i*4+j];
+			m[i*4+j] = a;
+		}
+	}
+
+
+	void Clip::drawPlane(const float m[]) const
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+
+		glMultMatrixf(m);
+
+		// Draw a plane
+		glBegin(GL_LINE_LOOP);
+		glVertex3f(-0.5,-0.5,0);
+		glVertex3f(+0.5,-0.5,0);
+		glVertex3f(+0.5,+0.5,0);
+		glVertex3f(-0.5,+0.5,0);
+		glEnd();
+
+		glPopMatrix();
+	}
+
+
+	void Clip::drawCrossSection(const float m[]) const
+	{
+		/* This method displays stacked cross-section
+		 *   uglier code in order to compute the cross-section (sorting of crossing edges)
+		 *   however only the cross-section is displayed, no unnecessary rendering is done outside the cube
+		 */
+
+		/* cube
+		 *
+		 *      4----------7
+		 *      |\         |\
+		 *      | \        | \
+		 *      |  5----------6
+		 *      |  |       |  |
+		 *      0--|-------3  |
+		 *       \ |        \ |
+		 *        \|         \|
+		 *         1----------2
+		 *
+		 * edges are: (01) (12) (23) (30)
+		 *            (45) (56) (67) (74)
+		 *            (04) (15) (26) (37)
+		 *
+		 */
+
+		/*
+		 *          ^
+		 *      (n) |   \ c[e[i][0]]
+		 *          |    \
+		 *         +------\----------+
+		 *       /  |      o       /
+		 *     /    O       .    /
+		 *   +-----------------+
+		 *                    . c[e[i][1]]
+		 *
+		 * Edge intersecting the plane
+		 * Vector (v) start at the plane origin and ends at a cube corner
+		 */
+		
+
+		/* Where the cube corners are */
+		float c[8][3] = { // cuber corners
+			{-0.5f, -0.5f, -0.5f},
+			{-0.5f, +0.5f, -0.5f},
+			{+0.5f, +0.5f, -0.5f},
+			{+0.5f, -0.5f, -0.5f},
+			{-0.5f, -0.5f, +0.5f},
+			{-0.5f, +0.5f, +0.5f},
+			{+0.5f, +0.5f, +0.5f},
+			{+0.5f, -0.5f, +0.5f},
+		};
+
+		/* Edges of the cube */
+		int e[12][2] = { // edges
+			{0,1}, {1,2}, {2,3}, {3,0},
+			{4,5}, {5,6}, {6,7}, {7,4},
+			{0,4}, {1,5}, {2,6}, {3,7}
+		};
+
+		/* Vector (v): from plane origin to cube corners */
+		float v[8][3] = { // cuber corners relative to plane origin
+			{-0.5f-m[12], -0.5f-m[13], -0.5f-m[14]},
+			{-0.5f-m[12], +0.5f-m[13], -0.5f-m[14]},
+			{+0.5f-m[12], +0.5f-m[13], -0.5f-m[14]},
+			{+0.5f-m[12], -0.5f-m[13], -0.5f-m[14]},
+			{-0.5f-m[12], -0.5f-m[13], +0.5f-m[14]},
+			{-0.5f-m[12], +0.5f-m[13], +0.5f-m[14]},
+			{+0.5f-m[12], +0.5f-m[13], +0.5f-m[14]},
+			{+0.5f-m[12], -0.5f-m[13], +0.5f-m[14]},
+		};
+
+		/* Signed distance from cube corners to the plane
+		 * it is the dot-product of plane up vector (n) with (v) */
+		float nv[8] = {
+			m[8]*v[0][0]+m[9]*v[0][1]+m[10]*v[0][2],
+			m[8]*v[1][0]+m[9]*v[1][1]+m[10]*v[1][2],
+			m[8]*v[2][0]+m[9]*v[2][1]+m[10]*v[2][2],
+			m[8]*v[3][0]+m[9]*v[3][1]+m[10]*v[3][2],
+			m[8]*v[4][0]+m[9]*v[4][1]+m[10]*v[4][2],
+			m[8]*v[5][0]+m[9]*v[5][1]+m[10]*v[5][2],
+			m[8]*v[6][0]+m[9]*v[6][1]+m[10]*v[6][2],
+			m[8]*v[7][0]+m[9]*v[7][1]+m[10]*v[7][2],
+		};
+
+		/* If edge ends have a different sign, the edge crosses the plane */
+		int cross[12]; // is edge[i] crossing plane
+
+		for(unsigned int i=0; i<12; ++i)
+		{
+			if(nv[e[i][0]]*nv[e[i][1]]<0)
+				cross[i] = 1;
+			else
+				cross[i] = 0;
+		}
+
+		/* Compute the intersection points on each crossing edge */
+		std::vector<float> points;
+		for(unsigned int i=0; i<12; ++i)
+		{
+			if(cross[i])
+			{
+				float u[3] = {
+					c[e[i][1]][0]-c[e[i][0]][0],
+					c[e[i][1]][1]-c[e[i][0]][1],
+					c[e[i][1]][2]-c[e[i][0]][2]
+				};
+
+				float nu = m[8]*u[0]+m[9]*u[1]+m[10]*u[2];
+
+				float t = - nv[e[i][0]] / nu;
+
+				float inters[3] = {
+					c[e[i][0]][0]+t*u[0],
+					c[e[i][0]][1]+t*u[1],
+					c[e[i][0]][2]+t*u[2]
+				};
+
+				points.push_back(inters[0]);
+				points.push_back(inters[1]);
+				points.push_back(inters[2]);
+			}
+		}
+
+		/* If we have more than two points, we can draw a polygon */
+		if(points.size()>6) // if more than two points
+		{
+			/* Sort these points so we can correctly draw a polygon */
+			std::multimap<float,int> map;
+			float u[3] = { points[3]-points[0], points[4]-points[1], points[5]-points[2] };
+			float lul = sqrt(u[0]*u[0]+u[1]*u[1]+u[2]*u[2]);
+			for(unsigned int i=2; i<points.size()/3; ++i)
+			{
+				float v[3] = { points[i*3+0]-points[0],points[i*3+1]-points[1],points[i*3+2]-points[2] };
+				float lvl = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
+	
+				float cos_angle = (v[0]*u[0]+v[1]*u[1]+v[2]*u[2])/(lul*lvl);
+				map.insert(std::pair<float,int>(cos_angle,i));
+			}
+	
+			/* Draw the cube cross-section with a texture on it */
+			glBegin(GL_LINE_LOOP);
+			glTexCoord3f(points[0],points[1],points[2]);
+			glVertex3f  (points[0],points[1],points[2]);
+			glTexCoord3f(points[3],points[4],points[5]);
+			glVertex3f  (points[3],points[4],points[5]);
+			for(std::multimap<float,int>::reverse_iterator it = map.rbegin(); it != map.rend(); ++it)
+			{
+				glTexCoord3f(points[it->second*3+0],points[it->second*3+1],points[it->second*3+2]);
+				glVertex3f  (points[it->second*3+0],points[it->second*3+1],points[it->second*3+2]);
+			}
+			glEnd();
+
+		} // if more than 2 points
+	}
+
+} // namespace
diff --git a/.svn/pristine/26/26e9100a3a0019053aadd465f26b4d71582de301.svn-base b/.svn/pristine/26/26e9100a3a0019053aadd465f26b4d71582de301.svn-base
new file mode 100644
index 0000000..870b77c
Binary files /dev/null and b/.svn/pristine/26/26e9100a3a0019053aadd465f26b4d71582de301.svn-base differ
diff --git a/.svn/pristine/2b/2b0ea9146492ca313446f492dab12dffcca6ba61.svn-base b/.svn/pristine/2b/2b0ea9146492ca313446f492dab12dffcca6ba61.svn-base
new file mode 100644
index 0000000..f83540d
--- /dev/null
+++ b/.svn/pristine/2b/2b0ea9146492ca313446f492dab12dffcca6ba61.svn-base
@@ -0,0 +1,42 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	color.h
+ * @author	Herve Lombaert
+ * @date	October 2006
+ */
+
+#ifndef COLOR_H
+#define COLOR_H
+
+/**
+ * Color with 3 channel, this can be used to define an image element with for
+ * instance Image<color<float>,2>
+ * @see Image
+ */
+
+template <typename T>
+struct color {
+	T b,g,r; ///< colors as they appear in the file
+	color(T r=0, T g=0, T b=0) : b(b),g(g),r(r) {} ///< constructor
+};
+
+#endif
diff --git a/.svn/pristine/2f/2f1c86eb521fba6ba89791c178fca767a36d28b4.svn-base b/.svn/pristine/2f/2f1c86eb521fba6ba89791c178fca767a36d28b4.svn-base
new file mode 100644
index 0000000..b768db6
--- /dev/null
+++ b/.svn/pristine/2f/2f1c86eb521fba6ba89791c178fca767a36d28b4.svn-base
@@ -0,0 +1,511 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ *	@file	display4d.h
+ *	@author	Herve Lombaert
+ *	@date	October 10th, 2006
+ *
+ */
+
+#ifndef DISPLAY4D_H
+#define DISPLAY4D_H
+
+#ifdef __linux__
+#define GL_GLEXT_PROTOTYPES 1
+#include <GL/gl.h>
+#include <GL/glext.h>
+#endif
+
+#include <limits>
+#include <error.h>
+
+
+namespace libvdDisplay
+{
+	/**
+	 * @class Volume4D
+	 * @brief 4D volume renderer
+	 *
+	 * This class plays a 4D dataset. It uses the volume renderer from Display3D.
+	 * @see Display::Volume
+	 *
+	 * \image html displayvolume.png "A human heart"
+	 * \image latex displayvolume.png "A human heart"
+	 *
+	 * Multiple 3D textures are used, one for each frame volume. It is therefore
+	 * important to check if the whole sequence fits in the graphic card memory.
+	 * Use \c setMaxTextureSize() to avoid problems. To change the coloring of
+	 * the volume, a fragment shader implements a lookup table.
+	 * @see setMaxTextureSize()
+	 *
+	 * When drawing the volume it is centered at (0,0,0) and has the
+	 * unit size (1,1,1). You can scale or modify its orientation with
+	 * \c glScale() and \c glMultMatrix() when drawing it in your application.
+	 *
+	 * Here is an example of code:
+	 *
+	 * \code
+	 *	unsigned short* move; // also fill the data
+	 *	Display::Volume4D disp;
+	 *
+	 *	disp.update(volume, 100,100,100, 10); // 10 frames
+	 *	disp.updateRamp(0,500);
+	 *	disp.display();
+	 * \endcode
+	 *
+	 * If you want to blend an object with the volume, enable \c GL_DEPTH_TEST
+	 * and draw the objects first before the volume.
+	 *
+	 * Internally, it uses 3D texture, as well as a fragment shader. That
+	 * means you need to load OpenGL extensions before using this code.
+	 * You can do it with for instance Glew, GLee.
+	 *
+	 * Internally, the lookup table has typically 4096 bins (the maximum
+	 * texture size). This may be a problem if you have more than 4096
+	 * values in your volume, the lut resolution decreases.
+	 *
+	 * Internally, it creates a temporary volume with normalized intensities
+	 * with the right opengl compatible size. If the volume is too large
+	 * the texture data is going to be smaller. This can be set with
+	 * \c setMaxTextureSize().
+	 *
+	 * Different display modes are available:
+	 *   VRT - the regular volume renderer where intensities accumulates
+	 *   MIP - maximum intensity projection where only the max intensity is
+	 *         displayed
+	 *   MPR - shows an arbitrary slice of the volume, it might be usefull
+	 *         to use this mode with alignWithScreen() to display the
+	 *         mpr in a 2D window with other geometries, and with
+	 *         setMprMatrix() to set the mpr plane orientation and position
+	 */
+
+	class Volume4D
+	{
+	public:
+		enum Mode {
+			VRT,	///< Volume Rendering Technique, accumulate voxel intensities (default)
+			MIP,	///< Maximum Intensity Projection, display the brightest voxels
+			MPR,	///< Multi Planar Reconstruction, an arbitrary slice of the volume
+		};
+
+		Volume4D();
+		~Volume4D();
+
+	public:
+
+		/** update visualizer with a new volume
+		 *  this creates a 3D texture on the graphic memory
+		 *  (the max size is set with setMaxTextureSize) */
+		template <typename DataType>
+		void update(const DataType* data,
+		            unsigned int width,
+		            unsigned int height,
+		            unsigned int depth,
+					unsigned int nb_frames);
+
+		/** display the 3D volume */
+		void display() const;
+
+		/** use a given frame */
+		void setFrame(unsigned int frame);
+
+		/** get the current frame number */
+		unsigned int getFrame() const;
+
+		/** get the number of frames */
+		unsigned int getNbFrames() const;
+
+		/** go to the next frame */
+		void nextFrame();
+
+		/** set rendering mode
+		 *  @param mode rendering mode can be either VRT, MIP, MPR */
+		void setMode(Mode mode);
+
+		/** get rendering mode */
+		Mode getMode() const;
+
+		/** set mpr plane matrix */
+		void setMprMatrix(const float matrix[]);
+
+	public:
+
+		/** update the lookup table, this uses a ramp to defines redish colors
+		 *  @param min lower bound of the ramp
+		 *  @param max higher bound of the ramp */
+		void updateRamp(float min, float max);
+
+		/** update lookup table, this uses an arbitrary lut
+		 *  @param lut RGBA values, ranges from 0..1
+		 *  @param lutSize number of RGBA entries, ranges from all posible data intensities */
+		void updateLut(const float* lut, unsigned int lutSize);
+
+		/** update lookup table with an external lut object
+		 *  @param lut lut object, must implement the method "get(intensity, r,g,b,a)"
+		 *  which takes an intensity and returns the corresponding rgba (normalized between 0..1)
+		 *  @see Tools::TransferFunction::Ramp
+		 *  @see Tools::TransferFunction::Trapezoid
+		 *  @see Tools::TransferFunction::TransferFunction */
+		template <typename Lut>
+		void updateLut(const Lut &lut);
+
+		/** align geometry with screen
+		 *  all further geometry will be aligned with the screen,
+		 *  it multiplies the modelview matrix by the inverse of the mpr plane matrix
+		 *  make sure to apply all transformations (e.g., scaling) before aligning with screen
+		 *  usefull when displaying the mpr plane */
+		void alignWithScreen() const;
+
+		/** set the rendering quality (default is 1)
+		 *  it changes the number of rendering planes, usefull when interactivity becomes important
+		 *  @param quality if quality is < 1, less planes are used however the rendering is much faster
+		 *                 if the quality is > 1, more planes are used, however the rendering gets slower */
+		void setQuality(float quality);
+
+		/** use interpolation to generate intervoxels
+		 *  @param interpolation 0 (no interpolation, use the nearest neighbor), 1 (use linear interpolation)
+		 */
+		void setInterpolation(int interpolation);
+
+		/** set the maximum texture size
+		 *  this must be a opengl compatible size (2^m) */
+		void setMaxTextureSize(unsigned int w, unsigned int h, unsigned int d);
+
+		/** get the intensity range of the displayed volume (values casted to float) */
+		void getIntensityRange(float &min, float &max) const;
+
+	protected:
+
+		/** initialize the shader */
+		void initShader();
+
+		/** get the texture size
+		 *  the texture size is opengl compatible */
+		static void getTextureSize(const unsigned int data_size[],
+								   unsigned int texture_size[],
+								   const unsigned int max_texture_size[]);
+
+		/** create texture data
+		 *  the texture size is opengl compatible
+		 *  intensities are normalized for a better lut resolution
+		 *  @param min,max min and max intensity value of the data */
+		template <typename DataType, typename DataOutType>
+		static DataOutType* createTextureData(const DataType* data,
+											  const unsigned int data_size[],
+											  DataType &min,
+											  DataType& max,
+											  const unsigned int texture_size[]);
+
+		/** render the planes in 3D
+		 *  this is the actual volume renderer */
+		void render() const;
+
+		/** render a slice in 3D 
+		 *  @param m plane matrix */
+		void renderSlice(const float m[]) const;
+
+		/** compute the number of rendering planes
+		 *  evaluate how many pixels are used to display the volume */
+		int getNbRenderingPlanes() const;
+
+		/** transform a point with a matrix (pp = m*pp) */
+		static void transf(const float p[], const float m[], float pp[]);
+
+		/** transpose, also invert a orthonormal matrix */
+		static void transp(float m[]);
+
+		/** normalize the rotation part of the matrix */
+		static void normalize(float m[]);
+
+	protected:
+		Mode m_rendering_mode;              ///< Rendering mode (default is VRT)
+		float m_quality;                    ///< Rendering quality, this affects the number of rendering planes
+		GLint m_interpolation;              ///< what interpolation to use
+		GLuint* m_data_texture;             ///< handle on the 3D textures (one per frame volume)
+		unsigned int m_nb_frames;           ///< number of frames
+		unsigned int m_frame;               ///< the current frame volume
+		unsigned int m_max_texture_size[3]; ///< maximum texture size (default is 256^3)
+		float m_texture_scale[3];           ///< texture scale (scale to opengl compatible size)
+		float m_intensity_range[2];         ///< data intensity range (min and max value of the data)
+		float m_mpr_matrix[16];             ///< mpr plane matrix
+
+	protected:
+		GLuint m_gpu_program;     ///< handle on the GPU program (0 when uninitialized)
+		GLuint m_fragment_shader; ///< handle on the fragment shader
+		float* m_internal_lut;    ///< normalized lookup table (0..GL_MAX_TEXTURE_SIZE)
+		GLuint m_lut_texture;     ///< handle on lookup table texture
+
+	protected:
+		/// provides usefull constants depending on the data type
+		template <typename DataType>
+		struct OpenGLArgs {
+			static GLenum type;  ///< eg. GL_UNSIGNED_BYTE, or GL_FLOAT
+			static DataType min; ///< eg. 0   for uchar, or -1.0f for float
+			static DataType max; ///< eg. 255 for uchar, or +1.0f for float
+		};
+	};
+
+} // namespace
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Implementation
+//////////////////////////////////////////////////////////////////////////////
+
+namespace libvdDisplay
+{
+	/**
+	 *	Create a 3D texture
+	 *	Template tools creates the right 3D texture
+	 *  Initialize shader is this is the first update
+	 */
+	template <typename DataType>
+	void Volume4D::update(const DataType* data,
+	                    unsigned int width,
+						unsigned int height,
+						unsigned int depth,
+						unsigned int nb_frames)
+	{
+		/* internal texture data */
+		typedef unsigned char TextureType; // save some memory here
+		//typedef typename DataType TextureType;
+
+		/* check inputs */
+		if(!data || !width || !height || !depth || !nb_frames) throw LOCATE(Error("wrong inputs"));
+
+		/* if this is the first function call, create shaders */
+		if(!m_gpu_program) initShader();
+
+		/* use the GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* get texture size */
+		unsigned int data_size[3] = {width, height, depth};
+		unsigned int texture_size[3];
+		getTextureSize(data_size, texture_size, m_max_texture_size);
+		DataType min_intensity = OpenGLArgs<DataType>::max;
+		DataType max_intensity = OpenGLArgs<DataType>::min;
+
+		/* set the texture scale */
+		for(unsigned int i=0; i<3; ++i)
+		{
+			m_texture_scale[i] = (float)data_size[i] / texture_size[i];
+
+			// if the texture size is smaller, the volume fits the whole texture (1.0f)
+			if(m_texture_scale[i]>1) m_texture_scale[i] = 1.0f;
+		}
+
+		/* create texture handles */
+		if(m_data_texture)
+		{
+			if(m_nb_frames != nb_frames)
+			{
+				glDeleteTextures(m_nb_frames, m_data_texture);
+				delete [] m_data_texture;
+
+				m_nb_frames = nb_frames;
+				m_data_texture = new GLuint [nb_frames];
+				glGenTextures(m_nb_frames, m_data_texture);
+			}
+		}
+		else
+		{
+			m_nb_frames = nb_frames;
+			m_data_texture = new GLuint [nb_frames];
+			glGenTextures(m_nb_frames, m_data_texture);
+		}
+
+		/* iterate each frame volume */
+		for(unsigned int frame=0; frame<m_nb_frames; ++frame)
+		{
+			/* create texture buffer */
+			DataType min, max;
+			const DataType* current_frame = &data[frame*data_size[0]*data_size[1]*data_size[2]];
+			TextureType* buffer = createTextureData<DataType, TextureType>(current_frame, data_size, min, max, texture_size);
+			if(min < min_intensity) min_intensity = min;
+			if(max > max_intensity) max_intensity = max;
+
+			/* Create and send 3D texture */
+			glBindTexture(GL_TEXTURE_3D, m_data_texture[frame]); glCheckError();
+			glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
+			glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
+			glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);
+			glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, m_interpolation);
+			glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, m_interpolation);
+			glTexImage3D(GL_TEXTURE_3D,
+						0,
+						GL_LUMINANCE,
+						texture_size[0],
+						texture_size[1],
+						texture_size[2],
+						0,
+						GL_LUMINANCE,
+						OpenGLArgs<TextureType>::type,
+						buffer);
+			glCheckError();
+
+			/* Check if memory has been allocated on graphic card */
+			glEnable(GL_TEXTURE_3D);
+			glBindTexture(GL_TEXTURE_3D, m_data_texture[frame]); glCheckError();
+			glDisable(GL_TEXTURE_3D);
+
+			/* delete texture buffer, it is now transfered to the graphic card */
+			delete [] buffer;
+		}
+
+		/* use a default lookup table */
+		m_intensity_range[0] = static_cast<float>(min_intensity);
+		m_intensity_range[1] = static_cast<float>(max_intensity);
+		updateRamp(m_intensity_range[0], m_intensity_range[1]);
+
+		/* stop using the GPU program until requested */
+		glUseProgram(0);
+
+		/* use the first frame */
+		m_frame = 0;
+	}
+
+
+	template <typename Lut>
+	void Volume4D::updateLut(const Lut& lut)
+	{
+		/* use the GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* internal lut is normalized (maximum texture size)
+		 * lut[0] is the lowest volume value and
+		 * lut[size-1] is the highest voluem value */
+		GLint size = 4096;
+		glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); // query what the graphic card max texture size
+
+		/* set lookup table */
+		if(!m_internal_lut) m_internal_lut = new float [size*4];
+
+		/* copy lut */
+		float scale = (float)(m_intensity_range[1]-m_intensity_range[0])/size;
+		for(int i=0; i<size; ++i)
+		{
+			/* find where i should be in given lut
+			 * need to convert i which ranges from m_minVal to m_maxVal (normalized to 0..size)
+			 * to the lut size which is 0 to lutSize */
+			float intensity = i*scale + m_intensity_range[0];
+
+			float r=0,g=0,b=0,a=0;
+			lut.get(intensity, r,g,b,a);
+
+			m_internal_lut[i*4+0] = r;
+			m_internal_lut[i*4+1] = g;
+			m_internal_lut[i*4+2] = b;
+			m_internal_lut[i*4+3] = a;
+		}
+
+		/* Create 1D texture for lookup table */
+		if(!glIsTexture(m_lut_texture)) glGenTextures(1, &m_lut_texture);
+		glBindTexture(GL_TEXTURE_2D, m_lut_texture); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+		glTexImage2D(GL_TEXTURE_2D,
+		             0,
+		             GL_RGBA8,
+		             size, // lut size
+		             1,
+		             0,
+		             GL_RGBA, // color lookup table
+		             GL_FLOAT,
+		             m_internal_lut);
+		glCheckError();
+
+		/* NB: instead of freeing this unused memory, keep it there
+			   so when updating it the next time, no time will be lost in memory allocation/deallocation */
+		//delete [] m_internal_lut; m_internal_lut = 0;
+
+		/* stop using the GPU program until requested */
+		glUseProgram(0);
+	}
+
+
+	/**
+	 *  create texture data
+	 *  the texture size is opengl compatible
+	 *  intensities are normalized for a better lut resolution
+	 */
+	template <typename DataType, typename DataOutType>
+	DataOutType* Volume4D::createTextureData(const DataType* data,
+											 const unsigned int data_size[],
+											 DataType &min,
+											 DataType& max,
+											 const unsigned int texture_size[])
+	{
+		/* find max and min value of volume */
+		min = OpenGLArgs<DataType>::max;
+		max = OpenGLArgs<DataType>::min;
+		for(const DataType* it=data; it!=&data[data_size[0]*data_size[1]*data_size[2]]; ++it)
+		{
+			if(*it < min) min = *it;
+			if(*it > max) max = *it;
+		}
+
+		/* create new volume */
+		DataOutType* buffer = new DataOutType [texture_size[0]*texture_size[1]*texture_size[2]];
+
+		/* texture scale */
+		float scale[3] = {
+			(float)data_size[0] / texture_size[0],
+			(float)data_size[1] / texture_size[1],
+			(float)data_size[2] / texture_size[2]
+		};
+
+		/* fill new volume voxel per voxel
+		 * if the texture size is larger than the volume size (scale<=1)
+		 * the volume fits a portion of the texture and a texture scaling will be used
+		 * if the data size is larger than the texture size (scale>1)
+		 * the volume is scaled down to fit in the texture */
+		for(unsigned int k=0; k<texture_size[2]; ++k)
+			for(unsigned int j=0; j<texture_size[1]; ++j)
+				for(unsigned int i=0; i<texture_size[0]; ++i)
+		{
+			/* corresponding coordinate in the volume */
+			unsigned int I = (scale[0]>1) ? (unsigned int)(i*scale[0]) : i;
+			unsigned int J = (scale[1]>1) ? (unsigned int)(j*scale[1]) : j;
+			unsigned int K = (scale[2]>1) ? (unsigned int)(k*scale[2]) : k;
+
+			/* texture value (either from volume, or 0 if outside) */
+			DataType val = 0;
+			if(I<data_size[0] && J<data_size[1] && K<data_size[2])
+				val = data[(K*data_size[1]+J)*data_size[0]+I];
+
+			/* normalize between 0..1.0 0..255 or 0..65535 */
+			if(max>min)
+				val = (val-min) * OpenGLArgs<DataOutType>::max / (max-min);
+
+			/* fill texture buffer */
+			buffer[(k*texture_size[1]+j)*texture_size[0]+i] = static_cast<DataOutType>(val);
+		}
+
+		return buffer;
+	}
+
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/30/304df2776b08f36b721301d50d3b47fd0ea83aaa.svn-base b/.svn/pristine/30/304df2776b08f36b721301d50d3b47fd0ea83aaa.svn-base
new file mode 100644
index 0000000..adb21b6
Binary files /dev/null and b/.svn/pristine/30/304df2776b08f36b721301d50d3b47fd0ea83aaa.svn-base differ
diff --git a/.svn/pristine/34/342d6cc33f774186fe9f639c6f486d9016ad8b87.svn-base b/.svn/pristine/34/342d6cc33f774186fe9f639c6f486d9016ad8b87.svn-base
new file mode 100644
index 0000000..0635fb7
--- /dev/null
+++ b/.svn/pristine/34/342d6cc33f774186fe9f639c6f486d9016ad8b87.svn-base
@@ -0,0 +1,164 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	displayhistogram.h
+ * @author	Herve Lombaert
+ * @date	November 7th, 2006
+ */
+
+#ifndef DISPLAYHISTOGRAM_H
+#define DISPLAYHISTOGRAM_H
+
+
+#if __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+#include <error.h>
+
+
+namespace Tools { namespace TransferFunction
+{
+	/**
+	 * Display a histogram, take as input a single channel image, or anything
+	 * with const iterators returning a single value, and draw its histogram.
+	 *
+	 * \image html displayhistogram.png
+	 * \image latex displayhistogram.png
+	 *
+	 * It is possible to zoom and pan portion of the histogram. At any time, the
+	 * viewed portion of the histogram is normalizd, so the highest visible bin
+	 * will have a height of 1 in the histogram.
+	 *
+	 * This can be used in a transfer function editor with Ramps and Trapezoids to
+	 * manage a lookup table of an image or of a volume.
+	 *
+	 * Internally a texture keeps the histogram and zooming and panning are done
+	 * by changing the texture coordinates (m_u1, m_u1) of the drawn square.
+	 *
+	 * @see TransferFunction
+	 */
+
+
+	class DisplayHistogram
+	{
+	public:
+		DisplayHistogram();
+		~DisplayHistogram();
+
+		/** create a new histogram with an image
+		 * @param image compute the histogram of this image
+		 * @param data_size numer of pixels in the image
+		 * @param min,max the minimum and the maximum values of the histogram, this is used
+		 * to display only a portion or the full intensity range of an image
+		 * @param nbBins  number of bins in the histogram */
+		template <typename DataType>
+		void update(const DataType* data, unsigned int data_size, float min, float max, unsigned int nbBins);
+
+		/** change histogram lower and higher limit (show only a section of the histogram)
+		 * @param left,right left and right intensity values of the visible histogram */
+		void clamp(float left, float right);
+
+		/* get left and right values of the visible histogram */
+		float getLeft() const { return m_left; }   ///< get left value of the visible histogram
+		float getRight() const { return m_right; } ///< get right value of the visible histogram
+
+		/** display histogram on a centered 1x1 square */
+		void display() const;
+
+		/** handle a mouse press
+		 * @param x,y normalized mouse coordinate 0..1
+		 * @return true if inside histogram */
+		bool mouse(float x, float y);
+
+		/** handle a mouse motion
+		 * @param x,y normalized mouse coordinate 0..1
+		 * @return true if inside histogram */
+		bool motion(float x, float y);
+
+	private:
+		/**  update texture size (must be opengl compatible size) */
+		void updateTexture(unsigned int width, unsigned int height, float r, float g, float b, float a);
+
+	private:
+		unsigned int* m_histogram; ///< bins of the histogram
+		unsigned int m_nbBins;     ///< number of bins (histogram size)
+		float m_min;     ///< minimum intensity value (user defined)
+		float m_max;     ///< maximum intensity value (user defined)
+		float m_left;    ///< left value of visible histogram
+		float m_right;   ///< right value of visible histogram
+		float m_height;  ///< height of visible histogram
+		unsigned int m_maxheight; /// maximum bin height
+		bool m_selected; ///< was histogram selected
+		float m_lastx;   ///< last y mouse position
+		float m_lasty;   ///< last y mouse position
+
+		GLuint m_textureName; ///< histogram image
+	};
+
+
+	template <typename DataType>
+	void DisplayHistogram::update(const DataType* image, unsigned int image_size, float min, float max, unsigned int nbBins)
+	{
+		/* destroy previous bin if not reusable */
+		if(m_histogram && m_nbBins!=nbBins) delete [] m_histogram;
+
+		/* update internal values */
+		m_min = min;
+		m_max = max;
+		m_nbBins = nbBins;
+
+		float binSize = (m_max - m_min) / m_nbBins;
+
+		/* create histogram */
+		m_histogram = new unsigned int [m_nbBins];
+		for(unsigned int i=0; i<m_nbBins; ++i) m_histogram[i] = 0;
+
+		/* iterate image and increment histogram bin */
+		for(const DataType* it = image; it != &image[image_size]; ++it)
+		{
+			// which bin
+			int bin = static_cast<int>((*it-m_min) / binSize);
+
+			if(bin>=0 && bin<(int)m_nbBins)
+			{
+				// increment bin
+				++m_histogram[bin];
+
+				// update max bin height
+				if(m_histogram[bin] > m_maxheight) m_maxheight = m_histogram[bin];
+			}
+		}
+
+		/* display the whole histogram */
+		m_left   = m_min;
+		m_right  = m_max;
+		m_height = static_cast<float>(m_maxheight);
+
+		/* create new texture */
+		updateTexture(1024,1024, 1,1,1, 0.8f);
+	}
+
+}} // namespaces
+
+
+#endif
diff --git a/.svn/pristine/35/355cc60f6ebb6896943f8bb81c0e49e4eafcccc5.svn-base b/.svn/pristine/35/355cc60f6ebb6896943f8bb81c0e49e4eafcccc5.svn-base
new file mode 100644
index 0000000..3642862
--- /dev/null
+++ b/.svn/pristine/35/355cc60f6ebb6896943f8bb81c0e49e4eafcccc5.svn-base
@@ -0,0 +1,93 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	display2d.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <display/display2d.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// Implementation
+//////////////////////////////////////////////////////////////////////////////
+
+namespace libvdDisplay
+{
+
+	Image::Image()
+	:	m_textureName(0)
+	{
+	}
+
+
+	Image::~Image()
+	{
+		// If this is called after the display has been destroyed, this call will be undefined
+		if(glIsTexture(m_textureName))
+			glDeleteTextures(1, &m_textureName);
+	}
+
+
+	void Image::display() const
+	{
+		if(glIsTexture(m_textureName))
+		{
+			// Draw texture
+			glBindTexture(GL_TEXTURE_2D, m_textureName); glCheckError();
+			glColor3f(1,1,1);
+
+			glEnable(GL_TEXTURE_2D);
+
+			glBegin(GL_QUADS);
+			glTexCoord2f(0,0); glVertex3f(-0.5,-0.5,0);
+			glTexCoord2f(1,0); glVertex3f(+0.5,-0.5,0);
+			glTexCoord2f(1,1); glVertex3f(+0.5,+0.5,0);
+			glTexCoord2f(0,1); glVertex3f(-0.5,+0.5,0);
+			glEnd();
+
+			glDisable(GL_TEXTURE_2D);
+		}
+	}
+
+
+	// specialization for image type
+	template <> GLenum Image::OpenGLArgs<unsigned char> ::type = GL_UNSIGNED_BYTE;
+	template <> GLenum Image::OpenGLArgs<unsigned short>::type = GL_UNSIGNED_SHORT;
+	template <> GLenum Image::OpenGLArgs<unsigned int>  ::type = GL_UNSIGNED_INT;
+	template <> GLenum Image::OpenGLArgs<char>          ::type = GL_BYTE;
+	template <> GLenum Image::OpenGLArgs<short>         ::type = GL_SHORT;
+	template <> GLenum Image::OpenGLArgs<int>           ::type = GL_INT;
+	template <> GLenum Image::OpenGLArgs<float>         ::type = GL_FLOAT;
+	template <> GLenum Image::OpenGLArgs<double>        ::type = GL_FLOAT;
+
+
+} // namespace
+
diff --git a/debian/patches/patch-makefile-split-soname b/.svn/pristine/3a/3a2a346442fb62374492b6c894532fdf7c4e9888.svn-base
similarity index 100%
rename from debian/patches/patch-makefile-split-soname
rename to .svn/pristine/3a/3a2a346442fb62374492b6c894532fdf7c4e9888.svn-base
diff --git a/.svn/pristine/3c/3c45cafb1712c5f816edaecf5e94e40b8052d032.svn-base b/.svn/pristine/3c/3c45cafb1712c5f816edaecf5e94e40b8052d032.svn-base
new file mode 100644
index 0000000..f8766e5
--- /dev/null
+++ b/.svn/pristine/3c/3c45cafb1712c5f816edaecf5e94e40b8052d032.svn-base
@@ -0,0 +1,69 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	ioscreenshot.cpp
+ * @author	Herve Lombaert
+ * @date	Tue Feb 5 2007
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <io/ioscreenshot.h>
+
+namespace IO
+{	
+	/* Read OpenGL buffer and create an raw 24bit image */
+	void glScreenshot(color<unsigned char>* &image, unsigned int &width, unsigned int &height)
+	{
+		/* NB: This takes whatever is in the default OpenGL pixel buffer,
+		 * we flush it to make sure it ready */
+		glFlush();
+
+		/* get viewport size */
+		GLint    viewport[4];
+		glGetIntegerv(GL_VIEWPORT, viewport);
+		width  = viewport[2];
+		height = viewport[3];
+
+		/* create an image buffer */
+		unsigned char* buffer = new unsigned char [width * height * 4];
+
+		/* read opengl buffer in rgba (this should be supported with most drivers) */
+		glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+		/* transfer buffer to image */
+		image = new color<unsigned char> [width * height];
+		for(unsigned int i=0; i<width*height; ++i)
+			image[i].r = buffer[i*4+0],
+			image[i].g = buffer[i*4+1],
+			image[i].b = buffer[i*4+2];
+
+		delete [] buffer;
+	}
+		
+}
diff --git a/.svn/pristine/46/46eabc6f978d37a85994d9b9880a822be02eaf23.svn-base b/.svn/pristine/46/46eabc6f978d37a85994d9b9880a822be02eaf23.svn-base
new file mode 100644
index 0000000..94d9706
--- /dev/null
+++ b/.svn/pristine/46/46eabc6f978d37a85994d9b9880a822be02eaf23.svn-base
@@ -0,0 +1,166 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/** @file slidebar.cpp
+ *  @author Herve Lombaert
+ *	@date	Feb 7th, 2007
+ *
+ *	Adds a slide bar
+ */
+
+#if WIN32
+#include <windows.h>
+#endif
+
+#if __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <tools/slidebar.h>
+
+namespace Tools
+{
+
+	SlideBar::SlideBar()
+	:	m_val(0),
+		m_posx(0),
+		m_posy(0),
+		m_width(0),
+		m_height(0),
+		m_win_width(0),
+		m_win_height(0),
+		m_mouse_pressed(0)
+	{}
+
+	SlideBar::~SlideBar()
+	{
+	}
+
+	float SlideBar::get() const
+	{
+		return m_val;
+	}
+
+	void SlideBar::set(float val)
+	{
+		m_val = val;
+	}
+
+	void SlideBar::display() const
+	{
+			/* overlay on screen */
+			glMatrixMode(GL_PROJECTION);
+			glPushMatrix();
+			glLoadIdentity();
+			glOrtho(-0.5,+0.5,-0.5,+0.5,-1,+1);
+		
+			glMatrixMode(GL_MODELVIEW);
+			glPushMatrix();
+			glLoadIdentity();
+		
+			/* place slide bar on screen with (0,0) beeing the lowest left corner */
+			glScalef(1.0f/m_win_width, 1.0f/m_win_height, 1);
+			glTranslatef((float)(m_posx-m_win_width/2+m_width/2), (float)(m_posy-m_win_height/2+m_height/2), 0);
+			glScalef((float)m_width, (float)m_height, 1);
+		
+			/* draw a border */
+			glColor3f(1,1,1);
+			glBegin(GL_LINE_LOOP);
+				glVertex3f(-0.5f,-0.5f,0);
+				glVertex3f(+0.5f,-0.5f,0);
+				glVertex3f(+0.5f,+0.5f,0);
+				glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			/* draw the bar */
+			glColor3f(0,1,1);
+			glPushMatrix();
+			glTranslatef(m_val-0.5f,0,0);
+			glScalef(10.0f/m_win_width,1,1);
+			glBegin(GL_QUADS);
+				glVertex3f(-0.5f,-0.5f,0);
+				glVertex3f(+0.5f,-0.5f,0);
+				glVertex3f(+0.5f,+0.5f,0);
+				glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+			glPopMatrix();
+
+			/* pop some matrices */
+			glMatrixMode(GL_PROJECTION);
+			glPopMatrix();
+		
+			glMatrixMode(GL_MODELVIEW);
+			glPopMatrix();
+	}
+
+	void SlideBar::place(int x, int y, int width, int height, int win_width, int win_height)
+	{
+		m_posx = x;
+		m_posy = y;
+		m_width = width;
+		m_height = height;
+		m_win_width = win_width;
+		m_win_height = win_height;
+	}
+
+	bool SlideBar::mouse(int x, int y)
+	{
+		// normalize mouse position (x,y) with slidebar size
+		float xx = (float)(x-m_posx) / m_width;
+		float yy = (float)(y-m_posy) / m_height;
+
+		// is the mouse on the bar
+		if(xx >= m_val-0.1f && xx <= m_val+0.1f && yy >= 0 && yy <= 1)
+		{
+			m_mouse_pressed = true;
+			return true;
+		}
+		else
+		{
+			m_mouse_pressed = false;
+			return false;
+		}
+	}
+
+	bool SlideBar::motion(int x, int y)
+	{
+		if(m_mouse_pressed)
+		{
+			// normalize mouse position (x,y) with lut size
+			float xx = (float)(x-m_posx) / m_width;
+
+			// change bar position
+			m_val = xx;
+			return true;
+		}
+
+		// mouse was not in the slide bar
+		return false;
+	}
+
+	void SlideBar::reshape(int w, int h)
+	{
+		m_win_width  = w;
+		m_win_height = h;
+	}
+
+} // namespace
diff --git a/.svn/pristine/47/47f217076747bc43210056d9aecf668ac2fe8b59.svn-base b/.svn/pristine/47/47f217076747bc43210056d9aecf668ac2fe8b59.svn-base
new file mode 100644
index 0000000..0a33043
Binary files /dev/null and b/.svn/pristine/47/47f217076747bc43210056d9aecf668ac2fe8b59.svn-base differ
diff --git a/.svn/pristine/47/47f2989709fcd2db1997c492dd3b6f1e176d9e46.svn-base b/.svn/pristine/47/47f2989709fcd2db1997c492dd3b6f1e176d9e46.svn-base
new file mode 100644
index 0000000..70285a0
--- /dev/null
+++ b/.svn/pristine/47/47f2989709fcd2db1997c492dd3b6f1e176d9e46.svn-base
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvd_test", "libvd_test.vcproj", "{BA023C29-34CF-4558-A768-2E366E70CD65}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvd", "..\..\src\msvc\libvd.vcproj", "{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{BA023C29-34CF-4558-A768-2E366E70CD65}.Debug|Win32.ActiveCfg = Debug|Win32
+		{BA023C29-34CF-4558-A768-2E366E70CD65}.Debug|Win32.Build.0 = Debug|Win32
+		{BA023C29-34CF-4558-A768-2E366E70CD65}.Release|Win32.ActiveCfg = Release|Win32
+		{BA023C29-34CF-4558-A768-2E366E70CD65}.Release|Win32.Build.0 = Release|Win32
+		{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}.Debug|Win32.ActiveCfg = Debug|Win32
+		{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}.Debug|Win32.Build.0 = Debug|Win32
+		{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}.Release|Win32.ActiveCfg = Release|Win32
+		{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/.svn/pristine/48/48b18cea89d3f7fe24380d6c2b1bd421c443732d.svn-base b/.svn/pristine/48/48b18cea89d3f7fe24380d6c2b1bd421c443732d.svn-base
new file mode 100644
index 0000000..7eaad54
--- /dev/null
+++ b/.svn/pristine/48/48b18cea89d3f7fe24380d6c2b1bd421c443732d.svn-base
@@ -0,0 +1,185 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	iobmp.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <io/iobmp.h>
+
+#include <cstdio>
+#include <cstring>
+#include <error.h>
+
+
+/// swap bytes if cpu is big endian (eg. apple ppc), do nothing if little endian (eg. intel pc)
+#if APPLE
+#define INTCPU(i) i = ((i&0xff000000)>>24) | (((i&0x00ff0000)>>16)<<8) | (((i&0x0000ff00)>>8)<<16) | ((i&0x000000ff)<<24);
+#else
+#define INTCPU(i) ;
+#endif
+
+
+namespace IO
+{	
+	void readBMP(const char* filename, color<unsigned char>* &image, unsigned int &width, unsigned int &height)
+	{
+		BMP::read(filename, image, width, height);
+	}
+		
+	
+	void writeBMP(const char* filename, const color<unsigned char>* image, unsigned int width, unsigned int height)
+	{
+		BMP::write(filename, image, width, height);
+	}
+	
+
+	// 2D Color read
+	void BMP::read(const char* filename, color<unsigned char>* &image, unsigned int &width, unsigned int &height)
+	{
+		FILE *fd;
+		unsigned int w, h;
+
+		/* open BMP file */
+		fd = fopen(filename, "rb");
+		if(!fd) throw LOCATE(Error("open"));
+
+		/* read header */
+		unsigned short signature = 0;
+		fread(&signature, 2, 1, fd);
+	#if APPLE
+		if(signature != 0x424d) throw LOCATE(Error("format"));
+	#else
+		if(signature != 0x4d42) throw LOCATE(Error("format"));
+	#endif
+		fseek(fd, 18, SEEK_SET);
+		fread(&w, 4, 1, fd);		INTCPU(w);
+		fread(&h, 4, 1, fd);		INTCPU(h);
+		fseek(fd, 54, SEEK_SET);
+
+		image  = new color<unsigned char> [w*h];
+		width  = w;
+		height = h;
+
+		// padding
+		unsigned bytesPerRow = width*3;
+		bytesPerRow = (bytesPerRow & 0x3) ? ((bytesPerRow >> 2) + 1) << 2 : bytesPerRow;
+		unsigned padding = bytesPerRow - width*3;
+
+		/* read bitmap */
+		for(unsigned int j=0; j<h; ++j)
+		{
+			unsigned int n = (unsigned int)fread((char*)&image[j*width], 3, width, fd);
+			if(n != width) throw LOCATE(Error("EOF reached while reading"));
+
+			if(padding != 0)
+			{
+				int zero;
+				fread((char*)&zero, 1, padding, fd);
+			}
+		}
+
+		/* close BMP file */
+		fclose(fd);
+	}
+
+
+	// 2D color write
+	void BMP::write(const char* filename, const color<unsigned char>* image, unsigned int width, unsigned int height)
+	{
+		FILE *fd;
+		int header = 0;
+		int zero = 0;
+
+		/* open/create BMP file */
+		fd = fopen(filename, "wb");
+		if(!fd) throw LOCATE(Error("open"));
+
+		/* Write BMP header */
+		header = 0x84364d42;     INTCPU(header);
+		fwrite(&header, 4, 1, fd);
+
+		header = 0x3;            INTCPU(header);
+		fwrite(&header, 4, 1, fd);
+		fwrite(&zero, 2, 1, fd);
+		
+		header = 0x36;           INTCPU(header);
+		fwrite(&header, 4, 1, fd);
+
+		header = 0x28;           INTCPU(header);
+		fwrite(&header, 4, 1, fd);
+
+		header = width;          INTCPU(header);
+		fwrite(&header, 4, 1, fd);	/* width */
+
+		header = height;         INTCPU(header);
+		fwrite(&header, 4, 1, fd);	/* height */
+
+		header = 0x180001;       INTCPU(header);
+		fwrite(&header, 4, 1, fd);
+		fwrite(&zero, 4, 1, fd);
+
+		header = width*height*3; INTCPU(header);
+		fwrite(&header, 4, 1, fd);	/* file size */
+
+		header = 0x0b000012;     INTCPU(header);
+		fwrite(&header, 4, 1, fd);
+
+		header = 0x0b;           INTCPU(header);
+		fwrite(&header, 4, 1, fd);
+		fwrite(&zero, 4, 1, fd);
+		fwrite(&zero, 4, 1, fd);
+		
+		// padding
+		unsigned bytesPerRow = width*3;
+		bytesPerRow = (bytesPerRow & 0x3) ? ((bytesPerRow >> 2) + 1) << 2 : bytesPerRow;
+		unsigned padding = bytesPerRow - width*3;
+
+		/* Write DATA */
+		for(unsigned int j=0; j<height; ++j)
+		{
+			fwrite((char*)&image[j*width], 3, width, fd);
+			
+			if(padding != 0)
+			{
+				int zero = 0;
+				fwrite((char*)&zero, 1, padding, fd);
+			}
+		}
+
+		/* close BMP file */
+		fclose(fd);
+	}
+
+
+}; // namespace
+
+
diff --git a/.svn/pristine/48/48f27a0276657c2eb9cc0e1fb438a0e73fca3957.svn-base b/.svn/pristine/48/48f27a0276657c2eb9cc0e1fb438a0e73fca3957.svn-base
new file mode 100644
index 0000000..6c73c8c
--- /dev/null
+++ b/.svn/pristine/48/48f27a0276657c2eb9cc0e1fb438a0e73fca3957.svn-base
@@ -0,0 +1 @@
+tar-ignore = ".hg/*"
diff --git a/.svn/pristine/4a/4a155bd737f24f6f70017913cd98dcecf190d9f2.svn-base b/.svn/pristine/4a/4a155bd737f24f6f70017913cd98dcecf190d9f2.svn-base
new file mode 100644
index 0000000..d462453
Binary files /dev/null and b/.svn/pristine/4a/4a155bd737f24f6f70017913cd98dcecf190d9f2.svn-base differ
diff --git a/.svn/pristine/4a/4a1e6f97915340340e4ea72d725b75003d1f2378.svn-base b/.svn/pristine/4a/4a1e6f97915340340e4ea72d725b75003d1f2378.svn-base
new file mode 100644
index 0000000..3afeb98
--- /dev/null
+++ b/.svn/pristine/4a/4a1e6f97915340340e4ea72d725b75003d1f2378.svn-base
@@ -0,0 +1,113 @@
+# Makefile
+# template makefile,
+# Herve J. Lombaert, Oct. 2001
+
+### FILES #
+SHARED=1
+
+ifeq ($(SHARED),1)
+EXEC    = ../lib/libvd.so.1.1.0
+else
+EXEC    = ../lib/libvd.a
+endif
+CCFILES = $(wildcard *.cpp)
+HFILES  = $(wildcard *.h)
+OBJECTS = $(CCFILES:.cpp=.o)
+DEP     = Dep.mk
+
+
+### ARGUMENTS #
+
+CC        = g++
+ifeq ($(SHARED),1)
+FLAGS     = -O3 -Wall -fPIC
+else
+FLAGS     = -O3 -Wall
+endif
+LIBSLINUX = -lglut -lGL
+LIBSAPPLE = -framework OpenGL -framework GLUT
+LIBS      = `if [ -f /mach_kernel ]; then echo ${LIBSAPPLE}; else echo ${LIBSLINUX}; fi`
+INCLUDES  = -I../
+
+#Used in SONAME for shared library
+LIBVD_VERSION=0.0.1
+
+### MAKEFILES RULES #
+
+%.o : %.cpp
+	$(CC) -c -o $@ $< $(FLAGS) $(INCLUDES)
+%.o : %.C
+	$(CC) -c -o $@ $< $(FLAGS) $(INCLUDES)
+%.o : %.cc
+	$(CC) -c -o $@ $< $(FLAGS) $(INCLUDES)
+%.o : %.c
+	$(CC) -c -o $@ $< $(FLAGS) $(INCLUDES)
+
+## Default macro values
+ifeq ($(DESTDIR),"")
+	DESTDIR=/usr/
+ifeq ($(PREFIX),"")
+	PREFIX=/local/
+endif
+endif
+
+.PHONY : all clean depend tar
+
+
+all : $(EXEC)
+
+$(EXEC) : $(OBJECTS)
+ifeq ($(SHARED),1)
+	#Build shared library
+	gcc -fPIC --shared -o $@ $+ -Wl,-soname,libvd.so.$(LIBVD_VERSION)  
+else
+	#build static library
+	ar -r $@ $+
+endif
+	@echo "Compilation is finised"
+
+ifeq ($(findstring depend,$(MAKECMDGOALS)),)
+include $(DEP)
+endif
+
+$(DEP) : Makefile
+	make depend
+
+clean :
+	rm -f $(EXEC) $(DEP) $(OBJECTS) *~
+	@echo "Project is now clean"
+
+depend :
+#	@makedepend -f- $(CCFILES) $(HFILES) 2>/dev/null \
+#	| grep -v /usr/ > $(DEP)
+#	@echo "PRJDIR=`pwd | sed 's/^.*\///'`" >> $(DEP)
+#	@echo "Dependence is done"
+	echo no makedepend
+
+tar: clean depend
+	@cd .. && tar -cf $(PRJDIR).tar $(PRJDIR)
+	@gzip ../$(PRJDIR).tar
+	@echo "Compression done, check parent directory"
+
+zip: clean depend
+	@cd .. && zip -r $(PRJDIR).zip $(PRJDIR)
+	@echo "Compression done, check parent directory"
+
+
+.PHONY: install
+install: 
+	mkdir -p $(DESTDIR)$(PREFIX)/lib/
+	mkdir -p $(DESTDIR)$(PREFIX)/include/libvd/display/
+	mkdir -p $(DESTDIR)$(PREFIX)/include/libvd/io/
+	#
+
+ifeq ($(SHARED),1)
+	cp -p ../lib/libvd*.so* $(DESTDIR)$(PREFIX)/lib/
+else
+	cp -p ../lib/*.a $(DESTDIR)$(PREFIX)/lib/
+endif
+	cp -p ../*.h $(DESTDIR)$(PREFIX)/include/libvd/
+	cp -p ../*.h $(DESTDIR)$(PREFIX)/include/libvd/display/
+	cp -p ../io/*.h  $(DESTDIR)$(PREFIX)/include/libvd/io/
+
+
diff --git a/.svn/pristine/4b/4b413a43a0456d7f54e0c27ee896d4f8e0e25d08.svn-base b/.svn/pristine/4b/4b413a43a0456d7f54e0c27ee896d4f8e0e25d08.svn-base
new file mode 100644
index 0000000..e3f337a
Binary files /dev/null and b/.svn/pristine/4b/4b413a43a0456d7f54e0c27ee896d4f8e0e25d08.svn-base differ
diff --git a/.svn/pristine/4f/4fc9fe88e7b441b0319d4fa3e851da2da109f80e.svn-base b/.svn/pristine/4f/4fc9fe88e7b441b0319d4fa3e851da2da109f80e.svn-base
new file mode 100644
index 0000000..aa1014c
--- /dev/null
+++ b/.svn/pristine/4f/4fc9fe88e7b441b0319d4fa3e851da2da109f80e.svn-base
@@ -0,0 +1,181 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	error.h
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifndef ERROR_H
+#define ERROR_H
+
+/**
+ * Error class with a syntax similar to \c printf:
+ *
+ * \code
+ *	if(error)
+ *	  throw Error("my message %d %f", 2, 2.5f);
+ * \endcode
+ *
+ * or:
+ *
+ * \code
+ *	catch(const Error &e) {
+ *	  e.tag("my message %d %f", 2, 2.5f);
+ *	  throw e;
+ *	}
+ * \endcode
+ *
+ * To embed the message with \c __FILE__,__LINE__ use the \c "LOCATE" macro
+ *
+ * \code
+ *	throw LOCATE(Error("my error"));
+ * \endcode
+ *
+ * When catching and printing the error message it will output a message
+ * similar to:
+ *
+ * \verbatim
+ *	error.h:27
+ *		my error
+ * \endverbatim
+ *
+ * Also check for OpenGL error with \c glCheckError();
+ *
+ ***************************************************************************/
+
+#include <cstdio>
+#include <cstdarg>
+#include <cstring>
+
+#if _WIN32
+# pragma warning(disable:4996)
+# ifndef snprintf
+#  define snprintf _snprintf
+# endif
+#endif
+
+
+/** Bare error class
+ *  You could use an error message "a la" printf */
+struct Error {
+	/** Creates an Error with a message
+	 *  Use a printf-like syntax
+	 */
+	Error(const char* msg, ...)
+	{
+		va_list arg;
+		va_start(arg, msg);
+		vsnprintf(this->msg, 1024, msg, arg);
+		va_end(arg);
+	}
+
+	/** Sets an Error message "a la" printf()
+	 *  Adds a line to the error description with a filename/code line
+	 */
+	void tag(const char* msg, ...)
+	{
+		char newline[1024];
+		va_list arg;
+		va_start(arg, msg);
+		vsnprintf(newline, 1024, msg, arg);
+		va_end(arg);
+		char newmsg[1024];
+		snprintf(newmsg, 1024, "%s\n%s", this->msg, newline);
+		strncpy(this->msg, newmsg, 1024);
+	}
+
+	/** Print the error message on stdout */
+	void print() const
+	{
+		printf("[error message]\n%s\n", msg);
+	}
+
+	char msg[1024];     ///< error message
+};
+
+
+#if _WIN32
+# pragma warning(default:4996)
+#endif
+
+
+/** Range error, when a value is out of bound */
+struct RangeError : public Error {
+	RangeError(const char* msg, float val, float lowerbound, float upperbound)
+		:	Error("RangeError: %s, got: %f (bound: %f:%f)", msg, val, lowerbound, upperbound) {} ///< constructor
+};
+
+/** Check a test */
+#define CHECK(msg,testvalid) { if((testvalid)==0) throw LOCATE(Error(msg)); }
+
+/** Check range, test is low <= val < up */
+#define CHECKRANGE(msg,val,low,up) { if((val)<(low) || (val)>=(up)) throw LOCATE(RangeError(msg,(float)val,(float)low,(float)up)); }
+
+/** Check minimum, test is val >= min */
+#define CHECKMIN(msg,val,min) { if((val)<(min)) throw LOCATE(RangeError(msg,(float)val,(float)min,0)); }
+
+/** Check maximum, test is val < max */
+#define CHECKMAX(msg,val,max) { if((val)>=(max)) throw LOCATE(RangeError(msg,(float)val,0,(float)max)); }
+
+/** Tag error with filename, code line */
+#define LOCATE(Error) LocateError(Error, __FILE__, __LINE__)
+
+/** Error containing information on its location */
+struct LocateError {
+	template <typename Error>
+	LocateError(Error e, const char* file, int line) { e.tag("\t%s:%d", file, line); throw e; } ///< constructor
+};
+
+
+#ifdef GL_VERSION
+
+# ifndef GLU_VERSION
+#  ifdef __APPLE__
+#   include <OpenGL/glu.h>
+#  else
+#   include <GL/glu.h>
+#  endif
+# endif
+
+/** OpenGL error, use glCheckError() to generate it */
+struct OpenGLError : public Error {
+	OpenGLError(GLenum err)
+		:	Error("OpenGL error 0x%x: %s\n", err, gluErrorString(err)) {} ///< constructor
+};
+
+/** Check for OpenGL error */
+#define glCheckError() \
+{\
+	GLenum err = glGetError();\
+	if(err != GL_NO_ERROR)\
+		throw LOCATE(OpenGLError(err));\
+}
+
+#else
+
+// gl.h were not included yet - generate a compilation warning
+# pragma message(__FILE__ " : warning: OpenGL errors not handled, <GL/gl.h> is not included before <error.h>")
+
+#endif
+
+
+#endif
diff --git a/.svn/pristine/55/55dfb90fa1b9ce749426b8bca44edf7036366e01.svn-base b/.svn/pristine/55/55dfb90fa1b9ce749426b8bca44edf7036366e01.svn-base
new file mode 100644
index 0000000..d1ad659
--- /dev/null
+++ b/.svn/pristine/55/55dfb90fa1b9ce749426b8bca44edf7036366e01.svn-base
@@ -0,0 +1,253 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	editor.h
+ * @author	Herve Lombaert
+ * @date	November 11th, 2006
+ */
+
+#ifndef EDITOR_H
+#define EDITOR_H
+
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+
+#include <tools/transferfunction/displayhistogram.h>
+#include <tools/transferfunction/displaycolor.h>
+#include <list>
+
+
+namespace Tools { namespace TransferFunction
+{
+	/**
+	 * @class Editor
+	 * @brief Transfer function editor
+	 *
+	 * Display and manipulate a transfer function editor. It draws a histogram
+	 * and manipulators allow you to change the transfer function. It is possible
+	 * to change the color of a manipulator feature (e.g. ramp or trapezoid corner).
+	 *
+	 * \image html Editor.png "Histogram blended with volume"
+	 * \image latex Editor.png "Histogram blended with volume"
+	 *
+	 * When drawing the transfer function, it can be blended with the background.
+	 *
+	 *
+	 * Add Ramp and other manipulator:
+	 *
+	 * \code
+	 *	Tools::TransferFunction::Editor tfe;
+	 *
+	 *	// initialize transfer function editor
+	 *	tfe.update(image, 100*100);
+	 *	tfe.place(x,y, tfe_width,tfe_height, window_with,window_height);
+	 *	tfe.add(new Ramp(100,200));
+	 *
+	 *	// handle mouse events
+	 *	tfe.mouse(x,y);
+	 *	tfe.motion(x,y);
+	 *	tfe.display();
+	 *
+	 *	// query transfer function (returns rgba(0..1))
+	 *	tfe.get(intensity, r,g,b,a);
+	 * \endcode
+	 *
+	 * To update a volume renderer, use Display::Volume::updateLut(tfe)
+	 * @see Display::Volume::updateLut()
+	 *
+	 */
+
+
+	class Editor
+	{
+	public:
+		Editor();
+		~Editor();
+
+		/** update transfer function with new image */
+		template <typename DataType>
+		void update(const DataType* data, unsigned int data_size);
+
+		/** only show a portion of the transfer function */
+		void clamp(float min, float max);
+
+		/** place transfer function at position x,y with size width,height
+		 * by giving window size the aspect ratio can be known
+		 * @param x,y lower left corner of the transfer function editor
+		 * @param width,height size of the editor
+		 * @param win_width,win_height size of the window or of the current viewport */
+		void place(int x, int y, int width, int height, int win_width, int win_height);
+
+		/** add new manipulator (ramp, trapezoid)
+		 * memory is handled by editor (will be deleted with editor: do not delete manipulator outside)
+		 * manipulator must have the following interface:
+		 *
+		 * \code
+		 *  void clamp(left, right);    // only show portion of manipulator between left and right
+		 *  bool mouse(x,y);            // handle mouse click (normalized coordinates 0..1)
+		 *  void motion(x,y);           // handle mouse motion
+		 *  void display() const;       // display manipulator
+		 *  void get(i, r,g,b,a) const; // query value at given intensity
+		 *  void setColor(r,g,b);       // give a color (may be used by the selected feature)
+		 * \endcode
+		 */
+		template <typename Manip>
+		void add(Manip* o);
+
+		/** clear, remove all manipulators
+		 *
+		 */
+		void clear();
+
+		/** handle mouse click (mouse coordinates are pixels)
+		 * @return true if event is caught in the TFE area */
+		bool mouse(int x, int y);
+
+		/** handle mouse motion (mouse coordinates are pixels)
+		 * @return true if event is caught in the TFE area */
+		bool motion(int x, int y);
+
+		/** has lut value changed after a mouse event (ie. one object caught and changed its properties) */
+		bool lutchanged() const { return m_lutchanged; }
+
+		/** change contrast (scale color)
+		 * @param contrast scale color, default is 1 */
+		void contrast(float contrast) { m_contrast = contrast; }
+
+		/** get contrast (scale color) between 0 and 1 */
+		float contrast() const { return m_contrast; }
+
+		/** change brightness (offset color)
+		 * @param brightness offset color, default is 0 */
+		void brightness(float brightness) { m_brightness = brightness; }
+
+		/** get brightness (offset color) between 0 and 1 */
+		float brightness() const { return m_brightness; }
+
+		/** in color mode, the mouse motion will select a color
+		 * entering this mode will pop a color selector
+		 * if motion is outside the color selector, the editor leaves the color mode */
+		void colorMode();
+
+		/** display transfer function */
+		void display() const;
+
+		/** display hide
+		 * @param status true if the TFE must be hidden, false to show it */
+		void hide(bool status=true) { m_hide = status; }
+
+		/** get display status */
+		bool status() const { return m_hide; }
+
+		/** query transfer function at given intensity returns rgba (0..1) */
+		void get(float intensity, float &r, float &g, float &b, float &a) const;
+
+	private:
+		/** Transfer function object common interface */
+		struct TFEobject {
+			virtual ~TFEobject() {}
+			virtual void clamp(float,float) = 0;
+			virtual bool mouse(float,float) = 0;
+			virtual bool motion(float,float) = 0;
+			virtual void display() const = 0;
+			virtual void reshape(int,int) = 0;
+			virtual void get(float, float&, float&, float&, float&) const = 0;
+			virtual void setColor(float, float, float) = 0;
+			virtual void destroy() = 0;
+		};
+
+		/** Transfer function object with any type of manipilator */
+		template <typename Manip>
+		struct TFEobjectimpl : public TFEobject {
+			TFEobjectimpl(Manip*o) : o(o) {}
+			~TFEobjectimpl()                                                { if(o) delete o; }
+			void clamp(float l, float r)                                    { if(o) o->clamp(l,r); }
+			bool mouse(float x, float y)   /* normalized (0..1) */          { return (o) ? o->mouse(x,y):0; }
+			bool motion(float x, float y)  /* normalized (0..1) */          { return (o) ? o->motion(x,y):0; }
+			void display() const                                            { if(o) o->display(); }
+			void reshape(int w, int h)                                      { if(o) o->reshape(w,h); }
+			void get(float i, float &r, float &g, float &b, float &a) const { if(o) o->get(i,r,g,b,a); }
+			void setColor(float r, float g, float b)                        { if(o) o->setColor(r,g,b); }
+			void destroy()                                                  { if(o) delete o; o=0; }
+			Manip* o; /// manipulator
+		};
+
+	private:
+		DisplayHistogram m_histogram;
+		std::list<TFEobject*> m_manips; ///< TFE objects such as ramps, trapezoids
+		float m_min;          ///< minimum histogram value
+		float m_max;          ///< maximum histogram value
+		float m_left;         ///< left limit of visible histogram
+		float m_right;        ///< right limit of visible histogram
+		int m_posx;           ///< x pos of tfe on window
+		int m_posy;           ///< y pos of tfe on window
+		int m_width;          ///< width of tfe on window
+		int m_height;         ///< height of tfe on window
+		int m_win_width;      ///< width of window
+		int m_win_height;     ///< height of window
+		bool m_lutchanged;    ///< lut values has changed due to mouse event
+		float m_contrast;     ///< contrast of lut, can be any value, default is 1 (scale color)
+		float m_brightness;   ///< brightness of lut, between -1 and +1 (offset of color)
+		bool m_colorMode;     ///< color mode (color selector is poped)
+		DisplayColor m_color; ///< the color selector
+		float m_colorSize;    ///< size of the color selector
+		bool m_hide;          ///< hide transfer function
+	};
+
+
+	template <typename DataType>
+	void Editor::update(const DataType* image, unsigned int image_size)
+	{
+		if(!image && image_size>0) throw LOCATE(Error("image is empty"));
+		/* find minimum and maximum value of image, this will define the histogram resolution */
+		float min = 1e6;
+		float max = -1e6;
+		for(const DataType* it = image; it!=&image[image_size]; ++it)
+		{
+			if((*it)<min) min = (*it);
+			if((*it)>max) max = (*it);
+		}
+		unsigned int nbBins = (int)(max-min);
+		
+		/* update histogram */
+		m_histogram.update(image, image_size, min, max, nbBins);
+	}
+
+
+	template <typename Manip>
+	void Editor::add(Manip* m)
+	{
+		TFEobject* o = new TFEobjectimpl<Manip>(m);
+		m_manips.push_back(o);
+
+		// update shape
+		o->reshape(m_width, m_height);
+		o->clamp(m_histogram.getLeft(),m_histogram.getRight());
+	}
+
+}} // namespaces
+
+#endif
diff --git a/.svn/pristine/55/55ea63d1054f2526e32b7986b0d55e13507750b2.svn-base b/.svn/pristine/55/55ea63d1054f2526e32b7986b0d55e13507750b2.svn-base
new file mode 100644
index 0000000..76d6dde
--- /dev/null
+++ b/.svn/pristine/55/55ea63d1054f2526e32b7986b0d55e13507750b2.svn-base
@@ -0,0 +1,152 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	ioraw.h
+ * @author	Herve Lombaert
+ * @date	Tue Jun 6 2006
+ *
+ * Read and write raw data in file
+ * Currently implements only 8 bit black and white 2D and 3D images
+ */
+
+
+/**
+ * @namespace IO
+ * Contains all class and functions related to file reading and writing
+ */
+
+
+#ifndef IO_RAW_H
+#define IO_RAW_H
+
+
+namespace IO
+{
+	/** Read a N-D image */
+	template <typename DataType>
+	void readRaw(const char* filename, DataType* &image, unsigned int size);
+		
+
+	/** Write a N-D image */
+	template <typename DataType>
+	void writeRaw(const char* filename, const DataType* image, unsigned int size);
+	
+
+	/** reader for 2D black and white images */
+	class Raw
+	{
+	public:
+		/// read a N-D raw image
+		template <typename DataType>
+		static void read(const char* filename, DataType* &image,  unsigned int size);
+
+		/// write a N-D raw image
+		template <typename DataType>
+		static void write(const char* filename, const DataType* image, unsigned int size);
+	};
+
+} // namespace	
+
+
+#include <fstream>
+#include <cstdio>
+#include <string>
+#include <error.h>
+
+
+#ifdef __APPLE__
+	template <typename T> inline void endian_swap(T& x) { x = x; } // default behavior
+	template <> inline void endian_swap<short>(short& x) { x = (x>>8) | (x<<8); }
+	template <> inline void endian_swap<unsigned short>(unsigned short& x) { x = (x>>8) | (x<<8); }
+	template <> inline void endian_swap<int>(int& i) { i = ((i&0xff000000)>>24) | (((i&0x00ff0000)>>16)<<8) | (((i&0x0000ff00)>>8)<<16) | ((i&0x000000ff)<<24); }
+	template <> inline void endian_swap<unsigned int>(unsigned int& i) { i = ((i&0xff000000)>>24) | (((i&0x00ff0000)>>16)<<8) | (((i&0x0000ff00)>>8)<<16) | ((i&0x000000ff)<<24); }
+#endif
+
+
+namespace IO
+{
+	template <typename DataType>
+	static void readRaw(const char* filename, DataType* &image, unsigned int size)
+	{
+		Raw::read(filename, image, size);
+	}
+		
+	
+	template <typename DataType>
+	static void writeRaw(const char* filename, const DataType* image, unsigned int size)
+	{
+		Raw::write(filename, image, size);
+	}
+
+
+	template <typename DataType>
+	void Raw::read(const char* filename, DataType* &image, unsigned int size)
+	{
+		using namespace std;
+
+		// Read data content
+		ifstream file;
+
+		file.open(filename, ios::binary);
+		if(file.fail()) throw LOCATE(Error("open: %s", filename));
+
+		image = new DataType [size];
+
+		file.read((char*)image, sizeof(DataType)*size);
+
+		file.close();
+
+#ifdef __APPLE__
+		for(unsigned int i=0; i<size; ++i)
+			endian_swap(image[i]);
+#endif
+	}
+
+
+	template <typename DataType>
+	void Raw::write(const char* filename, const DataType* image, unsigned int size)
+	{
+		using namespace std;
+
+		// Write data content
+		ofstream file;
+		file.open(filename, ios::binary);
+		if(file.fail()) throw LOCATE(Error("open: %s", filename));
+
+#if __APPLE__
+		for(unsigned int i=0; i<size; ++i)
+		{
+			DataType p = image[i];
+			endian_swap(p);
+			file.write((char*)p, sizeof(DataType));
+		}
+#else
+		file.write((char*)image, sizeof(DataType)*size);
+#endif
+
+		file.close();
+	}
+
+
+}; // namespace
+
+
+#endif
diff --git a/.svn/pristine/56/5657d89128456888089cce0d59b7c6a9bd4fe4f0.svn-base b/.svn/pristine/56/5657d89128456888089cce0d59b7c6a9bd4fe4f0.svn-base
new file mode 100644
index 0000000..393f26f
--- /dev/null
+++ b/.svn/pristine/56/5657d89128456888089cce0d59b7c6a9bd4fe4f0.svn-base
@@ -0,0 +1,152 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	display2d.h
+ * @author	Herve Lombaert
+ * @date	Tue Jun 6 2006
+ */
+
+
+/**
+ * @namespace libvdDisplay
+ * Namespace containing all classes that display objects.
+ * Image viewer, volume renderer and 4D volume renderer are all in
+ * the Display namespace.
+ */
+
+
+#ifndef DISPLAY2D_H
+#define DISPLAY2D_H
+
+
+#include <error.h>
+
+
+namespace libvdDisplay
+{
+	/**
+	 * @class Image
+	 * @brief 2D image viewer
+	 *
+	 * Draw an image with 2D textures
+	 * Currently support any native image type
+	 * (ie. unsigned char, unsigned short, and others)
+	 * use update and display when image is changed:
+	 *
+	 * \code
+	 *	unsigned char* image = new unsigned char [100*100]; // fill the data
+	 *	Display::Image disp;
+	 *
+	 *	disp.update(image);
+	 *	disp.display();
+	 * \endcode
+	 *
+	 * \image html displayimage.png
+	 * \image latex displayimage.png
+	 *
+	 * If an image needs to be updated very fast (eg. playing a movie)
+	 * transfers to the texture memory can become a bottleneck
+	 * In this case, Display::ImageDrawPixels<T> might be more suitable
+	 * as it directly writes the image in the frame buffer.
+	 *
+	 * \todo Should be able to display any image size
+	 */
+
+
+	class Image
+	{
+	public:
+		Image();
+		~Image();
+		
+		/** Update the viewer with a new 2D image */
+		template <typename DataType>
+		void update(const DataType* image, unsigned int width, unsigned int height);
+
+		/** Draw the image on a centered unit square 
+		 * use glTranslate/glScale to move the image around */
+		void display() const;
+
+	private:
+		GLuint m_textureName;     ///< texture handle
+
+	private:
+		/// OpenGL constants
+		template <typename DataType>
+		struct OpenGLArgs { static GLenum format, type; };
+	};
+
+} // namespace
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Implementation
+//////////////////////////////////////////////////////////////////////////////
+
+namespace libvdDisplay
+{
+	template <typename DataType>
+	void Image::update(const DataType* image, unsigned int width, unsigned int height)
+	{
+		// Create new texture if required
+		if(!glIsTexture(m_textureName)) glGenTextures(1, &m_textureName);
+
+		// Send texture to graphic card
+		glBindTexture(GL_TEXTURE_2D, m_textureName); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+		glTexImage2D(GL_TEXTURE_2D,
+		             0,
+		             GL_RGBA,
+		             width,
+		             height,
+		             0,
+		             OpenGLArgs<DataType>::format,
+		             OpenGLArgs<DataType>::type,
+		             image);
+		glCheckError();
+	}
+
+
+	// specialization for image type
+	template <typename T> GLenum Image::OpenGLArgs<T>   ::format = GL_LUMINANCE;
+
+
+#ifdef COLOR_H
+
+#ifndef GL_BGR
+#define GL_BGR GL_BGR_EXT
+#endif
+
+	// specialization for image type when it is template of template
+	template <typename T> struct Image::OpenGLArgs<color<T> > { static GLenum format, type; };
+	template <typename T> GLenum Image::OpenGLArgs<color<T> >::type = OpenGLArgs<T>::type;
+	template <typename T> GLenum Image::OpenGLArgs<color<T> >::format = GL_BGR;
+
+#endif
+
+
+} // namespace
+
+
+#endif
diff --git a/.svn/pristine/58/5835e14356b723161bd9daf1f75b3df8330b01bf.svn-base b/.svn/pristine/58/5835e14356b723161bd9daf1f75b3df8330b01bf.svn-base
new file mode 100644
index 0000000..7dba3ec
--- /dev/null
+++ b/.svn/pristine/58/5835e14356b723161bd9daf1f75b3df8330b01bf.svn-base
@@ -0,0 +1,5 @@
+all:
+	doxygen config.doxygen
+
+clean:
+	rm -rf html latex
diff --git a/.svn/pristine/5a/5a513be72f1879a7ada5102ab4b5d56fb488774e.svn-base b/.svn/pristine/5a/5a513be72f1879a7ada5102ab4b5d56fb488774e.svn-base
new file mode 100644
index 0000000..6cc6b97
--- /dev/null
+++ b/.svn/pristine/5a/5a513be72f1879a7ada5102ab4b5d56fb488774e.svn-base
@@ -0,0 +1,127 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <io/ioraw.h>
+#include <io/iobmp.h>
+#include <io/ioscreenshot.h>
+#include <display/display3d.h>
+
+/**
+ * @test Testing file IO
+ */
+
+namespace TestIO
+{
+
+	int winid = 0; // window id, so we can destroy it later
+
+	Display::Volume displayVolume;
+	unsigned short* volume;
+	unsigned int size[3];
+
+
+	/** tests:
+	 * IO::Raw::read()
+	 * IO::glScreenshot()
+	 * IO::BMP::write()
+	 */
+	int test_ioscreenshot()
+	{
+		try
+		{
+			/* read a volume and displays it */
+			size[0] = 128,
+			size[1] = 128,
+			size[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", volume, size[0]*size[1]*size[2]);
+			displayVolume.update(volume, size[0], size[1], size[2]);
+
+			/* display volume */
+			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+			glEnable(GL_DEPTH_TEST);
+			displayVolume.display();
+			glDisable(GL_DEPTH_TEST);
+
+			/* now do a screen capture */
+			unsigned int w, h;
+			color<unsigned char>* image;
+
+			/* do a screenshot */
+			IO::glScreenshot(image, w, h);
+			glCheckError();
+
+			/* save into an image */
+			IO::BMP::write("screenshot.bmp", image, w, h);
+			printf("screen capture saved at \"screenshot.bmp\"\n");
+
+			delete [] volume; volume = 0;
+			size[0] = size[1] = size[2] = 0;
+
+			return 0; // no error
+		}
+		catch(const Error &e) { e.print(); }
+		catch( ... ) { printf("unknown error\n"); }
+
+		return 1; // error
+	}
+
+
+	void init()
+	{
+		glClearColor (0.25, 0.4, 0.6, 1.0);
+		glViewport(0, 0, 250, 250);
+
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, 1.0, 1.0, 30.0);
+		glMatrixMode(GL_MODELVIEW);
+
+		glMatrixMode(GL_MODELVIEW);
+		glLoadIdentity();
+		glTranslatef(0,0,-5);
+		glScalef(3,3,3);
+	}
+
+
+	void display(void)
+	{
+		/* do nothing, all tests should be done by now */
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+		glutSwapBuffers();
+	}
+
+
+	int main_init()
+	{
+		try
+		{
+			glutInitWindowSize(250, 250);
+			//glutInitWindowPosition(100, 100);
+			winid = glutCreateWindow("io");
+
+			init();
+
+			glutDisplayFunc(display); // required by glut
+
+			/* actual test */
+			test_ioscreenshot();
+
+			return 0;
+		}
+		catch(const Error &e) { e.print(); }
+		catch(...) { printf("unknown error\n"); }
+
+		return 1;
+	}
+
+} // namespace
diff --git a/.svn/pristine/5c/5c8df17f395a397c08b219aa03d759bfdae72ebc.svn-base b/.svn/pristine/5c/5c8df17f395a397c08b219aa03d759bfdae72ebc.svn-base
new file mode 100644
index 0000000..0246569
Binary files /dev/null and b/.svn/pristine/5c/5c8df17f395a397c08b219aa03d759bfdae72ebc.svn-base differ
diff --git a/.svn/pristine/5c/5cdfd875d20b2ea973dc326dc2cb90c63eca9a9c.svn-base b/.svn/pristine/5c/5cdfd875d20b2ea973dc326dc2cb90c63eca9a9c.svn-base
new file mode 100644
index 0000000..725942d
--- /dev/null
+++ b/.svn/pristine/5c/5cdfd875d20b2ea973dc326dc2cb90c63eca9a9c.svn-base
@@ -0,0 +1,355 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	ramp.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <tools/transferfunction/ramp.h>
+#include <cmath>
+
+namespace Tools { namespace TransferFunction
+{
+	Ramp::Ramp()
+	:	m_low(0),
+		m_high(0),
+		m_opacity(1),
+		m_left(0),
+		m_right(0),
+		m_low_u(0),
+		m_high_u(0),
+		m_aspectratio(1),
+		m_feature(NONE)
+	{
+		m_low_color[0] = m_low_color[1] = m_low_color[2] = 0;
+		m_middle_color[0] = m_middle_color[1] = m_middle_color[2] = 0.5;
+		m_high_color[0] = m_high_color[1] = m_high_color[2] = 1;
+	}
+
+
+	Ramp::Ramp(float low, float high, float opacity)
+	:	m_low(low),
+		m_high(high),
+		m_opacity(opacity),
+		m_left(0),
+		m_right(0),
+		m_low_u(0),
+		m_high_u(0),
+		m_aspectratio(1),
+		m_feature(NONE)
+	{
+		m_low_color[0] = m_low_color[1] = m_low_color[2] = 0;
+		m_middle_color[0] = m_middle_color[1] = m_middle_color[2] = 0.5;
+		m_high_color[0] = m_high_color[1] = m_high_color[2] = 1;
+	}
+
+
+	Ramp::~Ramp()
+	{}
+
+
+	void Ramp::update(float low, float high, float opacity)
+	{
+		/* update ramp */
+		m_low = low;
+		m_high = high;
+		m_opacity = opacity;
+
+		/* update ramp position for its visualization */
+		m_low_u  = (m_low-m_left)  / (m_right-m_left);
+		m_high_u = (m_high-m_left) / (m_right-m_left);
+	}
+
+
+	void Ramp::clamp(float left, float right)
+	{
+		/* update visualization limits */
+		m_left  = left;
+		m_right = right;
+
+		/* update ramp position for its visualization */
+		m_low_u  = (m_low-m_left)  / (m_right-m_left);
+		m_high_u = (m_high-m_left) / (m_right-m_left);
+	}
+
+
+	void Ramp::display() const
+	{
+		/* draw ramp */
+		glColor3f(1,0,0);
+
+		glBegin(GL_LINE_STRIP);
+
+		/* first half of the ramp */
+		if(m_high_u>=0)
+		{
+			if(m_low_u>=0)
+			{
+				/* low horizontal line */
+				glVertex3f(-0.5f,-0.5f,0);
+				if(m_low_u<=1.0f) glVertex3f(m_low_u-0.5f,-0.5f,0);
+				else           glVertex3f(0.5f,-0.5f,0);
+			}
+			else
+			{
+				/* find intersection of ramp with left border */
+				float intersec = - m_low_u / (m_high_u-m_low_u);
+				if(intersec<1.0f) glVertex3f(-0.5f,intersec*m_opacity-0.5f,0);
+			}
+		}
+
+		/* second half of the ramp */
+		if(m_low_u<=1)
+		{
+			if(m_high_u<=1)
+			{
+				/* high horizontal line */
+				if(m_high_u>=0.0f) glVertex3f(m_high_u-0.5f,m_opacity-0.5f,0);
+				else            glVertex3f(-0.5f,m_opacity-0.5f,0);
+				glVertex3f(0.5f,m_opacity-0.5f,0);
+			}
+			else
+			{
+				/* find intersection of ramp with right border */
+				float intersec = (1-m_low_u) / (m_high_u-m_low_u);
+				if(intersec<1.0f) glVertex3f(0.5f,intersec*m_opacity-0.5f,0);
+			}
+		}
+		glEnd();
+
+		float scale = 0.05f; // square size
+
+		/* lower ramp square */
+		if(m_low_u>=0.0f && m_low_u<=1.0f)
+		{
+			glColor3f(m_low_color[0], m_low_color[1], m_low_color[2]);
+
+			glPushMatrix();
+			glTranslatef(m_low_u-0.5f,-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+
+		/* higher ramp square */
+		if(m_high_u>=0 && m_high_u<=1)
+		{
+			glColor3f(m_high_color[0], m_high_color[1], m_high_color[2]);
+
+			glPushMatrix();
+			glTranslatef(m_high_u-0.5f,m_opacity-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+
+		/* center ramp square */
+		if((m_low_u+m_high_u)/2>=0.0f && (m_low_u+m_high_u)/2<=1.0f)
+		{
+			glColor3f(m_middle_color[0], m_middle_color[1], m_middle_color[2]);
+
+			glPushMatrix();
+			glTranslatef((m_low_u+m_high_u)/2-0.5f,m_opacity/2-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+	}
+
+
+	void Ramp::reshape(int w, int h)
+	{
+		m_aspectratio = (float)w/h;
+	}
+
+
+	bool Ramp::mouse(float x, float y)
+	{
+		float tolerance = 0.1f;
+
+		// NB: mouse coordinates are normalized (0..1)
+
+		/* assume no feature is selected */
+		m_feature = NONE;
+
+		if(x>=0 && x<=1 && y>=0 && y<=1)
+		{
+			/* lower ramp corner */
+			if(fabs(x-m_low_u) < 0.1 && fabs(y-0) < tolerance)
+				m_feature = LOW;
+
+			/* middle of the ramp */
+			else if(fabs(x-(m_low_u+m_high_u)/2) < 0.1 && fabs(y-m_opacity/2) < tolerance)
+				m_feature = MIDDLE;
+
+			/* higher ramp corner */
+			else if(fabs(x-m_high_u) < 0.1 && fabs(y-m_opacity) < tolerance)
+				m_feature = HIGH;
+		}
+
+		/* if a feature is selected, return true */
+		if(m_feature != NONE) return true;
+		else                  return false;
+	}
+
+
+	bool Ramp::motion(float x, float y)
+	{
+		// NB: mouse coordinates are normalized (0..1)
+
+		bool eventCaught = false;
+
+		/* what intensity is x */
+		float i = x*(m_right-m_left) + m_left;
+
+		/* change feature with new position */
+		switch(m_feature)
+		{
+		case LOW: // move lower ramp corner
+			{
+				if(i>=m_high) i = m_high-1; // avoid inverse ramp (not handled in this code)
+				update(i,m_high,m_opacity);
+				eventCaught = true;
+				break;
+			}
+		case HIGH: // move higher ramp corner
+			{
+				if(i<=m_low) i = m_low+1; // avoid inverse ramp (not handled in this code)
+				if(y>=0 && y<=1) m_opacity = y; // opacity is between 0 and 1
+				update(m_low,i,m_opacity);
+				eventCaught = true;
+				break;
+			}
+		case MIDDLE: // translate both corners
+			{
+				// i is the new ramp center
+				float hwindow = (m_high-m_low)/2;
+				update(i-hwindow, i+hwindow, m_opacity);
+				eventCaught = true;
+				break;
+			}
+		default: break;
+		}
+
+		return eventCaught;
+	}
+
+
+	void Ramp::get(float i, float &r, float &g, float &b, float &a) const
+	{
+		if(i < m_low)
+		{
+			r = m_low_color[0],
+			g = m_low_color[1],
+			b = m_low_color[2],
+			a = 0;
+		}
+		else if(i > m_high)
+		{
+			r = m_high_color[0],
+			g = m_high_color[1],
+			b = m_high_color[2],
+			a = m_opacity;
+		}
+		else if(i>=m_low && i<=(m_low+m_high)/2)
+		{
+			/* transition between 2 colors */
+			float v = 2 * (i-m_low) / (m_high-m_low);
+
+			/* change is slower for the dominent color */
+			r = (1- v)*m_low_color[0] + ( v)*m_middle_color[0];
+			g = (1- v)*m_low_color[1] + ( v)*m_middle_color[1];
+			b = (1- v)*m_low_color[2] + ( v)*m_middle_color[2];
+
+			/* opacity is linear */
+			a = v/2 * m_opacity;
+		}
+		else if(i>(m_low+m_high)/2 && i<=m_high)
+		{
+			/* transition between 2 colors */
+			float v = 2 * ((i-m_low) / (m_high-m_low) - 0.5f);
+
+			/* change is slower for the dominent color */
+			r = (1- v)*m_middle_color[0] + ( v)*m_high_color[0];
+			g = (1- v)*m_middle_color[1] + ( v)*m_high_color[1];
+			b = (1- v)*m_middle_color[2] + ( v)*m_high_color[2];
+
+			/* opacity is linear */
+			a = (v/2 + 0.5f) * m_opacity;
+		}
+	}
+
+
+	void Ramp::setColor(float r, float g, float b)
+	{
+		switch(m_feature)
+		{
+		case LOW:
+			m_low_color[0] = r,
+			m_low_color[1] = g,
+			m_low_color[2] = b;
+			break;
+		case MIDDLE:
+			m_middle_color[0] = r,
+			m_middle_color[1] = g,
+			m_middle_color[2] = b;
+			break;
+		case HIGH:
+			m_high_color[0] = r,
+			m_high_color[1] = g,
+			m_high_color[2] = b;
+			break;
+		default: break;
+		}
+	}
+
+}} // namespace
diff --git a/.svn/pristine/61/61c8c04874522e180a00e99852e7031d2a7bb1dd.svn-base b/.svn/pristine/61/61c8c04874522e180a00e99852e7031d2a7bb1dd.svn-base
new file mode 100644
index 0000000..91f36a5
--- /dev/null
+++ b/.svn/pristine/61/61c8c04874522e180a00e99852e7031d2a7bb1dd.svn-base
@@ -0,0 +1,71 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	mask3d.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <display/mask3d.h>
+
+namespace libvdDisplay
+{
+	Mask3D::Mask3D()
+	:	m_id(0)
+	{
+	}
+
+	Mask3D::~Mask3D()
+	{
+		if(glIsList(m_id)) glDeleteLists(m_id,1);
+	}
+
+	void Mask3D::display()
+	{
+		if(!glIsList(m_id)) return;
+
+		/* use regular glColor */
+		glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+		glPushAttrib(GL_ENABLE_BIT);
+		glEnable(GL_COLOR_MATERIAL);
+
+		/* draw list */
+		glCallList(m_id);
+
+		glPopAttrib();
+	}
+
+	void Mask3D::clear()
+	{
+		if(glIsList(m_id)) glDeleteLists(m_id,1);
+		m_id = 0;
+	}
+
+} // namespace
diff --git a/.svn/pristine/63/63e581b554599b9016e4696450dfb99a19c24c27.svn-base b/.svn/pristine/63/63e581b554599b9016e4696450dfb99a19c24c27.svn-base
new file mode 100644
index 0000000..a50cdda
--- /dev/null
+++ b/.svn/pristine/63/63e581b554599b9016e4696450dfb99a19c24c27.svn-base
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="libvd_test"
+	ProjectGUID="{BA023C29-34CF-4558-A768-2E366E70CD65}"
+	RootNamespace="libvd_test"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libvdd.lib"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libvd.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="../../lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\tests.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Tests"
+			>
+			<File
+				RelativePath="..\test_3dpick.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_display2d.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_display3d.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_display3d_clip.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_display4d.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_io.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_isosurface.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_mask3d.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_multi.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_point3d.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_stereo.h"
+				>
+			</File>
+			<File
+				RelativePath="..\test_transferfunction.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/.svn/pristine/65/655658ba67b71ec3f0360f9ba3d7ac92e3ff516e.svn-base b/.svn/pristine/65/655658ba67b71ec3f0360f9ba3d7ac92e3ff516e.svn-base
new file mode 100644
index 0000000..037ef0b
Binary files /dev/null and b/.svn/pristine/65/655658ba67b71ec3f0360f9ba3d7ac92e3ff516e.svn-base differ
diff --git a/.svn/pristine/65/655ecf59d0c54674d12efecbb00685909e2260a3.svn-base b/.svn/pristine/65/655ecf59d0c54674d12efecbb00685909e2260a3.svn-base
new file mode 100644
index 0000000..81daf35
--- /dev/null
+++ b/.svn/pristine/65/655ecf59d0c54674d12efecbb00685909e2260a3.svn-base
@@ -0,0 +1,174 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	manipworld.h
+ * @author	Herve Lombaert
+ * @date	October 27th, 2006
+ */
+
+
+/**
+ * @namespace Tools
+ * Handy tools for the visualization library.
+ * Anything extra in the visualization library ends up in this namespace.
+ * Features such as mouse manipulator, clip planes, or object picking are
+ * available here.
+ */
+
+
+#ifndef MANIPWORLD_H
+#define MANIPWORLD_H
+
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+
+namespace Tools
+{
+	/**
+	 * @class ManipWorld
+	 * @brief Mouse handler to manipulate the world
+	 *
+	 * Manipulate the world, mouse translations and rotations are screen-axis aligned
+	 * This object handles the modelview matrix, in your display function use:
+	 *
+	 * \code
+	 *	void display()
+	 *	{
+	 *	  glClear(GL_COLOR_BUFFER_BIT | // erase last image on buffer
+	 *	          GL_DEPTH_BUFFER_BIT); // erase last z buffer
+	 *	  
+	 *	  glPushMatrix();
+	 *	  manip.loadIdentityMatrix();
+	 *
+	 *	  // ... draw objects ...
+	 *
+	 *	  glPopMatrix();
+	 *	}
+	 * \endcode
+	 *
+	 * Rotate with:
+	 *
+	 * \code
+	 *	void mouse_motion(int x, int y)
+	 *	{
+	 *	   manip.rotateXAxis(y - last_y);
+	 *	   manip.rotateYAxis(x - last_x);
+	 *	}
+	 * \endcode
+	 *
+	 * To pick an object (also look into the Pick class):
+	 *
+	 * \code
+	 *	void mouse_click(int x, int y)
+	 *	{
+	 *	   float pos[3];
+	 *	   if( ManipWorld::pick(x, window_height-y, pos[0], pos[1], pos[2]) )
+	 *	     // ... object picked at position -pos- ...
+	 *	}
+	 * \endcode
+	 * 
+	 * Note that the mouse coordinate origin is on the lower left corner of the viewport
+	 *
+	 */
+
+
+	class ManipWorld
+	{
+	public:
+		ManipWorld();
+		~ManipWorld();
+
+		/** Use identity matrix */
+		void init();
+
+		/** translate camera (screen aligned translations)
+		 * @param dx,dy translate object parallel to the screen
+		 * @param dz move object in and outside the screen */
+		void translateAxis(float dx, float dy, float dz);
+
+		/** translate camera (world aligned translations)
+		 * @param dx,dy,dz translate object in world distance */
+		void translate(float dx, float dy, float dz);
+
+		/** camera zoom */
+		void zoom(float zoom);
+
+		/** Rotate verticaly, around the screen X axis */
+		void rotateXAxis(float delta);
+
+		/** Rotate horizontaly, around the screen Y axis */
+		void rotateYAxis(float delta);
+
+		/** Tilt camera, around the screen Z axis */
+		void rotateZAxis(float delta);
+
+		/** Rotate around the world X axis */
+		void rotateX(float delta);
+
+		/** Rotate around the world Y axis */
+		void rotateY(float delta);
+
+		/** Rotate around the world Z axis */
+		void rotateZ(float delta);
+
+		/** Load modelview matrix
+		 *  this actually rotate and translate the world */
+		void loadModelViewMatrix() const;
+
+		/** Load inverse of the modelview matrix
+		 *  it can be used to undo a manipulation */
+		void loadInverseModelViewMatrix() const;
+
+		/** Save the actual modelview matrix
+		 *  if the modelview if modified externally, this method will
+		 *  copy it to this manipulator */
+		void saveModelViewMatrix();
+
+		/** Get modelview matrix */
+		void getModelViewMatrix(float m[]) const;
+
+		/** Set modelview matrix */
+		void setModelViewMatrix(const float m[]);
+
+		/** pick a 3D point at pixel (x,y)
+		 * Assume the projection matrix is unchanged since last drawing 
+		 * This is a static method, so you can call it from anywhere
+		 * If assumptions are wrong, use the class Pick
+		 * @see Pick */
+		static bool pick(int mouse_x, int mouse_y, float &x, float &y, float &z);
+
+	private:
+		static void transp(float m[]);
+
+	private:
+		float m_modelview[16]; ///< model view matrix
+	};
+
+
+} // namespace
+
+
+#endif
diff --git a/debian/watch b/.svn/pristine/65/656175975e5970153ac1214f26174581d6c97e52.svn-base
similarity index 100%
rename from debian/watch
rename to .svn/pristine/65/656175975e5970153ac1214f26174581d6c97e52.svn-base
diff --git a/.svn/pristine/65/6574589427262479af17df711596b0ff491bcd43.svn-base b/.svn/pristine/65/6574589427262479af17df711596b0ff491bcd43.svn-base
new file mode 100644
index 0000000..3239f5a
--- /dev/null
+++ b/.svn/pristine/65/6574589427262479af17df711596b0ff491bcd43.svn-base
@@ -0,0 +1,5 @@
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
+
+#DEBHELPER#
diff --git a/.svn/pristine/68/68462662049c2dff3eff418cc28f22ae6d063a2e.svn-base b/.svn/pristine/68/68462662049c2dff3eff418cc28f22ae6d063a2e.svn-base
new file mode 100644
index 0000000..c470f24
--- /dev/null
+++ b/.svn/pristine/68/68462662049c2dff3eff418cc28f22ae6d063a2e.svn-base
@@ -0,0 +1,114 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	ioavi.h
+ * @author	Herve Lombaert
+ * @date	Tue Jun 6 2006
+ *
+ * This namespace provides some functions to read an AVI file
+ *
+ * The AVI needs to be uncompressed 24 bit BMP images
+ *
+ * It reads either a single frame in a 2D image, or the whole movie
+ * in a 3D image
+ */
+
+
+#ifndef IO_AVI_H
+#define IO_AVI_H
+
+
+
+#include <color.h>
+#include <cstdio>
+
+
+namespace IO
+{
+	/** read a AVI frame of the movie in a 2D image */
+	void readAVIFrame(const char* filename,
+	                  color<unsigned char>* &frame,
+	                  unsigned int &frame_width,
+	                  unsigned int &frame_height,
+	                  unsigned int frame_nb);
+			
+	/** read the whole AVI movie in a 3D image */
+	void readAVI(const char* filename,
+	             color<unsigned char>* &image,
+	             unsigned int &frame_width,
+	             unsigned int &frame_height,
+	             unsigned int &nb_frames);
+
+	/** AVI reader */
+	class AVI
+	{
+	public:
+		/** constructor */
+		AVI(const char* filename=0);
+		~AVI();
+
+		/** open an avi file */
+		void open(const char* filename);
+
+		/** close file */
+		void close();
+	
+		/** returns the number of frames in the movie */
+		unsigned int getNbFrames();
+
+		/** returns the image size */
+		void getFrameSize(unsigned int &width, unsigned int &height);
+
+		/** read a single frame in a 2D image */
+		void read(color<unsigned char>* &image, unsigned int frame);
+
+		/** read the whole movie in a 3D image */
+		void read(color<unsigned char>* &image);
+
+		/** read part of the movie in a 3D image (including start & end frames) */
+		void read(color<unsigned char>* &image, unsigned int start, unsigned int end);
+	
+	private:
+		void readHeader();
+	
+		struct header { ///< AVI header
+			unsigned int time_delay;            // time delay between frames in microseconds
+			unsigned int avi_data_rate;         // data rate of AVI data
+			unsigned int padding;               // padding multiple size, typically 2048
+			unsigned int parameter_flags;       // parameter flags
+			unsigned int number_frames;         // number of video frames
+			unsigned int number_preview_frames; // number of preview frames
+			unsigned int number_streams;        // number of data streams (1 or 2)
+			unsigned int buffer_size;           // suggested playback buffer size in bytes
+			unsigned int width;                 // width of video image in pixels
+			unsigned int height;                // height of video image in pixels
+			unsigned int time_scale;            // time scale, typically 30
+			unsigned int data_rate;             // data rate (frame rate = data rate / time scale)
+			unsigned int starting_time;         // starting time, typically 0
+			unsigned int avi_size;              // size of AVI data chunk in time scale units
+		} m_header;
+		
+		FILE*  m_fd;
+	};	
+};
+
+
+#endif
diff --git a/.svn/pristine/6b/6b5746a1c690b34927924227f0eb05c84c0f16fe.svn-base b/.svn/pristine/6b/6b5746a1c690b34927924227f0eb05c84c0f16fe.svn-base
new file mode 100644
index 0000000..58cc2a5
--- /dev/null
+++ b/.svn/pristine/6b/6b5746a1c690b34927924227f0eb05c84c0f16fe.svn-base
@@ -0,0 +1,57 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	iopgm.h
+ * @author	Herve Lombaert
+ * @date	Tue Jun 6 2006
+ *
+ * Read and write 2D image from ascii or binary PGM files
+ *
+ * Images must be of type Image<unsigned char,2>
+ */
+
+
+#ifndef IO_PGM_H
+#define IO_PGM_H
+
+
+namespace IO
+{
+	/** Read a 2D image from a PGM file */
+	void readPGM(const char* filename, unsigned char* &image, unsigned int &width, unsigned int &height);
+		
+	
+	/** Write a 2D image from a PGM file */
+	void writePGM(const char* filename, const unsigned char* image, unsigned int width, unsigned int height);
+	
+
+	/** Black and white reader for PGM files */
+	class PGM
+	{
+	public:
+		static void read(const char* filename, unsigned char* &image, unsigned int &width, unsigned int &height); ///< read a 2D PGM image
+		static void write(const char* filename, const unsigned char* image, unsigned int width, unsigned int height); ///< write a 2D PGM binary image
+	};
+
+} // namespace
+
+
+#endif
diff --git a/.svn/pristine/6d/6d65eb8bfac1f9f1ab232a70ee3debdc36947d70.svn-base b/.svn/pristine/6d/6d65eb8bfac1f9f1ab232a70ee3debdc36947d70.svn-base
new file mode 100644
index 0000000..a76e6ed
--- /dev/null
+++ b/.svn/pristine/6d/6d65eb8bfac1f9f1ab232a70ee3debdc36947d70.svn-base
@@ -0,0 +1,824 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	display3d.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include "msvc/GLee.h"
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+//This file uses prototypes that are only avilable in opengl 2.0. 
+// to use this, we must use the opengl extensions file, where
+// these prototypes are DISABLED unless GL_GLEXT_PROTOTYPES is defined
+#define GL_GLEXT_PROTOTYPES 1
+#include <GL/gl.h>
+#include <GL/glext.h>
+#endif
+
+#include <display/display3d.h>
+#include <cmath>
+#include <vector>
+#include <map>
+#include <utility>
+
+//////////////////////////////////////////////////////////////////////////////
+// Implementation
+//////////////////////////////////////////////////////////////////////////////
+
+namespace libvdDisplay
+{
+	Volume::Volume()
+	:	m_rendering_mode(VRT), // default mode is volume rendering
+		m_quality(1),
+		m_interpolation(GL_LINEAR),
+		m_data_texture(0),
+		m_gpu_program(0),
+		m_fragment_shader(0),
+		m_internal_lut(0),
+		m_lut_texture(0)
+	{
+		/* default maximum texture size is 256^3 */
+		m_max_texture_size[0] = m_max_texture_size[1] = m_max_texture_size[2] = 256;
+
+		/* min and max intensities of data */
+		m_intensity_range[0] = m_intensity_range[1] = 0;
+
+		/* set a default plane */
+		m_mpr_matrix[0]  = 1, m_mpr_matrix[1]  = 0, m_mpr_matrix[2]  = 0, m_mpr_matrix[3]  = 0;
+		m_mpr_matrix[4]  = 0, m_mpr_matrix[5]  = 1, m_mpr_matrix[6]  = 0, m_mpr_matrix[7]  = 0;
+		m_mpr_matrix[8]  = 0, m_mpr_matrix[9]  = 0, m_mpr_matrix[10] = 1, m_mpr_matrix[11] = 0;
+		m_mpr_matrix[12] = 0, m_mpr_matrix[13] = 0, m_mpr_matrix[14] = 0, m_mpr_matrix[15] = 1;
+	}
+
+
+	Volume::~Volume()
+	{
+		if(m_internal_lut) delete [] m_internal_lut;
+
+		// If this is called after the display has been destroyed, this call will be undefined
+		if(glIsTexture(m_data_texture))
+			glDeleteTextures(1, &m_data_texture);
+		if(glIsTexture(m_lut_texture))
+			glDeleteTextures(1, &m_lut_texture);
+	}
+
+
+	void Volume::display() const
+	{
+		/* check if the display has been initialized */
+		if(!m_gpu_program) return;
+
+		/* start using GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* Use 1D texture for the lookup table */
+		glActiveTexture(GL_TEXTURE1);
+		glEnable(GL_TEXTURE_2D);
+		glBindTexture(GL_TEXTURE_2D, m_lut_texture); glCheckError();
+		glDisable(GL_TEXTURE_2D); // LUT is now in graphic memory
+
+		/* Use 3D texture */
+		glActiveTexture(GL_TEXTURE0);
+		glEnable(GL_TEXTURE_3D);
+		glBindTexture(GL_TEXTURE_3D, m_data_texture); glCheckError();
+
+		/* Position texture */
+		glMatrixMode(GL_TEXTURE);
+		glPushMatrix();
+		glScalef(m_texture_scale[0], m_texture_scale[1], m_texture_scale[2]);
+		glTranslatef(0.5,0.5,0.5);   // center volume texture at (0,0,0)
+
+		/* Decide which rendering mode to use */
+		switch(m_rendering_mode)
+		{
+		case VRT:
+			/* accumulate intensities from all rendered planes */
+			glEnable(GL_BLEND);
+			glBlendEquation(GL_FUNC_ADD);
+			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+			render();                // render the 3D textures on the planes
+			glDisable(GL_BLEND);
+			break;
+
+		case MIP:
+			/* display the maximum intensity from all rendered planes */
+			glEnable(GL_BLEND);
+			glBlendEquation(GL_MAX); // MIP, Maximum Intensity Projection
+			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+			render();                // render the 3D textures on the planes
+			glDisable(GL_BLEND);
+			break;
+
+		case MPR:
+			/* render a single plane */
+			renderSlice(m_mpr_matrix);
+			break;
+		};
+
+		glMatrixMode(GL_TEXTURE);
+		glPopMatrix(); // texture
+
+		glDisable(GL_TEXTURE_3D);
+
+		/* stop using the program for further drawing */
+		glUseProgram(0);
+
+		glMatrixMode(GL_MODELVIEW);
+	}
+
+
+	void Volume::setInterpolation(int interpolation)
+	{
+		if(interpolation == 0)
+			m_interpolation = GL_NEAREST;
+		else
+			m_interpolation = GL_LINEAR;
+	}
+
+
+	void Volume::setMode(Mode mode)
+	{
+		if(mode > MPR) throw LOCATE(Error("Unknown rendering mode: %d", m_rendering_mode));
+		m_rendering_mode = mode;
+	}
+
+
+	Volume::Mode Volume::getMode() const
+	{
+		return m_rendering_mode;
+	}
+
+
+	void Volume::setMprMatrix(const float matrix[])
+	{
+		for(unsigned int i=0; i<16; ++i) m_mpr_matrix[i] = matrix[i];
+	}
+
+
+	void Volume::render() const
+	{
+		/* our plane is parallel to the screen
+		   its rotation is the inverse rotation part of the modelview matrix */
+		glMatrixMode(GL_MODELVIEW);
+		float plane_matrix[16];
+		glGetFloatv(GL_MODELVIEW_MATRIX, plane_matrix);
+		transp(plane_matrix); // invert modelview matrix, ignore translation
+		plane_matrix[12] = plane_matrix[13] = plane_matrix[14] = 0;
+		normalize(plane_matrix);
+
+		/* compute the number of planes */
+		float nbPlanes = getNbRenderingPlanes() * m_quality;
+		float step = 1.73f / nbPlanes;
+
+		/* loop and use a different rendering plane
+		   move plane by step at each iteration
+		   sqrt(3) is the maximum size of our plane (the diagonal of the cube)
+		   0.87 is half of sqrt(3) */
+		for(float d=-0.87f; d<0.87f; d+=step)
+		{
+			/* set the plane translation in the Z screen axis */
+			plane_matrix[12] = d*plane_matrix[8];
+			plane_matrix[13] = d*plane_matrix[9];
+			plane_matrix[14] = d*plane_matrix[10];
+
+			/* render plane */
+			renderSlice(plane_matrix);
+		}
+	}
+
+
+	void Volume::renderSlice(const float m[]) const
+	{
+/* Two versions here
+ * First method displays stacked squares
+ *   simple code, but as squares must be large in order to fit the cube's cross section
+ *   more texture computation is required
+ * Second method displays stacked cross-section
+ *   uglier code in order to compute the cross-section (sorting of crossing edges)
+ *   however only the cross-section is displayed, no unnecessary rendering is done outside the cube
+ */
+#if 0
+		/* NB: sqrt(3) is the maximum size of our plane (the diagonal of the cube)
+			   0.87 is half of sqrt(3) */
+
+		/* a3 ---- a2
+		    |      |
+		   a0 ---- a1 */
+
+		/* flat plane parallel to the screen in camera coordinate */
+		float p0[3] = { -0.87f,-0.87f,0 };
+		float p1[3] = { +0.87f,-0.87f,0 };
+		float p2[3] = { +0.87f,+0.87f,0 };
+		float p3[3] = { -0.87f,+0.87f,0 };
+
+		/* convert a plane from camera to world coordinate */
+		float a0[3]; transf(p0,m,a0);
+		float a1[3]; transf(p1,m,a1);
+		float a2[3]; transf(p2,m,a2);
+		float a3[3]; transf(p3,m,a3);
+
+		/* Display a quad in the world */
+		glColor3f(1,1,1);
+		glBegin(GL_QUADS);
+		glTexCoord3fv(a0); glVertex3fv(a0);
+		glTexCoord3fv(a1); glVertex3fv(a1);
+		glTexCoord3fv(a2); glVertex3fv(a2);
+		glTexCoord3fv(a3); glVertex3fv(a3);
+		glEnd();
+#else
+
+		/* cube
+		 *
+		 *      4----------7
+		 *      |\         |\
+		 *      | \        | \
+		 *      |  5----------6
+		 *      |  |       |  |
+		 *      0--|-------3  |
+		 *       \ |        \ |
+		 *        \|         \|
+		 *         1----------2
+		 *
+		 * edges are: (01) (12) (23) (30)
+		 *            (45) (56) (67) (74)
+		 *            (04) (15) (26) (37)
+		 *
+		 */
+
+		/*
+		 *          ^
+		 *      (n) |   \ c[e[i][0]]
+		 *          |    \
+		 *         +------\----------+
+		 *       /  |      o       /
+		 *     /    O       .    /
+		 *   +-----------------+
+		 *                    . c[e[i][1]]
+		 *
+		 * Edge intersecting the plane
+		 * Vector (v) start at the plane origin and ends at a cube corner
+		 */
+		
+
+		/* Where the cube corners are */
+		float c[8][3] = { // cuber corners
+			{-0.5f, -0.5f, -0.5f},
+			{-0.5f, +0.5f, -0.5f},
+			{+0.5f, +0.5f, -0.5f},
+			{+0.5f, -0.5f, -0.5f},
+			{-0.5f, -0.5f, +0.5f},
+			{-0.5f, +0.5f, +0.5f},
+			{+0.5f, +0.5f, +0.5f},
+			{+0.5f, -0.5f, +0.5f},
+		};
+
+		/* Edges of the cube */
+		int e[12][2] = { // edges
+			{0,1}, {1,2}, {2,3}, {3,0},
+			{4,5}, {5,6}, {6,7}, {7,4},
+			{0,4}, {1,5}, {2,6}, {3,7}
+		};
+
+		/* Vector (v): from plane origin to cube corners */
+		float v[8][3] = { // cuber corners relative to plane origin
+			{-0.5f-m[12], -0.5f-m[13], -0.5f-m[14]},
+			{-0.5f-m[12], +0.5f-m[13], -0.5f-m[14]},
+			{+0.5f-m[12], +0.5f-m[13], -0.5f-m[14]},
+			{+0.5f-m[12], -0.5f-m[13], -0.5f-m[14]},
+			{-0.5f-m[12], -0.5f-m[13], +0.5f-m[14]},
+			{-0.5f-m[12], +0.5f-m[13], +0.5f-m[14]},
+			{+0.5f-m[12], +0.5f-m[13], +0.5f-m[14]},
+			{+0.5f-m[12], -0.5f-m[13], +0.5f-m[14]},
+		};
+
+		/* Signed distance from cube corners to the plane
+		 * it is the dot-product of plane up vector (n) with (v) */
+		float nv[8] = {
+			m[8]*v[0][0]+m[9]*v[0][1]+m[10]*v[0][2],
+			m[8]*v[1][0]+m[9]*v[1][1]+m[10]*v[1][2],
+			m[8]*v[2][0]+m[9]*v[2][1]+m[10]*v[2][2],
+			m[8]*v[3][0]+m[9]*v[3][1]+m[10]*v[3][2],
+			m[8]*v[4][0]+m[9]*v[4][1]+m[10]*v[4][2],
+			m[8]*v[5][0]+m[9]*v[5][1]+m[10]*v[5][2],
+			m[8]*v[6][0]+m[9]*v[6][1]+m[10]*v[6][2],
+			m[8]*v[7][0]+m[9]*v[7][1]+m[10]*v[7][2],
+		};
+
+		/* If edge ends have a different sign, the edge crosses the plane */
+		int cross[12]; // is edge[i] crossing plane
+
+		for(unsigned int i=0; i<12; ++i)
+		{
+			if(nv[e[i][0]]*nv[e[i][1]]<0)
+				cross[i] = 1;
+			else
+				cross[i] = 0;
+		}
+
+		/* Compute the intersection points on each crossing edge */
+		std::vector<float> points;
+		for(unsigned int i=0; i<12; ++i)
+		{
+			if(cross[i])
+			{
+				float u[3] = {
+					c[e[i][1]][0]-c[e[i][0]][0],
+					c[e[i][1]][1]-c[e[i][0]][1],
+					c[e[i][1]][2]-c[e[i][0]][2]
+				};
+
+				float nu = m[8]*u[0]+m[9]*u[1]+m[10]*u[2];
+
+				float t = - nv[e[i][0]] / nu;
+
+				float inters[3] = {
+					c[e[i][0]][0]+t*u[0],
+					c[e[i][0]][1]+t*u[1],
+					c[e[i][0]][2]+t*u[2]
+				};
+
+				points.push_back(inters[0]);
+				points.push_back(inters[1]);
+				points.push_back(inters[2]);
+			}
+		}
+
+		/* If we have more than two points, we can draw a polygon */
+		if(points.size()>6) // if more than two points
+		{
+			/* Sort these points so we can correctly draw a polygon */
+			std::multimap<float,int> map;
+			float u[3] = { points[3]-points[0], points[4]-points[1], points[5]-points[2] };
+			float lul = sqrt(u[0]*u[0]+u[1]*u[1]+u[2]*u[2]);
+			for(unsigned int i=2; i<points.size()/3; ++i)
+			{
+				float v[3] = { points[i*3+0]-points[0],points[i*3+1]-points[1],points[i*3+2]-points[2] };
+				float lvl = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
+	
+				float cos_angle = (v[0]*u[0]+v[1]*u[1]+v[2]*u[2])/(lul*lvl);
+				map.insert(std::pair<float,int>(cos_angle,i));
+			}
+	
+			/* Draw the cube cross-section with a texture on it */
+			glColor3f(1,1,1);
+			glBegin(GL_TRIANGLE_FAN);
+			glTexCoord3f(points[0],points[1],points[2]);
+			glVertex3f  (points[0],points[1],points[2]);
+			glTexCoord3f(points[3],points[4],points[5]);
+			glVertex3f  (points[3],points[4],points[5]);
+			for(std::multimap<float,int>::reverse_iterator it = map.rbegin(); it != map.rend(); ++it)
+			{
+				glTexCoord3f(points[it->second*3+0],points[it->second*3+1],points[it->second*3+2]);
+				glVertex3f  (points[it->second*3+0],points[it->second*3+1],points[it->second*3+2]);
+			}
+			glEnd();
+		} // if more than 2 points
+#endif
+	}
+
+
+	void Volume::alignWithScreen() const
+	{
+		/* get the modelview matrix */
+		float modelview[16]; glGetFloatv(GL_MODELVIEW_MATRIX, modelview);
+		glMatrixMode(GL_MODELVIEW);
+		glLoadIdentity(); // reset, first, we align the view with the screen
+
+		/* get the current transformation */
+		glPushMatrix();
+		glMultMatrixf(m_mpr_matrix); // how the plane is positioned
+		glMultMatrixf(modelview); // scale it
+		float m[16]; glGetFloatv(GL_MODELVIEW_MATRIX, m); // how the plane is with the scaling factors
+		glPopMatrix();
+
+		/* get the scaling matrix */
+		float sx = sqrt(m[0]*m[0] + m[1]*m[1] + m[2] *m[2]);
+		float sy = sqrt(m[4]*m[4] + m[5]*m[5] + m[6] *m[6]);
+		float sz = sqrt(m[8]*m[8] + m[9]*m[9] + m[10]*m[10]);
+
+		/* get the rotation matrix */
+		float rot[16] = { 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 };
+		rot[0] = m[0]/sx; rot[1] = m[1]/sy; rot[2] = m[2] /sz;
+		rot[4] = m[4]/sx; rot[5] = m[5]/sy; rot[6] = m[6] /sz;
+		rot[8] = m[8]/sx; rot[9] = m[9]/sy; rot[10]= m[10]/sz;
+		normalize(rot);
+
+		/* invert plane matrix
+		 * so we can make the plane appear parallel to the screen if required */
+		float inv_m[16];
+		for(unsigned int i=0; i<16; ++i) inv_m[i] = rot[i];
+		transp(inv_m);
+		inv_m[3]  = inv_m[7]  = inv_m[11] = 0; // should be zero anyway
+		inv_m[12] = inv_m[13] = inv_m[14] = 0; // remove translation for now
+
+		/* invert the model view matrix 
+		 * M^-1 = (RS)^-1 = S^-1 R^-1 = R/(sx,sy,sz)^T */
+		inv_m[0] = inv_m[0] / sx; inv_m[1] = inv_m[1] / sy; inv_m[2]  = inv_m[2]  / sz;
+		inv_m[4] = inv_m[4] / sx; inv_m[5] = inv_m[5] / sy; inv_m[6]  = inv_m[6]  / sz;
+		inv_m[8] = inv_m[8] / sx; inv_m[9] = inv_m[9] / sy; inv_m[10] = inv_m[10] / sz;
+
+		/* revert any translation, so the plane crosses the origin
+		 * convert the plane translation into the screen coordinate (use the inverse of the rotation part)
+		 * multiply translation by inv_rot (rot^T) */
+		inv_m[12] = -( rot[0]*m[12]*sx + rot[1]*m[13]*sy + rot[2] *m[14]*sz ) / sx;
+		inv_m[13] = -( rot[4]*m[12]*sx + rot[5]*m[13]*sy + rot[6] *m[14]*sz ) / sy;
+		inv_m[14] = -( rot[8]*m[12]*sx + rot[9]*m[13]*sy + rot[10]*m[14]*sz ) / sz;
+
+		/* change modelview matrix so all further object (eg. plane) will be parallel to the screen */
+		glMatrixMode(GL_MODELVIEW);
+		glMultMatrixf(inv_m); // rotate screen, aligning it with the screen
+		
+		/* now the correction (align with the screen) has been done,
+		 * use the modelview as previously expected */
+		glMultMatrixf(modelview);
+	}
+
+
+	void Volume::updateRamp(float min, float max)
+	{
+		/* check if the display has been initialized */
+		if(!m_gpu_program) throw LOCATE(Error("updating lut before setting data"));
+
+		/* use the GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* internal lut is normalized (maximum texture size)
+		   lut[0] corresponds to the lowest data value and
+		   lut[size-1] corresponds to the highest data value */
+		GLint size; // typically 4096
+		glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); // query what the graphic card max texture size
+
+		/* set lookup table */
+		if(!m_internal_lut) m_internal_lut = new float [size*4];
+
+		/* find where the min and max value should be in the internal lut */
+		if(m_intensity_range[1] == m_intensity_range[0])
+			min = m_intensity_range[0],
+			max = m_intensity_range[1];
+		else
+			min = (min-m_intensity_range[0]) * (size-1) / (m_intensity_range[1]-m_intensity_range[0]),
+			max = (max-m_intensity_range[0]) * (size-1) / (m_intensity_range[1]-m_intensity_range[0]);
+
+		int low  = (min<0)    ?  0   : ((min>size) ? size : (int)min);
+		int high = (max>size) ? size : ((max<0)    ? 0    : (int)max);
+
+		/* fill in lut flat parts */
+		for(int i=0; i<low; ++i)
+		{
+			m_internal_lut[i*4+0] = 0,
+			m_internal_lut[i*4+1] = 0,
+			m_internal_lut[i*4+2] = 0,
+			m_internal_lut[i*4+3] = 0;
+		}
+		for(int i=high; i<size; ++i)
+		{
+			m_internal_lut[i*4+0] = 1,
+			m_internal_lut[i*4+1] = 1,
+			m_internal_lut[i*4+2] = 1,
+			m_internal_lut[i*4+3] = 1;
+		}
+
+		/* fill ramp */
+		for(int i=low; i<high; ++i)
+		{
+			m_internal_lut[i*4+0] = (i-min)/(max-min),
+			//m_internal_lut[i*4+1] = (i-min)/(max-min)*(i-min)/(max-min)*(i-min)/(max-min), // G and
+			//m_internal_lut[i*4+2] = (i-min)/(max-min)*(i-min)/(max-min)*(i-min)/(max-min), // B increases slower than R -> gives a redish color to the volume
+			m_internal_lut[i*4+1] = (i-min)/(max-min),
+			m_internal_lut[i*4+2] = (i-min)/(max-min),
+			m_internal_lut[i*4+3] = (i-min)/(max-min); // from transparent to opage
+		}
+
+		/* Create 1D texture for lookup table */
+		if(!glIsTexture(m_lut_texture)) glGenTextures(1, &m_lut_texture);
+		glBindTexture(GL_TEXTURE_2D, m_lut_texture); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+		glTexImage2D(GL_TEXTURE_2D,
+					 0,
+					 GL_RGBA8,
+					 size, // lut size
+					 1,
+					 0,
+					 GL_RGBA, // color lookup table
+					 GL_FLOAT,
+					 m_internal_lut);
+		glCheckError();
+
+		/* NB: we do not delete the lut, we keep it there
+			   so when updating it the next time, no time will be lost in memory allocation/deallocation */
+		//delete [] m_internal_lut; m_internal_lut = 0;
+
+		/* stop using the GPU program until requested */
+		glUseProgram(0);
+	}
+
+
+	void Volume::updateLut(const float* lut, unsigned int lutSize)
+	{
+		/* check inputs */
+		if(!lut || !lutSize) throw LOCATE(Error("wrong inputs"));
+
+		/* check if the display has been initialized */
+		if(!m_gpu_program) throw LOCATE(Error("updating lut before setting data"));
+
+		/* use the GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* internal lut is normalized (maximum texture size)
+		   lut[0] is the lowest volume value and
+		   lut[size-1] is the highest voluem value */
+		GLint size; // typically 4096
+		glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); // query what the graphic card max texture size
+
+		/* set lookup table */
+		if(!m_internal_lut) m_internal_lut = new float [size*4];
+
+		/* copy lut */
+		float scale = (float)(m_intensity_range[1]-m_intensity_range[0])/size;
+		for(int i=0; i<size; ++i)
+		{
+			/* find where i should be in the given lut
+			   need to convert i which ranges from 0..size, but corresponds
+			   to values ranging in m_intensity_range[2] */
+			unsigned int intensity = (unsigned int )(i*scale + m_intensity_range[0]);
+
+			if(intensity < lutSize)
+			{
+				m_internal_lut[i*4+0] = lut[intensity*4+0];
+				m_internal_lut[i*4+1] = lut[intensity*4+1];
+				m_internal_lut[i*4+2] = lut[intensity*4+2];
+				m_internal_lut[i*4+3] = lut[intensity*4+3];
+			}
+			else
+			{
+				/* assume no intensity if lut is not defined */
+				m_internal_lut[i*4+0] = 1;
+				m_internal_lut[i*4+1] = 1;
+				m_internal_lut[i*4+2] = 1;
+				m_internal_lut[i*4+3] = 0;
+			}
+		}
+
+		/* Create 1D texture for lookup table */
+		if(!glIsTexture(m_lut_texture)) glGenTextures(1, &m_lut_texture);
+		glBindTexture(GL_TEXTURE_2D, m_lut_texture); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+		glTexImage2D(GL_TEXTURE_2D,
+					 0,
+					 GL_RGBA8,
+					 size, // lut size
+					 1,
+					 0,
+					 GL_RGBA, // color lookup table
+					 GL_FLOAT,
+					 m_internal_lut);
+		glCheckError();
+
+		/* NB: instead of freeing this unused memory, keep it there
+			   so when updating it the next time, no time will be lost in memory allocation/deallocation */
+		//delete [] m_internal_lut; m_internal_lut = 0;
+
+		/* stop using the GPU program until requested */
+		glUseProgram(0);
+	}
+
+
+	void Volume::setQuality(float quality)
+	{
+		if(quality<=0) throw LOCATE(Error("using an invalid quality: %f", quality));
+
+		m_quality = quality;
+	}
+
+
+	void Volume::setMaxTextureSize(unsigned int w, unsigned int h, unsigned int d)
+	{
+		m_max_texture_size[0] = w;
+		m_max_texture_size[1] = h;
+		m_max_texture_size[2] = d;
+	}
+
+
+	void Volume::getIntensityRange(float &min, float &max) const
+	{
+		min = m_intensity_range[0];
+		max = m_intensity_range[1];
+	}
+
+
+	void Volume::initShader()
+	{
+		/* Fragment shader source code
+		   It is a simple lookup table that returns an RGBA value
+		   for a given voxel intensity */
+		char source[] = "uniform sampler3D tex;								\n\
+						 uniform sampler2D lut;								\n\
+						 void main()										\n\
+						 {													\n\
+							 vec4 c = texture3D(tex, vec3(gl_TexCoord[0]));	\n\
+							 vec4 i = texture2D(lut, c.xx);					\n\
+							 gl_FragColor = i; 								\n\
+						 }\n\0";
+
+		/* Create and compile shader */
+		const char* source_pointer = source;
+		m_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
+		glShaderSource(m_fragment_shader, 1, &source_pointer, NULL);
+		glCompileShader(m_fragment_shader);
+
+		/* display any error if required */
+		char infolog[1024];
+		GLsizei infologlength = 0;
+		glGetShaderInfoLog(m_fragment_shader, 1024, &infologlength, infolog);
+		CHECK(infolog,infologlength==0);
+		
+		/* Attach shader to program */
+		m_gpu_program = glCreateProgram();
+		glAttachShader(m_gpu_program, m_fragment_shader);
+		glLinkProgram(m_gpu_program);
+
+		/* Use the program */
+		glUseProgram(m_gpu_program);
+
+		/* Bind shader texture variable */
+		int texLoc = glGetUniformLocation(m_gpu_program, "tex");
+		CHECK("Error in 3D texture location",texLoc!=-1);
+		glUniform1i(texLoc, 0); /* bind volume texture to GL_TEXTURE0 */
+
+		/* Bind shader lut variable */
+		int lutLoc = glGetUniformLocation(m_gpu_program, "lut");
+		CHECK("Error in lookup table location",lutLoc!=-1);
+		glUniform1i(lutLoc, 1); /* bind lookup table texture to GL_TEXTURE1 */
+
+		/* Stop using the program until next use */
+		glUseProgram(0);
+	}
+
+
+	void Volume::getTextureSize(const unsigned int data_size[],
+						        unsigned int texture_size[],
+						        const unsigned int max_texture_size[])
+	{
+		/* what is the texture size (compatible with opengl) */
+		for(unsigned int m=0; m<3; ++m)
+		{
+			/* shift until it is greater than the volume size */
+			texture_size[m] = 1;
+			while(texture_size[m] < data_size[m] && texture_size[m] <= max_texture_size[m])
+				texture_size[m] = texture_size[m]<<1;
+		}
+	}
+
+
+	int Volume::getNbRenderingPlanes() const
+	{
+		/* NB: need to call it in Display (or when the modelview/projection matrices are set) */
+
+		/* Get all visualization matrices */
+		GLdouble modelview[16];
+		GLdouble projection[16];
+		GLint    viewport[4];
+
+		glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
+		glGetDoublev(GL_PROJECTION_MATRIX, projection);
+		glGetIntegerv(GL_VIEWPORT, viewport);
+
+		/* project some point to the screen
+		 *
+		 *    u2(001)  +-------+
+		 *             |\      |\
+		 *             | \     | \
+		 *             |  +-------+ u1(1111)
+		 *    u0(000)  +--|----+  |
+		 *              \ |     \ |
+		 *               \|      \|
+		 *                +-------+ u3(110)
+		 *
+		 * measure the max distance between u0-u1 and u2-u3
+		 * the max will evaluate the number of pixel of the volume
+		 */
+		double u0_x, u0_y, u0_z;
+		double u1_x, u1_y, u1_z;
+		double u2_x, u2_y, u2_z;
+		double u3_x, u3_y, u3_z;
+
+		gluProject(-0.5,-0.5,-0.5, modelview, projection, viewport, &u0_x, &u0_y, &u0_z);
+		gluProject(+0.5,+0.5,+0.5, modelview, projection, viewport, &u1_x, &u1_y, &u1_z);
+		gluProject(-0.5,-0.5,+0.5, modelview, projection, viewport, &u2_x, &u2_y, &u2_z);
+		gluProject(+0.5,+0.5,-0.5, modelview, projection, viewport, &u3_x, &u3_y, &u3_z);
+
+		/* what is the max distance (rough evaluation, avoid more computation) */
+		float u01_x = (float)fabs(u1_x-u0_x);
+		float u01_y = (float)fabs(u1_y-u0_y);
+		float u23_x = (float)fabs(u3_x-u2_x);
+		float u23_y = (float)fabs(u3_y-u2_y);
+
+		float max = u01_x;
+		if(u01_y > max ) max = u01_y;
+		if(u23_x > max ) max = u23_x;
+		if(u23_y > max ) max = u23_y;
+
+		/* do not use more than a certain number of planes */
+		if(max > viewport[2]) max = (float)viewport[2];
+		if(max > viewport[3]) max = (float)viewport[3];
+
+		return static_cast<unsigned int>(max);
+	}
+
+
+	void Volume::transf(const float p[], const float m[], float pp[])
+	{
+		/* pp is the transformed point with matrix m */
+		pp[0] = p[0]*m[0] + p[1]*m[4] + p[2]*m[8] + m[12];
+		pp[1] = p[0]*m[1] + p[1]*m[5] + p[2]*m[9] + m[13];
+		pp[2] = p[0]*m[2] + p[1]*m[6] + p[2]*m[10] + m[14];
+	}
+
+
+	void Volume::transp(float m[])
+	{
+		/* transpose matrix */
+		for(unsigned int j=0; j<4; ++j)
+			for(unsigned int i=0; i<j; ++i)
+		{
+			float a = m[j*4+i];
+			m[j*4+i] = m[i*4+j];
+			m[i*4+j] = a;
+		}
+
+		/* keep translation where it should be */
+		m[12] = -m[3];
+		m[13] = -m[7];
+		m[14] = -m[11];
+		m[3] = m[7] = m[11] = 0;
+	}
+
+
+	void Volume::normalize(float m[])
+	{
+		/* normalize each row of the rotation matrix */
+		for(unsigned int j=0; j<3; ++j)
+		{
+			float d = sqrt(m[j*4+0]*m[j*4+0] + m[j*4+1]*m[j*4+1] + m[j*4+2]*m[j*4+2]);
+			m[j*4+0] = m[j*4+0] / d;
+			m[j*4+1] = m[j*4+1] / d;
+			m[j*4+2] = m[j*4+2] / d;
+		}
+	}
+
+
+	// Define OpenGL types
+	template <> GLenum Volume::OpenGLArgs<float> ::type = GL_FLOAT;
+	template <> GLenum Volume::OpenGLArgs<double>::type = GL_FLOAT;
+	template <> GLenum Volume::OpenGLArgs<char>  ::type = GL_BYTE;
+	template <> GLenum Volume::OpenGLArgs<short> ::type = GL_SHORT;
+	template <> GLenum Volume::OpenGLArgs<unsigned char> ::type = GL_UNSIGNED_BYTE;
+	template <> GLenum Volume::OpenGLArgs<unsigned short>::type = GL_UNSIGNED_SHORT;
+
+
+	// Define min and max intensity values for standard types (floating type are assumed to range from 0.0f to 1.0f)
+	template <>          float  Volume::OpenGLArgs<float> ::min = 0;
+	template <>          float  Volume::OpenGLArgs<float> ::max = 1;
+	template <>          double Volume::OpenGLArgs<double>::min = 0;
+	template <>          double Volume::OpenGLArgs<double>::max = 1;
+	template <>          char   Volume::OpenGLArgs<char>  ::min = -128;
+	template <>          char   Volume::OpenGLArgs<char>  ::max = 127;
+	template <>          short  Volume::OpenGLArgs<short> ::min = -32768;
+	template <>          short  Volume::OpenGLArgs<short> ::max = 32767;
+	template <> unsigned char   Volume::OpenGLArgs<unsigned char> ::min = 0;
+	template <> unsigned char   Volume::OpenGLArgs<unsigned char> ::max = 255;
+	template <> unsigned short  Volume::OpenGLArgs<unsigned short>::min = 0;
+	template <> unsigned short  Volume::OpenGLArgs<unsigned short>::max = 65535;
+
+
+} // namespace
diff --git a/.svn/pristine/6e/6e061a695191ede614c627a62b7fa0f12ad219a8.svn-base b/.svn/pristine/6e/6e061a695191ede614c627a62b7fa0f12ad219a8.svn-base
new file mode 100644
index 0000000..bd9dbea
--- /dev/null
+++ b/.svn/pristine/6e/6e061a695191ede614c627a62b7fa0f12ad219a8.svn-base
@@ -0,0 +1,91 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/** @file point3d.h
+ *  @author Herve Lombaert
+ *  @date January 17th, 2006
+ *
+ */
+
+#ifndef POINT3D_H
+#define POINT3D_H
+
+#include <error.h>
+
+namespace libvdDisplay
+{
+	/**
+	 * @class Point3D
+	 * @brief Display a list of points
+	 * 
+	 * Display a list of 3D points. It is made of tiny small cubes
+	 * showing where the points are. Points coordinates are 3 float
+	 * values (x,y,z).
+	 *
+	 * Points are in world coordinates. If you are using volume
+	 * coordinates, scale the points to the correct volume size
+	 * before. The following example shows how to display the points
+	 * with a volume displayed in a centered unit box:
+	 *
+	 * \code
+	 *   glTranslatef(-0.5f,-0.5f,-0.5f);
+	 *   glScalef(1.0f/width, 1.0f/height, 1.0f/depth);
+	 *
+	 *   points.display();
+	 * \endcode
+	 *
+	 * For better results use the following OpenGL initialization:
+	 *
+	 * \code
+	 *   glShadeModel(GL_SMOOTH);
+	 *   glEnable(GL_DEPTH_TEST);
+	 *   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+	 * \endcode
+	 */
+
+	class Point3D
+	{
+	public:
+		Point3D();
+		~Point3D();
+
+		/** update the visualizer with a new list of point
+		 *  points are in world coordinates
+		 *  internally creates or update the display list
+		 * @param points successive triplets (x,y,z) for each point
+		 * @param nbPoints number of triplets */
+		void update(const float* points,
+		            unsigned int nbPoints);
+
+		/** display the display list */
+		void display();
+
+		/** display directly a point
+		 * point is in world coordinate
+		 * @param data a triplet (x,y,z) */
+		void display(const float* data);
+
+	private:
+		GLuint m_id;
+	};
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/6e/6e600fd18b96c1681e9c0c28a9c7b7789ed5b0d2.svn-base b/.svn/pristine/6e/6e600fd18b96c1681e9c0c28a9c7b7789ed5b0d2.svn-base
new file mode 100644
index 0000000..d846759
Binary files /dev/null and b/.svn/pristine/6e/6e600fd18b96c1681e9c0c28a9c7b7789ed5b0d2.svn-base differ
diff --git a/.svn/pristine/6e/6eee31666088cab223b74838377830fd93d61c19.svn-base b/.svn/pristine/6e/6eee31666088cab223b74838377830fd93d61c19.svn-base
new file mode 100644
index 0000000..2650350
--- /dev/null
+++ b/.svn/pristine/6e/6eee31666088cab223b74838377830fd93d61c19.svn-base
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	ioscreenshot.h
+ * @author	Herve Lombaert
+ * @date	Tue Feb 5 2007
+ *
+ * Read the OpenGL RGB buffer and store its content into a RGB image
+ * This can be saved into a BMP file
+ * @see IO::BMP::write
+ */
+
+
+#ifndef IO_SCREENSHOT_H
+#define IO_SCREENSHOT_H
+
+
+#include <color.h>
+
+
+namespace IO
+{
+	/** Read OpenGL buffer and create an raw 24bit image */
+	void glScreenshot(color<unsigned char>* &image, unsigned int &width, unsigned int &height);
+		
+} // namespace
+
+
+#endif
diff --git a/.svn/pristine/6e/6ef486279a493bde121b60fb01e22d7df663707a.svn-base b/.svn/pristine/6e/6ef486279a493bde121b60fb01e22d7df663707a.svn-base
new file mode 100644
index 0000000..fe75eb8
--- /dev/null
+++ b/.svn/pristine/6e/6ef486279a493bde121b60fb01e22d7df663707a.svn-base
@@ -0,0 +1,186 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#include <iostream>
+#include <cmath>
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/glut.h>
+#endif
+#include <display/isosurface.h>
+#include <tools/manipworld.h>
+
+/**
+ * @test Testing Isosurface extraction and visualization
+ */
+
+namespace TestDisplayIsoSurface
+{
+
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static MouseButton gButton = NONE;
+	static int gModifiers = 0; // ctrl,alt,shift
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+
+	Tools::ManipWorld manipWorld;
+	unsigned short* volume;
+	int size[3];
+	Display::IsoSurface displayIsosurface;
+
+
+	void init()
+	{
+		glClearColor (0.0, 0.0, 0.5, 1.0);
+		glShadeModel(GL_SMOOTH);
+		glEnable(GL_DEPTH_TEST);
+
+		manipWorld.init();
+		manipWorld.translate(0,0,-3.6);
+
+		displayIsosurface.update(volume, size[0],size[1],size[2], 50);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+
+		GLfloat lightPos[4] = {0,0,5,1};
+		glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
+
+		/* Rotate volume with mouse movement */
+		manipWorld.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(2,2,2);
+
+		glColor3f(0.1,0.02,0);
+		displayIsosurface.display();
+
+		glPopMatrix();
+
+		glutSwapBuffers();
+	}
+
+	void mouse(int button, int state, int x, int y)
+	{
+		gModifiers = glutGetModifiers();
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				break;
+			case GLUT_RIGHT_BUTTON:
+				gButton = RIGHT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				break;
+			case GLUT_MIDDLE_BUTTON: gButton = MIDDLE; break;
+			default: gButton = NONE; break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+			{
+				int dx = (x - gPrevMouse[0]);
+				int dy = (gPrevMouse[1] - y);
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				manipWorld.rotateYAxis((float)dx);
+				manipWorld.rotateXAxis((float)dy);
+				glutPostRedisplay();
+				break;
+			}
+			case RIGHT:
+			{
+				int dy = (gPrevMouse[1] - y);
+				gPrevMouse[1] = y;
+
+				float deltaZoom = 1.0f + dy / 100.0f;
+
+				manipWorld.zoom(deltaZoom);
+				glutPostRedisplay();
+				break;
+			}
+			default: break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		switch(key)
+		{
+			case '1':
+				displayIsosurface.update(volume,size[0],size[1],size[2],50);
+				glutPostRedisplay();
+				break;
+			case '2':
+				displayIsosurface.update(volume,size[0],size[1],size[2],500);
+				glutPostRedisplay();
+				break;
+			case '3':
+				displayIsosurface.update(volume,size[0],size[1],size[2],1200);
+				glutPostRedisplay();
+				break;
+			case 'q':
+				glutDestroyWindow(winid); // close window, terminate glut loop
+				exit(0); // on OSX for some reason the program does not terminate
+				break;
+			default:
+				break;
+		}
+	}
+
+	int main_init()
+	{
+		try {
+			size[0] = 128,
+			size[1] = 128,
+			size[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", volume, size[0]*size[1]*size[2]);
+			
+			glutInitWindowSize(250, 250);
+			winid = glutCreateWindow("isosurface");
+			
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+		
+			//glutMainLoop();
+			
+			return 0;
+		}
+		catch(const OpenGLError &e) { e.print(); }
+		catch(const Error &e) { e.print(); }
+
+		return 1;
+	}
+
+} // namespace
diff --git a/.svn/pristine/70/7063acde4b90ef869d4ad963d6d5a94443f0e947.svn-base b/.svn/pristine/70/7063acde4b90ef869d4ad963d6d5a94443f0e947.svn-base
new file mode 100644
index 0000000..816eaef
--- /dev/null
+++ b/.svn/pristine/70/7063acde4b90ef869d4ad963d6d5a94443f0e947.svn-base
@@ -0,0 +1,133 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	iopgm.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <io/iopgm.h>
+
+#include <fstream>
+#include <cstdio>
+#include <string>
+#include <error.h>
+#include <stdlib.h>
+
+
+namespace IO
+{
+	void readPGM(const char* filename, unsigned char* &image, unsigned int &width, unsigned int &height)
+	{
+		PGM::read(filename, image, width, height);
+	}
+		
+	
+	void writePGM(const char* filename, const unsigned char* image, unsigned int width, unsigned int height)
+	{
+		PGM::write(filename, image, width, height);
+	}
+	
+
+	void PGM::read(const char* filename, unsigned char* &image, unsigned int &width, unsigned int &height)
+	{
+		using namespace std;
+
+		string buf;
+		char c_buf[1024];
+		ifstream file;
+		bool ascii = true;
+
+		file.open(filename, ios::binary);
+		if(file.fail()) throw LOCATE(Error("opening"));
+
+		file >> buf;
+		if(buf != "P2" && buf != "P5") throw LOCATE(Error("format"));
+		if(buf == "P5") ascii = false; // binary file
+
+		file.ignore(1);
+		file.getline(&c_buf[0], 1024); // ignore comment, assume there is a comment
+
+		file >> width >> height;
+		file >> buf;
+		if(buf != "255") throw LOCATE(Error("format"));
+		
+		image = new unsigned char [width * height];
+
+		if(!ascii) // read '\n'
+		{
+			unsigned char val;
+			file.read((char*)&val,1);
+			if(val != 0x0a) throw LOCATE(Error("wrong format"));
+		}
+
+		for(int h=height-1; h>=0; --h)
+			for(unsigned int w=0; w<width; ++w)
+		{
+			unsigned char val = 0;
+			if(ascii)
+			{
+				file >> buf;
+				val = atoi(buf.c_str());
+			}
+			else
+			{
+				file.read((char*)(&val),1);
+			}
+			image[h*width+w] = val;
+		}
+	}
+
+
+	void PGM::write(const char* filename, const unsigned char* image, unsigned int width, unsigned int height)
+	{
+		using namespace std;
+
+		ofstream file;
+		file.open(filename, ios::binary);
+		if(file.fail()) throw LOCATE(Error("open"));
+
+		file << "P5" << endl; // writing binary format, easier
+		file << "# No Comment" << endl;
+		file << width << " " << height << endl;
+		file << 255;
+		unsigned char val = 0x0a; // '\n'
+		file.write((char*)&val,1);
+
+		for(int h=height-1; h>=0; --h)
+			file.write((char*)&image[h*width], width);
+
+		file.close();
+	}
+
+
+}; // namespace
+
+
diff --git a/.svn/pristine/77/778a48beeed65b1cc1b8dc0ae74d2609135c2185.svn-base b/.svn/pristine/77/778a48beeed65b1cc1b8dc0ae74d2609135c2185.svn-base
new file mode 100644
index 0000000..33b69b8
--- /dev/null
+++ b/.svn/pristine/77/778a48beeed65b1cc1b8dc0ae74d2609135c2185.svn-base
@@ -0,0 +1,127 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	trapezoid.h
+ * @author	Herve Lombaert
+ * @date	November 8th, 2006
+ */
+
+#ifndef DISPLAYTRAPEZOID_H
+#define DISPLAYTRAPEZOID_H
+
+
+#if __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+
+namespace Tools { namespace TransferFunction
+{
+	/**
+	 * Display and manipulate a Trapezoid
+	 *
+	 * \image html trapezoid.png
+	 * \image latex trapezoid.png
+	 *
+	 * \verbatim
+	 *                        high0   high1
+	 *                 |          /---\            |
+	 * left border     |         /     \           | right border
+	 *                 |--------/       \----------|
+	 *            ---------------------------------------
+	 *                left    low0     low1      right 
+	 * \endverbatim
+	 *
+	 * Here data intensities between low0 and low1 will appear as bright
+	 * pixels. Everything else will not appear. Top control the opacity.
+	 *
+	 * As with the histogram, it is possible to visualize only a portion
+	 * of the ramp, and to zoom and pan it.
+	 */
+
+	class Trapezoid
+	{
+	public:
+		Trapezoid();
+		Trapezoid(float low0, float high0, float high1, float low1, float opacity=1);
+		~Trapezoid();
+
+		/* update ramp */
+		void update(float low0, float high0, float high1, float low1, float opacity);
+
+		/* update border (visualize only portion of the ramp) */
+		void clamp(float left, float right);
+
+		/* display ramp line and squares */
+		void display() const;
+
+		/* did mouse pick a ramp feature (xy normalized 0..1) */
+		bool mouse(float x, float y);
+
+		/* handle mouse motion after a mouse pick (xy normalized 0..1) */
+		bool motion(float x, float y);
+
+		/* get the ramp value (rgba 0..1) for a given intensity */
+		void get(float i, float &r, float &g, float &b, float &a) const;
+
+		/* set color of the selected feature */
+		void setColor(float r, float g, float b);
+
+		/* update aspect ratio (w/h) so square appears as square */
+		void reshape(int w, int h);
+
+	private:
+		float m_low0;    ///< trapezoid first ramp lowest value
+		float m_low1;    ///< trapezoid second ramp lowest value
+		float m_high0;   ///< trapezoid first ramp highest value
+		float m_high1;   ///< trapezoid second ramp highest value
+		float m_opacity; ///< max opacity
+		float m_left;    ///< left border of visualization
+		float m_right;   ///< right border of visualization
+		float m_low0_u;  ///< trapezoid low position (0..1)
+		float m_low1_u;  ///< trapezoid low position (0..1)
+		float m_high0_u; ///< trapezoid high position (0..1)
+		float m_high1_u; ///< trapezoid high position (0..1)
+		float m_aspectratio;   ///< aspect ratio so squares appear as squares
+		float m_low0_color[3]; ///< color of lowest corner of first ramp
+		float m_low1_color[3]; ///< color of lowest corner of second ramp
+		float m_high0_color[3]; ///< color of highest corner of first ramp
+		float m_high1_color[3]; ///< color of highest corner of second ramp
+		float m_middle0_color[3]; ///< color of middle square of first ramp
+		float m_middle1_color[3]; ///< color of middle square of second ramp
+
+		// trapezoid features
+		// LOW0  is the first ramp lowest value
+		// HIGH1 is the first ramp highest value
+		// LOW1  is the second ramp lowest value
+		// HIGH1 is the second ramp highest value
+		// MIDDLE0 is a dragrable square of the first ramp, change translate the ramp
+		// MIDDLE1 is a dragrable square of the first ramp, change translate the ramp
+		enum feature { NONE, LOW0, LOW1, HIGH0, HIGH1, MIDDLE0, MIDDLE1 };
+		feature m_feature; ///< selected ramp feature
+	};
+
+
+}} // namespaces
+
+#endif
diff --git a/.svn/pristine/7a/7a294b3a1a4af6af57fc602763811ea28a8c1535.svn-base b/.svn/pristine/7a/7a294b3a1a4af6af57fc602763811ea28a8c1535.svn-base
new file mode 100644
index 0000000..b0c5dca
--- /dev/null
+++ b/.svn/pristine/7a/7a294b3a1a4af6af57fc602763811ea28a8c1535.svn-base
@@ -0,0 +1,239 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	displaycolor.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <tools/transferfunction/displaycolor.h>
+
+namespace Tools { namespace TransferFunction
+{
+	DisplayColor::DisplayColor()
+	:	m_textureName(0),
+		m_mark_r(0),
+		m_mark_g(0),
+		m_mark_b(0),
+		m_mark_u(0),
+		m_mark_v(0)
+	{
+	}
+
+
+	DisplayColor::~DisplayColor()
+	{
+		if(glIsTexture(m_textureName))
+			glDeleteTextures(1, &m_textureName);
+	}
+
+
+	void DisplayColor::display() const
+	{
+		if(!glIsTexture(m_textureName))
+			initTexture();
+
+		/* display colors */
+		glEnable(GL_TEXTURE_2D);
+		glBindTexture(GL_TEXTURE_2D, m_textureName); glCheckError();
+
+		glColor3f(1,1,1);
+		glBegin(GL_QUADS);
+		glTexCoord2f(0,0); glVertex3f(-0.5,-0.5,0);
+		glTexCoord2f(1,0); glVertex3f(+0.5,-0.5,0);
+		glTexCoord2f(1,1); glVertex3f(+0.5,+0.5,0);
+		glTexCoord2f(0,1); glVertex3f(-0.5,+0.5,0);
+		glEnd();
+
+		glDisable(GL_TEXTURE_2D);
+
+		/* display border */
+		glColor3f(1,1,1);
+		glBegin(GL_LINE_LOOP);
+		glVertex3f(-0.5,-0.5,0);
+		glVertex3f(+0.5,-0.5,0);
+		glVertex3f(+0.5,+0.5,0);
+		glVertex3f(-0.5,+0.5,0);
+		glEnd();
+
+		/* display mark */
+		float crosssize = 0.1f;
+		glColor3f(1,0,0);
+		glBegin(GL_LINES);
+		glVertex3f(m_mark_u-crosssize-0.5f,m_mark_v-0.5f,0);
+		glVertex3f(m_mark_u+crosssize-0.5f,m_mark_v-0.5f,0);
+		glVertex3f(m_mark_u-0.5f,m_mark_v-crosssize-0.5f,0);
+		glVertex3f(m_mark_u-0.5f,m_mark_v+crosssize-0.5f,0);
+		glEnd();
+	}
+
+
+	void DisplayColor::getRGB(float x, float y, float &r, float &g, float &b) const
+	{
+		r=g=b=0;
+		/* if in transition from R to G */
+		if(x>=0 && x<=1.0f/6)
+			r = 1,
+			g = (x)*6,
+			b = 0;
+		if(x>1.0f/6 && x<=2.0f/6)
+			r = 1-(x-1.0f/6)*6,
+			g = 1,
+			b = 0;
+
+		/* if in transition from G to B */
+		if(x>2.0f/6 && x<=3.0f/6)
+			r = 0,
+			g = 1,
+			b = (x-2.0f/6)*6;
+		if(x>3.0f/6 && x<=4.0f/6)
+			r = 0,
+			g = 1-(x-3.0f/6)*6,
+			b = 1;
+
+		/* if in transition from B to R */
+		if(x>4.0f/6 && x<=5.0f/6)
+			r = (x-4.0f/6)*6,
+			g = 0,
+			b = 1;
+		if(x>5.0f/6 && x<=1)
+			r = 1,
+			g = 0,
+			b = 1-(x-5.0f/6)*6;
+
+		/* saturate to white */
+		if(y>0.5)
+		{
+			float i = (1-y)/0.5f;
+			r = i*r + (1-i)*1;
+			g = i*g + (1-i)*1;
+			b = i*b + (1-i)*1;
+		}
+		
+		/* saturate to black */
+		if(y<=0.5)
+		{
+			float i = y/0.5f;
+			r = i*r + (1-i)*0;
+			g = i*g + (1-i)*0;
+			b = i*b + (1-i)*0;
+		}
+	}
+
+
+	void DisplayColor::mark(float r, float g, float b)
+	{
+		m_mark_r = r;
+		m_mark_g = g;
+		m_mark_b = b;
+
+		m_mark_u = 0; // is Hue (H)
+		m_mark_v = 0; // is intensity (V)
+
+		float max = r; if(g>max) max = g; if(b>max) max = b;
+		float min = r; if(g<min) min = g; if(b<min) min = b;
+
+		// Hue and Intensity
+		float v = (max<1) ? max/2 : 0.5f+min/2;
+		float h = 0;
+
+		if(max-min != 0) // it is possible Hue is undefined, just set it to 0
+		{
+			if(max == r)
+			{
+				h = 1.0f/6 * (g-b)/(max-min);
+			}
+			else if(max == g)
+			{
+				h = 1.0f/3 + 1.0f/6 * (b-r)/(max-min);
+			}
+			else if(max == b)
+			{
+				h = 2.0f/3 + 1.0f/6 * (r-g)/(max-min);
+			}
+		
+			if(h<0) h = h + 1; // Hue is circular, if negative, just add a full circle (+1)
+		}
+
+		m_mark_u = h;
+		m_mark_v = v;
+	}
+
+
+	void DisplayColor::initTexture() const
+	{
+		/* texture size */
+		unsigned int width = 128;
+		unsigned int height = 128;
+
+		/* delete and create new texture */
+		if(!glIsTexture(m_textureName)) { glGenTextures(1, &m_textureName); glCheckError(); }
+		float* texture = new float [width*height*4]; // RGBA
+		for(unsigned int i=0; i<width*height; ++i)
+			texture[i*4+0] = 0,
+			texture[i*4+1] = 0,
+			texture[i*4+2] = 0,
+			texture[i*4+3] = 1;
+
+		/* fill color map */
+		for(unsigned int j=0; j<128; ++j)
+			for(unsigned int i=0; i<128; ++i)
+		{
+			float r,g,b;
+			getRGB(i/128.0f, j/128.0f, r,g,b);
+
+			texture[(j*128+i)*4+0] = r;
+			texture[(j*128+i)*4+1] = g;
+			texture[(j*128+i)*4+2] = b;
+			texture[(j*128+i)*4+3] = 1;
+		}
+
+		/* send texture to graphic card */
+		glBindTexture(GL_TEXTURE_2D, m_textureName); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+		glTexImage2D(GL_TEXTURE_2D,
+				 0,
+				 GL_RGBA,
+				 width,
+				 height,
+				 0,
+				 GL_RGBA,
+				 GL_FLOAT,
+				 texture);
+		glCheckError();
+
+		/* free texture now (it is now on graphic card) */
+		delete [] texture;
+	}
+
+}} // namespace
diff --git a/.svn/pristine/7b/7b4099ef5e82b57f3ec0aaf219ae8d334a52259e.svn-base b/.svn/pristine/7b/7b4099ef5e82b57f3ec0aaf219ae8d334a52259e.svn-base
new file mode 100644
index 0000000..bc2cb1a
--- /dev/null
+++ b/.svn/pristine/7b/7b4099ef5e82b57f3ec0aaf219ae8d334a52259e.svn-base
@@ -0,0 +1,127 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <color.h>
+#include <display/display2d.h>
+#include <display/display2d_drawpixels.h>
+#include <io/iopgm.h>
+#include <io/iobmp.h>
+
+
+/**
+ * @test Testing 2D image display
+ */
+
+namespace TestDisplay2D
+{
+
+	// Image to read
+	template <typename T>
+	struct Image {
+		T* data;
+		unsigned int width, height;
+	};
+
+	Image<unsigned char>         image_8bits;         // observed image
+	Image<color<unsigned char> > image_24bits;        // observed image
+	Display::Image disp; // image player
+	Display::ImageDrawPixels disp_drawpixels;
+	bool use_drawpixels = false;
+
+	GLuint tex;
+
+	int winid = 0; // window id, so we can destroy it later
+
+	void init()
+	{
+		// Initialize display
+		glClearColor(0,0,0,0);
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		glViewport(0, 0, image_8bits.width, image_8bits.height);
+		glOrtho(-0.5,+0.5,-0.5,+0.5,-1,+1);
+
+		// Deform image
+		disp.update(image_24bits.data, image_24bits.width, image_24bits.height);
+		disp_drawpixels.update(image_24bits.data, image_24bits.width, image_24bits.height);
+
+	}
+
+	void display()
+	{
+		// Erase buffer
+		glClear(GL_COLOR_BUFFER_BIT);
+		glClearColor(0,0,0,1);
+
+		// Display the image
+		if(!use_drawpixels)
+			disp.display();
+		else
+			disp_drawpixels.display();
+
+		glutSwapBuffers();
+	}
+
+
+	void keyboard(unsigned char key, int x, int y)
+	{
+		bool refresh = true;
+
+		switch(key)
+		{
+			case '1': disp.update(image_8bits.data, image_8bits.width, image_8bits.height); use_drawpixels=false; break; // Show labels (restored image)
+			case '2': disp.update(image_24bits.data, image_24bits.width, image_24bits.height); use_drawpixels=false; break; // Show observed image
+			case '3': disp_drawpixels.update(image_8bits.data, image_8bits.width, image_8bits.height); use_drawpixels=true;  break; // Show labels (restored image)
+			case '4': disp_drawpixels.update(image_24bits.data, image_24bits.width, image_24bits.height); use_drawpixels=true; break; // Show observed image
+			case 'q':
+			{
+				glutDestroyWindow(winid); // close window, terminate glut loop
+				exit(0); // on OSX for some reason the program does not terminate
+				break;
+			}
+			default: refresh = false; break;
+		};
+
+		if(refresh) glutPostRedisplay();
+	}
+
+
+	int main_init()
+	{
+		try
+		{
+			// Load image
+			IO::PGM::read("data/image.pgm", image_8bits.data,  image_8bits.width, image_8bits.height);
+			IO::BMP::read("data/image.bmp", image_24bits.data, image_24bits.width, image_24bits.height);
+			
+			// Initialize window
+			glutInitWindowSize(image_24bits.width, image_24bits.height);
+			winid = glutCreateWindow("display2d");
+			init();
+		
+			// Ininitialize callbacks
+			glutDisplayFunc(display);
+			glutKeyboardFunc(keyboard);
+		
+			// Main loop
+			//glutMainLoop();
+		
+			return 0;
+		}
+		catch(const Error &e) { e.print(); }
+		catch(...) { printf("unknown error\n"); }
+
+		return 1;
+	}
+
+};
diff --git a/.svn/pristine/7c/7c3f05b175e1ac83a10661d060f041e8c449b1d9.svn-base b/.svn/pristine/7c/7c3f05b175e1ac83a10661d060f041e8c449b1d9.svn-base
new file mode 100644
index 0000000..0d1c85c
--- /dev/null
+++ b/.svn/pristine/7c/7c3f05b175e1ac83a10661d060f041e8c449b1d9.svn-base
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvd", "libvd.vcproj", "{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}.Debug|Win32.ActiveCfg = Debug|Win32
+		{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}.Debug|Win32.Build.0 = Debug|Win32
+		{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}.Release|Win32.ActiveCfg = Release|Win32
+		{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/debian/changelog b/.svn/pristine/7e/7ea04de11cae0435e0516e18822e9a42296e279f.svn-base
similarity index 68%
rename from debian/changelog
rename to .svn/pristine/7e/7ea04de11cae0435e0516e18822e9a42296e279f.svn-base
index a2662fc..e111b84 100644
--- a/debian/changelog
+++ b/.svn/pristine/7e/7ea04de11cae0435e0516e18822e9a42296e279f.svn-base
@@ -1,4 +1,4 @@
-libvd (1.1.0+svn7-1) unstable; urgency=medium
+libvd (1.1.0-1) unstable; urgency=medium
 
   * Initial release (Closes: #1234)
 
diff --git a/debian/patches/series b/.svn/pristine/85/85a23faa5409811149c477bf3681ff7fb1d8b7e3.svn-base
similarity index 100%
rename from debian/patches/series
rename to .svn/pristine/85/85a23faa5409811149c477bf3681ff7fb1d8b7e3.svn-base
diff --git a/.svn/pristine/8d/8d59c93487e91970a66dfdbeb406fe85399e043a.svn-base b/.svn/pristine/8d/8d59c93487e91970a66dfdbeb406fe85399e043a.svn-base
new file mode 100644
index 0000000..f557f42
--- /dev/null
+++ b/.svn/pristine/8d/8d59c93487e91970a66dfdbeb406fe85399e043a.svn-base
@@ -0,0 +1,11359 @@
+/***************************************************************************
+*
+* GLee.c
+* GLee (OpenGL Easy Extension library)        
+* Version : 5.21
+*
+* Copyright (c)2006  Ben Woodhouse  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are 
+* met:
+* 1. Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer as
+* the first lines of this file unmodified.
+* 2. Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY BEN WOODHOUSE ``AS IS'' AND ANY EXPRESS OR
+* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL BEN WOODHOUSE BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Web: http://elf-stone.com/glee.php
+*
+* [This file was automatically generated by GLeeGen 5.21
+*
+***************************************************************************/
+
+#ifdef _MSC_VER
+	#pragma optimize( "g", off )
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "GLee.h"
+
+#if defined(__APPLE__) || defined(__APPLE_CC__)
+	#include <Carbon/Carbon.h>
+#endif
+
+typedef GLuint(*GLEE_LINK_FUNCTION)(void);
+
+GLboolean __GLeeInited=GL_FALSE;
+
+#ifndef _WIN32
+	#define __stdcall  /* nothing */
+#endif 
+
+void * __GLeeGetProcAddress(const char *extname)
+{
+#ifdef WIN32
+	return (void*)wglGetProcAddress(extname);
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+    CFBundleRef bundle;
+    CFURLRef bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, CFSTR("/System/Library/Frameworks/OpenGL.framework"), kCFURLPOSIXPathStyle, true);
+
+    CFStringRef functionName = CFStringCreateWithCString(kCFAllocatorDefault, extname, kCFStringEncodingASCII);
+
+    void *function;
+
+    bundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
+    assert(bundle != NULL);
+
+    function = CFBundleGetFunctionPointerForName(bundle, functionName);
+
+    CFRelease(bundleURL);
+    CFRelease(functionName);
+    CFRelease(bundle);
+
+    return function;
+#else
+	return (void*)glXGetProcAddressARB((const GLubyte *)extname);
+#endif
+}
+
+
+
+
+/* Extension querying variables */
+
+GLboolean _GLEE_VERSION_1_2 = GL_FALSE;
+GLboolean _GLEE_ARB_imaging = GL_FALSE;
+GLboolean _GLEE_VERSION_1_3 = GL_FALSE;
+GLboolean _GLEE_VERSION_1_4 = GL_FALSE;
+GLboolean _GLEE_VERSION_1_5 = GL_FALSE;
+GLboolean _GLEE_VERSION_2_0 = GL_FALSE;
+GLboolean _GLEE_VERSION_2_1 = GL_FALSE;
+GLboolean _GLEE_ARB_multitexture = GL_FALSE;
+GLboolean _GLEE_ARB_transpose_matrix = GL_FALSE;
+GLboolean _GLEE_ARB_multisample = GL_FALSE;
+GLboolean _GLEE_ARB_texture_env_add = GL_FALSE;
+GLboolean _GLEE_ARB_texture_cube_map = GL_FALSE;
+GLboolean _GLEE_ARB_texture_compression = GL_FALSE;
+GLboolean _GLEE_ARB_texture_border_clamp = GL_FALSE;
+GLboolean _GLEE_ARB_point_parameters = GL_FALSE;
+GLboolean _GLEE_ARB_vertex_blend = GL_FALSE;
+GLboolean _GLEE_ARB_matrix_palette = GL_FALSE;
+GLboolean _GLEE_ARB_texture_env_combine = GL_FALSE;
+GLboolean _GLEE_ARB_texture_env_crossbar = GL_FALSE;
+GLboolean _GLEE_ARB_texture_env_dot3 = GL_FALSE;
+GLboolean _GLEE_ARB_texture_mirrored_repeat = GL_FALSE;
+GLboolean _GLEE_ARB_depth_texture = GL_FALSE;
+GLboolean _GLEE_ARB_shadow = GL_FALSE;
+GLboolean _GLEE_ARB_shadow_ambient = GL_FALSE;
+GLboolean _GLEE_ARB_window_pos = GL_FALSE;
+GLboolean _GLEE_ARB_vertex_program = GL_FALSE;
+GLboolean _GLEE_ARB_fragment_program = GL_FALSE;
+GLboolean _GLEE_ARB_vertex_buffer_object = GL_FALSE;
+GLboolean _GLEE_ARB_occlusion_query = GL_FALSE;
+GLboolean _GLEE_ARB_shader_objects = GL_FALSE;
+GLboolean _GLEE_ARB_vertex_shader = GL_FALSE;
+GLboolean _GLEE_ARB_fragment_shader = GL_FALSE;
+GLboolean _GLEE_ARB_shading_language_100 = GL_FALSE;
+GLboolean _GLEE_ARB_texture_non_power_of_two = GL_FALSE;
+GLboolean _GLEE_ARB_point_sprite = GL_FALSE;
+GLboolean _GLEE_ARB_fragment_program_shadow = GL_FALSE;
+GLboolean _GLEE_ARB_draw_buffers = GL_FALSE;
+GLboolean _GLEE_ARB_texture_rectangle = GL_FALSE;
+GLboolean _GLEE_ARB_color_buffer_float = GL_FALSE;
+GLboolean _GLEE_ARB_half_float_pixel = GL_FALSE;
+GLboolean _GLEE_ARB_texture_float = GL_FALSE;
+GLboolean _GLEE_ARB_pixel_buffer_object = GL_FALSE;
+GLboolean _GLEE_EXT_abgr = GL_FALSE;
+GLboolean _GLEE_EXT_blend_color = GL_FALSE;
+GLboolean _GLEE_EXT_polygon_offset = GL_FALSE;
+GLboolean _GLEE_EXT_texture = GL_FALSE;
+GLboolean _GLEE_EXT_texture3D = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_filter4 = GL_FALSE;
+GLboolean _GLEE_EXT_subtexture = GL_FALSE;
+GLboolean _GLEE_EXT_copy_texture = GL_FALSE;
+GLboolean _GLEE_EXT_histogram = GL_FALSE;
+GLboolean _GLEE_EXT_convolution = GL_FALSE;
+GLboolean _GLEE_SGI_color_matrix = GL_FALSE;
+GLboolean _GLEE_SGI_color_table = GL_FALSE;
+GLboolean _GLEE_SGIS_pixel_texture = GL_FALSE;
+GLboolean _GLEE_SGIX_pixel_texture = GL_FALSE;
+GLboolean _GLEE_SGIS_texture4D = GL_FALSE;
+GLboolean _GLEE_SGI_texture_color_table = GL_FALSE;
+GLboolean _GLEE_EXT_cmyka = GL_FALSE;
+GLboolean _GLEE_EXT_texture_object = GL_FALSE;
+GLboolean _GLEE_SGIS_detail_texture = GL_FALSE;
+GLboolean _GLEE_SGIS_sharpen_texture = GL_FALSE;
+GLboolean _GLEE_EXT_packed_pixels = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_lod = GL_FALSE;
+GLboolean _GLEE_SGIS_multisample = GL_FALSE;
+GLboolean _GLEE_EXT_rescale_normal = GL_FALSE;
+GLboolean _GLEE_EXT_vertex_array = GL_FALSE;
+GLboolean _GLEE_EXT_misc_attribute = GL_FALSE;
+GLboolean _GLEE_SGIS_generate_mipmap = GL_FALSE;
+GLboolean _GLEE_SGIX_clipmap = GL_FALSE;
+GLboolean _GLEE_SGIX_shadow = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_edge_clamp = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_border_clamp = GL_FALSE;
+GLboolean _GLEE_EXT_blend_minmax = GL_FALSE;
+GLboolean _GLEE_EXT_blend_subtract = GL_FALSE;
+GLboolean _GLEE_EXT_blend_logic_op = GL_FALSE;
+GLboolean _GLEE_SGIX_interlace = GL_FALSE;
+GLboolean _GLEE_SGIX_pixel_tiles = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_select = GL_FALSE;
+GLboolean _GLEE_SGIX_sprite = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_multi_buffer = GL_FALSE;
+GLboolean _GLEE_EXT_point_parameters = GL_FALSE;
+GLboolean _GLEE_SGIS_point_parameters = GL_FALSE;
+GLboolean _GLEE_SGIX_instruments = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_scale_bias = GL_FALSE;
+GLboolean _GLEE_SGIX_framezoom = GL_FALSE;
+GLboolean _GLEE_SGIX_tag_sample_buffer = GL_FALSE;
+GLboolean _GLEE_FfdMaskSGIX = GL_FALSE;
+GLboolean _GLEE_SGIX_polynomial_ffd = GL_FALSE;
+GLboolean _GLEE_SGIX_reference_plane = GL_FALSE;
+GLboolean _GLEE_SGIX_flush_raster = GL_FALSE;
+GLboolean _GLEE_SGIX_depth_texture = GL_FALSE;
+GLboolean _GLEE_SGIS_fog_function = GL_FALSE;
+GLboolean _GLEE_SGIX_fog_offset = GL_FALSE;
+GLboolean _GLEE_HP_image_transform = GL_FALSE;
+GLboolean _GLEE_HP_convolution_border_modes = GL_FALSE;
+GLboolean _GLEE_INGR_palette_buffer = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_add_env = GL_FALSE;
+GLboolean _GLEE_EXT_color_subtable = GL_FALSE;
+GLboolean _GLEE_PGI_vertex_hints = GL_FALSE;
+GLboolean _GLEE_PGI_misc_hints = GL_FALSE;
+GLboolean _GLEE_EXT_paletted_texture = GL_FALSE;
+GLboolean _GLEE_EXT_clip_volume_hint = GL_FALSE;
+GLboolean _GLEE_SGIX_list_priority = GL_FALSE;
+GLboolean _GLEE_SGIX_ir_instrument1 = GL_FALSE;
+GLboolean _GLEE_SGIX_calligraphic_fragment = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_lod_bias = GL_FALSE;
+GLboolean _GLEE_SGIX_shadow_ambient = GL_FALSE;
+GLboolean _GLEE_EXT_index_texture = GL_FALSE;
+GLboolean _GLEE_EXT_index_material = GL_FALSE;
+GLboolean _GLEE_EXT_index_func = GL_FALSE;
+GLboolean _GLEE_EXT_index_array_formats = GL_FALSE;
+GLboolean _GLEE_EXT_compiled_vertex_array = GL_FALSE;
+GLboolean _GLEE_EXT_cull_vertex = GL_FALSE;
+GLboolean _GLEE_SGIX_ycrcb = GL_FALSE;
+GLboolean _GLEE_SGIX_fragment_lighting = GL_FALSE;
+GLboolean _GLEE_IBM_rasterpos_clip = GL_FALSE;
+GLboolean _GLEE_HP_texture_lighting = GL_FALSE;
+GLboolean _GLEE_EXT_draw_range_elements = GL_FALSE;
+GLboolean _GLEE_WIN_phong_shading = GL_FALSE;
+GLboolean _GLEE_WIN_specular_fog = GL_FALSE;
+GLboolean _GLEE_EXT_light_texture = GL_FALSE;
+GLboolean _GLEE_SGIX_blend_alpha_minmax = GL_FALSE;
+GLboolean _GLEE_SGIX_impact_pixel_texture = GL_FALSE;
+GLboolean _GLEE_EXT_bgra = GL_FALSE;
+GLboolean _GLEE_SGIX_async = GL_FALSE;
+GLboolean _GLEE_SGIX_async_pixel = GL_FALSE;
+GLboolean _GLEE_SGIX_async_histogram = GL_FALSE;
+GLboolean _GLEE_INTEL_texture_scissor = GL_FALSE;
+GLboolean _GLEE_INTEL_parallel_arrays = GL_FALSE;
+GLboolean _GLEE_HP_occlusion_test = GL_FALSE;
+GLboolean _GLEE_EXT_pixel_transform = GL_FALSE;
+GLboolean _GLEE_EXT_pixel_transform_color_table = GL_FALSE;
+GLboolean _GLEE_EXT_shared_texture_palette = GL_FALSE;
+GLboolean _GLEE_EXT_separate_specular_color = GL_FALSE;
+GLboolean _GLEE_EXT_secondary_color = GL_FALSE;
+GLboolean _GLEE_EXT_texture_perturb_normal = GL_FALSE;
+GLboolean _GLEE_EXT_multi_draw_arrays = GL_FALSE;
+GLboolean _GLEE_EXT_fog_coord = GL_FALSE;
+GLboolean _GLEE_REND_screen_coordinates = GL_FALSE;
+GLboolean _GLEE_EXT_coordinate_frame = GL_FALSE;
+GLboolean _GLEE_EXT_texture_env_combine = GL_FALSE;
+GLboolean _GLEE_APPLE_specular_vector = GL_FALSE;
+GLboolean _GLEE_APPLE_transform_hint = GL_FALSE;
+GLboolean _GLEE_SGIX_fog_scale = GL_FALSE;
+GLboolean _GLEE_SUNX_constant_data = GL_FALSE;
+GLboolean _GLEE_SUN_global_alpha = GL_FALSE;
+GLboolean _GLEE_SUN_triangle_list = GL_FALSE;
+GLboolean _GLEE_SUN_vertex = GL_FALSE;
+GLboolean _GLEE_EXT_blend_func_separate = GL_FALSE;
+GLboolean _GLEE_INGR_color_clamp = GL_FALSE;
+GLboolean _GLEE_INGR_interlace_read = GL_FALSE;
+GLboolean _GLEE_EXT_stencil_wrap = GL_FALSE;
+GLboolean _GLEE_EXT_422_pixels = GL_FALSE;
+GLboolean _GLEE_NV_texgen_reflection = GL_FALSE;
+GLboolean _GLEE_EXT_texture_cube_map = GL_FALSE;
+GLboolean _GLEE_SUN_convolution_border_modes = GL_FALSE;
+GLboolean _GLEE_EXT_texture_env_add = GL_FALSE;
+GLboolean _GLEE_EXT_texture_lod_bias = GL_FALSE;
+GLboolean _GLEE_EXT_texture_filter_anisotropic = GL_FALSE;
+GLboolean _GLEE_EXT_vertex_weighting = GL_FALSE;
+GLboolean _GLEE_NV_light_max_exponent = GL_FALSE;
+GLboolean _GLEE_NV_vertex_array_range = GL_FALSE;
+GLboolean _GLEE_NV_register_combiners = GL_FALSE;
+GLboolean _GLEE_NV_fog_distance = GL_FALSE;
+GLboolean _GLEE_NV_texgen_emboss = GL_FALSE;
+GLboolean _GLEE_NV_blend_square = GL_FALSE;
+GLboolean _GLEE_NV_texture_env_combine4 = GL_FALSE;
+GLboolean _GLEE_MESA_resize_buffers = GL_FALSE;
+GLboolean _GLEE_MESA_window_pos = GL_FALSE;
+GLboolean _GLEE_EXT_texture_compression_s3tc = GL_FALSE;
+GLboolean _GLEE_IBM_cull_vertex = GL_FALSE;
+GLboolean _GLEE_IBM_multimode_draw_arrays = GL_FALSE;
+GLboolean _GLEE_IBM_vertex_array_lists = GL_FALSE;
+GLboolean _GLEE_SGIX_subsample = GL_FALSE;
+GLboolean _GLEE_SGIX_ycrcb_subsample = GL_FALSE;
+GLboolean _GLEE_SGIX_ycrcba = GL_FALSE;
+GLboolean _GLEE_SGI_depth_pass_instrument = GL_FALSE;
+GLboolean _GLEE_3DFX_texture_compression_FXT1 = GL_FALSE;
+GLboolean _GLEE_3DFX_multisample = GL_FALSE;
+GLboolean _GLEE_3DFX_tbuffer = GL_FALSE;
+GLboolean _GLEE_EXT_multisample = GL_FALSE;
+GLboolean _GLEE_SGIX_vertex_preclip = GL_FALSE;
+GLboolean _GLEE_SGIX_convolution_accuracy = GL_FALSE;
+GLboolean _GLEE_SGIX_resample = GL_FALSE;
+GLboolean _GLEE_SGIS_point_line_texgen = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_color_mask = GL_FALSE;
+GLboolean _GLEE_EXT_texture_env_dot3 = GL_FALSE;
+GLboolean _GLEE_ATI_texture_mirror_once = GL_FALSE;
+GLboolean _GLEE_NV_fence = GL_FALSE;
+GLboolean _GLEE_IBM_texture_mirrored_repeat = GL_FALSE;
+GLboolean _GLEE_NV_evaluators = GL_FALSE;
+GLboolean _GLEE_NV_packed_depth_stencil = GL_FALSE;
+GLboolean _GLEE_NV_register_combiners2 = GL_FALSE;
+GLboolean _GLEE_NV_texture_compression_vtc = GL_FALSE;
+GLboolean _GLEE_NV_texture_rectangle = GL_FALSE;
+GLboolean _GLEE_NV_texture_shader = GL_FALSE;
+GLboolean _GLEE_NV_texture_shader2 = GL_FALSE;
+GLboolean _GLEE_NV_vertex_array_range2 = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_coordinate_clamp = GL_FALSE;
+GLboolean _GLEE_SGIX_scalebias_hint = GL_FALSE;
+GLboolean _GLEE_OML_interlace = GL_FALSE;
+GLboolean _GLEE_OML_subsample = GL_FALSE;
+GLboolean _GLEE_OML_resample = GL_FALSE;
+GLboolean _GLEE_NV_copy_depth_to_color = GL_FALSE;
+GLboolean _GLEE_ATI_envmap_bumpmap = GL_FALSE;
+GLboolean _GLEE_ATI_fragment_shader = GL_FALSE;
+GLboolean _GLEE_ATI_pn_triangles = GL_FALSE;
+GLboolean _GLEE_ATI_vertex_array_object = GL_FALSE;
+GLboolean _GLEE_EXT_vertex_shader = GL_FALSE;
+GLboolean _GLEE_ATI_vertex_streams = GL_FALSE;
+GLboolean _GLEE_ATI_element_array = GL_FALSE;
+GLboolean _GLEE_SUN_mesh_array = GL_FALSE;
+GLboolean _GLEE_SUN_slice_accum = GL_FALSE;
+GLboolean _GLEE_NV_multisample_filter_hint = GL_FALSE;
+GLboolean _GLEE_NV_depth_clamp = GL_FALSE;
+GLboolean _GLEE_NV_occlusion_query = GL_FALSE;
+GLboolean _GLEE_NV_point_sprite = GL_FALSE;
+GLboolean _GLEE_NV_texture_shader3 = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program1_1 = GL_FALSE;
+GLboolean _GLEE_EXT_shadow_funcs = GL_FALSE;
+GLboolean _GLEE_EXT_stencil_two_side = GL_FALSE;
+GLboolean _GLEE_ATI_text_fragment_shader = GL_FALSE;
+GLboolean _GLEE_APPLE_client_storage = GL_FALSE;
+GLboolean _GLEE_APPLE_element_array = GL_FALSE;
+GLboolean _GLEE_APPLE_fence = GL_FALSE;
+GLboolean _GLEE_APPLE_vertex_array_object = GL_FALSE;
+GLboolean _GLEE_APPLE_vertex_array_range = GL_FALSE;
+GLboolean _GLEE_APPLE_ycbcr_422 = GL_FALSE;
+GLboolean _GLEE_S3_s3tc = GL_FALSE;
+GLboolean _GLEE_ATI_draw_buffers = GL_FALSE;
+GLboolean _GLEE_ATI_pixel_format_float = GL_FALSE;
+GLboolean _GLEE_ATI_texture_env_combine3 = GL_FALSE;
+GLboolean _GLEE_ATI_texture_float = GL_FALSE;
+GLboolean _GLEE_NV_float_buffer = GL_FALSE;
+GLboolean _GLEE_NV_fragment_program = GL_FALSE;
+GLboolean _GLEE_NV_half_float = GL_FALSE;
+GLboolean _GLEE_NV_pixel_data_range = GL_FALSE;
+GLboolean _GLEE_NV_primitive_restart = GL_FALSE;
+GLboolean _GLEE_NV_texture_expand_normal = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program2 = GL_FALSE;
+GLboolean _GLEE_ATI_map_object_buffer = GL_FALSE;
+GLboolean _GLEE_ATI_separate_stencil = GL_FALSE;
+GLboolean _GLEE_ATI_vertex_attrib_array_object = GL_FALSE;
+GLboolean _GLEE_OES_read_format = GL_FALSE;
+GLboolean _GLEE_EXT_depth_bounds_test = GL_FALSE;
+GLboolean _GLEE_EXT_texture_mirror_clamp = GL_FALSE;
+GLboolean _GLEE_EXT_blend_equation_separate = GL_FALSE;
+GLboolean _GLEE_MESA_pack_invert = GL_FALSE;
+GLboolean _GLEE_MESA_ycbcr_texture = GL_FALSE;
+GLboolean _GLEE_EXT_pixel_buffer_object = GL_FALSE;
+GLboolean _GLEE_NV_fragment_program_option = GL_FALSE;
+GLboolean _GLEE_NV_fragment_program2 = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program2_option = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program3 = GL_FALSE;
+GLboolean _GLEE_EXT_framebuffer_object = GL_FALSE;
+GLboolean _GLEE_GREMEDY_string_marker = GL_FALSE;
+GLboolean _GLEE_EXT_Cg_shader = GL_FALSE;
+GLboolean _GLEE_EXT_timer_query = GL_FALSE;
+GLboolean _GLEE_EXT_texture_buffer_object = GL_FALSE;
+GLboolean _GLEE_EXT_gpu_shader4 = GL_FALSE;
+GLboolean _GLEE_EXT_geometry_shader4 = GL_FALSE;
+GLboolean _GLEE_EXT_bindable_uniform = GL_FALSE;
+GLboolean _GLEE_EXT_framebuffer_sRGB = GL_FALSE;
+GLboolean _GLEE_EXT_texture_shared_exponent = GL_FALSE;
+GLboolean _GLEE_EXT_packed_float = GL_FALSE;
+GLboolean _GLEE_EXT_texture_array = GL_FALSE;
+GLboolean _GLEE_EXT_texture_integer = GL_FALSE;
+GLboolean _GLEE_NV_depth_buffer_float = GL_FALSE;
+GLboolean _GLEE_EXT_texture_compression_latc = GL_FALSE;
+GLboolean _GLEE_NV_transform_feedback = GL_FALSE;
+GLboolean _GLEE_NV_geometry_program4 = GL_FALSE;
+GLboolean _GLEE_NV_gpu_program4 = GL_FALSE;
+GLboolean _GLEE_NV_framebuffer_multisample_coverage = GL_FALSE;
+GLboolean _GLEE_EXT_framebuffer_multisample = GL_FALSE;
+GLboolean _GLEE_EXT_framebuffer_blit = GL_FALSE;
+GLboolean _GLEE_EXT_texture_compression_rgtc = GL_FALSE;
+GLboolean _GLEE_EXT_color_matrix = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_select = GL_FALSE;
+GLboolean _GLEE_INGR_blend_func_separate = GL_FALSE;
+GLboolean _GLEE_SGIX_depth_pass_instrument = GL_FALSE;
+GLboolean _GLEE_SGIX_igloo_interface = GL_FALSE;
+GLboolean _GLEE_EXT_draw_buffers2 = GL_FALSE;
+GLboolean _GLEE_NV_parameter_buffer_object = GL_FALSE;
+GLboolean _GLEE_EXT_draw_instanced = GL_FALSE;
+GLboolean _GLEE_EXT_fragment_lighting = GL_FALSE;
+GLboolean _GLEE_EXT_packed_depth_stencil = GL_FALSE;
+GLboolean _GLEE_EXT_scene_marker = GL_FALSE;
+GLboolean _GLEE_EXT_stencil_clear_tag = GL_FALSE;
+GLboolean _GLEE_EXT_texture_compression_dxt1 = GL_FALSE;
+GLboolean _GLEE_EXT_texture_env = GL_FALSE;
+GLboolean _GLEE_EXT_texture_sRGB = GL_FALSE;
+GLboolean _GLEE_IBM_static_data = GL_FALSE;
+GLboolean _GLEE_MESAX_texture_stack = GL_FALSE;
+GLboolean _GLEE_OES_byte_coordinates = GL_FALSE;
+GLboolean _GLEE_OES_compressed_paletted_texture = GL_FALSE;
+GLboolean _GLEE_OES_single_precision = GL_FALSE;
+GLboolean _GLEE_SGIX_pixel_texture_bits = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_range = GL_FALSE;
+
+/*  GL Extension names */
+
+char __GLeeGLExtensionNames[300][39]={
+    "GL_VERSION_1_2",
+    "GL_ARB_imaging",
+    "GL_VERSION_1_3",
+    "GL_VERSION_1_4",
+    "GL_VERSION_1_5",
+    "GL_VERSION_2_0",
+    "GL_VERSION_2_1",
+    "GL_ARB_multitexture",
+    "GL_ARB_transpose_matrix",
+    "GL_ARB_multisample",
+    "GL_ARB_texture_env_add",
+    "GL_ARB_texture_cube_map",
+    "GL_ARB_texture_compression",
+    "GL_ARB_texture_border_clamp",
+    "GL_ARB_point_parameters",
+    "GL_ARB_vertex_blend",
+    "GL_ARB_matrix_palette",
+    "GL_ARB_texture_env_combine",
+    "GL_ARB_texture_env_crossbar",
+    "GL_ARB_texture_env_dot3",
+    "GL_ARB_texture_mirrored_repeat",
+    "GL_ARB_depth_texture",
+    "GL_ARB_shadow",
+    "GL_ARB_shadow_ambient",
+    "GL_ARB_window_pos",
+    "GL_ARB_vertex_program",
+    "GL_ARB_fragment_program",
+    "GL_ARB_vertex_buffer_object",
+    "GL_ARB_occlusion_query",
+    "GL_ARB_shader_objects",
+    "GL_ARB_vertex_shader",
+    "GL_ARB_fragment_shader",
+    "GL_ARB_shading_language_100",
+    "GL_ARB_texture_non_power_of_two",
+    "GL_ARB_point_sprite",
+    "GL_ARB_fragment_program_shadow",
+    "GL_ARB_draw_buffers",
+    "GL_ARB_texture_rectangle",
+    "GL_ARB_color_buffer_float",
+    "GL_ARB_half_float_pixel",
+    "GL_ARB_texture_float",
+    "GL_ARB_pixel_buffer_object",
+    "GL_EXT_abgr",
+    "GL_EXT_blend_color",
+    "GL_EXT_polygon_offset",
+    "GL_EXT_texture",
+    "GL_EXT_texture3D",
+    "GL_SGIS_texture_filter4",
+    "GL_EXT_subtexture",
+    "GL_EXT_copy_texture",
+    "GL_EXT_histogram",
+    "GL_EXT_convolution",
+    "GL_SGI_color_matrix",
+    "GL_SGI_color_table",
+    "GL_SGIS_pixel_texture",
+    "GL_SGIX_pixel_texture",
+    "GL_SGIS_texture4D",
+    "GL_SGI_texture_color_table",
+    "GL_EXT_cmyka",
+    "GL_EXT_texture_object",
+    "GL_SGIS_detail_texture",
+    "GL_SGIS_sharpen_texture",
+    "GL_EXT_packed_pixels",
+    "GL_SGIS_texture_lod",
+    "GL_SGIS_multisample",
+    "GL_EXT_rescale_normal",
+    "GL_EXT_vertex_array",
+    "GL_EXT_misc_attribute",
+    "GL_SGIS_generate_mipmap",
+    "GL_SGIX_clipmap",
+    "GL_SGIX_shadow",
+    "GL_SGIS_texture_edge_clamp",
+    "GL_SGIS_texture_border_clamp",
+    "GL_EXT_blend_minmax",
+    "GL_EXT_blend_subtract",
+    "GL_EXT_blend_logic_op",
+    "GL_SGIX_interlace",
+    "GL_SGIX_pixel_tiles",
+    "GL_SGIS_texture_select",
+    "GL_SGIX_sprite",
+    "GL_SGIX_texture_multi_buffer",
+    "GL_EXT_point_parameters",
+    "GL_SGIS_point_parameters",
+    "GL_SGIX_instruments",
+    "GL_SGIX_texture_scale_bias",
+    "GL_SGIX_framezoom",
+    "GL_SGIX_tag_sample_buffer",
+    "GL_FfdMaskSGIX",
+    "GL_SGIX_polynomial_ffd",
+    "GL_SGIX_reference_plane",
+    "GL_SGIX_flush_raster",
+    "GL_SGIX_depth_texture",
+    "GL_SGIS_fog_function",
+    "GL_SGIX_fog_offset",
+    "GL_HP_image_transform",
+    "GL_HP_convolution_border_modes",
+    "GL_INGR_palette_buffer",
+    "GL_SGIX_texture_add_env",
+    "GL_EXT_color_subtable",
+    "GL_PGI_vertex_hints",
+    "GL_PGI_misc_hints",
+    "GL_EXT_paletted_texture",
+    "GL_EXT_clip_volume_hint",
+    "GL_SGIX_list_priority",
+    "GL_SGIX_ir_instrument1",
+    "GL_SGIX_calligraphic_fragment",
+    "GL_SGIX_texture_lod_bias",
+    "GL_SGIX_shadow_ambient",
+    "GL_EXT_index_texture",
+    "GL_EXT_index_material",
+    "GL_EXT_index_func",
+    "GL_EXT_index_array_formats",
+    "GL_EXT_compiled_vertex_array",
+    "GL_EXT_cull_vertex",
+    "GL_SGIX_ycrcb",
+    "GL_SGIX_fragment_lighting",
+    "GL_IBM_rasterpos_clip",
+    "GL_HP_texture_lighting",
+    "GL_EXT_draw_range_elements",
+    "GL_WIN_phong_shading",
+    "GL_WIN_specular_fog",
+    "GL_EXT_light_texture",
+    "GL_SGIX_blend_alpha_minmax",
+    "GL_SGIX_impact_pixel_texture",
+    "GL_EXT_bgra",
+    "GL_SGIX_async",
+    "GL_SGIX_async_pixel",
+    "GL_SGIX_async_histogram",
+    "GL_INTEL_texture_scissor",
+    "GL_INTEL_parallel_arrays",
+    "GL_HP_occlusion_test",
+    "GL_EXT_pixel_transform",
+    "GL_EXT_pixel_transform_color_table",
+    "GL_EXT_shared_texture_palette",
+    "GL_EXT_separate_specular_color",
+    "GL_EXT_secondary_color",
+    "GL_EXT_texture_perturb_normal",
+    "GL_EXT_multi_draw_arrays",
+    "GL_EXT_fog_coord",
+    "GL_REND_screen_coordinates",
+    "GL_EXT_coordinate_frame",
+    "GL_EXT_texture_env_combine",
+    "GL_APPLE_specular_vector",
+    "GL_APPLE_transform_hint",
+    "GL_SGIX_fog_scale",
+    "GL_SUNX_constant_data",
+    "GL_SUN_global_alpha",
+    "GL_SUN_triangle_list",
+    "GL_SUN_vertex",
+    "GL_EXT_blend_func_separate",
+    "GL_INGR_color_clamp",
+    "GL_INGR_interlace_read",
+    "GL_EXT_stencil_wrap",
+    "GL_EXT_422_pixels",
+    "GL_NV_texgen_reflection",
+    "GL_EXT_texture_cube_map",
+    "GL_SUN_convolution_border_modes",
+    "GL_EXT_texture_env_add",
+    "GL_EXT_texture_lod_bias",
+    "GL_EXT_texture_filter_anisotropic",
+    "GL_EXT_vertex_weighting",
+    "GL_NV_light_max_exponent",
+    "GL_NV_vertex_array_range",
+    "GL_NV_register_combiners",
+    "GL_NV_fog_distance",
+    "GL_NV_texgen_emboss",
+    "GL_NV_blend_square",
+    "GL_NV_texture_env_combine4",
+    "GL_MESA_resize_buffers",
+    "GL_MESA_window_pos",
+    "GL_EXT_texture_compression_s3tc",
+    "GL_IBM_cull_vertex",
+    "GL_IBM_multimode_draw_arrays",
+    "GL_IBM_vertex_array_lists",
+    "GL_SGIX_subsample",
+    "GL_SGIX_ycrcb_subsample",
+    "GL_SGIX_ycrcba",
+    "GL_SGI_depth_pass_instrument",
+    "GL_3DFX_texture_compression_FXT1",
+    "GL_3DFX_multisample",
+    "GL_3DFX_tbuffer",
+    "GL_EXT_multisample",
+    "GL_SGIX_vertex_preclip",
+    "GL_SGIX_convolution_accuracy",
+    "GL_SGIX_resample",
+    "GL_SGIS_point_line_texgen",
+    "GL_SGIS_texture_color_mask",
+    "GL_EXT_texture_env_dot3",
+    "GL_ATI_texture_mirror_once",
+    "GL_NV_fence",
+    "GL_IBM_texture_mirrored_repeat",
+    "GL_NV_evaluators",
+    "GL_NV_packed_depth_stencil",
+    "GL_NV_register_combiners2",
+    "GL_NV_texture_compression_vtc",
+    "GL_NV_texture_rectangle",
+    "GL_NV_texture_shader",
+    "GL_NV_texture_shader2",
+    "GL_NV_vertex_array_range2",
+    "GL_NV_vertex_program",
+    "GL_SGIX_texture_coordinate_clamp",
+    "GL_SGIX_scalebias_hint",
+    "GL_OML_interlace",
+    "GL_OML_subsample",
+    "GL_OML_resample",
+    "GL_NV_copy_depth_to_color",
+    "GL_ATI_envmap_bumpmap",
+    "GL_ATI_fragment_shader",
+    "GL_ATI_pn_triangles",
+    "GL_ATI_vertex_array_object",
+    "GL_EXT_vertex_shader",
+    "GL_ATI_vertex_streams",
+    "GL_ATI_element_array",
+    "GL_SUN_mesh_array",
+    "GL_SUN_slice_accum",
+    "GL_NV_multisample_filter_hint",
+    "GL_NV_depth_clamp",
+    "GL_NV_occlusion_query",
+    "GL_NV_point_sprite",
+    "GL_NV_texture_shader3",
+    "GL_NV_vertex_program1_1",
+    "GL_EXT_shadow_funcs",
+    "GL_EXT_stencil_two_side",
+    "GL_ATI_text_fragment_shader",
+    "GL_APPLE_client_storage",
+    "GL_APPLE_element_array",
+    "GL_APPLE_fence",
+    "GL_APPLE_vertex_array_object",
+    "GL_APPLE_vertex_array_range",
+    "GL_APPLE_ycbcr_422",
+    "GL_S3_s3tc",
+    "GL_ATI_draw_buffers",
+    "GL_ATI_pixel_format_float",
+    "GL_ATI_texture_env_combine3",
+    "GL_ATI_texture_float",
+    "GL_NV_float_buffer",
+    "GL_NV_fragment_program",
+    "GL_NV_half_float",
+    "GL_NV_pixel_data_range",
+    "GL_NV_primitive_restart",
+    "GL_NV_texture_expand_normal",
+    "GL_NV_vertex_program2",
+    "GL_ATI_map_object_buffer",
+    "GL_ATI_separate_stencil",
+    "GL_ATI_vertex_attrib_array_object",
+    "GL_OES_read_format",
+    "GL_EXT_depth_bounds_test",
+    "GL_EXT_texture_mirror_clamp",
+    "GL_EXT_blend_equation_separate",
+    "GL_MESA_pack_invert",
+    "GL_MESA_ycbcr_texture",
+    "GL_EXT_pixel_buffer_object",
+    "GL_NV_fragment_program_option",
+    "GL_NV_fragment_program2",
+    "GL_NV_vertex_program2_option",
+    "GL_NV_vertex_program3",
+    "GL_EXT_framebuffer_object",
+    "GL_GREMEDY_string_marker",
+    "GL_EXT_Cg_shader",
+    "GL_EXT_timer_query",
+    "GL_EXT_texture_buffer_object",
+    "GL_EXT_gpu_shader4",
+    "GL_EXT_geometry_shader4",
+    "GL_EXT_bindable_uniform",
+    "GL_EXT_framebuffer_sRGB",
+    "GL_EXT_texture_shared_exponent",
+    "GL_EXT_packed_float",
+    "GL_EXT_texture_array",
+    "GL_EXT_texture_integer",
+    "GL_NV_depth_buffer_float",
+    "GL_EXT_texture_compression_latc",
+    "GL_NV_transform_feedback",
+    "GL_NV_geometry_program4",
+    "GL_NV_gpu_program4",
+    "GL_NV_framebuffer_multisample_coverage",
+    "GL_EXT_framebuffer_multisample",
+    "GL_EXT_framebuffer_blit",
+    "GL_EXT_texture_compression_rgtc",
+    "GL_EXT_color_matrix",
+    "GL_SGIX_texture_select",
+    "GL_INGR_blend_func_separate",
+    "GL_SGIX_depth_pass_instrument",
+    "GL_SGIX_igloo_interface",
+    "GL_EXT_draw_buffers2",
+    "GL_NV_parameter_buffer_object",
+    "GL_EXT_draw_instanced",
+    "GL_EXT_fragment_lighting",
+    "GL_EXT_packed_depth_stencil",
+    "GL_EXT_scene_marker",
+    "GL_EXT_stencil_clear_tag",
+    "GL_EXT_texture_compression_dxt1",
+    "GL_EXT_texture_env",
+    "GL_EXT_texture_sRGB",
+    "GL_IBM_static_data",
+    "GL_MESAX_texture_stack",
+    "GL_OES_byte_coordinates",
+    "GL_OES_compressed_paletted_texture",
+    "GL_OES_single_precision",
+    "GL_SGIX_pixel_texture_bits",
+    "GL_SGIX_texture_range"
+};
+int __GLeeGLNumExtensions=300;
+
+/* GL_VERSION_1_2 */
+
+#ifdef __GLEE_GL_VERSION_1_2
+void __stdcall _Lazy_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)  {if (GLeeInit()) glBlendColor(red, green, blue, alpha);}
+void __stdcall _Lazy_glBlendEquation(GLenum mode)                                         {if (GLeeInit()) glBlendEquation(mode);}
+void __stdcall _Lazy_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)  {if (GLeeInit()) glDrawRangeElements(mode, start, end, count, type, indices);}
+void __stdcall _Lazy_glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)  {if (GLeeInit()) glColorTable(target, internalformat, width, format, type, table);}
+void __stdcall _Lazy_glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glColorTableParameterfv(target, pname, params);}
+void __stdcall _Lazy_glColorTableParameteriv(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glColorTableParameteriv(target, pname, params);}
+void __stdcall _Lazy_glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyColorTable(target, internalformat, x, y, width);}
+void __stdcall _Lazy_glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid * table)  {if (GLeeInit()) glGetColorTable(target, format, type, table);}
+void __stdcall _Lazy_glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetColorTableParameterfv(target, pname, params);}
+void __stdcall _Lazy_glGetColorTableParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetColorTableParameteriv(target, pname, params);}
+void __stdcall _Lazy_glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)  {if (GLeeInit()) glColorSubTable(target, start, count, format, type, data);}
+void __stdcall _Lazy_glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyColorSubTable(target, start, x, y, width);}
+void __stdcall _Lazy_glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)  {if (GLeeInit()) glConvolutionFilter1D(target, internalformat, width, format, type, image);}
+void __stdcall _Lazy_glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)  {if (GLeeInit()) glConvolutionFilter2D(target, internalformat, width, height, format, type, image);}
+void __stdcall _Lazy_glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params)  {if (GLeeInit()) glConvolutionParameterf(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glConvolutionParameterfv(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameteri(GLenum target, GLenum pname, GLint params)   {if (GLeeInit()) glConvolutionParameteri(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameteriv(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glConvolutionParameteriv(target, pname, params);}
+void __stdcall _Lazy_glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyConvolutionFilter1D(target, internalformat, x, y, width);}
+void __stdcall _Lazy_glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyConvolutionFilter2D(target, internalformat, x, y, width, height);}
+void __stdcall _Lazy_glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid * image)  {if (GLeeInit()) glGetConvolutionFilter(target, format, type, image);}
+void __stdcall _Lazy_glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetConvolutionParameterfv(target, pname, params);}
+void __stdcall _Lazy_glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetConvolutionParameteriv(target, pname, params);}
+void __stdcall _Lazy_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)  {if (GLeeInit()) glGetSeparableFilter(target, format, type, row, column, span);}
+void __stdcall _Lazy_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)  {if (GLeeInit()) glSeparableFilter2D(target, internalformat, width, height, format, type, row, column);}
+void __stdcall _Lazy_glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)  {if (GLeeInit()) glGetHistogram(target, reset, format, type, values);}
+void __stdcall _Lazy_glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetHistogramParameterfv(target, pname, params);}
+void __stdcall _Lazy_glGetHistogramParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetHistogramParameteriv(target, pname, params);}
+void __stdcall _Lazy_glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)  {if (GLeeInit()) glGetMinmax(target, reset, format, type, values);}
+void __stdcall _Lazy_glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetMinmaxParameterfv(target, pname, params);}
+void __stdcall _Lazy_glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetMinmaxParameteriv(target, pname, params);}
+void __stdcall _Lazy_glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)  {if (GLeeInit()) glHistogram(target, width, internalformat, sink);}
+void __stdcall _Lazy_glMinmax(GLenum target, GLenum internalformat, GLboolean sink)       {if (GLeeInit()) glMinmax(target, internalformat, sink);}
+void __stdcall _Lazy_glResetHistogram(GLenum target)                                      {if (GLeeInit()) glResetHistogram(target);}
+void __stdcall _Lazy_glResetMinmax(GLenum target)                                         {if (GLeeInit()) glResetMinmax(target);}
+void __stdcall _Lazy_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);}
+void __stdcall _Lazy_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);}
+void __stdcall _Lazy_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);}
+PFNGLBLENDCOLORPROC pglBlendColor=_Lazy_glBlendColor;
+PFNGLBLENDEQUATIONPROC pglBlendEquation=_Lazy_glBlendEquation;
+PFNGLDRAWRANGEELEMENTSPROC pglDrawRangeElements=_Lazy_glDrawRangeElements;
+PFNGLCOLORTABLEPROC pglColorTable=_Lazy_glColorTable;
+PFNGLCOLORTABLEPARAMETERFVPROC pglColorTableParameterfv=_Lazy_glColorTableParameterfv;
+PFNGLCOLORTABLEPARAMETERIVPROC pglColorTableParameteriv=_Lazy_glColorTableParameteriv;
+PFNGLCOPYCOLORTABLEPROC pglCopyColorTable=_Lazy_glCopyColorTable;
+PFNGLGETCOLORTABLEPROC pglGetColorTable=_Lazy_glGetColorTable;
+PFNGLGETCOLORTABLEPARAMETERFVPROC pglGetColorTableParameterfv=_Lazy_glGetColorTableParameterfv;
+PFNGLGETCOLORTABLEPARAMETERIVPROC pglGetColorTableParameteriv=_Lazy_glGetColorTableParameteriv;
+PFNGLCOLORSUBTABLEPROC pglColorSubTable=_Lazy_glColorSubTable;
+PFNGLCOPYCOLORSUBTABLEPROC pglCopyColorSubTable=_Lazy_glCopyColorSubTable;
+PFNGLCONVOLUTIONFILTER1DPROC pglConvolutionFilter1D=_Lazy_glConvolutionFilter1D;
+PFNGLCONVOLUTIONFILTER2DPROC pglConvolutionFilter2D=_Lazy_glConvolutionFilter2D;
+PFNGLCONVOLUTIONPARAMETERFPROC pglConvolutionParameterf=_Lazy_glConvolutionParameterf;
+PFNGLCONVOLUTIONPARAMETERFVPROC pglConvolutionParameterfv=_Lazy_glConvolutionParameterfv;
+PFNGLCONVOLUTIONPARAMETERIPROC pglConvolutionParameteri=_Lazy_glConvolutionParameteri;
+PFNGLCONVOLUTIONPARAMETERIVPROC pglConvolutionParameteriv=_Lazy_glConvolutionParameteriv;
+PFNGLCOPYCONVOLUTIONFILTER1DPROC pglCopyConvolutionFilter1D=_Lazy_glCopyConvolutionFilter1D;
+PFNGLCOPYCONVOLUTIONFILTER2DPROC pglCopyConvolutionFilter2D=_Lazy_glCopyConvolutionFilter2D;
+PFNGLGETCONVOLUTIONFILTERPROC pglGetConvolutionFilter=_Lazy_glGetConvolutionFilter;
+PFNGLGETCONVOLUTIONPARAMETERFVPROC pglGetConvolutionParameterfv=_Lazy_glGetConvolutionParameterfv;
+PFNGLGETCONVOLUTIONPARAMETERIVPROC pglGetConvolutionParameteriv=_Lazy_glGetConvolutionParameteriv;
+PFNGLGETSEPARABLEFILTERPROC pglGetSeparableFilter=_Lazy_glGetSeparableFilter;
+PFNGLSEPARABLEFILTER2DPROC pglSeparableFilter2D=_Lazy_glSeparableFilter2D;
+PFNGLGETHISTOGRAMPROC pglGetHistogram=_Lazy_glGetHistogram;
+PFNGLGETHISTOGRAMPARAMETERFVPROC pglGetHistogramParameterfv=_Lazy_glGetHistogramParameterfv;
+PFNGLGETHISTOGRAMPARAMETERIVPROC pglGetHistogramParameteriv=_Lazy_glGetHistogramParameteriv;
+PFNGLGETMINMAXPROC pglGetMinmax=_Lazy_glGetMinmax;
+PFNGLGETMINMAXPARAMETERFVPROC pglGetMinmaxParameterfv=_Lazy_glGetMinmaxParameterfv;
+PFNGLGETMINMAXPARAMETERIVPROC pglGetMinmaxParameteriv=_Lazy_glGetMinmaxParameteriv;
+PFNGLHISTOGRAMPROC pglHistogram=_Lazy_glHistogram;
+PFNGLMINMAXPROC pglMinmax=_Lazy_glMinmax;
+PFNGLRESETHISTOGRAMPROC pglResetHistogram=_Lazy_glResetHistogram;
+PFNGLRESETMINMAXPROC pglResetMinmax=_Lazy_glResetMinmax;
+PFNGLTEXIMAGE3DPROC pglTexImage3D=_Lazy_glTexImage3D;
+PFNGLTEXSUBIMAGE3DPROC pglTexSubImage3D=_Lazy_glTexSubImage3D;
+PFNGLCOPYTEXSUBIMAGE3DPROC pglCopyTexSubImage3D=_Lazy_glCopyTexSubImage3D;
+#endif 
+
+/* GL_ARB_imaging */
+
+#ifdef __GLEE_GL_ARB_imaging
+#endif 
+
+/* GL_VERSION_1_3 */
+
+#ifdef __GLEE_GL_VERSION_1_3
+void __stdcall _Lazy_glActiveTexture(GLenum texture)                                      {if (GLeeInit()) glActiveTexture(texture);}
+void __stdcall _Lazy_glClientActiveTexture(GLenum texture)                                {if (GLeeInit()) glClientActiveTexture(texture);}
+void __stdcall _Lazy_glMultiTexCoord1d(GLenum target, GLdouble s)                         {if (GLeeInit()) glMultiTexCoord1d(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1dv(GLenum target, const GLdouble * v)                {if (GLeeInit()) glMultiTexCoord1dv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1f(GLenum target, GLfloat s)                          {if (GLeeInit()) glMultiTexCoord1f(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1fv(GLenum target, const GLfloat * v)                 {if (GLeeInit()) glMultiTexCoord1fv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1i(GLenum target, GLint s)                            {if (GLeeInit()) glMultiTexCoord1i(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1iv(GLenum target, const GLint * v)                   {if (GLeeInit()) glMultiTexCoord1iv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1s(GLenum target, GLshort s)                          {if (GLeeInit()) glMultiTexCoord1s(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1sv(GLenum target, const GLshort * v)                 {if (GLeeInit()) glMultiTexCoord1sv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t)             {if (GLeeInit()) glMultiTexCoord2d(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2dv(GLenum target, const GLdouble * v)                {if (GLeeInit()) glMultiTexCoord2dv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t)               {if (GLeeInit()) glMultiTexCoord2f(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2fv(GLenum target, const GLfloat * v)                 {if (GLeeInit()) glMultiTexCoord2fv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2i(GLenum target, GLint s, GLint t)                   {if (GLeeInit()) glMultiTexCoord2i(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2iv(GLenum target, const GLint * v)                   {if (GLeeInit()) glMultiTexCoord2iv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2s(GLenum target, GLshort s, GLshort t)               {if (GLeeInit()) glMultiTexCoord2s(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2sv(GLenum target, const GLshort * v)                 {if (GLeeInit()) glMultiTexCoord2sv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r)  {if (GLeeInit()) glMultiTexCoord3d(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3dv(GLenum target, const GLdouble * v)                {if (GLeeInit()) glMultiTexCoord3dv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r)    {if (GLeeInit()) glMultiTexCoord3f(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3fv(GLenum target, const GLfloat * v)                 {if (GLeeInit()) glMultiTexCoord3fv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r)          {if (GLeeInit()) glMultiTexCoord3i(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3iv(GLenum target, const GLint * v)                   {if (GLeeInit()) glMultiTexCoord3iv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r)    {if (GLeeInit()) glMultiTexCoord3s(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3sv(GLenum target, const GLshort * v)                 {if (GLeeInit()) glMultiTexCoord3sv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)  {if (GLeeInit()) glMultiTexCoord4d(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4dv(GLenum target, const GLdouble * v)                {if (GLeeInit()) glMultiTexCoord4dv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)  {if (GLeeInit()) glMultiTexCoord4f(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4fv(GLenum target, const GLfloat * v)                 {if (GLeeInit()) glMultiTexCoord4fv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q)  {if (GLeeInit()) glMultiTexCoord4i(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4iv(GLenum target, const GLint * v)                   {if (GLeeInit()) glMultiTexCoord4iv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)  {if (GLeeInit()) glMultiTexCoord4s(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4sv(GLenum target, const GLshort * v)                 {if (GLeeInit()) glMultiTexCoord4sv(target, v);}
+void __stdcall _Lazy_glLoadTransposeMatrixf(const GLfloat * m)                            {if (GLeeInit()) glLoadTransposeMatrixf(m);}
+void __stdcall _Lazy_glLoadTransposeMatrixd(const GLdouble * m)                           {if (GLeeInit()) glLoadTransposeMatrixd(m);}
+void __stdcall _Lazy_glMultTransposeMatrixf(const GLfloat * m)                            {if (GLeeInit()) glMultTransposeMatrixf(m);}
+void __stdcall _Lazy_glMultTransposeMatrixd(const GLdouble * m)                           {if (GLeeInit()) glMultTransposeMatrixd(m);}
+void __stdcall _Lazy_glSampleCoverage(GLclampf value, GLboolean invert)                   {if (GLeeInit()) glSampleCoverage(value, invert);}
+void __stdcall _Lazy_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data);}
+void __stdcall _Lazy_glGetCompressedTexImage(GLenum target, GLint level, GLvoid * img)    {if (GLeeInit()) glGetCompressedTexImage(target, level, img);}
+PFNGLACTIVETEXTUREPROC pglActiveTexture=_Lazy_glActiveTexture;
+PFNGLCLIENTACTIVETEXTUREPROC pglClientActiveTexture=_Lazy_glClientActiveTexture;
+PFNGLMULTITEXCOORD1DPROC pglMultiTexCoord1d=_Lazy_glMultiTexCoord1d;
+PFNGLMULTITEXCOORD1DVPROC pglMultiTexCoord1dv=_Lazy_glMultiTexCoord1dv;
+PFNGLMULTITEXCOORD1FPROC pglMultiTexCoord1f=_Lazy_glMultiTexCoord1f;
+PFNGLMULTITEXCOORD1FVPROC pglMultiTexCoord1fv=_Lazy_glMultiTexCoord1fv;
+PFNGLMULTITEXCOORD1IPROC pglMultiTexCoord1i=_Lazy_glMultiTexCoord1i;
+PFNGLMULTITEXCOORD1IVPROC pglMultiTexCoord1iv=_Lazy_glMultiTexCoord1iv;
+PFNGLMULTITEXCOORD1SPROC pglMultiTexCoord1s=_Lazy_glMultiTexCoord1s;
+PFNGLMULTITEXCOORD1SVPROC pglMultiTexCoord1sv=_Lazy_glMultiTexCoord1sv;
+PFNGLMULTITEXCOORD2DPROC pglMultiTexCoord2d=_Lazy_glMultiTexCoord2d;
+PFNGLMULTITEXCOORD2DVPROC pglMultiTexCoord2dv=_Lazy_glMultiTexCoord2dv;
+PFNGLMULTITEXCOORD2FPROC pglMultiTexCoord2f=_Lazy_glMultiTexCoord2f;
+PFNGLMULTITEXCOORD2FVPROC pglMultiTexCoord2fv=_Lazy_glMultiTexCoord2fv;
+PFNGLMULTITEXCOORD2IPROC pglMultiTexCoord2i=_Lazy_glMultiTexCoord2i;
+PFNGLMULTITEXCOORD2IVPROC pglMultiTexCoord2iv=_Lazy_glMultiTexCoord2iv;
+PFNGLMULTITEXCOORD2SPROC pglMultiTexCoord2s=_Lazy_glMultiTexCoord2s;
+PFNGLMULTITEXCOORD2SVPROC pglMultiTexCoord2sv=_Lazy_glMultiTexCoord2sv;
+PFNGLMULTITEXCOORD3DPROC pglMultiTexCoord3d=_Lazy_glMultiTexCoord3d;
+PFNGLMULTITEXCOORD3DVPROC pglMultiTexCoord3dv=_Lazy_glMultiTexCoord3dv;
+PFNGLMULTITEXCOORD3FPROC pglMultiTexCoord3f=_Lazy_glMultiTexCoord3f;
+PFNGLMULTITEXCOORD3FVPROC pglMultiTexCoord3fv=_Lazy_glMultiTexCoord3fv;
+PFNGLMULTITEXCOORD3IPROC pglMultiTexCoord3i=_Lazy_glMultiTexCoord3i;
+PFNGLMULTITEXCOORD3IVPROC pglMultiTexCoord3iv=_Lazy_glMultiTexCoord3iv;
+PFNGLMULTITEXCOORD3SPROC pglMultiTexCoord3s=_Lazy_glMultiTexCoord3s;
+PFNGLMULTITEXCOORD3SVPROC pglMultiTexCoord3sv=_Lazy_glMultiTexCoord3sv;
+PFNGLMULTITEXCOORD4DPROC pglMultiTexCoord4d=_Lazy_glMultiTexCoord4d;
+PFNGLMULTITEXCOORD4DVPROC pglMultiTexCoord4dv=_Lazy_glMultiTexCoord4dv;
+PFNGLMULTITEXCOORD4FPROC pglMultiTexCoord4f=_Lazy_glMultiTexCoord4f;
+PFNGLMULTITEXCOORD4FVPROC pglMultiTexCoord4fv=_Lazy_glMultiTexCoord4fv;
+PFNGLMULTITEXCOORD4IPROC pglMultiTexCoord4i=_Lazy_glMultiTexCoord4i;
+PFNGLMULTITEXCOORD4IVPROC pglMultiTexCoord4iv=_Lazy_glMultiTexCoord4iv;
+PFNGLMULTITEXCOORD4SPROC pglMultiTexCoord4s=_Lazy_glMultiTexCoord4s;
+PFNGLMULTITEXCOORD4SVPROC pglMultiTexCoord4sv=_Lazy_glMultiTexCoord4sv;
+PFNGLLOADTRANSPOSEMATRIXFPROC pglLoadTransposeMatrixf=_Lazy_glLoadTransposeMatrixf;
+PFNGLLOADTRANSPOSEMATRIXDPROC pglLoadTransposeMatrixd=_Lazy_glLoadTransposeMatrixd;
+PFNGLMULTTRANSPOSEMATRIXFPROC pglMultTransposeMatrixf=_Lazy_glMultTransposeMatrixf;
+PFNGLMULTTRANSPOSEMATRIXDPROC pglMultTransposeMatrixd=_Lazy_glMultTransposeMatrixd;
+PFNGLSAMPLECOVERAGEPROC pglSampleCoverage=_Lazy_glSampleCoverage;
+PFNGLCOMPRESSEDTEXIMAGE3DPROC pglCompressedTexImage3D=_Lazy_glCompressedTexImage3D;
+PFNGLCOMPRESSEDTEXIMAGE2DPROC pglCompressedTexImage2D=_Lazy_glCompressedTexImage2D;
+PFNGLCOMPRESSEDTEXIMAGE1DPROC pglCompressedTexImage1D=_Lazy_glCompressedTexImage1D;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC pglCompressedTexSubImage3D=_Lazy_glCompressedTexSubImage3D;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC pglCompressedTexSubImage2D=_Lazy_glCompressedTexSubImage2D;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC pglCompressedTexSubImage1D=_Lazy_glCompressedTexSubImage1D;
+PFNGLGETCOMPRESSEDTEXIMAGEPROC pglGetCompressedTexImage=_Lazy_glGetCompressedTexImage;
+#endif 
+
+/* GL_VERSION_1_4 */
+
+#ifdef __GLEE_GL_VERSION_1_4
+void __stdcall _Lazy_glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)  {if (GLeeInit()) glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);}
+void __stdcall _Lazy_glFogCoordf(GLfloat coord)                                           {if (GLeeInit()) glFogCoordf(coord);}
+void __stdcall _Lazy_glFogCoordfv(const GLfloat * coord)                                  {if (GLeeInit()) glFogCoordfv(coord);}
+void __stdcall _Lazy_glFogCoordd(GLdouble coord)                                          {if (GLeeInit()) glFogCoordd(coord);}
+void __stdcall _Lazy_glFogCoorddv(const GLdouble * coord)                                 {if (GLeeInit()) glFogCoorddv(coord);}
+void __stdcall _Lazy_glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glFogCoordPointer(type, stride, pointer);}
+void __stdcall _Lazy_glMultiDrawArrays(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)  {if (GLeeInit()) glMultiDrawArrays(mode, first, count, primcount);}
+void __stdcall _Lazy_glMultiDrawElements(GLenum mode, const GLsizei * count, GLenum type, const GLvoid* * indices, GLsizei primcount)  {if (GLeeInit()) glMultiDrawElements(mode, count, type, indices, primcount);}
+void __stdcall _Lazy_glPointParameterf(GLenum pname, GLfloat param)                       {if (GLeeInit()) glPointParameterf(pname, param);}
+void __stdcall _Lazy_glPointParameterfv(GLenum pname, const GLfloat * params)             {if (GLeeInit()) glPointParameterfv(pname, params);}
+void __stdcall _Lazy_glPointParameteri(GLenum pname, GLint param)                         {if (GLeeInit()) glPointParameteri(pname, param);}
+void __stdcall _Lazy_glPointParameteriv(GLenum pname, const GLint * params)               {if (GLeeInit()) glPointParameteriv(pname, params);}
+void __stdcall _Lazy_glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue)            {if (GLeeInit()) glSecondaryColor3b(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3bv(const GLbyte * v)                                {if (GLeeInit()) glSecondaryColor3bv(v);}
+void __stdcall _Lazy_glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue)      {if (GLeeInit()) glSecondaryColor3d(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3dv(const GLdouble * v)                              {if (GLeeInit()) glSecondaryColor3dv(v);}
+void __stdcall _Lazy_glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue)         {if (GLeeInit()) glSecondaryColor3f(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3fv(const GLfloat * v)                               {if (GLeeInit()) glSecondaryColor3fv(v);}
+void __stdcall _Lazy_glSecondaryColor3i(GLint red, GLint green, GLint blue)               {if (GLeeInit()) glSecondaryColor3i(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3iv(const GLint * v)                                 {if (GLeeInit()) glSecondaryColor3iv(v);}
+void __stdcall _Lazy_glSecondaryColor3s(GLshort red, GLshort green, GLshort blue)         {if (GLeeInit()) glSecondaryColor3s(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3sv(const GLshort * v)                               {if (GLeeInit()) glSecondaryColor3sv(v);}
+void __stdcall _Lazy_glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue)        {if (GLeeInit()) glSecondaryColor3ub(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3ubv(const GLubyte * v)                              {if (GLeeInit()) glSecondaryColor3ubv(v);}
+void __stdcall _Lazy_glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue)           {if (GLeeInit()) glSecondaryColor3ui(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3uiv(const GLuint * v)                               {if (GLeeInit()) glSecondaryColor3uiv(v);}
+void __stdcall _Lazy_glSecondaryColor3us(GLushort red, GLushort green, GLushort blue)     {if (GLeeInit()) glSecondaryColor3us(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3usv(const GLushort * v)                             {if (GLeeInit()) glSecondaryColor3usv(v);}
+void __stdcall _Lazy_glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glSecondaryColorPointer(size, type, stride, pointer);}
+void __stdcall _Lazy_glWindowPos2d(GLdouble x, GLdouble y)                                {if (GLeeInit()) glWindowPos2d(x, y);}
+void __stdcall _Lazy_glWindowPos2dv(const GLdouble * v)                                   {if (GLeeInit()) glWindowPos2dv(v);}
+void __stdcall _Lazy_glWindowPos2f(GLfloat x, GLfloat y)                                  {if (GLeeInit()) glWindowPos2f(x, y);}
+void __stdcall _Lazy_glWindowPos2fv(const GLfloat * v)                                    {if (GLeeInit()) glWindowPos2fv(v);}
+void __stdcall _Lazy_glWindowPos2i(GLint x, GLint y)                                      {if (GLeeInit()) glWindowPos2i(x, y);}
+void __stdcall _Lazy_glWindowPos2iv(const GLint * v)                                      {if (GLeeInit()) glWindowPos2iv(v);}
+void __stdcall _Lazy_glWindowPos2s(GLshort x, GLshort y)                                  {if (GLeeInit()) glWindowPos2s(x, y);}
+void __stdcall _Lazy_glWindowPos2sv(const GLshort * v)                                    {if (GLeeInit()) glWindowPos2sv(v);}
+void __stdcall _Lazy_glWindowPos3d(GLdouble x, GLdouble y, GLdouble z)                    {if (GLeeInit()) glWindowPos3d(x, y, z);}
+void __stdcall _Lazy_glWindowPos3dv(const GLdouble * v)                                   {if (GLeeInit()) glWindowPos3dv(v);}
+void __stdcall _Lazy_glWindowPos3f(GLfloat x, GLfloat y, GLfloat z)                       {if (GLeeInit()) glWindowPos3f(x, y, z);}
+void __stdcall _Lazy_glWindowPos3fv(const GLfloat * v)                                    {if (GLeeInit()) glWindowPos3fv(v);}
+void __stdcall _Lazy_glWindowPos3i(GLint x, GLint y, GLint z)                             {if (GLeeInit()) glWindowPos3i(x, y, z);}
+void __stdcall _Lazy_glWindowPos3iv(const GLint * v)                                      {if (GLeeInit()) glWindowPos3iv(v);}
+void __stdcall _Lazy_glWindowPos3s(GLshort x, GLshort y, GLshort z)                       {if (GLeeInit()) glWindowPos3s(x, y, z);}
+void __stdcall _Lazy_glWindowPos3sv(const GLshort * v)                                    {if (GLeeInit()) glWindowPos3sv(v);}
+PFNGLBLENDFUNCSEPARATEPROC pglBlendFuncSeparate=_Lazy_glBlendFuncSeparate;
+PFNGLFOGCOORDFPROC pglFogCoordf=_Lazy_glFogCoordf;
+PFNGLFOGCOORDFVPROC pglFogCoordfv=_Lazy_glFogCoordfv;
+PFNGLFOGCOORDDPROC pglFogCoordd=_Lazy_glFogCoordd;
+PFNGLFOGCOORDDVPROC pglFogCoorddv=_Lazy_glFogCoorddv;
+PFNGLFOGCOORDPOINTERPROC pglFogCoordPointer=_Lazy_glFogCoordPointer;
+PFNGLMULTIDRAWARRAYSPROC pglMultiDrawArrays=_Lazy_glMultiDrawArrays;
+PFNGLMULTIDRAWELEMENTSPROC pglMultiDrawElements=_Lazy_glMultiDrawElements;
+PFNGLPOINTPARAMETERFPROC pglPointParameterf=_Lazy_glPointParameterf;
+PFNGLPOINTPARAMETERFVPROC pglPointParameterfv=_Lazy_glPointParameterfv;
+PFNGLPOINTPARAMETERIPROC pglPointParameteri=_Lazy_glPointParameteri;
+PFNGLPOINTPARAMETERIVPROC pglPointParameteriv=_Lazy_glPointParameteriv;
+PFNGLSECONDARYCOLOR3BPROC pglSecondaryColor3b=_Lazy_glSecondaryColor3b;
+PFNGLSECONDARYCOLOR3BVPROC pglSecondaryColor3bv=_Lazy_glSecondaryColor3bv;
+PFNGLSECONDARYCOLOR3DPROC pglSecondaryColor3d=_Lazy_glSecondaryColor3d;
+PFNGLSECONDARYCOLOR3DVPROC pglSecondaryColor3dv=_Lazy_glSecondaryColor3dv;
+PFNGLSECONDARYCOLOR3FPROC pglSecondaryColor3f=_Lazy_glSecondaryColor3f;
+PFNGLSECONDARYCOLOR3FVPROC pglSecondaryColor3fv=_Lazy_glSecondaryColor3fv;
+PFNGLSECONDARYCOLOR3IPROC pglSecondaryColor3i=_Lazy_glSecondaryColor3i;
+PFNGLSECONDARYCOLOR3IVPROC pglSecondaryColor3iv=_Lazy_glSecondaryColor3iv;
+PFNGLSECONDARYCOLOR3SPROC pglSecondaryColor3s=_Lazy_glSecondaryColor3s;
+PFNGLSECONDARYCOLOR3SVPROC pglSecondaryColor3sv=_Lazy_glSecondaryColor3sv;
+PFNGLSECONDARYCOLOR3UBPROC pglSecondaryColor3ub=_Lazy_glSecondaryColor3ub;
+PFNGLSECONDARYCOLOR3UBVPROC pglSecondaryColor3ubv=_Lazy_glSecondaryColor3ubv;
+PFNGLSECONDARYCOLOR3UIPROC pglSecondaryColor3ui=_Lazy_glSecondaryColor3ui;
+PFNGLSECONDARYCOLOR3UIVPROC pglSecondaryColor3uiv=_Lazy_glSecondaryColor3uiv;
+PFNGLSECONDARYCOLOR3USPROC pglSecondaryColor3us=_Lazy_glSecondaryColor3us;
+PFNGLSECONDARYCOLOR3USVPROC pglSecondaryColor3usv=_Lazy_glSecondaryColor3usv;
+PFNGLSECONDARYCOLORPOINTERPROC pglSecondaryColorPointer=_Lazy_glSecondaryColorPointer;
+PFNGLWINDOWPOS2DPROC pglWindowPos2d=_Lazy_glWindowPos2d;
+PFNGLWINDOWPOS2DVPROC pglWindowPos2dv=_Lazy_glWindowPos2dv;
+PFNGLWINDOWPOS2FPROC pglWindowPos2f=_Lazy_glWindowPos2f;
+PFNGLWINDOWPOS2FVPROC pglWindowPos2fv=_Lazy_glWindowPos2fv;
+PFNGLWINDOWPOS2IPROC pglWindowPos2i=_Lazy_glWindowPos2i;
+PFNGLWINDOWPOS2IVPROC pglWindowPos2iv=_Lazy_glWindowPos2iv;
+PFNGLWINDOWPOS2SPROC pglWindowPos2s=_Lazy_glWindowPos2s;
+PFNGLWINDOWPOS2SVPROC pglWindowPos2sv=_Lazy_glWindowPos2sv;
+PFNGLWINDOWPOS3DPROC pglWindowPos3d=_Lazy_glWindowPos3d;
+PFNGLWINDOWPOS3DVPROC pglWindowPos3dv=_Lazy_glWindowPos3dv;
+PFNGLWINDOWPOS3FPROC pglWindowPos3f=_Lazy_glWindowPos3f;
+PFNGLWINDOWPOS3FVPROC pglWindowPos3fv=_Lazy_glWindowPos3fv;
+PFNGLWINDOWPOS3IPROC pglWindowPos3i=_Lazy_glWindowPos3i;
+PFNGLWINDOWPOS3IVPROC pglWindowPos3iv=_Lazy_glWindowPos3iv;
+PFNGLWINDOWPOS3SPROC pglWindowPos3s=_Lazy_glWindowPos3s;
+PFNGLWINDOWPOS3SVPROC pglWindowPos3sv=_Lazy_glWindowPos3sv;
+#endif 
+
+/* GL_VERSION_1_5 */
+
+#ifdef __GLEE_GL_VERSION_1_5
+void __stdcall _Lazy_glGenQueries(GLsizei n, GLuint * ids)                                {if (GLeeInit()) glGenQueries(n, ids);}
+void __stdcall _Lazy_glDeleteQueries(GLsizei n, const GLuint * ids)                       {if (GLeeInit()) glDeleteQueries(n, ids);}
+GLboolean __stdcall _Lazy_glIsQuery(GLuint id)                                            {if (GLeeInit()) return glIsQuery(id); return (GLboolean)0;}
+void __stdcall _Lazy_glBeginQuery(GLenum target, GLuint id)                               {if (GLeeInit()) glBeginQuery(target, id);}
+void __stdcall _Lazy_glEndQuery(GLenum target)                                            {if (GLeeInit()) glEndQuery(target);}
+void __stdcall _Lazy_glGetQueryiv(GLenum target, GLenum pname, GLint * params)            {if (GLeeInit()) glGetQueryiv(target, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectiv(GLuint id, GLenum pname, GLint * params)          {if (GLeeInit()) glGetQueryObjectiv(id, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint * params)        {if (GLeeInit()) glGetQueryObjectuiv(id, pname, params);}
+void __stdcall _Lazy_glBindBuffer(GLenum target, GLuint buffer)                           {if (GLeeInit()) glBindBuffer(target, buffer);}
+void __stdcall _Lazy_glDeleteBuffers(GLsizei n, const GLuint * buffers)                   {if (GLeeInit()) glDeleteBuffers(n, buffers);}
+void __stdcall _Lazy_glGenBuffers(GLsizei n, GLuint * buffers)                            {if (GLeeInit()) glGenBuffers(n, buffers);}
+GLboolean __stdcall _Lazy_glIsBuffer(GLuint buffer)                                       {if (GLeeInit()) return glIsBuffer(buffer); return (GLboolean)0;}
+void __stdcall _Lazy_glBufferData(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage)  {if (GLeeInit()) glBufferData(target, size, data, usage);}
+void __stdcall _Lazy_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data)  {if (GLeeInit()) glBufferSubData(target, offset, size, data);}
+void __stdcall _Lazy_glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data)  {if (GLeeInit()) glGetBufferSubData(target, offset, size, data);}
+GLvoid* __stdcall _Lazy_glMapBuffer(GLenum target, GLenum access)                         {if (GLeeInit()) return glMapBuffer(target, access); return (GLvoid*)0;}
+GLboolean __stdcall _Lazy_glUnmapBuffer(GLenum target)                                    {if (GLeeInit()) return glUnmapBuffer(target); return (GLboolean)0;}
+void __stdcall _Lazy_glGetBufferParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetBufferParameteriv(target, pname, params);}
+void __stdcall _Lazy_glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* * params)   {if (GLeeInit()) glGetBufferPointerv(target, pname, params);}
+PFNGLGENQUERIESPROC pglGenQueries=_Lazy_glGenQueries;
+PFNGLDELETEQUERIESPROC pglDeleteQueries=_Lazy_glDeleteQueries;
+PFNGLISQUERYPROC pglIsQuery=_Lazy_glIsQuery;
+PFNGLBEGINQUERYPROC pglBeginQuery=_Lazy_glBeginQuery;
+PFNGLENDQUERYPROC pglEndQuery=_Lazy_glEndQuery;
+PFNGLGETQUERYIVPROC pglGetQueryiv=_Lazy_glGetQueryiv;
+PFNGLGETQUERYOBJECTIVPROC pglGetQueryObjectiv=_Lazy_glGetQueryObjectiv;
+PFNGLGETQUERYOBJECTUIVPROC pglGetQueryObjectuiv=_Lazy_glGetQueryObjectuiv;
+PFNGLBINDBUFFERPROC pglBindBuffer=_Lazy_glBindBuffer;
+PFNGLDELETEBUFFERSPROC pglDeleteBuffers=_Lazy_glDeleteBuffers;
+PFNGLGENBUFFERSPROC pglGenBuffers=_Lazy_glGenBuffers;
+PFNGLISBUFFERPROC pglIsBuffer=_Lazy_glIsBuffer;
+PFNGLBUFFERDATAPROC pglBufferData=_Lazy_glBufferData;
+PFNGLBUFFERSUBDATAPROC pglBufferSubData=_Lazy_glBufferSubData;
+PFNGLGETBUFFERSUBDATAPROC pglGetBufferSubData=_Lazy_glGetBufferSubData;
+PFNGLMAPBUFFERPROC pglMapBuffer=_Lazy_glMapBuffer;
+PFNGLUNMAPBUFFERPROC pglUnmapBuffer=_Lazy_glUnmapBuffer;
+PFNGLGETBUFFERPARAMETERIVPROC pglGetBufferParameteriv=_Lazy_glGetBufferParameteriv;
+PFNGLGETBUFFERPOINTERVPROC pglGetBufferPointerv=_Lazy_glGetBufferPointerv;
+#endif 
+
+/* GL_VERSION_2_0 */
+
+#ifdef __GLEE_GL_VERSION_2_0
+void __stdcall _Lazy_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)            {if (GLeeInit()) glBlendEquationSeparate(modeRGB, modeAlpha);}
+void __stdcall _Lazy_glDrawBuffers(GLsizei n, const GLenum * bufs)                        {if (GLeeInit()) glDrawBuffers(n, bufs);}
+void __stdcall _Lazy_glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)  {if (GLeeInit()) glStencilOpSeparate(face, sfail, dpfail, dppass);}
+void __stdcall _Lazy_glStencilFuncSeparate(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)  {if (GLeeInit()) glStencilFuncSeparate(frontfunc, backfunc, ref, mask);}
+void __stdcall _Lazy_glStencilMaskSeparate(GLenum face, GLuint mask)                      {if (GLeeInit()) glStencilMaskSeparate(face, mask);}
+void __stdcall _Lazy_glAttachShader(GLuint program, GLuint shader)                        {if (GLeeInit()) glAttachShader(program, shader);}
+void __stdcall _Lazy_glBindAttribLocation(GLuint program, GLuint index, const GLchar * name)  {if (GLeeInit()) glBindAttribLocation(program, index, name);}
+void __stdcall _Lazy_glCompileShader(GLuint shader)                                       {if (GLeeInit()) glCompileShader(shader);}
+GLuint __stdcall _Lazy_glCreateProgram(void)                                              {if (GLeeInit()) return glCreateProgram(); return (GLuint)0;}
+GLuint __stdcall _Lazy_glCreateShader(GLenum type)                                        {if (GLeeInit()) return glCreateShader(type); return (GLuint)0;}
+void __stdcall _Lazy_glDeleteProgram(GLuint program)                                      {if (GLeeInit()) glDeleteProgram(program);}
+void __stdcall _Lazy_glDeleteShader(GLuint shader)                                        {if (GLeeInit()) glDeleteShader(shader);}
+void __stdcall _Lazy_glDetachShader(GLuint program, GLuint shader)                        {if (GLeeInit()) glDetachShader(program, shader);}
+void __stdcall _Lazy_glDisableVertexAttribArray(GLuint index)                             {if (GLeeInit()) glDisableVertexAttribArray(index);}
+void __stdcall _Lazy_glEnableVertexAttribArray(GLuint index)                              {if (GLeeInit()) glEnableVertexAttribArray(index);}
+void __stdcall _Lazy_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)  {if (GLeeInit()) glGetActiveAttrib(program, index, bufSize, length, size, type, name);}
+void __stdcall _Lazy_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)  {if (GLeeInit()) glGetActiveUniform(program, index, bufSize, length, size, type, name);}
+void __stdcall _Lazy_glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj)  {if (GLeeInit()) glGetAttachedShaders(program, maxCount, count, obj);}
+GLint __stdcall _Lazy_glGetAttribLocation(GLuint program, const GLchar * name)            {if (GLeeInit()) return glGetAttribLocation(program, name); return (GLint)0;}
+void __stdcall _Lazy_glGetProgramiv(GLuint program, GLenum pname, GLint * params)         {if (GLeeInit()) glGetProgramiv(program, pname, params);}
+void __stdcall _Lazy_glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog)  {if (GLeeInit()) glGetProgramInfoLog(program, bufSize, length, infoLog);}
+void __stdcall _Lazy_glGetShaderiv(GLuint shader, GLenum pname, GLint * params)           {if (GLeeInit()) glGetShaderiv(shader, pname, params);}
+void __stdcall _Lazy_glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog)  {if (GLeeInit()) glGetShaderInfoLog(shader, bufSize, length, infoLog);}
+void __stdcall _Lazy_glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source)  {if (GLeeInit()) glGetShaderSource(shader, bufSize, length, source);}
+GLint __stdcall _Lazy_glGetUniformLocation(GLuint program, const GLchar * name)           {if (GLeeInit()) return glGetUniformLocation(program, name); return (GLint)0;}
+void __stdcall _Lazy_glGetUniformfv(GLuint program, GLint location, GLfloat * params)     {if (GLeeInit()) glGetUniformfv(program, location, params);}
+void __stdcall _Lazy_glGetUniformiv(GLuint program, GLint location, GLint * params)       {if (GLeeInit()) glGetUniformiv(program, location, params);}
+void __stdcall _Lazy_glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble * params)   {if (GLeeInit()) glGetVertexAttribdv(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat * params)    {if (GLeeInit()) glGetVertexAttribfv(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribiv(GLuint index, GLenum pname, GLint * params)      {if (GLeeInit()) glGetVertexAttribiv(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* * pointer)  {if (GLeeInit()) glGetVertexAttribPointerv(index, pname, pointer);}
+GLboolean __stdcall _Lazy_glIsProgram(GLuint program)                                     {if (GLeeInit()) return glIsProgram(program); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_glIsShader(GLuint shader)                                       {if (GLeeInit()) return glIsShader(shader); return (GLboolean)0;}
+void __stdcall _Lazy_glLinkProgram(GLuint program)                                        {if (GLeeInit()) glLinkProgram(program);}
+void __stdcall _Lazy_glShaderSource(GLuint shader, GLsizei count, const GLchar* * string, const GLint * length)  {if (GLeeInit()) glShaderSource(shader, count, string, length);}
+void __stdcall _Lazy_glUseProgram(GLuint program)                                         {if (GLeeInit()) glUseProgram(program);}
+void __stdcall _Lazy_glUniform1f(GLint location, GLfloat v0)                              {if (GLeeInit()) glUniform1f(location, v0);}
+void __stdcall _Lazy_glUniform2f(GLint location, GLfloat v0, GLfloat v1)                  {if (GLeeInit()) glUniform2f(location, v0, v1);}
+void __stdcall _Lazy_glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)      {if (GLeeInit()) glUniform3f(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)  {if (GLeeInit()) glUniform4f(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1i(GLint location, GLint v0)                                {if (GLeeInit()) glUniform1i(location, v0);}
+void __stdcall _Lazy_glUniform2i(GLint location, GLint v0, GLint v1)                      {if (GLeeInit()) glUniform2i(location, v0, v1);}
+void __stdcall _Lazy_glUniform3i(GLint location, GLint v0, GLint v1, GLint v2)            {if (GLeeInit()) glUniform3i(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)  {if (GLeeInit()) glUniform4i(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1fv(GLint location, GLsizei count, const GLfloat * value)   {if (GLeeInit()) glUniform1fv(location, count, value);}
+void __stdcall _Lazy_glUniform2fv(GLint location, GLsizei count, const GLfloat * value)   {if (GLeeInit()) glUniform2fv(location, count, value);}
+void __stdcall _Lazy_glUniform3fv(GLint location, GLsizei count, const GLfloat * value)   {if (GLeeInit()) glUniform3fv(location, count, value);}
+void __stdcall _Lazy_glUniform4fv(GLint location, GLsizei count, const GLfloat * value)   {if (GLeeInit()) glUniform4fv(location, count, value);}
+void __stdcall _Lazy_glUniform1iv(GLint location, GLsizei count, const GLint * value)     {if (GLeeInit()) glUniform1iv(location, count, value);}
+void __stdcall _Lazy_glUniform2iv(GLint location, GLsizei count, const GLint * value)     {if (GLeeInit()) glUniform2iv(location, count, value);}
+void __stdcall _Lazy_glUniform3iv(GLint location, GLsizei count, const GLint * value)     {if (GLeeInit()) glUniform3iv(location, count, value);}
+void __stdcall _Lazy_glUniform4iv(GLint location, GLsizei count, const GLint * value)     {if (GLeeInit()) glUniform4iv(location, count, value);}
+void __stdcall _Lazy_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix2fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix3fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix4fv(location, count, transpose, value);}
+void __stdcall _Lazy_glValidateProgram(GLuint program)                                    {if (GLeeInit()) glValidateProgram(program);}
+void __stdcall _Lazy_glVertexAttrib1d(GLuint index, GLdouble x)                           {if (GLeeInit()) glVertexAttrib1d(index, x);}
+void __stdcall _Lazy_glVertexAttrib1dv(GLuint index, const GLdouble * v)                  {if (GLeeInit()) glVertexAttrib1dv(index, v);}
+void __stdcall _Lazy_glVertexAttrib1f(GLuint index, GLfloat x)                            {if (GLeeInit()) glVertexAttrib1f(index, x);}
+void __stdcall _Lazy_glVertexAttrib1fv(GLuint index, const GLfloat * v)                   {if (GLeeInit()) glVertexAttrib1fv(index, v);}
+void __stdcall _Lazy_glVertexAttrib1s(GLuint index, GLshort x)                            {if (GLeeInit()) glVertexAttrib1s(index, x);}
+void __stdcall _Lazy_glVertexAttrib1sv(GLuint index, const GLshort * v)                   {if (GLeeInit()) glVertexAttrib1sv(index, v);}
+void __stdcall _Lazy_glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y)               {if (GLeeInit()) glVertexAttrib2d(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2dv(GLuint index, const GLdouble * v)                  {if (GLeeInit()) glVertexAttrib2dv(index, v);}
+void __stdcall _Lazy_glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y)                 {if (GLeeInit()) glVertexAttrib2f(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2fv(GLuint index, const GLfloat * v)                   {if (GLeeInit()) glVertexAttrib2fv(index, v);}
+void __stdcall _Lazy_glVertexAttrib2s(GLuint index, GLshort x, GLshort y)                 {if (GLeeInit()) glVertexAttrib2s(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2sv(GLuint index, const GLshort * v)                   {if (GLeeInit()) glVertexAttrib2sv(index, v);}
+void __stdcall _Lazy_glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z)   {if (GLeeInit()) glVertexAttrib3d(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3dv(GLuint index, const GLdouble * v)                  {if (GLeeInit()) glVertexAttrib3dv(index, v);}
+void __stdcall _Lazy_glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z)      {if (GLeeInit()) glVertexAttrib3f(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3fv(GLuint index, const GLfloat * v)                   {if (GLeeInit()) glVertexAttrib3fv(index, v);}
+void __stdcall _Lazy_glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z)      {if (GLeeInit()) glVertexAttrib3s(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3sv(GLuint index, const GLshort * v)                   {if (GLeeInit()) glVertexAttrib3sv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nbv(GLuint index, const GLbyte * v)                   {if (GLeeInit()) glVertexAttrib4Nbv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Niv(GLuint index, const GLint * v)                    {if (GLeeInit()) glVertexAttrib4Niv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nsv(GLuint index, const GLshort * v)                  {if (GLeeInit()) glVertexAttrib4Nsv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)  {if (GLeeInit()) glVertexAttrib4Nub(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4Nubv(GLuint index, const GLubyte * v)                 {if (GLeeInit()) glVertexAttrib4Nubv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nuiv(GLuint index, const GLuint * v)                  {if (GLeeInit()) glVertexAttrib4Nuiv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nusv(GLuint index, const GLushort * v)                {if (GLeeInit()) glVertexAttrib4Nusv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4bv(GLuint index, const GLbyte * v)                    {if (GLeeInit()) glVertexAttrib4bv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glVertexAttrib4d(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4dv(GLuint index, const GLdouble * v)                  {if (GLeeInit()) glVertexAttrib4dv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glVertexAttrib4f(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4fv(GLuint index, const GLfloat * v)                   {if (GLeeInit()) glVertexAttrib4fv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4iv(GLuint index, const GLint * v)                     {if (GLeeInit()) glVertexAttrib4iv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)  {if (GLeeInit()) glVertexAttrib4s(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4sv(GLuint index, const GLshort * v)                   {if (GLeeInit()) glVertexAttrib4sv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4ubv(GLuint index, const GLubyte * v)                  {if (GLeeInit()) glVertexAttrib4ubv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4uiv(GLuint index, const GLuint * v)                   {if (GLeeInit()) glVertexAttrib4uiv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4usv(GLuint index, const GLushort * v)                 {if (GLeeInit()) glVertexAttrib4usv(index, v);}
+void __stdcall _Lazy_glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexAttribPointer(index, size, type, normalized, stride, pointer);}
+PFNGLBLENDEQUATIONSEPARATEPROC pglBlendEquationSeparate=_Lazy_glBlendEquationSeparate;
+PFNGLDRAWBUFFERSPROC pglDrawBuffers=_Lazy_glDrawBuffers;
+PFNGLSTENCILOPSEPARATEPROC pglStencilOpSeparate=_Lazy_glStencilOpSeparate;
+PFNGLSTENCILFUNCSEPARATEPROC pglStencilFuncSeparate=_Lazy_glStencilFuncSeparate;
+PFNGLSTENCILMASKSEPARATEPROC pglStencilMaskSeparate=_Lazy_glStencilMaskSeparate;
+PFNGLATTACHSHADERPROC pglAttachShader=_Lazy_glAttachShader;
+PFNGLBINDATTRIBLOCATIONPROC pglBindAttribLocation=_Lazy_glBindAttribLocation;
+PFNGLCOMPILESHADERPROC pglCompileShader=_Lazy_glCompileShader;
+PFNGLCREATEPROGRAMPROC pglCreateProgram=_Lazy_glCreateProgram;
+PFNGLCREATESHADERPROC pglCreateShader=_Lazy_glCreateShader;
+PFNGLDELETEPROGRAMPROC pglDeleteProgram=_Lazy_glDeleteProgram;
+PFNGLDELETESHADERPROC pglDeleteShader=_Lazy_glDeleteShader;
+PFNGLDETACHSHADERPROC pglDetachShader=_Lazy_glDetachShader;
+PFNGLDISABLEVERTEXATTRIBARRAYPROC pglDisableVertexAttribArray=_Lazy_glDisableVertexAttribArray;
+PFNGLENABLEVERTEXATTRIBARRAYPROC pglEnableVertexAttribArray=_Lazy_glEnableVertexAttribArray;
+PFNGLGETACTIVEATTRIBPROC pglGetActiveAttrib=_Lazy_glGetActiveAttrib;
+PFNGLGETACTIVEUNIFORMPROC pglGetActiveUniform=_Lazy_glGetActiveUniform;
+PFNGLGETATTACHEDSHADERSPROC pglGetAttachedShaders=_Lazy_glGetAttachedShaders;
+PFNGLGETATTRIBLOCATIONPROC pglGetAttribLocation=_Lazy_glGetAttribLocation;
+PFNGLGETPROGRAMIVPROC pglGetProgramiv=_Lazy_glGetProgramiv;
+PFNGLGETPROGRAMINFOLOGPROC pglGetProgramInfoLog=_Lazy_glGetProgramInfoLog;
+PFNGLGETSHADERIVPROC pglGetShaderiv=_Lazy_glGetShaderiv;
+PFNGLGETSHADERINFOLOGPROC pglGetShaderInfoLog=_Lazy_glGetShaderInfoLog;
+PFNGLGETSHADERSOURCEPROC pglGetShaderSource=_Lazy_glGetShaderSource;
+PFNGLGETUNIFORMLOCATIONPROC pglGetUniformLocation=_Lazy_glGetUniformLocation;
+PFNGLGETUNIFORMFVPROC pglGetUniformfv=_Lazy_glGetUniformfv;
+PFNGLGETUNIFORMIVPROC pglGetUniformiv=_Lazy_glGetUniformiv;
+PFNGLGETVERTEXATTRIBDVPROC pglGetVertexAttribdv=_Lazy_glGetVertexAttribdv;
+PFNGLGETVERTEXATTRIBFVPROC pglGetVertexAttribfv=_Lazy_glGetVertexAttribfv;
+PFNGLGETVERTEXATTRIBIVPROC pglGetVertexAttribiv=_Lazy_glGetVertexAttribiv;
+PFNGLGETVERTEXATTRIBPOINTERVPROC pglGetVertexAttribPointerv=_Lazy_glGetVertexAttribPointerv;
+PFNGLISPROGRAMPROC pglIsProgram=_Lazy_glIsProgram;
+PFNGLISSHADERPROC pglIsShader=_Lazy_glIsShader;
+PFNGLLINKPROGRAMPROC pglLinkProgram=_Lazy_glLinkProgram;
+PFNGLSHADERSOURCEPROC pglShaderSource=_Lazy_glShaderSource;
+PFNGLUSEPROGRAMPROC pglUseProgram=_Lazy_glUseProgram;
+PFNGLUNIFORM1FPROC pglUniform1f=_Lazy_glUniform1f;
+PFNGLUNIFORM2FPROC pglUniform2f=_Lazy_glUniform2f;
+PFNGLUNIFORM3FPROC pglUniform3f=_Lazy_glUniform3f;
+PFNGLUNIFORM4FPROC pglUniform4f=_Lazy_glUniform4f;
+PFNGLUNIFORM1IPROC pglUniform1i=_Lazy_glUniform1i;
+PFNGLUNIFORM2IPROC pglUniform2i=_Lazy_glUniform2i;
+PFNGLUNIFORM3IPROC pglUniform3i=_Lazy_glUniform3i;
+PFNGLUNIFORM4IPROC pglUniform4i=_Lazy_glUniform4i;
+PFNGLUNIFORM1FVPROC pglUniform1fv=_Lazy_glUniform1fv;
+PFNGLUNIFORM2FVPROC pglUniform2fv=_Lazy_glUniform2fv;
+PFNGLUNIFORM3FVPROC pglUniform3fv=_Lazy_glUniform3fv;
+PFNGLUNIFORM4FVPROC pglUniform4fv=_Lazy_glUniform4fv;
+PFNGLUNIFORM1IVPROC pglUniform1iv=_Lazy_glUniform1iv;
+PFNGLUNIFORM2IVPROC pglUniform2iv=_Lazy_glUniform2iv;
+PFNGLUNIFORM3IVPROC pglUniform3iv=_Lazy_glUniform3iv;
+PFNGLUNIFORM4IVPROC pglUniform4iv=_Lazy_glUniform4iv;
+PFNGLUNIFORMMATRIX2FVPROC pglUniformMatrix2fv=_Lazy_glUniformMatrix2fv;
+PFNGLUNIFORMMATRIX3FVPROC pglUniformMatrix3fv=_Lazy_glUniformMatrix3fv;
+PFNGLUNIFORMMATRIX4FVPROC pglUniformMatrix4fv=_Lazy_glUniformMatrix4fv;
+PFNGLVALIDATEPROGRAMPROC pglValidateProgram=_Lazy_glValidateProgram;
+PFNGLVERTEXATTRIB1DPROC pglVertexAttrib1d=_Lazy_glVertexAttrib1d;
+PFNGLVERTEXATTRIB1DVPROC pglVertexAttrib1dv=_Lazy_glVertexAttrib1dv;
+PFNGLVERTEXATTRIB1FPROC pglVertexAttrib1f=_Lazy_glVertexAttrib1f;
+PFNGLVERTEXATTRIB1FVPROC pglVertexAttrib1fv=_Lazy_glVertexAttrib1fv;
+PFNGLVERTEXATTRIB1SPROC pglVertexAttrib1s=_Lazy_glVertexAttrib1s;
+PFNGLVERTEXATTRIB1SVPROC pglVertexAttrib1sv=_Lazy_glVertexAttrib1sv;
+PFNGLVERTEXATTRIB2DPROC pglVertexAttrib2d=_Lazy_glVertexAttrib2d;
+PFNGLVERTEXATTRIB2DVPROC pglVertexAttrib2dv=_Lazy_glVertexAttrib2dv;
+PFNGLVERTEXATTRIB2FPROC pglVertexAttrib2f=_Lazy_glVertexAttrib2f;
+PFNGLVERTEXATTRIB2FVPROC pglVertexAttrib2fv=_Lazy_glVertexAttrib2fv;
+PFNGLVERTEXATTRIB2SPROC pglVertexAttrib2s=_Lazy_glVertexAttrib2s;
+PFNGLVERTEXATTRIB2SVPROC pglVertexAttrib2sv=_Lazy_glVertexAttrib2sv;
+PFNGLVERTEXATTRIB3DPROC pglVertexAttrib3d=_Lazy_glVertexAttrib3d;
+PFNGLVERTEXATTRIB3DVPROC pglVertexAttrib3dv=_Lazy_glVertexAttrib3dv;
+PFNGLVERTEXATTRIB3FPROC pglVertexAttrib3f=_Lazy_glVertexAttrib3f;
+PFNGLVERTEXATTRIB3FVPROC pglVertexAttrib3fv=_Lazy_glVertexAttrib3fv;
+PFNGLVERTEXATTRIB3SPROC pglVertexAttrib3s=_Lazy_glVertexAttrib3s;
+PFNGLVERTEXATTRIB3SVPROC pglVertexAttrib3sv=_Lazy_glVertexAttrib3sv;
+PFNGLVERTEXATTRIB4NBVPROC pglVertexAttrib4Nbv=_Lazy_glVertexAttrib4Nbv;
+PFNGLVERTEXATTRIB4NIVPROC pglVertexAttrib4Niv=_Lazy_glVertexAttrib4Niv;
+PFNGLVERTEXATTRIB4NSVPROC pglVertexAttrib4Nsv=_Lazy_glVertexAttrib4Nsv;
+PFNGLVERTEXATTRIB4NUBPROC pglVertexAttrib4Nub=_Lazy_glVertexAttrib4Nub;
+PFNGLVERTEXATTRIB4NUBVPROC pglVertexAttrib4Nubv=_Lazy_glVertexAttrib4Nubv;
+PFNGLVERTEXATTRIB4NUIVPROC pglVertexAttrib4Nuiv=_Lazy_glVertexAttrib4Nuiv;
+PFNGLVERTEXATTRIB4NUSVPROC pglVertexAttrib4Nusv=_Lazy_glVertexAttrib4Nusv;
+PFNGLVERTEXATTRIB4BVPROC pglVertexAttrib4bv=_Lazy_glVertexAttrib4bv;
+PFNGLVERTEXATTRIB4DPROC pglVertexAttrib4d=_Lazy_glVertexAttrib4d;
+PFNGLVERTEXATTRIB4DVPROC pglVertexAttrib4dv=_Lazy_glVertexAttrib4dv;
+PFNGLVERTEXATTRIB4FPROC pglVertexAttrib4f=_Lazy_glVertexAttrib4f;
+PFNGLVERTEXATTRIB4FVPROC pglVertexAttrib4fv=_Lazy_glVertexAttrib4fv;
+PFNGLVERTEXATTRIB4IVPROC pglVertexAttrib4iv=_Lazy_glVertexAttrib4iv;
+PFNGLVERTEXATTRIB4SPROC pglVertexAttrib4s=_Lazy_glVertexAttrib4s;
+PFNGLVERTEXATTRIB4SVPROC pglVertexAttrib4sv=_Lazy_glVertexAttrib4sv;
+PFNGLVERTEXATTRIB4UBVPROC pglVertexAttrib4ubv=_Lazy_glVertexAttrib4ubv;
+PFNGLVERTEXATTRIB4UIVPROC pglVertexAttrib4uiv=_Lazy_glVertexAttrib4uiv;
+PFNGLVERTEXATTRIB4USVPROC pglVertexAttrib4usv=_Lazy_glVertexAttrib4usv;
+PFNGLVERTEXATTRIBPOINTERPROC pglVertexAttribPointer=_Lazy_glVertexAttribPointer;
+#endif 
+
+/* GL_VERSION_2_1 */
+
+#ifdef __GLEE_GL_VERSION_2_1
+void __stdcall _Lazy_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix2x3fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix3x2fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix2x4fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix4x2fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix3x4fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix4x3fv(location, count, transpose, value);}
+PFNGLUNIFORMMATRIX2X3FVPROC pglUniformMatrix2x3fv=_Lazy_glUniformMatrix2x3fv;
+PFNGLUNIFORMMATRIX3X2FVPROC pglUniformMatrix3x2fv=_Lazy_glUniformMatrix3x2fv;
+PFNGLUNIFORMMATRIX2X4FVPROC pglUniformMatrix2x4fv=_Lazy_glUniformMatrix2x4fv;
+PFNGLUNIFORMMATRIX4X2FVPROC pglUniformMatrix4x2fv=_Lazy_glUniformMatrix4x2fv;
+PFNGLUNIFORMMATRIX3X4FVPROC pglUniformMatrix3x4fv=_Lazy_glUniformMatrix3x4fv;
+PFNGLUNIFORMMATRIX4X3FVPROC pglUniformMatrix4x3fv=_Lazy_glUniformMatrix4x3fv;
+#endif 
+
+/* GL_ARB_multitexture */
+
+#ifdef __GLEE_GL_ARB_multitexture
+void __stdcall _Lazy_glActiveTextureARB(GLenum texture)                                   {if (GLeeInit()) glActiveTextureARB(texture);}
+void __stdcall _Lazy_glClientActiveTextureARB(GLenum texture)                             {if (GLeeInit()) glClientActiveTextureARB(texture);}
+void __stdcall _Lazy_glMultiTexCoord1dARB(GLenum target, GLdouble s)                      {if (GLeeInit()) glMultiTexCoord1dARB(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1dvARB(GLenum target, const GLdouble * v)             {if (GLeeInit()) glMultiTexCoord1dvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1fARB(GLenum target, GLfloat s)                       {if (GLeeInit()) glMultiTexCoord1fARB(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1fvARB(GLenum target, const GLfloat * v)              {if (GLeeInit()) glMultiTexCoord1fvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1iARB(GLenum target, GLint s)                         {if (GLeeInit()) glMultiTexCoord1iARB(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1ivARB(GLenum target, const GLint * v)                {if (GLeeInit()) glMultiTexCoord1ivARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1sARB(GLenum target, GLshort s)                       {if (GLeeInit()) glMultiTexCoord1sARB(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1svARB(GLenum target, const GLshort * v)              {if (GLeeInit()) glMultiTexCoord1svARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)          {if (GLeeInit()) glMultiTexCoord2dARB(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2dvARB(GLenum target, const GLdouble * v)             {if (GLeeInit()) glMultiTexCoord2dvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t)            {if (GLeeInit()) glMultiTexCoord2fARB(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2fvARB(GLenum target, const GLfloat * v)              {if (GLeeInit()) glMultiTexCoord2fvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2iARB(GLenum target, GLint s, GLint t)                {if (GLeeInit()) glMultiTexCoord2iARB(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2ivARB(GLenum target, const GLint * v)                {if (GLeeInit()) glMultiTexCoord2ivARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)            {if (GLeeInit()) glMultiTexCoord2sARB(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2svARB(GLenum target, const GLshort * v)              {if (GLeeInit()) glMultiTexCoord2svARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)  {if (GLeeInit()) glMultiTexCoord3dARB(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3dvARB(GLenum target, const GLdouble * v)             {if (GLeeInit()) glMultiTexCoord3dvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r)  {if (GLeeInit()) glMultiTexCoord3fARB(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3fvARB(GLenum target, const GLfloat * v)              {if (GLeeInit()) glMultiTexCoord3fvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)       {if (GLeeInit()) glMultiTexCoord3iARB(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3ivARB(GLenum target, const GLint * v)                {if (GLeeInit()) glMultiTexCoord3ivARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)  {if (GLeeInit()) glMultiTexCoord3sARB(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3svARB(GLenum target, const GLshort * v)              {if (GLeeInit()) glMultiTexCoord3svARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)  {if (GLeeInit()) glMultiTexCoord4dARB(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4dvARB(GLenum target, const GLdouble * v)             {if (GLeeInit()) glMultiTexCoord4dvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)  {if (GLeeInit()) glMultiTexCoord4fARB(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4fvARB(GLenum target, const GLfloat * v)              {if (GLeeInit()) glMultiTexCoord4fvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)  {if (GLeeInit()) glMultiTexCoord4iARB(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4ivARB(GLenum target, const GLint * v)                {if (GLeeInit()) glMultiTexCoord4ivARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)  {if (GLeeInit()) glMultiTexCoord4sARB(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4svARB(GLenum target, const GLshort * v)              {if (GLeeInit()) glMultiTexCoord4svARB(target, v);}
+PFNGLACTIVETEXTUREARBPROC pglActiveTextureARB=_Lazy_glActiveTextureARB;
+PFNGLCLIENTACTIVETEXTUREARBPROC pglClientActiveTextureARB=_Lazy_glClientActiveTextureARB;
+PFNGLMULTITEXCOORD1DARBPROC pglMultiTexCoord1dARB=_Lazy_glMultiTexCoord1dARB;
+PFNGLMULTITEXCOORD1DVARBPROC pglMultiTexCoord1dvARB=_Lazy_glMultiTexCoord1dvARB;
+PFNGLMULTITEXCOORD1FARBPROC pglMultiTexCoord1fARB=_Lazy_glMultiTexCoord1fARB;
+PFNGLMULTITEXCOORD1FVARBPROC pglMultiTexCoord1fvARB=_Lazy_glMultiTexCoord1fvARB;
+PFNGLMULTITEXCOORD1IARBPROC pglMultiTexCoord1iARB=_Lazy_glMultiTexCoord1iARB;
+PFNGLMULTITEXCOORD1IVARBPROC pglMultiTexCoord1ivARB=_Lazy_glMultiTexCoord1ivARB;
+PFNGLMULTITEXCOORD1SARBPROC pglMultiTexCoord1sARB=_Lazy_glMultiTexCoord1sARB;
+PFNGLMULTITEXCOORD1SVARBPROC pglMultiTexCoord1svARB=_Lazy_glMultiTexCoord1svARB;
+PFNGLMULTITEXCOORD2DARBPROC pglMultiTexCoord2dARB=_Lazy_glMultiTexCoord2dARB;
+PFNGLMULTITEXCOORD2DVARBPROC pglMultiTexCoord2dvARB=_Lazy_glMultiTexCoord2dvARB;
+PFNGLMULTITEXCOORD2FARBPROC pglMultiTexCoord2fARB=_Lazy_glMultiTexCoord2fARB;
+PFNGLMULTITEXCOORD2FVARBPROC pglMultiTexCoord2fvARB=_Lazy_glMultiTexCoord2fvARB;
+PFNGLMULTITEXCOORD2IARBPROC pglMultiTexCoord2iARB=_Lazy_glMultiTexCoord2iARB;
+PFNGLMULTITEXCOORD2IVARBPROC pglMultiTexCoord2ivARB=_Lazy_glMultiTexCoord2ivARB;
+PFNGLMULTITEXCOORD2SARBPROC pglMultiTexCoord2sARB=_Lazy_glMultiTexCoord2sARB;
+PFNGLMULTITEXCOORD2SVARBPROC pglMultiTexCoord2svARB=_Lazy_glMultiTexCoord2svARB;
+PFNGLMULTITEXCOORD3DARBPROC pglMultiTexCoord3dARB=_Lazy_glMultiTexCoord3dARB;
+PFNGLMULTITEXCOORD3DVARBPROC pglMultiTexCoord3dvARB=_Lazy_glMultiTexCoord3dvARB;
+PFNGLMULTITEXCOORD3FARBPROC pglMultiTexCoord3fARB=_Lazy_glMultiTexCoord3fARB;
+PFNGLMULTITEXCOORD3FVARBPROC pglMultiTexCoord3fvARB=_Lazy_glMultiTexCoord3fvARB;
+PFNGLMULTITEXCOORD3IARBPROC pglMultiTexCoord3iARB=_Lazy_glMultiTexCoord3iARB;
+PFNGLMULTITEXCOORD3IVARBPROC pglMultiTexCoord3ivARB=_Lazy_glMultiTexCoord3ivARB;
+PFNGLMULTITEXCOORD3SARBPROC pglMultiTexCoord3sARB=_Lazy_glMultiTexCoord3sARB;
+PFNGLMULTITEXCOORD3SVARBPROC pglMultiTexCoord3svARB=_Lazy_glMultiTexCoord3svARB;
+PFNGLMULTITEXCOORD4DARBPROC pglMultiTexCoord4dARB=_Lazy_glMultiTexCoord4dARB;
+PFNGLMULTITEXCOORD4DVARBPROC pglMultiTexCoord4dvARB=_Lazy_glMultiTexCoord4dvARB;
+PFNGLMULTITEXCOORD4FARBPROC pglMultiTexCoord4fARB=_Lazy_glMultiTexCoord4fARB;
+PFNGLMULTITEXCOORD4FVARBPROC pglMultiTexCoord4fvARB=_Lazy_glMultiTexCoord4fvARB;
+PFNGLMULTITEXCOORD4IARBPROC pglMultiTexCoord4iARB=_Lazy_glMultiTexCoord4iARB;
+PFNGLMULTITEXCOORD4IVARBPROC pglMultiTexCoord4ivARB=_Lazy_glMultiTexCoord4ivARB;
+PFNGLMULTITEXCOORD4SARBPROC pglMultiTexCoord4sARB=_Lazy_glMultiTexCoord4sARB;
+PFNGLMULTITEXCOORD4SVARBPROC pglMultiTexCoord4svARB=_Lazy_glMultiTexCoord4svARB;
+#endif 
+
+/* GL_ARB_transpose_matrix */
+
+#ifdef __GLEE_GL_ARB_transpose_matrix
+void __stdcall _Lazy_glLoadTransposeMatrixfARB(const GLfloat * m)                         {if (GLeeInit()) glLoadTransposeMatrixfARB(m);}
+void __stdcall _Lazy_glLoadTransposeMatrixdARB(const GLdouble * m)                        {if (GLeeInit()) glLoadTransposeMatrixdARB(m);}
+void __stdcall _Lazy_glMultTransposeMatrixfARB(const GLfloat * m)                         {if (GLeeInit()) glMultTransposeMatrixfARB(m);}
+void __stdcall _Lazy_glMultTransposeMatrixdARB(const GLdouble * m)                        {if (GLeeInit()) glMultTransposeMatrixdARB(m);}
+PFNGLLOADTRANSPOSEMATRIXFARBPROC pglLoadTransposeMatrixfARB=_Lazy_glLoadTransposeMatrixfARB;
+PFNGLLOADTRANSPOSEMATRIXDARBPROC pglLoadTransposeMatrixdARB=_Lazy_glLoadTransposeMatrixdARB;
+PFNGLMULTTRANSPOSEMATRIXFARBPROC pglMultTransposeMatrixfARB=_Lazy_glMultTransposeMatrixfARB;
+PFNGLMULTTRANSPOSEMATRIXDARBPROC pglMultTransposeMatrixdARB=_Lazy_glMultTransposeMatrixdARB;
+#endif 
+
+/* GL_ARB_multisample */
+
+#ifdef __GLEE_GL_ARB_multisample
+void __stdcall _Lazy_glSampleCoverageARB(GLclampf value, GLboolean invert)                {if (GLeeInit()) glSampleCoverageARB(value, invert);}
+PFNGLSAMPLECOVERAGEARBPROC pglSampleCoverageARB=_Lazy_glSampleCoverageARB;
+#endif 
+
+/* GL_ARB_texture_env_add */
+
+#ifdef __GLEE_GL_ARB_texture_env_add
+#endif 
+
+/* GL_ARB_texture_cube_map */
+
+#ifdef __GLEE_GL_ARB_texture_cube_map
+#endif 
+
+/* GL_ARB_texture_compression */
+
+#ifdef __GLEE_GL_ARB_texture_compression
+void __stdcall _Lazy_glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, data);}
+void __stdcall _Lazy_glGetCompressedTexImageARB(GLenum target, GLint level, GLvoid * img)  {if (GLeeInit()) glGetCompressedTexImageARB(target, level, img);}
+PFNGLCOMPRESSEDTEXIMAGE3DARBPROC pglCompressedTexImage3DARB=_Lazy_glCompressedTexImage3DARB;
+PFNGLCOMPRESSEDTEXIMAGE2DARBPROC pglCompressedTexImage2DARB=_Lazy_glCompressedTexImage2DARB;
+PFNGLCOMPRESSEDTEXIMAGE1DARBPROC pglCompressedTexImage1DARB=_Lazy_glCompressedTexImage1DARB;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC pglCompressedTexSubImage3DARB=_Lazy_glCompressedTexSubImage3DARB;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC pglCompressedTexSubImage2DARB=_Lazy_glCompressedTexSubImage2DARB;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC pglCompressedTexSubImage1DARB=_Lazy_glCompressedTexSubImage1DARB;
+PFNGLGETCOMPRESSEDTEXIMAGEARBPROC pglGetCompressedTexImageARB=_Lazy_glGetCompressedTexImageARB;
+#endif 
+
+/* GL_ARB_texture_border_clamp */
+
+#ifdef __GLEE_GL_ARB_texture_border_clamp
+#endif 
+
+/* GL_ARB_point_parameters */
+
+#ifdef __GLEE_GL_ARB_point_parameters
+void __stdcall _Lazy_glPointParameterfARB(GLenum pname, GLfloat param)                    {if (GLeeInit()) glPointParameterfARB(pname, param);}
+void __stdcall _Lazy_glPointParameterfvARB(GLenum pname, const GLfloat * params)          {if (GLeeInit()) glPointParameterfvARB(pname, params);}
+PFNGLPOINTPARAMETERFARBPROC pglPointParameterfARB=_Lazy_glPointParameterfARB;
+PFNGLPOINTPARAMETERFVARBPROC pglPointParameterfvARB=_Lazy_glPointParameterfvARB;
+#endif 
+
+/* GL_ARB_vertex_blend */
+
+#ifdef __GLEE_GL_ARB_vertex_blend
+void __stdcall _Lazy_glWeightbvARB(GLint size, const GLbyte * weights)                    {if (GLeeInit()) glWeightbvARB(size, weights);}
+void __stdcall _Lazy_glWeightsvARB(GLint size, const GLshort * weights)                   {if (GLeeInit()) glWeightsvARB(size, weights);}
+void __stdcall _Lazy_glWeightivARB(GLint size, const GLint * weights)                     {if (GLeeInit()) glWeightivARB(size, weights);}
+void __stdcall _Lazy_glWeightfvARB(GLint size, const GLfloat * weights)                   {if (GLeeInit()) glWeightfvARB(size, weights);}
+void __stdcall _Lazy_glWeightdvARB(GLint size, const GLdouble * weights)                  {if (GLeeInit()) glWeightdvARB(size, weights);}
+void __stdcall _Lazy_glWeightubvARB(GLint size, const GLubyte * weights)                  {if (GLeeInit()) glWeightubvARB(size, weights);}
+void __stdcall _Lazy_glWeightusvARB(GLint size, const GLushort * weights)                 {if (GLeeInit()) glWeightusvARB(size, weights);}
+void __stdcall _Lazy_glWeightuivARB(GLint size, const GLuint * weights)                   {if (GLeeInit()) glWeightuivARB(size, weights);}
+void __stdcall _Lazy_glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glWeightPointerARB(size, type, stride, pointer);}
+void __stdcall _Lazy_glVertexBlendARB(GLint count)                                        {if (GLeeInit()) glVertexBlendARB(count);}
+PFNGLWEIGHTBVARBPROC pglWeightbvARB=_Lazy_glWeightbvARB;
+PFNGLWEIGHTSVARBPROC pglWeightsvARB=_Lazy_glWeightsvARB;
+PFNGLWEIGHTIVARBPROC pglWeightivARB=_Lazy_glWeightivARB;
+PFNGLWEIGHTFVARBPROC pglWeightfvARB=_Lazy_glWeightfvARB;
+PFNGLWEIGHTDVARBPROC pglWeightdvARB=_Lazy_glWeightdvARB;
+PFNGLWEIGHTUBVARBPROC pglWeightubvARB=_Lazy_glWeightubvARB;
+PFNGLWEIGHTUSVARBPROC pglWeightusvARB=_Lazy_glWeightusvARB;
+PFNGLWEIGHTUIVARBPROC pglWeightuivARB=_Lazy_glWeightuivARB;
+PFNGLWEIGHTPOINTERARBPROC pglWeightPointerARB=_Lazy_glWeightPointerARB;
+PFNGLVERTEXBLENDARBPROC pglVertexBlendARB=_Lazy_glVertexBlendARB;
+#endif 
+
+/* GL_ARB_matrix_palette */
+
+#ifdef __GLEE_GL_ARB_matrix_palette
+void __stdcall _Lazy_glCurrentPaletteMatrixARB(GLint index)                               {if (GLeeInit()) glCurrentPaletteMatrixARB(index);}
+void __stdcall _Lazy_glMatrixIndexubvARB(GLint size, const GLubyte * indices)             {if (GLeeInit()) glMatrixIndexubvARB(size, indices);}
+void __stdcall _Lazy_glMatrixIndexusvARB(GLint size, const GLushort * indices)            {if (GLeeInit()) glMatrixIndexusvARB(size, indices);}
+void __stdcall _Lazy_glMatrixIndexuivARB(GLint size, const GLuint * indices)              {if (GLeeInit()) glMatrixIndexuivARB(size, indices);}
+void __stdcall _Lazy_glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glMatrixIndexPointerARB(size, type, stride, pointer);}
+PFNGLCURRENTPALETTEMATRIXARBPROC pglCurrentPaletteMatrixARB=_Lazy_glCurrentPaletteMatrixARB;
+PFNGLMATRIXINDEXUBVARBPROC pglMatrixIndexubvARB=_Lazy_glMatrixIndexubvARB;
+PFNGLMATRIXINDEXUSVARBPROC pglMatrixIndexusvARB=_Lazy_glMatrixIndexusvARB;
+PFNGLMATRIXINDEXUIVARBPROC pglMatrixIndexuivARB=_Lazy_glMatrixIndexuivARB;
+PFNGLMATRIXINDEXPOINTERARBPROC pglMatrixIndexPointerARB=_Lazy_glMatrixIndexPointerARB;
+#endif 
+
+/* GL_ARB_texture_env_combine */
+
+#ifdef __GLEE_GL_ARB_texture_env_combine
+#endif 
+
+/* GL_ARB_texture_env_crossbar */
+
+#ifdef __GLEE_GL_ARB_texture_env_crossbar
+#endif 
+
+/* GL_ARB_texture_env_dot3 */
+
+#ifdef __GLEE_GL_ARB_texture_env_dot3
+#endif 
+
+/* GL_ARB_texture_mirrored_repeat */
+
+#ifdef __GLEE_GL_ARB_texture_mirrored_repeat
+#endif 
+
+/* GL_ARB_depth_texture */
+
+#ifdef __GLEE_GL_ARB_depth_texture
+#endif 
+
+/* GL_ARB_shadow */
+
+#ifdef __GLEE_GL_ARB_shadow
+#endif 
+
+/* GL_ARB_shadow_ambient */
+
+#ifdef __GLEE_GL_ARB_shadow_ambient
+#endif 
+
+/* GL_ARB_window_pos */
+
+#ifdef __GLEE_GL_ARB_window_pos
+void __stdcall _Lazy_glWindowPos2dARB(GLdouble x, GLdouble y)                             {if (GLeeInit()) glWindowPos2dARB(x, y);}
+void __stdcall _Lazy_glWindowPos2dvARB(const GLdouble * v)                                {if (GLeeInit()) glWindowPos2dvARB(v);}
+void __stdcall _Lazy_glWindowPos2fARB(GLfloat x, GLfloat y)                               {if (GLeeInit()) glWindowPos2fARB(x, y);}
+void __stdcall _Lazy_glWindowPos2fvARB(const GLfloat * v)                                 {if (GLeeInit()) glWindowPos2fvARB(v);}
+void __stdcall _Lazy_glWindowPos2iARB(GLint x, GLint y)                                   {if (GLeeInit()) glWindowPos2iARB(x, y);}
+void __stdcall _Lazy_glWindowPos2ivARB(const GLint * v)                                   {if (GLeeInit()) glWindowPos2ivARB(v);}
+void __stdcall _Lazy_glWindowPos2sARB(GLshort x, GLshort y)                               {if (GLeeInit()) glWindowPos2sARB(x, y);}
+void __stdcall _Lazy_glWindowPos2svARB(const GLshort * v)                                 {if (GLeeInit()) glWindowPos2svARB(v);}
+void __stdcall _Lazy_glWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z)                 {if (GLeeInit()) glWindowPos3dARB(x, y, z);}
+void __stdcall _Lazy_glWindowPos3dvARB(const GLdouble * v)                                {if (GLeeInit()) glWindowPos3dvARB(v);}
+void __stdcall _Lazy_glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z)                    {if (GLeeInit()) glWindowPos3fARB(x, y, z);}
+void __stdcall _Lazy_glWindowPos3fvARB(const GLfloat * v)                                 {if (GLeeInit()) glWindowPos3fvARB(v);}
+void __stdcall _Lazy_glWindowPos3iARB(GLint x, GLint y, GLint z)                          {if (GLeeInit()) glWindowPos3iARB(x, y, z);}
+void __stdcall _Lazy_glWindowPos3ivARB(const GLint * v)                                   {if (GLeeInit()) glWindowPos3ivARB(v);}
+void __stdcall _Lazy_glWindowPos3sARB(GLshort x, GLshort y, GLshort z)                    {if (GLeeInit()) glWindowPos3sARB(x, y, z);}
+void __stdcall _Lazy_glWindowPos3svARB(const GLshort * v)                                 {if (GLeeInit()) glWindowPos3svARB(v);}
+PFNGLWINDOWPOS2DARBPROC pglWindowPos2dARB=_Lazy_glWindowPos2dARB;
+PFNGLWINDOWPOS2DVARBPROC pglWindowPos2dvARB=_Lazy_glWindowPos2dvARB;
+PFNGLWINDOWPOS2FARBPROC pglWindowPos2fARB=_Lazy_glWindowPos2fARB;
+PFNGLWINDOWPOS2FVARBPROC pglWindowPos2fvARB=_Lazy_glWindowPos2fvARB;
+PFNGLWINDOWPOS2IARBPROC pglWindowPos2iARB=_Lazy_glWindowPos2iARB;
+PFNGLWINDOWPOS2IVARBPROC pglWindowPos2ivARB=_Lazy_glWindowPos2ivARB;
+PFNGLWINDOWPOS2SARBPROC pglWindowPos2sARB=_Lazy_glWindowPos2sARB;
+PFNGLWINDOWPOS2SVARBPROC pglWindowPos2svARB=_Lazy_glWindowPos2svARB;
+PFNGLWINDOWPOS3DARBPROC pglWindowPos3dARB=_Lazy_glWindowPos3dARB;
+PFNGLWINDOWPOS3DVARBPROC pglWindowPos3dvARB=_Lazy_glWindowPos3dvARB;
+PFNGLWINDOWPOS3FARBPROC pglWindowPos3fARB=_Lazy_glWindowPos3fARB;
+PFNGLWINDOWPOS3FVARBPROC pglWindowPos3fvARB=_Lazy_glWindowPos3fvARB;
+PFNGLWINDOWPOS3IARBPROC pglWindowPos3iARB=_Lazy_glWindowPos3iARB;
+PFNGLWINDOWPOS3IVARBPROC pglWindowPos3ivARB=_Lazy_glWindowPos3ivARB;
+PFNGLWINDOWPOS3SARBPROC pglWindowPos3sARB=_Lazy_glWindowPos3sARB;
+PFNGLWINDOWPOS3SVARBPROC pglWindowPos3svARB=_Lazy_glWindowPos3svARB;
+#endif 
+
+/* GL_ARB_vertex_program */
+
+#ifdef __GLEE_GL_ARB_vertex_program
+void __stdcall _Lazy_glVertexAttrib1dARB(GLuint index, GLdouble x)                        {if (GLeeInit()) glVertexAttrib1dARB(index, x);}
+void __stdcall _Lazy_glVertexAttrib1dvARB(GLuint index, const GLdouble * v)               {if (GLeeInit()) glVertexAttrib1dvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib1fARB(GLuint index, GLfloat x)                         {if (GLeeInit()) glVertexAttrib1fARB(index, x);}
+void __stdcall _Lazy_glVertexAttrib1fvARB(GLuint index, const GLfloat * v)                {if (GLeeInit()) glVertexAttrib1fvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib1sARB(GLuint index, GLshort x)                         {if (GLeeInit()) glVertexAttrib1sARB(index, x);}
+void __stdcall _Lazy_glVertexAttrib1svARB(GLuint index, const GLshort * v)                {if (GLeeInit()) glVertexAttrib1svARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y)            {if (GLeeInit()) glVertexAttrib2dARB(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2dvARB(GLuint index, const GLdouble * v)               {if (GLeeInit()) glVertexAttrib2dvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y)              {if (GLeeInit()) glVertexAttrib2fARB(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2fvARB(GLuint index, const GLfloat * v)                {if (GLeeInit()) glVertexAttrib2fvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y)              {if (GLeeInit()) glVertexAttrib2sARB(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2svARB(GLuint index, const GLshort * v)                {if (GLeeInit()) glVertexAttrib2svARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z)  {if (GLeeInit()) glVertexAttrib3dARB(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3dvARB(GLuint index, const GLdouble * v)               {if (GLeeInit()) glVertexAttrib3dvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z)   {if (GLeeInit()) glVertexAttrib3fARB(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3fvARB(GLuint index, const GLfloat * v)                {if (GLeeInit()) glVertexAttrib3fvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z)   {if (GLeeInit()) glVertexAttrib3sARB(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3svARB(GLuint index, const GLshort * v)                {if (GLeeInit()) glVertexAttrib3svARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NbvARB(GLuint index, const GLbyte * v)                {if (GLeeInit()) glVertexAttrib4NbvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NivARB(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttrib4NivARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NsvARB(GLuint index, const GLshort * v)               {if (GLeeInit()) glVertexAttrib4NsvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)  {if (GLeeInit()) glVertexAttrib4NubARB(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4NubvARB(GLuint index, const GLubyte * v)              {if (GLeeInit()) glVertexAttrib4NubvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NuivARB(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttrib4NuivARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NusvARB(GLuint index, const GLushort * v)             {if (GLeeInit()) glVertexAttrib4NusvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4bvARB(GLuint index, const GLbyte * v)                 {if (GLeeInit()) glVertexAttrib4bvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glVertexAttrib4dARB(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4dvARB(GLuint index, const GLdouble * v)               {if (GLeeInit()) glVertexAttrib4dvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glVertexAttrib4fARB(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4fvARB(GLuint index, const GLfloat * v)                {if (GLeeInit()) glVertexAttrib4fvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4ivARB(GLuint index, const GLint * v)                  {if (GLeeInit()) glVertexAttrib4ivARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)  {if (GLeeInit()) glVertexAttrib4sARB(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4svARB(GLuint index, const GLshort * v)                {if (GLeeInit()) glVertexAttrib4svARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4ubvARB(GLuint index, const GLubyte * v)               {if (GLeeInit()) glVertexAttrib4ubvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4uivARB(GLuint index, const GLuint * v)                {if (GLeeInit()) glVertexAttrib4uivARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4usvARB(GLuint index, const GLushort * v)              {if (GLeeInit()) glVertexAttrib4usvARB(index, v);}
+void __stdcall _Lazy_glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexAttribPointerARB(index, size, type, normalized, stride, pointer);}
+void __stdcall _Lazy_glEnableVertexAttribArrayARB(GLuint index)                           {if (GLeeInit()) glEnableVertexAttribArrayARB(index);}
+void __stdcall _Lazy_glDisableVertexAttribArrayARB(GLuint index)                          {if (GLeeInit()) glDisableVertexAttribArrayARB(index);}
+void __stdcall _Lazy_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid * string)  {if (GLeeInit()) glProgramStringARB(target, format, len, string);}
+void __stdcall _Lazy_glBindProgramARB(GLenum target, GLuint program)                      {if (GLeeInit()) glBindProgramARB(target, program);}
+void __stdcall _Lazy_glDeleteProgramsARB(GLsizei n, const GLuint * programs)              {if (GLeeInit()) glDeleteProgramsARB(n, programs);}
+void __stdcall _Lazy_glGenProgramsARB(GLsizei n, GLuint * programs)                       {if (GLeeInit()) glGenProgramsARB(n, programs);}
+void __stdcall _Lazy_glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glProgramEnvParameter4dARB(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble * params)  {if (GLeeInit()) glProgramEnvParameter4dvARB(target, index, params);}
+void __stdcall _Lazy_glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glProgramEnvParameter4fARB(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat * params)  {if (GLeeInit()) glProgramEnvParameter4fvARB(target, index, params);}
+void __stdcall _Lazy_glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glProgramLocalParameter4dARB(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble * params)  {if (GLeeInit()) glProgramLocalParameter4dvARB(target, index, params);}
+void __stdcall _Lazy_glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glProgramLocalParameter4fARB(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat * params)  {if (GLeeInit()) glProgramLocalParameter4fvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble * params)  {if (GLeeInit()) glGetProgramEnvParameterdvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat * params)  {if (GLeeInit()) glGetProgramEnvParameterfvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble * params)  {if (GLeeInit()) glGetProgramLocalParameterdvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat * params)  {if (GLeeInit()) glGetProgramLocalParameterfvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramivARB(GLenum target, GLenum pname, GLint * params)       {if (GLeeInit()) glGetProgramivARB(target, pname, params);}
+void __stdcall _Lazy_glGetProgramStringARB(GLenum target, GLenum pname, GLvoid * string)  {if (GLeeInit()) glGetProgramStringARB(target, pname, string);}
+void __stdcall _Lazy_glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble * params)  {if (GLeeInit()) glGetVertexAttribdvARB(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetVertexAttribfvARB(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint * params)   {if (GLeeInit()) glGetVertexAttribivARB(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribPointervARB(GLuint index, GLenum pname, GLvoid* * pointer)  {if (GLeeInit()) glGetVertexAttribPointervARB(index, pname, pointer);}
+GLboolean __stdcall _Lazy_glIsProgramARB(GLuint program)                                  {if (GLeeInit()) return glIsProgramARB(program); return (GLboolean)0;}
+PFNGLVERTEXATTRIB1DARBPROC pglVertexAttrib1dARB=_Lazy_glVertexAttrib1dARB;
+PFNGLVERTEXATTRIB1DVARBPROC pglVertexAttrib1dvARB=_Lazy_glVertexAttrib1dvARB;
+PFNGLVERTEXATTRIB1FARBPROC pglVertexAttrib1fARB=_Lazy_glVertexAttrib1fARB;
+PFNGLVERTEXATTRIB1FVARBPROC pglVertexAttrib1fvARB=_Lazy_glVertexAttrib1fvARB;
+PFNGLVERTEXATTRIB1SARBPROC pglVertexAttrib1sARB=_Lazy_glVertexAttrib1sARB;
+PFNGLVERTEXATTRIB1SVARBPROC pglVertexAttrib1svARB=_Lazy_glVertexAttrib1svARB;
+PFNGLVERTEXATTRIB2DARBPROC pglVertexAttrib2dARB=_Lazy_glVertexAttrib2dARB;
+PFNGLVERTEXATTRIB2DVARBPROC pglVertexAttrib2dvARB=_Lazy_glVertexAttrib2dvARB;
+PFNGLVERTEXATTRIB2FARBPROC pglVertexAttrib2fARB=_Lazy_glVertexAttrib2fARB;
+PFNGLVERTEXATTRIB2FVARBPROC pglVertexAttrib2fvARB=_Lazy_glVertexAttrib2fvARB;
+PFNGLVERTEXATTRIB2SARBPROC pglVertexAttrib2sARB=_Lazy_glVertexAttrib2sARB;
+PFNGLVERTEXATTRIB2SVARBPROC pglVertexAttrib2svARB=_Lazy_glVertexAttrib2svARB;
+PFNGLVERTEXATTRIB3DARBPROC pglVertexAttrib3dARB=_Lazy_glVertexAttrib3dARB;
+PFNGLVERTEXATTRIB3DVARBPROC pglVertexAttrib3dvARB=_Lazy_glVertexAttrib3dvARB;
+PFNGLVERTEXATTRIB3FARBPROC pglVertexAttrib3fARB=_Lazy_glVertexAttrib3fARB;
+PFNGLVERTEXATTRIB3FVARBPROC pglVertexAttrib3fvARB=_Lazy_glVertexAttrib3fvARB;
+PFNGLVERTEXATTRIB3SARBPROC pglVertexAttrib3sARB=_Lazy_glVertexAttrib3sARB;
+PFNGLVERTEXATTRIB3SVARBPROC pglVertexAttrib3svARB=_Lazy_glVertexAttrib3svARB;
+PFNGLVERTEXATTRIB4NBVARBPROC pglVertexAttrib4NbvARB=_Lazy_glVertexAttrib4NbvARB;
+PFNGLVERTEXATTRIB4NIVARBPROC pglVertexAttrib4NivARB=_Lazy_glVertexAttrib4NivARB;
+PFNGLVERTEXATTRIB4NSVARBPROC pglVertexAttrib4NsvARB=_Lazy_glVertexAttrib4NsvARB;
+PFNGLVERTEXATTRIB4NUBARBPROC pglVertexAttrib4NubARB=_Lazy_glVertexAttrib4NubARB;
+PFNGLVERTEXATTRIB4NUBVARBPROC pglVertexAttrib4NubvARB=_Lazy_glVertexAttrib4NubvARB;
+PFNGLVERTEXATTRIB4NUIVARBPROC pglVertexAttrib4NuivARB=_Lazy_glVertexAttrib4NuivARB;
+PFNGLVERTEXATTRIB4NUSVARBPROC pglVertexAttrib4NusvARB=_Lazy_glVertexAttrib4NusvARB;
+PFNGLVERTEXATTRIB4BVARBPROC pglVertexAttrib4bvARB=_Lazy_glVertexAttrib4bvARB;
+PFNGLVERTEXATTRIB4DARBPROC pglVertexAttrib4dARB=_Lazy_glVertexAttrib4dARB;
+PFNGLVERTEXATTRIB4DVARBPROC pglVertexAttrib4dvARB=_Lazy_glVertexAttrib4dvARB;
+PFNGLVERTEXATTRIB4FARBPROC pglVertexAttrib4fARB=_Lazy_glVertexAttrib4fARB;
+PFNGLVERTEXATTRIB4FVARBPROC pglVertexAttrib4fvARB=_Lazy_glVertexAttrib4fvARB;
+PFNGLVERTEXATTRIB4IVARBPROC pglVertexAttrib4ivARB=_Lazy_glVertexAttrib4ivARB;
+PFNGLVERTEXATTRIB4SARBPROC pglVertexAttrib4sARB=_Lazy_glVertexAttrib4sARB;
+PFNGLVERTEXATTRIB4SVARBPROC pglVertexAttrib4svARB=_Lazy_glVertexAttrib4svARB;
+PFNGLVERTEXATTRIB4UBVARBPROC pglVertexAttrib4ubvARB=_Lazy_glVertexAttrib4ubvARB;
+PFNGLVERTEXATTRIB4UIVARBPROC pglVertexAttrib4uivARB=_Lazy_glVertexAttrib4uivARB;
+PFNGLVERTEXATTRIB4USVARBPROC pglVertexAttrib4usvARB=_Lazy_glVertexAttrib4usvARB;
+PFNGLVERTEXATTRIBPOINTERARBPROC pglVertexAttribPointerARB=_Lazy_glVertexAttribPointerARB;
+PFNGLENABLEVERTEXATTRIBARRAYARBPROC pglEnableVertexAttribArrayARB=_Lazy_glEnableVertexAttribArrayARB;
+PFNGLDISABLEVERTEXATTRIBARRAYARBPROC pglDisableVertexAttribArrayARB=_Lazy_glDisableVertexAttribArrayARB;
+PFNGLPROGRAMSTRINGARBPROC pglProgramStringARB=_Lazy_glProgramStringARB;
+PFNGLBINDPROGRAMARBPROC pglBindProgramARB=_Lazy_glBindProgramARB;
+PFNGLDELETEPROGRAMSARBPROC pglDeleteProgramsARB=_Lazy_glDeleteProgramsARB;
+PFNGLGENPROGRAMSARBPROC pglGenProgramsARB=_Lazy_glGenProgramsARB;
+PFNGLPROGRAMENVPARAMETER4DARBPROC pglProgramEnvParameter4dARB=_Lazy_glProgramEnvParameter4dARB;
+PFNGLPROGRAMENVPARAMETER4DVARBPROC pglProgramEnvParameter4dvARB=_Lazy_glProgramEnvParameter4dvARB;
+PFNGLPROGRAMENVPARAMETER4FARBPROC pglProgramEnvParameter4fARB=_Lazy_glProgramEnvParameter4fARB;
+PFNGLPROGRAMENVPARAMETER4FVARBPROC pglProgramEnvParameter4fvARB=_Lazy_glProgramEnvParameter4fvARB;
+PFNGLPROGRAMLOCALPARAMETER4DARBPROC pglProgramLocalParameter4dARB=_Lazy_glProgramLocalParameter4dARB;
+PFNGLPROGRAMLOCALPARAMETER4DVARBPROC pglProgramLocalParameter4dvARB=_Lazy_glProgramLocalParameter4dvARB;
+PFNGLPROGRAMLOCALPARAMETER4FARBPROC pglProgramLocalParameter4fARB=_Lazy_glProgramLocalParameter4fARB;
+PFNGLPROGRAMLOCALPARAMETER4FVARBPROC pglProgramLocalParameter4fvARB=_Lazy_glProgramLocalParameter4fvARB;
+PFNGLGETPROGRAMENVPARAMETERDVARBPROC pglGetProgramEnvParameterdvARB=_Lazy_glGetProgramEnvParameterdvARB;
+PFNGLGETPROGRAMENVPARAMETERFVARBPROC pglGetProgramEnvParameterfvARB=_Lazy_glGetProgramEnvParameterfvARB;
+PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC pglGetProgramLocalParameterdvARB=_Lazy_glGetProgramLocalParameterdvARB;
+PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC pglGetProgramLocalParameterfvARB=_Lazy_glGetProgramLocalParameterfvARB;
+PFNGLGETPROGRAMIVARBPROC pglGetProgramivARB=_Lazy_glGetProgramivARB;
+PFNGLGETPROGRAMSTRINGARBPROC pglGetProgramStringARB=_Lazy_glGetProgramStringARB;
+PFNGLGETVERTEXATTRIBDVARBPROC pglGetVertexAttribdvARB=_Lazy_glGetVertexAttribdvARB;
+PFNGLGETVERTEXATTRIBFVARBPROC pglGetVertexAttribfvARB=_Lazy_glGetVertexAttribfvARB;
+PFNGLGETVERTEXATTRIBIVARBPROC pglGetVertexAttribivARB=_Lazy_glGetVertexAttribivARB;
+PFNGLGETVERTEXATTRIBPOINTERVARBPROC pglGetVertexAttribPointervARB=_Lazy_glGetVertexAttribPointervARB;
+PFNGLISPROGRAMARBPROC pglIsProgramARB=_Lazy_glIsProgramARB;
+#endif 
+
+/* GL_ARB_fragment_program */
+
+#ifdef __GLEE_GL_ARB_fragment_program
+#endif 
+
+/* GL_ARB_vertex_buffer_object */
+
+#ifdef __GLEE_GL_ARB_vertex_buffer_object
+void __stdcall _Lazy_glBindBufferARB(GLenum target, GLuint buffer)                        {if (GLeeInit()) glBindBufferARB(target, buffer);}
+void __stdcall _Lazy_glDeleteBuffersARB(GLsizei n, const GLuint * buffers)                {if (GLeeInit()) glDeleteBuffersARB(n, buffers);}
+void __stdcall _Lazy_glGenBuffersARB(GLsizei n, GLuint * buffers)                         {if (GLeeInit()) glGenBuffersARB(n, buffers);}
+GLboolean __stdcall _Lazy_glIsBufferARB(GLuint buffer)                                    {if (GLeeInit()) return glIsBufferARB(buffer); return (GLboolean)0;}
+void __stdcall _Lazy_glBufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage)  {if (GLeeInit()) glBufferDataARB(target, size, data, usage);}
+void __stdcall _Lazy_glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)  {if (GLeeInit()) glBufferSubDataARB(target, offset, size, data);}
+void __stdcall _Lazy_glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data)  {if (GLeeInit()) glGetBufferSubDataARB(target, offset, size, data);}
+GLvoid* __stdcall _Lazy_glMapBufferARB(GLenum target, GLenum access)                      {if (GLeeInit()) return glMapBufferARB(target, access); return (GLvoid*)0;}
+GLboolean __stdcall _Lazy_glUnmapBufferARB(GLenum target)                                 {if (GLeeInit()) return glUnmapBufferARB(target); return (GLboolean)0;}
+void __stdcall _Lazy_glGetBufferParameterivARB(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetBufferParameterivARB(target, pname, params);}
+void __stdcall _Lazy_glGetBufferPointervARB(GLenum target, GLenum pname, GLvoid* * params)  {if (GLeeInit()) glGetBufferPointervARB(target, pname, params);}
+PFNGLBINDBUFFERARBPROC pglBindBufferARB=_Lazy_glBindBufferARB;
+PFNGLDELETEBUFFERSARBPROC pglDeleteBuffersARB=_Lazy_glDeleteBuffersARB;
+PFNGLGENBUFFERSARBPROC pglGenBuffersARB=_Lazy_glGenBuffersARB;
+PFNGLISBUFFERARBPROC pglIsBufferARB=_Lazy_glIsBufferARB;
+PFNGLBUFFERDATAARBPROC pglBufferDataARB=_Lazy_glBufferDataARB;
+PFNGLBUFFERSUBDATAARBPROC pglBufferSubDataARB=_Lazy_glBufferSubDataARB;
+PFNGLGETBUFFERSUBDATAARBPROC pglGetBufferSubDataARB=_Lazy_glGetBufferSubDataARB;
+PFNGLMAPBUFFERARBPROC pglMapBufferARB=_Lazy_glMapBufferARB;
+PFNGLUNMAPBUFFERARBPROC pglUnmapBufferARB=_Lazy_glUnmapBufferARB;
+PFNGLGETBUFFERPARAMETERIVARBPROC pglGetBufferParameterivARB=_Lazy_glGetBufferParameterivARB;
+PFNGLGETBUFFERPOINTERVARBPROC pglGetBufferPointervARB=_Lazy_glGetBufferPointervARB;
+#endif 
+
+/* GL_ARB_occlusion_query */
+
+#ifdef __GLEE_GL_ARB_occlusion_query
+void __stdcall _Lazy_glGenQueriesARB(GLsizei n, GLuint * ids)                             {if (GLeeInit()) glGenQueriesARB(n, ids);}
+void __stdcall _Lazy_glDeleteQueriesARB(GLsizei n, const GLuint * ids)                    {if (GLeeInit()) glDeleteQueriesARB(n, ids);}
+GLboolean __stdcall _Lazy_glIsQueryARB(GLuint id)                                         {if (GLeeInit()) return glIsQueryARB(id); return (GLboolean)0;}
+void __stdcall _Lazy_glBeginQueryARB(GLenum target, GLuint id)                            {if (GLeeInit()) glBeginQueryARB(target, id);}
+void __stdcall _Lazy_glEndQueryARB(GLenum target)                                         {if (GLeeInit()) glEndQueryARB(target);}
+void __stdcall _Lazy_glGetQueryivARB(GLenum target, GLenum pname, GLint * params)         {if (GLeeInit()) glGetQueryivARB(target, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint * params)       {if (GLeeInit()) glGetQueryObjectivARB(id, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint * params)     {if (GLeeInit()) glGetQueryObjectuivARB(id, pname, params);}
+PFNGLGENQUERIESARBPROC pglGenQueriesARB=_Lazy_glGenQueriesARB;
+PFNGLDELETEQUERIESARBPROC pglDeleteQueriesARB=_Lazy_glDeleteQueriesARB;
+PFNGLISQUERYARBPROC pglIsQueryARB=_Lazy_glIsQueryARB;
+PFNGLBEGINQUERYARBPROC pglBeginQueryARB=_Lazy_glBeginQueryARB;
+PFNGLENDQUERYARBPROC pglEndQueryARB=_Lazy_glEndQueryARB;
+PFNGLGETQUERYIVARBPROC pglGetQueryivARB=_Lazy_glGetQueryivARB;
+PFNGLGETQUERYOBJECTIVARBPROC pglGetQueryObjectivARB=_Lazy_glGetQueryObjectivARB;
+PFNGLGETQUERYOBJECTUIVARBPROC pglGetQueryObjectuivARB=_Lazy_glGetQueryObjectuivARB;
+#endif 
+
+/* GL_ARB_shader_objects */
+
+#ifdef __GLEE_GL_ARB_shader_objects
+void __stdcall _Lazy_glDeleteObjectARB(GLhandleARB obj)                                   {if (GLeeInit()) glDeleteObjectARB(obj);}
+GLhandleARB __stdcall _Lazy_glGetHandleARB(GLenum pname)                                  {if (GLeeInit()) return glGetHandleARB(pname); return (GLhandleARB)0;}
+void __stdcall _Lazy_glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj)  {if (GLeeInit()) glDetachObjectARB(containerObj, attachedObj);}
+GLhandleARB __stdcall _Lazy_glCreateShaderObjectARB(GLenum shaderType)                    {if (GLeeInit()) return glCreateShaderObjectARB(shaderType); return (GLhandleARB)0;}
+void __stdcall _Lazy_glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB* * string, const GLint * length)  {if (GLeeInit()) glShaderSourceARB(shaderObj, count, string, length);}
+void __stdcall _Lazy_glCompileShaderARB(GLhandleARB shaderObj)                            {if (GLeeInit()) glCompileShaderARB(shaderObj);}
+GLhandleARB __stdcall _Lazy_glCreateProgramObjectARB(void)                                {if (GLeeInit()) return glCreateProgramObjectARB(); return (GLhandleARB)0;}
+void __stdcall _Lazy_glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj)         {if (GLeeInit()) glAttachObjectARB(containerObj, obj);}
+void __stdcall _Lazy_glLinkProgramARB(GLhandleARB programObj)                             {if (GLeeInit()) glLinkProgramARB(programObj);}
+void __stdcall _Lazy_glUseProgramObjectARB(GLhandleARB programObj)                        {if (GLeeInit()) glUseProgramObjectARB(programObj);}
+void __stdcall _Lazy_glValidateProgramARB(GLhandleARB programObj)                         {if (GLeeInit()) glValidateProgramARB(programObj);}
+void __stdcall _Lazy_glUniform1fARB(GLint location, GLfloat v0)                           {if (GLeeInit()) glUniform1fARB(location, v0);}
+void __stdcall _Lazy_glUniform2fARB(GLint location, GLfloat v0, GLfloat v1)               {if (GLeeInit()) glUniform2fARB(location, v0, v1);}
+void __stdcall _Lazy_glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)   {if (GLeeInit()) glUniform3fARB(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)  {if (GLeeInit()) glUniform4fARB(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1iARB(GLint location, GLint v0)                             {if (GLeeInit()) glUniform1iARB(location, v0);}
+void __stdcall _Lazy_glUniform2iARB(GLint location, GLint v0, GLint v1)                   {if (GLeeInit()) glUniform2iARB(location, v0, v1);}
+void __stdcall _Lazy_glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2)         {if (GLeeInit()) glUniform3iARB(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)  {if (GLeeInit()) glUniform4iARB(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1fvARB(GLint location, GLsizei count, const GLfloat * value)  {if (GLeeInit()) glUniform1fvARB(location, count, value);}
+void __stdcall _Lazy_glUniform2fvARB(GLint location, GLsizei count, const GLfloat * value)  {if (GLeeInit()) glUniform2fvARB(location, count, value);}
+void __stdcall _Lazy_glUniform3fvARB(GLint location, GLsizei count, const GLfloat * value)  {if (GLeeInit()) glUniform3fvARB(location, count, value);}
+void __stdcall _Lazy_glUniform4fvARB(GLint location, GLsizei count, const GLfloat * value)  {if (GLeeInit()) glUniform4fvARB(location, count, value);}
+void __stdcall _Lazy_glUniform1ivARB(GLint location, GLsizei count, const GLint * value)  {if (GLeeInit()) glUniform1ivARB(location, count, value);}
+void __stdcall _Lazy_glUniform2ivARB(GLint location, GLsizei count, const GLint * value)  {if (GLeeInit()) glUniform2ivARB(location, count, value);}
+void __stdcall _Lazy_glUniform3ivARB(GLint location, GLsizei count, const GLint * value)  {if (GLeeInit()) glUniform3ivARB(location, count, value);}
+void __stdcall _Lazy_glUniform4ivARB(GLint location, GLsizei count, const GLint * value)  {if (GLeeInit()) glUniform4ivARB(location, count, value);}
+void __stdcall _Lazy_glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix2fvARB(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix3fvARB(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix4fvARB(location, count, transpose, value);}
+void __stdcall _Lazy_glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetObjectParameterfvARB(obj, pname, params);}
+void __stdcall _Lazy_glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint * params)  {if (GLeeInit()) glGetObjectParameterivARB(obj, pname, params);}
+void __stdcall _Lazy_glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)  {if (GLeeInit()) glGetInfoLogARB(obj, maxLength, length, infoLog);}
+void __stdcall _Lazy_glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj)  {if (GLeeInit()) glGetAttachedObjectsARB(containerObj, maxCount, count, obj);}
+GLint __stdcall _Lazy_glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB * name)  {if (GLeeInit()) return glGetUniformLocationARB(programObj, name); return (GLint)0;}
+void __stdcall _Lazy_glGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)  {if (GLeeInit()) glGetActiveUniformARB(programObj, index, maxLength, length, size, type, name);}
+void __stdcall _Lazy_glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat * params)  {if (GLeeInit()) glGetUniformfvARB(programObj, location, params);}
+void __stdcall _Lazy_glGetUniformivARB(GLhandleARB programObj, GLint location, GLint * params)  {if (GLeeInit()) glGetUniformivARB(programObj, location, params);}
+void __stdcall _Lazy_glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source)  {if (GLeeInit()) glGetShaderSourceARB(obj, maxLength, length, source);}
+PFNGLDELETEOBJECTARBPROC pglDeleteObjectARB=_Lazy_glDeleteObjectARB;
+PFNGLGETHANDLEARBPROC pglGetHandleARB=_Lazy_glGetHandleARB;
+PFNGLDETACHOBJECTARBPROC pglDetachObjectARB=_Lazy_glDetachObjectARB;
+PFNGLCREATESHADEROBJECTARBPROC pglCreateShaderObjectARB=_Lazy_glCreateShaderObjectARB;
+PFNGLSHADERSOURCEARBPROC pglShaderSourceARB=_Lazy_glShaderSourceARB;
+PFNGLCOMPILESHADERARBPROC pglCompileShaderARB=_Lazy_glCompileShaderARB;
+PFNGLCREATEPROGRAMOBJECTARBPROC pglCreateProgramObjectARB=_Lazy_glCreateProgramObjectARB;
+PFNGLATTACHOBJECTARBPROC pglAttachObjectARB=_Lazy_glAttachObjectARB;
+PFNGLLINKPROGRAMARBPROC pglLinkProgramARB=_Lazy_glLinkProgramARB;
+PFNGLUSEPROGRAMOBJECTARBPROC pglUseProgramObjectARB=_Lazy_glUseProgramObjectARB;
+PFNGLVALIDATEPROGRAMARBPROC pglValidateProgramARB=_Lazy_glValidateProgramARB;
+PFNGLUNIFORM1FARBPROC pglUniform1fARB=_Lazy_glUniform1fARB;
+PFNGLUNIFORM2FARBPROC pglUniform2fARB=_Lazy_glUniform2fARB;
+PFNGLUNIFORM3FARBPROC pglUniform3fARB=_Lazy_glUniform3fARB;
+PFNGLUNIFORM4FARBPROC pglUniform4fARB=_Lazy_glUniform4fARB;
+PFNGLUNIFORM1IARBPROC pglUniform1iARB=_Lazy_glUniform1iARB;
+PFNGLUNIFORM2IARBPROC pglUniform2iARB=_Lazy_glUniform2iARB;
+PFNGLUNIFORM3IARBPROC pglUniform3iARB=_Lazy_glUniform3iARB;
+PFNGLUNIFORM4IARBPROC pglUniform4iARB=_Lazy_glUniform4iARB;
+PFNGLUNIFORM1FVARBPROC pglUniform1fvARB=_Lazy_glUniform1fvARB;
+PFNGLUNIFORM2FVARBPROC pglUniform2fvARB=_Lazy_glUniform2fvARB;
+PFNGLUNIFORM3FVARBPROC pglUniform3fvARB=_Lazy_glUniform3fvARB;
+PFNGLUNIFORM4FVARBPROC pglUniform4fvARB=_Lazy_glUniform4fvARB;
+PFNGLUNIFORM1IVARBPROC pglUniform1ivARB=_Lazy_glUniform1ivARB;
+PFNGLUNIFORM2IVARBPROC pglUniform2ivARB=_Lazy_glUniform2ivARB;
+PFNGLUNIFORM3IVARBPROC pglUniform3ivARB=_Lazy_glUniform3ivARB;
+PFNGLUNIFORM4IVARBPROC pglUniform4ivARB=_Lazy_glUniform4ivARB;
+PFNGLUNIFORMMATRIX2FVARBPROC pglUniformMatrix2fvARB=_Lazy_glUniformMatrix2fvARB;
+PFNGLUNIFORMMATRIX3FVARBPROC pglUniformMatrix3fvARB=_Lazy_glUniformMatrix3fvARB;
+PFNGLUNIFORMMATRIX4FVARBPROC pglUniformMatrix4fvARB=_Lazy_glUniformMatrix4fvARB;
+PFNGLGETOBJECTPARAMETERFVARBPROC pglGetObjectParameterfvARB=_Lazy_glGetObjectParameterfvARB;
+PFNGLGETOBJECTPARAMETERIVARBPROC pglGetObjectParameterivARB=_Lazy_glGetObjectParameterivARB;
+PFNGLGETINFOLOGARBPROC pglGetInfoLogARB=_Lazy_glGetInfoLogARB;
+PFNGLGETATTACHEDOBJECTSARBPROC pglGetAttachedObjectsARB=_Lazy_glGetAttachedObjectsARB;
+PFNGLGETUNIFORMLOCATIONARBPROC pglGetUniformLocationARB=_Lazy_glGetUniformLocationARB;
+PFNGLGETACTIVEUNIFORMARBPROC pglGetActiveUniformARB=_Lazy_glGetActiveUniformARB;
+PFNGLGETUNIFORMFVARBPROC pglGetUniformfvARB=_Lazy_glGetUniformfvARB;
+PFNGLGETUNIFORMIVARBPROC pglGetUniformivARB=_Lazy_glGetUniformivARB;
+PFNGLGETSHADERSOURCEARBPROC pglGetShaderSourceARB=_Lazy_glGetShaderSourceARB;
+#endif 
+
+/* GL_ARB_vertex_shader */
+
+#ifdef __GLEE_GL_ARB_vertex_shader
+void __stdcall _Lazy_glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB * name)  {if (GLeeInit()) glBindAttribLocationARB(programObj, index, name);}
+void __stdcall _Lazy_glGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)  {if (GLeeInit()) glGetActiveAttribARB(programObj, index, maxLength, length, size, type, name);}
+GLint __stdcall _Lazy_glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB * name)  {if (GLeeInit()) return glGetAttribLocationARB(programObj, name); return (GLint)0;}
+PFNGLBINDATTRIBLOCATIONARBPROC pglBindAttribLocationARB=_Lazy_glBindAttribLocationARB;
+PFNGLGETACTIVEATTRIBARBPROC pglGetActiveAttribARB=_Lazy_glGetActiveAttribARB;
+PFNGLGETATTRIBLOCATIONARBPROC pglGetAttribLocationARB=_Lazy_glGetAttribLocationARB;
+#endif 
+
+/* GL_ARB_fragment_shader */
+
+#ifdef __GLEE_GL_ARB_fragment_shader
+#endif 
+
+/* GL_ARB_shading_language_100 */
+
+#ifdef __GLEE_GL_ARB_shading_language_100
+#endif 
+
+/* GL_ARB_texture_non_power_of_two */
+
+#ifdef __GLEE_GL_ARB_texture_non_power_of_two
+#endif 
+
+/* GL_ARB_point_sprite */
+
+#ifdef __GLEE_GL_ARB_point_sprite
+#endif 
+
+/* GL_ARB_fragment_program_shadow */
+
+#ifdef __GLEE_GL_ARB_fragment_program_shadow
+#endif 
+
+/* GL_ARB_draw_buffers */
+
+#ifdef __GLEE_GL_ARB_draw_buffers
+void __stdcall _Lazy_glDrawBuffersARB(GLsizei n, const GLenum * bufs)                     {if (GLeeInit()) glDrawBuffersARB(n, bufs);}
+PFNGLDRAWBUFFERSARBPROC pglDrawBuffersARB=_Lazy_glDrawBuffersARB;
+#endif 
+
+/* GL_ARB_texture_rectangle */
+
+#ifdef __GLEE_GL_ARB_texture_rectangle
+#endif 
+
+/* GL_ARB_color_buffer_float */
+
+#ifdef __GLEE_GL_ARB_color_buffer_float
+void __stdcall _Lazy_glClampColorARB(GLenum target, GLenum clamp)                         {if (GLeeInit()) glClampColorARB(target, clamp);}
+PFNGLCLAMPCOLORARBPROC pglClampColorARB=_Lazy_glClampColorARB;
+#endif 
+
+/* GL_ARB_half_float_pixel */
+
+#ifdef __GLEE_GL_ARB_half_float_pixel
+#endif 
+
+/* GL_ARB_texture_float */
+
+#ifdef __GLEE_GL_ARB_texture_float
+#endif 
+
+/* GL_ARB_pixel_buffer_object */
+
+#ifdef __GLEE_GL_ARB_pixel_buffer_object
+#endif 
+
+/* GL_EXT_abgr */
+
+#ifdef __GLEE_GL_EXT_abgr
+#endif 
+
+/* GL_EXT_blend_color */
+
+#ifdef __GLEE_GL_EXT_blend_color
+void __stdcall _Lazy_glBlendColorEXT(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)  {if (GLeeInit()) glBlendColorEXT(red, green, blue, alpha);}
+PFNGLBLENDCOLOREXTPROC pglBlendColorEXT=_Lazy_glBlendColorEXT;
+#endif 
+
+/* GL_EXT_polygon_offset */
+
+#ifdef __GLEE_GL_EXT_polygon_offset
+void __stdcall _Lazy_glPolygonOffsetEXT(GLfloat factor, GLfloat bias)                     {if (GLeeInit()) glPolygonOffsetEXT(factor, bias);}
+PFNGLPOLYGONOFFSETEXTPROC pglPolygonOffsetEXT=_Lazy_glPolygonOffsetEXT;
+#endif 
+
+/* GL_EXT_texture */
+
+#ifdef __GLEE_GL_EXT_texture
+#endif 
+
+/* GL_EXT_texture3D */
+
+#ifdef __GLEE_GL_EXT_texture3D
+void __stdcall _Lazy_glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels);}
+void __stdcall _Lazy_glTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);}
+PFNGLTEXIMAGE3DEXTPROC pglTexImage3DEXT=_Lazy_glTexImage3DEXT;
+PFNGLTEXSUBIMAGE3DEXTPROC pglTexSubImage3DEXT=_Lazy_glTexSubImage3DEXT;
+#endif 
+
+/* GL_SGIS_texture_filter4 */
+
+#ifdef __GLEE_GL_SGIS_texture_filter4
+void __stdcall _Lazy_glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat * weights)  {if (GLeeInit()) glGetTexFilterFuncSGIS(target, filter, weights);}
+void __stdcall _Lazy_glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights)  {if (GLeeInit()) glTexFilterFuncSGIS(target, filter, n, weights);}
+PFNGLGETTEXFILTERFUNCSGISPROC pglGetTexFilterFuncSGIS=_Lazy_glGetTexFilterFuncSGIS;
+PFNGLTEXFILTERFUNCSGISPROC pglTexFilterFuncSGIS=_Lazy_glTexFilterFuncSGIS;
+#endif 
+
+/* GL_EXT_subtexture */
+
+#ifdef __GLEE_GL_EXT_subtexture
+void __stdcall _Lazy_glTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage1DEXT(target, level, xoffset, width, format, type, pixels);}
+void __stdcall _Lazy_glTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels);}
+PFNGLTEXSUBIMAGE1DEXTPROC pglTexSubImage1DEXT=_Lazy_glTexSubImage1DEXT;
+PFNGLTEXSUBIMAGE2DEXTPROC pglTexSubImage2DEXT=_Lazy_glTexSubImage2DEXT;
+#endif 
+
+/* GL_EXT_copy_texture */
+
+#ifdef __GLEE_GL_EXT_copy_texture
+void __stdcall _Lazy_glCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)  {if (GLeeInit()) glCopyTexImage1DEXT(target, level, internalformat, x, y, width, border);}
+void __stdcall _Lazy_glCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)  {if (GLeeInit()) glCopyTexImage2DEXT(target, level, internalformat, x, y, width, height, border);}
+void __stdcall _Lazy_glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyTexSubImage1DEXT(target, level, xoffset, x, y, width);}
+void __stdcall _Lazy_glCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyTexSubImage2DEXT(target, level, xoffset, yoffset, x, y, width, height);}
+void __stdcall _Lazy_glCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, x, y, width, height);}
+PFNGLCOPYTEXIMAGE1DEXTPROC pglCopyTexImage1DEXT=_Lazy_glCopyTexImage1DEXT;
+PFNGLCOPYTEXIMAGE2DEXTPROC pglCopyTexImage2DEXT=_Lazy_glCopyTexImage2DEXT;
+PFNGLCOPYTEXSUBIMAGE1DEXTPROC pglCopyTexSubImage1DEXT=_Lazy_glCopyTexSubImage1DEXT;
+PFNGLCOPYTEXSUBIMAGE2DEXTPROC pglCopyTexSubImage2DEXT=_Lazy_glCopyTexSubImage2DEXT;
+PFNGLCOPYTEXSUBIMAGE3DEXTPROC pglCopyTexSubImage3DEXT=_Lazy_glCopyTexSubImage3DEXT;
+#endif 
+
+/* GL_EXT_histogram */
+
+#ifdef __GLEE_GL_EXT_histogram
+void __stdcall _Lazy_glGetHistogramEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)  {if (GLeeInit()) glGetHistogramEXT(target, reset, format, type, values);}
+void __stdcall _Lazy_glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetHistogramParameterfvEXT(target, pname, params);}
+void __stdcall _Lazy_glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetHistogramParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetMinmaxEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)  {if (GLeeInit()) glGetMinmaxEXT(target, reset, format, type, values);}
+void __stdcall _Lazy_glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetMinmaxParameterfvEXT(target, pname, params);}
+void __stdcall _Lazy_glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetMinmaxParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)  {if (GLeeInit()) glHistogramEXT(target, width, internalformat, sink);}
+void __stdcall _Lazy_glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean sink)    {if (GLeeInit()) glMinmaxEXT(target, internalformat, sink);}
+void __stdcall _Lazy_glResetHistogramEXT(GLenum target)                                   {if (GLeeInit()) glResetHistogramEXT(target);}
+void __stdcall _Lazy_glResetMinmaxEXT(GLenum target)                                      {if (GLeeInit()) glResetMinmaxEXT(target);}
+PFNGLGETHISTOGRAMEXTPROC pglGetHistogramEXT=_Lazy_glGetHistogramEXT;
+PFNGLGETHISTOGRAMPARAMETERFVEXTPROC pglGetHistogramParameterfvEXT=_Lazy_glGetHistogramParameterfvEXT;
+PFNGLGETHISTOGRAMPARAMETERIVEXTPROC pglGetHistogramParameterivEXT=_Lazy_glGetHistogramParameterivEXT;
+PFNGLGETMINMAXEXTPROC pglGetMinmaxEXT=_Lazy_glGetMinmaxEXT;
+PFNGLGETMINMAXPARAMETERFVEXTPROC pglGetMinmaxParameterfvEXT=_Lazy_glGetMinmaxParameterfvEXT;
+PFNGLGETMINMAXPARAMETERIVEXTPROC pglGetMinmaxParameterivEXT=_Lazy_glGetMinmaxParameterivEXT;
+PFNGLHISTOGRAMEXTPROC pglHistogramEXT=_Lazy_glHistogramEXT;
+PFNGLMINMAXEXTPROC pglMinmaxEXT=_Lazy_glMinmaxEXT;
+PFNGLRESETHISTOGRAMEXTPROC pglResetHistogramEXT=_Lazy_glResetHistogramEXT;
+PFNGLRESETMINMAXEXTPROC pglResetMinmaxEXT=_Lazy_glResetMinmaxEXT;
+#endif 
+
+/* GL_EXT_convolution */
+
+#ifdef __GLEE_GL_EXT_convolution
+void __stdcall _Lazy_glConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)  {if (GLeeInit()) glConvolutionFilter1DEXT(target, internalformat, width, format, type, image);}
+void __stdcall _Lazy_glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)  {if (GLeeInit()) glConvolutionFilter2DEXT(target, internalformat, width, height, format, type, image);}
+void __stdcall _Lazy_glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params)  {if (GLeeInit()) glConvolutionParameterfEXT(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glConvolutionParameterfvEXT(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params)  {if (GLeeInit()) glConvolutionParameteriEXT(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glConvolutionParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyConvolutionFilter1DEXT(target, internalformat, x, y, width);}
+void __stdcall _Lazy_glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyConvolutionFilter2DEXT(target, internalformat, x, y, width, height);}
+void __stdcall _Lazy_glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid * image)  {if (GLeeInit()) glGetConvolutionFilterEXT(target, format, type, image);}
+void __stdcall _Lazy_glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetConvolutionParameterfvEXT(target, pname, params);}
+void __stdcall _Lazy_glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetConvolutionParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)  {if (GLeeInit()) glGetSeparableFilterEXT(target, format, type, row, column, span);}
+void __stdcall _Lazy_glSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)  {if (GLeeInit()) glSeparableFilter2DEXT(target, internalformat, width, height, format, type, row, column);}
+PFNGLCONVOLUTIONFILTER1DEXTPROC pglConvolutionFilter1DEXT=_Lazy_glConvolutionFilter1DEXT;
+PFNGLCONVOLUTIONFILTER2DEXTPROC pglConvolutionFilter2DEXT=_Lazy_glConvolutionFilter2DEXT;
+PFNGLCONVOLUTIONPARAMETERFEXTPROC pglConvolutionParameterfEXT=_Lazy_glConvolutionParameterfEXT;
+PFNGLCONVOLUTIONPARAMETERFVEXTPROC pglConvolutionParameterfvEXT=_Lazy_glConvolutionParameterfvEXT;
+PFNGLCONVOLUTIONPARAMETERIEXTPROC pglConvolutionParameteriEXT=_Lazy_glConvolutionParameteriEXT;
+PFNGLCONVOLUTIONPARAMETERIVEXTPROC pglConvolutionParameterivEXT=_Lazy_glConvolutionParameterivEXT;
+PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC pglCopyConvolutionFilter1DEXT=_Lazy_glCopyConvolutionFilter1DEXT;
+PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC pglCopyConvolutionFilter2DEXT=_Lazy_glCopyConvolutionFilter2DEXT;
+PFNGLGETCONVOLUTIONFILTEREXTPROC pglGetConvolutionFilterEXT=_Lazy_glGetConvolutionFilterEXT;
+PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC pglGetConvolutionParameterfvEXT=_Lazy_glGetConvolutionParameterfvEXT;
+PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC pglGetConvolutionParameterivEXT=_Lazy_glGetConvolutionParameterivEXT;
+PFNGLGETSEPARABLEFILTEREXTPROC pglGetSeparableFilterEXT=_Lazy_glGetSeparableFilterEXT;
+PFNGLSEPARABLEFILTER2DEXTPROC pglSeparableFilter2DEXT=_Lazy_glSeparableFilter2DEXT;
+#endif 
+
+/* GL_SGI_color_matrix */
+
+#ifdef __GLEE_GL_SGI_color_matrix
+#endif 
+
+/* GL_SGI_color_table */
+
+#ifdef __GLEE_GL_SGI_color_table
+void __stdcall _Lazy_glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)  {if (GLeeInit()) glColorTableSGI(target, internalformat, width, format, type, table);}
+void __stdcall _Lazy_glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glColorTableParameterfvSGI(target, pname, params);}
+void __stdcall _Lazy_glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glColorTableParameterivSGI(target, pname, params);}
+void __stdcall _Lazy_glCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyColorTableSGI(target, internalformat, x, y, width);}
+void __stdcall _Lazy_glGetColorTableSGI(GLenum target, GLenum format, GLenum type, GLvoid * table)  {if (GLeeInit()) glGetColorTableSGI(target, format, type, table);}
+void __stdcall _Lazy_glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetColorTableParameterfvSGI(target, pname, params);}
+void __stdcall _Lazy_glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetColorTableParameterivSGI(target, pname, params);}
+PFNGLCOLORTABLESGIPROC pglColorTableSGI=_Lazy_glColorTableSGI;
+PFNGLCOLORTABLEPARAMETERFVSGIPROC pglColorTableParameterfvSGI=_Lazy_glColorTableParameterfvSGI;
+PFNGLCOLORTABLEPARAMETERIVSGIPROC pglColorTableParameterivSGI=_Lazy_glColorTableParameterivSGI;
+PFNGLCOPYCOLORTABLESGIPROC pglCopyColorTableSGI=_Lazy_glCopyColorTableSGI;
+PFNGLGETCOLORTABLESGIPROC pglGetColorTableSGI=_Lazy_glGetColorTableSGI;
+PFNGLGETCOLORTABLEPARAMETERFVSGIPROC pglGetColorTableParameterfvSGI=_Lazy_glGetColorTableParameterfvSGI;
+PFNGLGETCOLORTABLEPARAMETERIVSGIPROC pglGetColorTableParameterivSGI=_Lazy_glGetColorTableParameterivSGI;
+#endif 
+
+/* GL_SGIS_pixel_texture */
+
+#ifdef __GLEE_GL_SGIS_pixel_texture
+void __stdcall _Lazy_glPixelTexGenParameteriSGIS(GLenum pname, GLint param)               {if (GLeeInit()) glPixelTexGenParameteriSGIS(pname, param);}
+void __stdcall _Lazy_glPixelTexGenParameterivSGIS(GLenum pname, const GLint * params)     {if (GLeeInit()) glPixelTexGenParameterivSGIS(pname, params);}
+void __stdcall _Lazy_glPixelTexGenParameterfSGIS(GLenum pname, GLfloat param)             {if (GLeeInit()) glPixelTexGenParameterfSGIS(pname, param);}
+void __stdcall _Lazy_glPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat * params)   {if (GLeeInit()) glPixelTexGenParameterfvSGIS(pname, params);}
+void __stdcall _Lazy_glGetPixelTexGenParameterivSGIS(GLenum pname, GLint * params)        {if (GLeeInit()) glGetPixelTexGenParameterivSGIS(pname, params);}
+void __stdcall _Lazy_glGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat * params)      {if (GLeeInit()) glGetPixelTexGenParameterfvSGIS(pname, params);}
+PFNGLPIXELTEXGENPARAMETERISGISPROC pglPixelTexGenParameteriSGIS=_Lazy_glPixelTexGenParameteriSGIS;
+PFNGLPIXELTEXGENPARAMETERIVSGISPROC pglPixelTexGenParameterivSGIS=_Lazy_glPixelTexGenParameterivSGIS;
+PFNGLPIXELTEXGENPARAMETERFSGISPROC pglPixelTexGenParameterfSGIS=_Lazy_glPixelTexGenParameterfSGIS;
+PFNGLPIXELTEXGENPARAMETERFVSGISPROC pglPixelTexGenParameterfvSGIS=_Lazy_glPixelTexGenParameterfvSGIS;
+PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC pglGetPixelTexGenParameterivSGIS=_Lazy_glGetPixelTexGenParameterivSGIS;
+PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC pglGetPixelTexGenParameterfvSGIS=_Lazy_glGetPixelTexGenParameterfvSGIS;
+#endif 
+
+/* GL_SGIX_pixel_texture */
+
+#ifdef __GLEE_GL_SGIX_pixel_texture
+void __stdcall _Lazy_glPixelTexGenSGIX(GLenum mode)                                       {if (GLeeInit()) glPixelTexGenSGIX(mode);}
+PFNGLPIXELTEXGENSGIXPROC pglPixelTexGenSGIX=_Lazy_glPixelTexGenSGIX;
+#endif 
+
+/* GL_SGIS_texture4D */
+
+#ifdef __GLEE_GL_SGIS_texture4D
+void __stdcall _Lazy_glTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexImage4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels);}
+void __stdcall _Lazy_glTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels);}
+PFNGLTEXIMAGE4DSGISPROC pglTexImage4DSGIS=_Lazy_glTexImage4DSGIS;
+PFNGLTEXSUBIMAGE4DSGISPROC pglTexSubImage4DSGIS=_Lazy_glTexSubImage4DSGIS;
+#endif 
+
+/* GL_SGI_texture_color_table */
+
+#ifdef __GLEE_GL_SGI_texture_color_table
+#endif 
+
+/* GL_EXT_cmyka */
+
+#ifdef __GLEE_GL_EXT_cmyka
+#endif 
+
+/* GL_EXT_texture_object */
+
+#ifdef __GLEE_GL_EXT_texture_object
+GLboolean __stdcall _Lazy_glAreTexturesResidentEXT(GLsizei n, const GLuint * textures, GLboolean * residences)  {if (GLeeInit()) return glAreTexturesResidentEXT(n, textures, residences); return (GLboolean)0;}
+void __stdcall _Lazy_glBindTextureEXT(GLenum target, GLuint texture)                      {if (GLeeInit()) glBindTextureEXT(target, texture);}
+void __stdcall _Lazy_glDeleteTexturesEXT(GLsizei n, const GLuint * textures)              {if (GLeeInit()) glDeleteTexturesEXT(n, textures);}
+void __stdcall _Lazy_glGenTexturesEXT(GLsizei n, GLuint * textures)                       {if (GLeeInit()) glGenTexturesEXT(n, textures);}
+GLboolean __stdcall _Lazy_glIsTextureEXT(GLuint texture)                                  {if (GLeeInit()) return glIsTextureEXT(texture); return (GLboolean)0;}
+void __stdcall _Lazy_glPrioritizeTexturesEXT(GLsizei n, const GLuint * textures, const GLclampf * priorities)  {if (GLeeInit()) glPrioritizeTexturesEXT(n, textures, priorities);}
+PFNGLARETEXTURESRESIDENTEXTPROC pglAreTexturesResidentEXT=_Lazy_glAreTexturesResidentEXT;
+PFNGLBINDTEXTUREEXTPROC pglBindTextureEXT=_Lazy_glBindTextureEXT;
+PFNGLDELETETEXTURESEXTPROC pglDeleteTexturesEXT=_Lazy_glDeleteTexturesEXT;
+PFNGLGENTEXTURESEXTPROC pglGenTexturesEXT=_Lazy_glGenTexturesEXT;
+PFNGLISTEXTUREEXTPROC pglIsTextureEXT=_Lazy_glIsTextureEXT;
+PFNGLPRIORITIZETEXTURESEXTPROC pglPrioritizeTexturesEXT=_Lazy_glPrioritizeTexturesEXT;
+#endif 
+
+/* GL_SGIS_detail_texture */
+
+#ifdef __GLEE_GL_SGIS_detail_texture
+void __stdcall _Lazy_glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat * points)  {if (GLeeInit()) glDetailTexFuncSGIS(target, n, points);}
+void __stdcall _Lazy_glGetDetailTexFuncSGIS(GLenum target, GLfloat * points)              {if (GLeeInit()) glGetDetailTexFuncSGIS(target, points);}
+PFNGLDETAILTEXFUNCSGISPROC pglDetailTexFuncSGIS=_Lazy_glDetailTexFuncSGIS;
+PFNGLGETDETAILTEXFUNCSGISPROC pglGetDetailTexFuncSGIS=_Lazy_glGetDetailTexFuncSGIS;
+#endif 
+
+/* GL_SGIS_sharpen_texture */
+
+#ifdef __GLEE_GL_SGIS_sharpen_texture
+void __stdcall _Lazy_glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat * points)  {if (GLeeInit()) glSharpenTexFuncSGIS(target, n, points);}
+void __stdcall _Lazy_glGetSharpenTexFuncSGIS(GLenum target, GLfloat * points)             {if (GLeeInit()) glGetSharpenTexFuncSGIS(target, points);}
+PFNGLSHARPENTEXFUNCSGISPROC pglSharpenTexFuncSGIS=_Lazy_glSharpenTexFuncSGIS;
+PFNGLGETSHARPENTEXFUNCSGISPROC pglGetSharpenTexFuncSGIS=_Lazy_glGetSharpenTexFuncSGIS;
+#endif 
+
+/* GL_EXT_packed_pixels */
+
+#ifdef __GLEE_GL_EXT_packed_pixels
+#endif 
+
+/* GL_SGIS_texture_lod */
+
+#ifdef __GLEE_GL_SGIS_texture_lod
+#endif 
+
+/* GL_SGIS_multisample */
+
+#ifdef __GLEE_GL_SGIS_multisample
+void __stdcall _Lazy_glSampleMaskSGIS(GLclampf value, GLboolean invert)                   {if (GLeeInit()) glSampleMaskSGIS(value, invert);}
+void __stdcall _Lazy_glSamplePatternSGIS(GLenum pattern)                                  {if (GLeeInit()) glSamplePatternSGIS(pattern);}
+PFNGLSAMPLEMASKSGISPROC pglSampleMaskSGIS=_Lazy_glSampleMaskSGIS;
+PFNGLSAMPLEPATTERNSGISPROC pglSamplePatternSGIS=_Lazy_glSamplePatternSGIS;
+#endif 
+
+/* GL_EXT_rescale_normal */
+
+#ifdef __GLEE_GL_EXT_rescale_normal
+#endif 
+
+/* GL_EXT_vertex_array */
+
+#ifdef __GLEE_GL_EXT_vertex_array
+void __stdcall _Lazy_glArrayElementEXT(GLint i)                                           {if (GLeeInit()) glArrayElementEXT(i);}
+void __stdcall _Lazy_glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glColorPointerEXT(size, type, stride, count, pointer);}
+void __stdcall _Lazy_glDrawArraysEXT(GLenum mode, GLint first, GLsizei count)             {if (GLeeInit()) glDrawArraysEXT(mode, first, count);}
+void __stdcall _Lazy_glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean * pointer)  {if (GLeeInit()) glEdgeFlagPointerEXT(stride, count, pointer);}
+void __stdcall _Lazy_glGetPointervEXT(GLenum pname, GLvoid* * params)                     {if (GLeeInit()) glGetPointervEXT(pname, params);}
+void __stdcall _Lazy_glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glIndexPointerEXT(type, stride, count, pointer);}
+void __stdcall _Lazy_glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glNormalPointerEXT(type, stride, count, pointer);}
+void __stdcall _Lazy_glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glTexCoordPointerEXT(size, type, stride, count, pointer);}
+void __stdcall _Lazy_glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glVertexPointerEXT(size, type, stride, count, pointer);}
+PFNGLARRAYELEMENTEXTPROC pglArrayElementEXT=_Lazy_glArrayElementEXT;
+PFNGLCOLORPOINTEREXTPROC pglColorPointerEXT=_Lazy_glColorPointerEXT;
+PFNGLDRAWARRAYSEXTPROC pglDrawArraysEXT=_Lazy_glDrawArraysEXT;
+PFNGLEDGEFLAGPOINTEREXTPROC pglEdgeFlagPointerEXT=_Lazy_glEdgeFlagPointerEXT;
+PFNGLGETPOINTERVEXTPROC pglGetPointervEXT=_Lazy_glGetPointervEXT;
+PFNGLINDEXPOINTEREXTPROC pglIndexPointerEXT=_Lazy_glIndexPointerEXT;
+PFNGLNORMALPOINTEREXTPROC pglNormalPointerEXT=_Lazy_glNormalPointerEXT;
+PFNGLTEXCOORDPOINTEREXTPROC pglTexCoordPointerEXT=_Lazy_glTexCoordPointerEXT;
+PFNGLVERTEXPOINTEREXTPROC pglVertexPointerEXT=_Lazy_glVertexPointerEXT;
+#endif 
+
+/* GL_EXT_misc_attribute */
+
+#ifdef __GLEE_GL_EXT_misc_attribute
+#endif 
+
+/* GL_SGIS_generate_mipmap */
+
+#ifdef __GLEE_GL_SGIS_generate_mipmap
+#endif 
+
+/* GL_SGIX_clipmap */
+
+#ifdef __GLEE_GL_SGIX_clipmap
+#endif 
+
+/* GL_SGIX_shadow */
+
+#ifdef __GLEE_GL_SGIX_shadow
+#endif 
+
+/* GL_SGIS_texture_edge_clamp */
+
+#ifdef __GLEE_GL_SGIS_texture_edge_clamp
+#endif 
+
+/* GL_SGIS_texture_border_clamp */
+
+#ifdef __GLEE_GL_SGIS_texture_border_clamp
+#endif 
+
+/* GL_EXT_blend_minmax */
+
+#ifdef __GLEE_GL_EXT_blend_minmax
+void __stdcall _Lazy_glBlendEquationEXT(GLenum mode)                                      {if (GLeeInit()) glBlendEquationEXT(mode);}
+PFNGLBLENDEQUATIONEXTPROC pglBlendEquationEXT=_Lazy_glBlendEquationEXT;
+#endif 
+
+/* GL_EXT_blend_subtract */
+
+#ifdef __GLEE_GL_EXT_blend_subtract
+#endif 
+
+/* GL_EXT_blend_logic_op */
+
+#ifdef __GLEE_GL_EXT_blend_logic_op
+#endif 
+
+/* GL_SGIX_interlace */
+
+#ifdef __GLEE_GL_SGIX_interlace
+#endif 
+
+/* GL_SGIX_pixel_tiles */
+
+#ifdef __GLEE_GL_SGIX_pixel_tiles
+#endif 
+
+/* GL_SGIS_texture_select */
+
+#ifdef __GLEE_GL_SGIS_texture_select
+#endif 
+
+/* GL_SGIX_sprite */
+
+#ifdef __GLEE_GL_SGIX_sprite
+void __stdcall _Lazy_glSpriteParameterfSGIX(GLenum pname, GLfloat param)                  {if (GLeeInit()) glSpriteParameterfSGIX(pname, param);}
+void __stdcall _Lazy_glSpriteParameterfvSGIX(GLenum pname, const GLfloat * params)        {if (GLeeInit()) glSpriteParameterfvSGIX(pname, params);}
+void __stdcall _Lazy_glSpriteParameteriSGIX(GLenum pname, GLint param)                    {if (GLeeInit()) glSpriteParameteriSGIX(pname, param);}
+void __stdcall _Lazy_glSpriteParameterivSGIX(GLenum pname, const GLint * params)          {if (GLeeInit()) glSpriteParameterivSGIX(pname, params);}
+PFNGLSPRITEPARAMETERFSGIXPROC pglSpriteParameterfSGIX=_Lazy_glSpriteParameterfSGIX;
+PFNGLSPRITEPARAMETERFVSGIXPROC pglSpriteParameterfvSGIX=_Lazy_glSpriteParameterfvSGIX;
+PFNGLSPRITEPARAMETERISGIXPROC pglSpriteParameteriSGIX=_Lazy_glSpriteParameteriSGIX;
+PFNGLSPRITEPARAMETERIVSGIXPROC pglSpriteParameterivSGIX=_Lazy_glSpriteParameterivSGIX;
+#endif 
+
+/* GL_SGIX_texture_multi_buffer */
+
+#ifdef __GLEE_GL_SGIX_texture_multi_buffer
+#endif 
+
+/* GL_EXT_point_parameters */
+
+#ifdef __GLEE_GL_EXT_point_parameters
+void __stdcall _Lazy_glPointParameterfEXT(GLenum pname, GLfloat param)                    {if (GLeeInit()) glPointParameterfEXT(pname, param);}
+void __stdcall _Lazy_glPointParameterfvEXT(GLenum pname, const GLfloat * params)          {if (GLeeInit()) glPointParameterfvEXT(pname, params);}
+PFNGLPOINTPARAMETERFEXTPROC pglPointParameterfEXT=_Lazy_glPointParameterfEXT;
+PFNGLPOINTPARAMETERFVEXTPROC pglPointParameterfvEXT=_Lazy_glPointParameterfvEXT;
+#endif 
+
+/* GL_SGIS_point_parameters */
+
+#ifdef __GLEE_GL_SGIS_point_parameters
+void __stdcall _Lazy_glPointParameterfSGIS(GLenum pname, GLfloat param)                   {if (GLeeInit()) glPointParameterfSGIS(pname, param);}
+void __stdcall _Lazy_glPointParameterfvSGIS(GLenum pname, const GLfloat * params)         {if (GLeeInit()) glPointParameterfvSGIS(pname, params);}
+PFNGLPOINTPARAMETERFSGISPROC pglPointParameterfSGIS=_Lazy_glPointParameterfSGIS;
+PFNGLPOINTPARAMETERFVSGISPROC pglPointParameterfvSGIS=_Lazy_glPointParameterfvSGIS;
+#endif 
+
+/* GL_SGIX_instruments */
+
+#ifdef __GLEE_GL_SGIX_instruments
+GLint __stdcall _Lazy_glGetInstrumentsSGIX(void)                                          {if (GLeeInit()) return glGetInstrumentsSGIX(); return (GLint)0;}
+void __stdcall _Lazy_glInstrumentsBufferSGIX(GLsizei size, GLint * buffer)                {if (GLeeInit()) glInstrumentsBufferSGIX(size, buffer);}
+GLint __stdcall _Lazy_glPollInstrumentsSGIX(GLint * marker_p)                             {if (GLeeInit()) return glPollInstrumentsSGIX(marker_p); return (GLint)0;}
+void __stdcall _Lazy_glReadInstrumentsSGIX(GLint marker)                                  {if (GLeeInit()) glReadInstrumentsSGIX(marker);}
+void __stdcall _Lazy_glStartInstrumentsSGIX(void)                                         {if (GLeeInit()) glStartInstrumentsSGIX();}
+void __stdcall _Lazy_glStopInstrumentsSGIX(GLint marker)                                  {if (GLeeInit()) glStopInstrumentsSGIX(marker);}
+PFNGLGETINSTRUMENTSSGIXPROC pglGetInstrumentsSGIX=_Lazy_glGetInstrumentsSGIX;
+PFNGLINSTRUMENTSBUFFERSGIXPROC pglInstrumentsBufferSGIX=_Lazy_glInstrumentsBufferSGIX;
+PFNGLPOLLINSTRUMENTSSGIXPROC pglPollInstrumentsSGIX=_Lazy_glPollInstrumentsSGIX;
+PFNGLREADINSTRUMENTSSGIXPROC pglReadInstrumentsSGIX=_Lazy_glReadInstrumentsSGIX;
+PFNGLSTARTINSTRUMENTSSGIXPROC pglStartInstrumentsSGIX=_Lazy_glStartInstrumentsSGIX;
+PFNGLSTOPINSTRUMENTSSGIXPROC pglStopInstrumentsSGIX=_Lazy_glStopInstrumentsSGIX;
+#endif 
+
+/* GL_SGIX_texture_scale_bias */
+
+#ifdef __GLEE_GL_SGIX_texture_scale_bias
+#endif 
+
+/* GL_SGIX_framezoom */
+
+#ifdef __GLEE_GL_SGIX_framezoom
+void __stdcall _Lazy_glFrameZoomSGIX(GLint factor)                                        {if (GLeeInit()) glFrameZoomSGIX(factor);}
+PFNGLFRAMEZOOMSGIXPROC pglFrameZoomSGIX=_Lazy_glFrameZoomSGIX;
+#endif 
+
+/* GL_SGIX_tag_sample_buffer */
+
+#ifdef __GLEE_GL_SGIX_tag_sample_buffer
+void __stdcall _Lazy_glTagSampleBufferSGIX(void)                                          {if (GLeeInit()) glTagSampleBufferSGIX();}
+PFNGLTAGSAMPLEBUFFERSGIXPROC pglTagSampleBufferSGIX=_Lazy_glTagSampleBufferSGIX;
+#endif 
+
+/* GL_FfdMaskSGIX */
+
+#ifdef __GLEE_GL_FfdMaskSGIX
+#endif 
+
+/* GL_SGIX_polynomial_ffd */
+
+#ifdef __GLEE_GL_SGIX_polynomial_ffd
+void __stdcall _Lazy_glDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble * points)  {if (GLeeInit()) glDeformationMap3dSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points);}
+void __stdcall _Lazy_glDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat * points)  {if (GLeeInit()) glDeformationMap3fSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points);}
+void __stdcall _Lazy_glDeformSGIX(GLbitfield mask)                                        {if (GLeeInit()) glDeformSGIX(mask);}
+void __stdcall _Lazy_glLoadIdentityDeformationMapSGIX(GLbitfield mask)                    {if (GLeeInit()) glLoadIdentityDeformationMapSGIX(mask);}
+PFNGLDEFORMATIONMAP3DSGIXPROC pglDeformationMap3dSGIX=_Lazy_glDeformationMap3dSGIX;
+PFNGLDEFORMATIONMAP3FSGIXPROC pglDeformationMap3fSGIX=_Lazy_glDeformationMap3fSGIX;
+PFNGLDEFORMSGIXPROC pglDeformSGIX=_Lazy_glDeformSGIX;
+PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC pglLoadIdentityDeformationMapSGIX=_Lazy_glLoadIdentityDeformationMapSGIX;
+#endif 
+
+/* GL_SGIX_reference_plane */
+
+#ifdef __GLEE_GL_SGIX_reference_plane
+void __stdcall _Lazy_glReferencePlaneSGIX(const GLdouble * equation)                      {if (GLeeInit()) glReferencePlaneSGIX(equation);}
+PFNGLREFERENCEPLANESGIXPROC pglReferencePlaneSGIX=_Lazy_glReferencePlaneSGIX;
+#endif 
+
+/* GL_SGIX_flush_raster */
+
+#ifdef __GLEE_GL_SGIX_flush_raster
+void __stdcall _Lazy_glFlushRasterSGIX(void)                                              {if (GLeeInit()) glFlushRasterSGIX();}
+PFNGLFLUSHRASTERSGIXPROC pglFlushRasterSGIX=_Lazy_glFlushRasterSGIX;
+#endif 
+
+/* GL_SGIX_depth_texture */
+
+#ifdef __GLEE_GL_SGIX_depth_texture
+#endif 
+
+/* GL_SGIS_fog_function */
+
+#ifdef __GLEE_GL_SGIS_fog_function
+void __stdcall _Lazy_glFogFuncSGIS(GLsizei n, const GLfloat * points)                     {if (GLeeInit()) glFogFuncSGIS(n, points);}
+void __stdcall _Lazy_glGetFogFuncSGIS(GLfloat * points)                                   {if (GLeeInit()) glGetFogFuncSGIS(points);}
+PFNGLFOGFUNCSGISPROC pglFogFuncSGIS=_Lazy_glFogFuncSGIS;
+PFNGLGETFOGFUNCSGISPROC pglGetFogFuncSGIS=_Lazy_glGetFogFuncSGIS;
+#endif 
+
+/* GL_SGIX_fog_offset */
+
+#ifdef __GLEE_GL_SGIX_fog_offset
+#endif 
+
+/* GL_HP_image_transform */
+
+#ifdef __GLEE_GL_HP_image_transform
+void __stdcall _Lazy_glImageTransformParameteriHP(GLenum target, GLenum pname, GLint param)  {if (GLeeInit()) glImageTransformParameteriHP(target, pname, param);}
+void __stdcall _Lazy_glImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param)  {if (GLeeInit()) glImageTransformParameterfHP(target, pname, param);}
+void __stdcall _Lazy_glImageTransformParameterivHP(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glImageTransformParameterivHP(target, pname, params);}
+void __stdcall _Lazy_glImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glImageTransformParameterfvHP(target, pname, params);}
+void __stdcall _Lazy_glGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetImageTransformParameterivHP(target, pname, params);}
+void __stdcall _Lazy_glGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetImageTransformParameterfvHP(target, pname, params);}
+PFNGLIMAGETRANSFORMPARAMETERIHPPROC pglImageTransformParameteriHP=_Lazy_glImageTransformParameteriHP;
+PFNGLIMAGETRANSFORMPARAMETERFHPPROC pglImageTransformParameterfHP=_Lazy_glImageTransformParameterfHP;
+PFNGLIMAGETRANSFORMPARAMETERIVHPPROC pglImageTransformParameterivHP=_Lazy_glImageTransformParameterivHP;
+PFNGLIMAGETRANSFORMPARAMETERFVHPPROC pglImageTransformParameterfvHP=_Lazy_glImageTransformParameterfvHP;
+PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC pglGetImageTransformParameterivHP=_Lazy_glGetImageTransformParameterivHP;
+PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC pglGetImageTransformParameterfvHP=_Lazy_glGetImageTransformParameterfvHP;
+#endif 
+
+/* GL_HP_convolution_border_modes */
+
+#ifdef __GLEE_GL_HP_convolution_border_modes
+#endif 
+
+/* GL_INGR_palette_buffer */
+
+#ifdef __GLEE_GL_INGR_palette_buffer
+#endif 
+
+/* GL_SGIX_texture_add_env */
+
+#ifdef __GLEE_GL_SGIX_texture_add_env
+#endif 
+
+/* GL_EXT_color_subtable */
+
+#ifdef __GLEE_GL_EXT_color_subtable
+void __stdcall _Lazy_glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)  {if (GLeeInit()) glColorSubTableEXT(target, start, count, format, type, data);}
+void __stdcall _Lazy_glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyColorSubTableEXT(target, start, x, y, width);}
+PFNGLCOLORSUBTABLEEXTPROC pglColorSubTableEXT=_Lazy_glColorSubTableEXT;
+PFNGLCOPYCOLORSUBTABLEEXTPROC pglCopyColorSubTableEXT=_Lazy_glCopyColorSubTableEXT;
+#endif 
+
+/* GL_PGI_vertex_hints */
+
+#ifdef __GLEE_GL_PGI_vertex_hints
+#endif 
+
+/* GL_PGI_misc_hints */
+
+#ifdef __GLEE_GL_PGI_misc_hints
+void __stdcall _Lazy_glHintPGI(GLenum target, GLint mode)                                 {if (GLeeInit()) glHintPGI(target, mode);}
+PFNGLHINTPGIPROC pglHintPGI=_Lazy_glHintPGI;
+#endif 
+
+/* GL_EXT_paletted_texture */
+
+#ifdef __GLEE_GL_EXT_paletted_texture
+void __stdcall _Lazy_glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)  {if (GLeeInit()) glColorTableEXT(target, internalFormat, width, format, type, table);}
+void __stdcall _Lazy_glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * data)  {if (GLeeInit()) glGetColorTableEXT(target, format, type, data);}
+void __stdcall _Lazy_glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetColorTableParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetColorTableParameterfvEXT(target, pname, params);}
+PFNGLCOLORTABLEEXTPROC pglColorTableEXT=_Lazy_glColorTableEXT;
+PFNGLGETCOLORTABLEEXTPROC pglGetColorTableEXT=_Lazy_glGetColorTableEXT;
+PFNGLGETCOLORTABLEPARAMETERIVEXTPROC pglGetColorTableParameterivEXT=_Lazy_glGetColorTableParameterivEXT;
+PFNGLGETCOLORTABLEPARAMETERFVEXTPROC pglGetColorTableParameterfvEXT=_Lazy_glGetColorTableParameterfvEXT;
+#endif 
+
+/* GL_EXT_clip_volume_hint */
+
+#ifdef __GLEE_GL_EXT_clip_volume_hint
+#endif 
+
+/* GL_SGIX_list_priority */
+
+#ifdef __GLEE_GL_SGIX_list_priority
+void __stdcall _Lazy_glGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetListParameterfvSGIX(list, pname, params);}
+void __stdcall _Lazy_glGetListParameterivSGIX(GLuint list, GLenum pname, GLint * params)  {if (GLeeInit()) glGetListParameterivSGIX(list, pname, params);}
+void __stdcall _Lazy_glListParameterfSGIX(GLuint list, GLenum pname, GLfloat param)       {if (GLeeInit()) glListParameterfSGIX(list, pname, param);}
+void __stdcall _Lazy_glListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glListParameterfvSGIX(list, pname, params);}
+void __stdcall _Lazy_glListParameteriSGIX(GLuint list, GLenum pname, GLint param)         {if (GLeeInit()) glListParameteriSGIX(list, pname, param);}
+void __stdcall _Lazy_glListParameterivSGIX(GLuint list, GLenum pname, const GLint * params)  {if (GLeeInit()) glListParameterivSGIX(list, pname, params);}
+PFNGLGETLISTPARAMETERFVSGIXPROC pglGetListParameterfvSGIX=_Lazy_glGetListParameterfvSGIX;
+PFNGLGETLISTPARAMETERIVSGIXPROC pglGetListParameterivSGIX=_Lazy_glGetListParameterivSGIX;
+PFNGLLISTPARAMETERFSGIXPROC pglListParameterfSGIX=_Lazy_glListParameterfSGIX;
+PFNGLLISTPARAMETERFVSGIXPROC pglListParameterfvSGIX=_Lazy_glListParameterfvSGIX;
+PFNGLLISTPARAMETERISGIXPROC pglListParameteriSGIX=_Lazy_glListParameteriSGIX;
+PFNGLLISTPARAMETERIVSGIXPROC pglListParameterivSGIX=_Lazy_glListParameterivSGIX;
+#endif 
+
+/* GL_SGIX_ir_instrument1 */
+
+#ifdef __GLEE_GL_SGIX_ir_instrument1
+#endif 
+
+/* GL_SGIX_calligraphic_fragment */
+
+#ifdef __GLEE_GL_SGIX_calligraphic_fragment
+#endif 
+
+/* GL_SGIX_texture_lod_bias */
+
+#ifdef __GLEE_GL_SGIX_texture_lod_bias
+#endif 
+
+/* GL_SGIX_shadow_ambient */
+
+#ifdef __GLEE_GL_SGIX_shadow_ambient
+#endif 
+
+/* GL_EXT_index_texture */
+
+#ifdef __GLEE_GL_EXT_index_texture
+#endif 
+
+/* GL_EXT_index_material */
+
+#ifdef __GLEE_GL_EXT_index_material
+void __stdcall _Lazy_glIndexMaterialEXT(GLenum face, GLenum mode)                         {if (GLeeInit()) glIndexMaterialEXT(face, mode);}
+PFNGLINDEXMATERIALEXTPROC pglIndexMaterialEXT=_Lazy_glIndexMaterialEXT;
+#endif 
+
+/* GL_EXT_index_func */
+
+#ifdef __GLEE_GL_EXT_index_func
+void __stdcall _Lazy_glIndexFuncEXT(GLenum func, GLclampf ref)                            {if (GLeeInit()) glIndexFuncEXT(func, ref);}
+PFNGLINDEXFUNCEXTPROC pglIndexFuncEXT=_Lazy_glIndexFuncEXT;
+#endif 
+
+/* GL_EXT_index_array_formats */
+
+#ifdef __GLEE_GL_EXT_index_array_formats
+#endif 
+
+/* GL_EXT_compiled_vertex_array */
+
+#ifdef __GLEE_GL_EXT_compiled_vertex_array
+void __stdcall _Lazy_glLockArraysEXT(GLint first, GLsizei count)                          {if (GLeeInit()) glLockArraysEXT(first, count);}
+void __stdcall _Lazy_glUnlockArraysEXT(void)                                              {if (GLeeInit()) glUnlockArraysEXT();}
+PFNGLLOCKARRAYSEXTPROC pglLockArraysEXT=_Lazy_glLockArraysEXT;
+PFNGLUNLOCKARRAYSEXTPROC pglUnlockArraysEXT=_Lazy_glUnlockArraysEXT;
+#endif 
+
+/* GL_EXT_cull_vertex */
+
+#ifdef __GLEE_GL_EXT_cull_vertex
+void __stdcall _Lazy_glCullParameterdvEXT(GLenum pname, GLdouble * params)                {if (GLeeInit()) glCullParameterdvEXT(pname, params);}
+void __stdcall _Lazy_glCullParameterfvEXT(GLenum pname, GLfloat * params)                 {if (GLeeInit()) glCullParameterfvEXT(pname, params);}
+PFNGLCULLPARAMETERDVEXTPROC pglCullParameterdvEXT=_Lazy_glCullParameterdvEXT;
+PFNGLCULLPARAMETERFVEXTPROC pglCullParameterfvEXT=_Lazy_glCullParameterfvEXT;
+#endif 
+
+/* GL_SGIX_ycrcb */
+
+#ifdef __GLEE_GL_SGIX_ycrcb
+#endif 
+
+/* GL_SGIX_fragment_lighting */
+
+#ifdef __GLEE_GL_SGIX_fragment_lighting
+void __stdcall _Lazy_glFragmentColorMaterialSGIX(GLenum face, GLenum mode)                {if (GLeeInit()) glFragmentColorMaterialSGIX(face, mode);}
+void __stdcall _Lazy_glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param)      {if (GLeeInit()) glFragmentLightfSGIX(light, pname, param);}
+void __stdcall _Lazy_glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glFragmentLightfvSGIX(light, pname, params);}
+void __stdcall _Lazy_glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param)        {if (GLeeInit()) glFragmentLightiSGIX(light, pname, param);}
+void __stdcall _Lazy_glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint * params)  {if (GLeeInit()) glFragmentLightivSGIX(light, pname, params);}
+void __stdcall _Lazy_glFragmentLightModelfSGIX(GLenum pname, GLfloat param)               {if (GLeeInit()) glFragmentLightModelfSGIX(pname, param);}
+void __stdcall _Lazy_glFragmentLightModelfvSGIX(GLenum pname, const GLfloat * params)     {if (GLeeInit()) glFragmentLightModelfvSGIX(pname, params);}
+void __stdcall _Lazy_glFragmentLightModeliSGIX(GLenum pname, GLint param)                 {if (GLeeInit()) glFragmentLightModeliSGIX(pname, param);}
+void __stdcall _Lazy_glFragmentLightModelivSGIX(GLenum pname, const GLint * params)       {if (GLeeInit()) glFragmentLightModelivSGIX(pname, params);}
+void __stdcall _Lazy_glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param)    {if (GLeeInit()) glFragmentMaterialfSGIX(face, pname, param);}
+void __stdcall _Lazy_glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glFragmentMaterialfvSGIX(face, pname, params);}
+void __stdcall _Lazy_glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param)      {if (GLeeInit()) glFragmentMaterialiSGIX(face, pname, param);}
+void __stdcall _Lazy_glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint * params)  {if (GLeeInit()) glFragmentMaterialivSGIX(face, pname, params);}
+void __stdcall _Lazy_glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetFragmentLightfvSGIX(light, pname, params);}
+void __stdcall _Lazy_glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFragmentLightivSGIX(light, pname, params);}
+void __stdcall _Lazy_glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetFragmentMaterialfvSGIX(face, pname, params);}
+void __stdcall _Lazy_glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFragmentMaterialivSGIX(face, pname, params);}
+void __stdcall _Lazy_glLightEnviSGIX(GLenum pname, GLint param)                           {if (GLeeInit()) glLightEnviSGIX(pname, param);}
+PFNGLFRAGMENTCOLORMATERIALSGIXPROC pglFragmentColorMaterialSGIX=_Lazy_glFragmentColorMaterialSGIX;
+PFNGLFRAGMENTLIGHTFSGIXPROC pglFragmentLightfSGIX=_Lazy_glFragmentLightfSGIX;
+PFNGLFRAGMENTLIGHTFVSGIXPROC pglFragmentLightfvSGIX=_Lazy_glFragmentLightfvSGIX;
+PFNGLFRAGMENTLIGHTISGIXPROC pglFragmentLightiSGIX=_Lazy_glFragmentLightiSGIX;
+PFNGLFRAGMENTLIGHTIVSGIXPROC pglFragmentLightivSGIX=_Lazy_glFragmentLightivSGIX;
+PFNGLFRAGMENTLIGHTMODELFSGIXPROC pglFragmentLightModelfSGIX=_Lazy_glFragmentLightModelfSGIX;
+PFNGLFRAGMENTLIGHTMODELFVSGIXPROC pglFragmentLightModelfvSGIX=_Lazy_glFragmentLightModelfvSGIX;
+PFNGLFRAGMENTLIGHTMODELISGIXPROC pglFragmentLightModeliSGIX=_Lazy_glFragmentLightModeliSGIX;
+PFNGLFRAGMENTLIGHTMODELIVSGIXPROC pglFragmentLightModelivSGIX=_Lazy_glFragmentLightModelivSGIX;
+PFNGLFRAGMENTMATERIALFSGIXPROC pglFragmentMaterialfSGIX=_Lazy_glFragmentMaterialfSGIX;
+PFNGLFRAGMENTMATERIALFVSGIXPROC pglFragmentMaterialfvSGIX=_Lazy_glFragmentMaterialfvSGIX;
+PFNGLFRAGMENTMATERIALISGIXPROC pglFragmentMaterialiSGIX=_Lazy_glFragmentMaterialiSGIX;
+PFNGLFRAGMENTMATERIALIVSGIXPROC pglFragmentMaterialivSGIX=_Lazy_glFragmentMaterialivSGIX;
+PFNGLGETFRAGMENTLIGHTFVSGIXPROC pglGetFragmentLightfvSGIX=_Lazy_glGetFragmentLightfvSGIX;
+PFNGLGETFRAGMENTLIGHTIVSGIXPROC pglGetFragmentLightivSGIX=_Lazy_glGetFragmentLightivSGIX;
+PFNGLGETFRAGMENTMATERIALFVSGIXPROC pglGetFragmentMaterialfvSGIX=_Lazy_glGetFragmentMaterialfvSGIX;
+PFNGLGETFRAGMENTMATERIALIVSGIXPROC pglGetFragmentMaterialivSGIX=_Lazy_glGetFragmentMaterialivSGIX;
+PFNGLLIGHTENVISGIXPROC pglLightEnviSGIX=_Lazy_glLightEnviSGIX;
+#endif 
+
+/* GL_IBM_rasterpos_clip */
+
+#ifdef __GLEE_GL_IBM_rasterpos_clip
+#endif 
+
+/* GL_HP_texture_lighting */
+
+#ifdef __GLEE_GL_HP_texture_lighting
+#endif 
+
+/* GL_EXT_draw_range_elements */
+
+#ifdef __GLEE_GL_EXT_draw_range_elements
+void __stdcall _Lazy_glDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)  {if (GLeeInit()) glDrawRangeElementsEXT(mode, start, end, count, type, indices);}
+PFNGLDRAWRANGEELEMENTSEXTPROC pglDrawRangeElementsEXT=_Lazy_glDrawRangeElementsEXT;
+#endif 
+
+/* GL_WIN_phong_shading */
+
+#ifdef __GLEE_GL_WIN_phong_shading
+#endif 
+
+/* GL_WIN_specular_fog */
+
+#ifdef __GLEE_GL_WIN_specular_fog
+#endif 
+
+/* GL_EXT_light_texture */
+
+#ifdef __GLEE_GL_EXT_light_texture
+void __stdcall _Lazy_glApplyTextureEXT(GLenum mode)                                       {if (GLeeInit()) glApplyTextureEXT(mode);}
+void __stdcall _Lazy_glTextureLightEXT(GLenum pname)                                      {if (GLeeInit()) glTextureLightEXT(pname);}
+void __stdcall _Lazy_glTextureMaterialEXT(GLenum face, GLenum mode)                       {if (GLeeInit()) glTextureMaterialEXT(face, mode);}
+PFNGLAPPLYTEXTUREEXTPROC pglApplyTextureEXT=_Lazy_glApplyTextureEXT;
+PFNGLTEXTURELIGHTEXTPROC pglTextureLightEXT=_Lazy_glTextureLightEXT;
+PFNGLTEXTUREMATERIALEXTPROC pglTextureMaterialEXT=_Lazy_glTextureMaterialEXT;
+#endif 
+
+/* GL_SGIX_blend_alpha_minmax */
+
+#ifdef __GLEE_GL_SGIX_blend_alpha_minmax
+#endif 
+
+/* GL_SGIX_impact_pixel_texture */
+
+#ifdef __GLEE_GL_SGIX_impact_pixel_texture
+#endif 
+
+/* GL_EXT_bgra */
+
+#ifdef __GLEE_GL_EXT_bgra
+#endif 
+
+/* GL_SGIX_async */
+
+#ifdef __GLEE_GL_SGIX_async
+void __stdcall _Lazy_glAsyncMarkerSGIX(GLuint marker)                                     {if (GLeeInit()) glAsyncMarkerSGIX(marker);}
+GLint __stdcall _Lazy_glFinishAsyncSGIX(GLuint * markerp)                                 {if (GLeeInit()) return glFinishAsyncSGIX(markerp); return (GLint)0;}
+GLint __stdcall _Lazy_glPollAsyncSGIX(GLuint * markerp)                                   {if (GLeeInit()) return glPollAsyncSGIX(markerp); return (GLint)0;}
+GLuint __stdcall _Lazy_glGenAsyncMarkersSGIX(GLsizei range)                               {if (GLeeInit()) return glGenAsyncMarkersSGIX(range); return (GLuint)0;}
+void __stdcall _Lazy_glDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range)               {if (GLeeInit()) glDeleteAsyncMarkersSGIX(marker, range);}
+GLboolean __stdcall _Lazy_glIsAsyncMarkerSGIX(GLuint marker)                              {if (GLeeInit()) return glIsAsyncMarkerSGIX(marker); return (GLboolean)0;}
+PFNGLASYNCMARKERSGIXPROC pglAsyncMarkerSGIX=_Lazy_glAsyncMarkerSGIX;
+PFNGLFINISHASYNCSGIXPROC pglFinishAsyncSGIX=_Lazy_glFinishAsyncSGIX;
+PFNGLPOLLASYNCSGIXPROC pglPollAsyncSGIX=_Lazy_glPollAsyncSGIX;
+PFNGLGENASYNCMARKERSSGIXPROC pglGenAsyncMarkersSGIX=_Lazy_glGenAsyncMarkersSGIX;
+PFNGLDELETEASYNCMARKERSSGIXPROC pglDeleteAsyncMarkersSGIX=_Lazy_glDeleteAsyncMarkersSGIX;
+PFNGLISASYNCMARKERSGIXPROC pglIsAsyncMarkerSGIX=_Lazy_glIsAsyncMarkerSGIX;
+#endif 
+
+/* GL_SGIX_async_pixel */
+
+#ifdef __GLEE_GL_SGIX_async_pixel
+#endif 
+
+/* GL_SGIX_async_histogram */
+
+#ifdef __GLEE_GL_SGIX_async_histogram
+#endif 
+
+/* GL_INTEL_texture_scissor */
+
+#ifdef __GLEE_GL_INTEL_texture_scissor
+#endif 
+
+/* GL_INTEL_parallel_arrays */
+
+#ifdef __GLEE_GL_INTEL_parallel_arrays
+void __stdcall _Lazy_glVertexPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer)  {if (GLeeInit()) glVertexPointervINTEL(size, type, pointer);}
+void __stdcall _Lazy_glNormalPointervINTEL(GLenum type, const GLvoid* * pointer)          {if (GLeeInit()) glNormalPointervINTEL(type, pointer);}
+void __stdcall _Lazy_glColorPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer)  {if (GLeeInit()) glColorPointervINTEL(size, type, pointer);}
+void __stdcall _Lazy_glTexCoordPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer)  {if (GLeeInit()) glTexCoordPointervINTEL(size, type, pointer);}
+PFNGLVERTEXPOINTERVINTELPROC pglVertexPointervINTEL=_Lazy_glVertexPointervINTEL;
+PFNGLNORMALPOINTERVINTELPROC pglNormalPointervINTEL=_Lazy_glNormalPointervINTEL;
+PFNGLCOLORPOINTERVINTELPROC pglColorPointervINTEL=_Lazy_glColorPointervINTEL;
+PFNGLTEXCOORDPOINTERVINTELPROC pglTexCoordPointervINTEL=_Lazy_glTexCoordPointervINTEL;
+#endif 
+
+/* GL_HP_occlusion_test */
+
+#ifdef __GLEE_GL_HP_occlusion_test
+#endif 
+
+/* GL_EXT_pixel_transform */
+
+#ifdef __GLEE_GL_EXT_pixel_transform
+void __stdcall _Lazy_glPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param)  {if (GLeeInit()) glPixelTransformParameteriEXT(target, pname, param);}
+void __stdcall _Lazy_glPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param)  {if (GLeeInit()) glPixelTransformParameterfEXT(target, pname, param);}
+void __stdcall _Lazy_glPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glPixelTransformParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glPixelTransformParameterfvEXT(target, pname, params);}
+PFNGLPIXELTRANSFORMPARAMETERIEXTPROC pglPixelTransformParameteriEXT=_Lazy_glPixelTransformParameteriEXT;
+PFNGLPIXELTRANSFORMPARAMETERFEXTPROC pglPixelTransformParameterfEXT=_Lazy_glPixelTransformParameterfEXT;
+PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC pglPixelTransformParameterivEXT=_Lazy_glPixelTransformParameterivEXT;
+PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC pglPixelTransformParameterfvEXT=_Lazy_glPixelTransformParameterfvEXT;
+#endif 
+
+/* GL_EXT_pixel_transform_color_table */
+
+#ifdef __GLEE_GL_EXT_pixel_transform_color_table
+#endif 
+
+/* GL_EXT_shared_texture_palette */
+
+#ifdef __GLEE_GL_EXT_shared_texture_palette
+#endif 
+
+/* GL_EXT_separate_specular_color */
+
+#ifdef __GLEE_GL_EXT_separate_specular_color
+#endif 
+
+/* GL_EXT_secondary_color */
+
+#ifdef __GLEE_GL_EXT_secondary_color
+void __stdcall _Lazy_glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue)         {if (GLeeInit()) glSecondaryColor3bEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3bvEXT(const GLbyte * v)                             {if (GLeeInit()) glSecondaryColor3bvEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue)   {if (GLeeInit()) glSecondaryColor3dEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3dvEXT(const GLdouble * v)                           {if (GLeeInit()) glSecondaryColor3dvEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue)      {if (GLeeInit()) glSecondaryColor3fEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3fvEXT(const GLfloat * v)                            {if (GLeeInit()) glSecondaryColor3fvEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3iEXT(GLint red, GLint green, GLint blue)            {if (GLeeInit()) glSecondaryColor3iEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3ivEXT(const GLint * v)                              {if (GLeeInit()) glSecondaryColor3ivEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue)      {if (GLeeInit()) glSecondaryColor3sEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3svEXT(const GLshort * v)                            {if (GLeeInit()) glSecondaryColor3svEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue)     {if (GLeeInit()) glSecondaryColor3ubEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3ubvEXT(const GLubyte * v)                           {if (GLeeInit()) glSecondaryColor3ubvEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue)        {if (GLeeInit()) glSecondaryColor3uiEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3uivEXT(const GLuint * v)                            {if (GLeeInit()) glSecondaryColor3uivEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue)  {if (GLeeInit()) glSecondaryColor3usEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3usvEXT(const GLushort * v)                          {if (GLeeInit()) glSecondaryColor3usvEXT(v);}
+void __stdcall _Lazy_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glSecondaryColorPointerEXT(size, type, stride, pointer);}
+PFNGLSECONDARYCOLOR3BEXTPROC pglSecondaryColor3bEXT=_Lazy_glSecondaryColor3bEXT;
+PFNGLSECONDARYCOLOR3BVEXTPROC pglSecondaryColor3bvEXT=_Lazy_glSecondaryColor3bvEXT;
+PFNGLSECONDARYCOLOR3DEXTPROC pglSecondaryColor3dEXT=_Lazy_glSecondaryColor3dEXT;
+PFNGLSECONDARYCOLOR3DVEXTPROC pglSecondaryColor3dvEXT=_Lazy_glSecondaryColor3dvEXT;
+PFNGLSECONDARYCOLOR3FEXTPROC pglSecondaryColor3fEXT=_Lazy_glSecondaryColor3fEXT;
+PFNGLSECONDARYCOLOR3FVEXTPROC pglSecondaryColor3fvEXT=_Lazy_glSecondaryColor3fvEXT;
+PFNGLSECONDARYCOLOR3IEXTPROC pglSecondaryColor3iEXT=_Lazy_glSecondaryColor3iEXT;
+PFNGLSECONDARYCOLOR3IVEXTPROC pglSecondaryColor3ivEXT=_Lazy_glSecondaryColor3ivEXT;
+PFNGLSECONDARYCOLOR3SEXTPROC pglSecondaryColor3sEXT=_Lazy_glSecondaryColor3sEXT;
+PFNGLSECONDARYCOLOR3SVEXTPROC pglSecondaryColor3svEXT=_Lazy_glSecondaryColor3svEXT;
+PFNGLSECONDARYCOLOR3UBEXTPROC pglSecondaryColor3ubEXT=_Lazy_glSecondaryColor3ubEXT;
+PFNGLSECONDARYCOLOR3UBVEXTPROC pglSecondaryColor3ubvEXT=_Lazy_glSecondaryColor3ubvEXT;
+PFNGLSECONDARYCOLOR3UIEXTPROC pglSecondaryColor3uiEXT=_Lazy_glSecondaryColor3uiEXT;
+PFNGLSECONDARYCOLOR3UIVEXTPROC pglSecondaryColor3uivEXT=_Lazy_glSecondaryColor3uivEXT;
+PFNGLSECONDARYCOLOR3USEXTPROC pglSecondaryColor3usEXT=_Lazy_glSecondaryColor3usEXT;
+PFNGLSECONDARYCOLOR3USVEXTPROC pglSecondaryColor3usvEXT=_Lazy_glSecondaryColor3usvEXT;
+PFNGLSECONDARYCOLORPOINTEREXTPROC pglSecondaryColorPointerEXT=_Lazy_glSecondaryColorPointerEXT;
+#endif 
+
+/* GL_EXT_texture_perturb_normal */
+
+#ifdef __GLEE_GL_EXT_texture_perturb_normal
+void __stdcall _Lazy_glTextureNormalEXT(GLenum mode)                                      {if (GLeeInit()) glTextureNormalEXT(mode);}
+PFNGLTEXTURENORMALEXTPROC pglTextureNormalEXT=_Lazy_glTextureNormalEXT;
+#endif 
+
+/* GL_EXT_multi_draw_arrays */
+
+#ifdef __GLEE_GL_EXT_multi_draw_arrays
+void __stdcall _Lazy_glMultiDrawArraysEXT(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)  {if (GLeeInit()) glMultiDrawArraysEXT(mode, first, count, primcount);}
+void __stdcall _Lazy_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const GLvoid* * indices, GLsizei primcount)  {if (GLeeInit()) glMultiDrawElementsEXT(mode, count, type, indices, primcount);}
+PFNGLMULTIDRAWARRAYSEXTPROC pglMultiDrawArraysEXT=_Lazy_glMultiDrawArraysEXT;
+PFNGLMULTIDRAWELEMENTSEXTPROC pglMultiDrawElementsEXT=_Lazy_glMultiDrawElementsEXT;
+#endif 
+
+/* GL_EXT_fog_coord */
+
+#ifdef __GLEE_GL_EXT_fog_coord
+void __stdcall _Lazy_glFogCoordfEXT(GLfloat coord)                                        {if (GLeeInit()) glFogCoordfEXT(coord);}
+void __stdcall _Lazy_glFogCoordfvEXT(const GLfloat * coord)                               {if (GLeeInit()) glFogCoordfvEXT(coord);}
+void __stdcall _Lazy_glFogCoorddEXT(GLdouble coord)                                       {if (GLeeInit()) glFogCoorddEXT(coord);}
+void __stdcall _Lazy_glFogCoorddvEXT(const GLdouble * coord)                              {if (GLeeInit()) glFogCoorddvEXT(coord);}
+void __stdcall _Lazy_glFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glFogCoordPointerEXT(type, stride, pointer);}
+PFNGLFOGCOORDFEXTPROC pglFogCoordfEXT=_Lazy_glFogCoordfEXT;
+PFNGLFOGCOORDFVEXTPROC pglFogCoordfvEXT=_Lazy_glFogCoordfvEXT;
+PFNGLFOGCOORDDEXTPROC pglFogCoorddEXT=_Lazy_glFogCoorddEXT;
+PFNGLFOGCOORDDVEXTPROC pglFogCoorddvEXT=_Lazy_glFogCoorddvEXT;
+PFNGLFOGCOORDPOINTEREXTPROC pglFogCoordPointerEXT=_Lazy_glFogCoordPointerEXT;
+#endif 
+
+/* GL_REND_screen_coordinates */
+
+#ifdef __GLEE_GL_REND_screen_coordinates
+#endif 
+
+/* GL_EXT_coordinate_frame */
+
+#ifdef __GLEE_GL_EXT_coordinate_frame
+void __stdcall _Lazy_glTangent3bEXT(GLbyte tx, GLbyte ty, GLbyte tz)                      {if (GLeeInit()) glTangent3bEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3bvEXT(const GLbyte * v)                                    {if (GLeeInit()) glTangent3bvEXT(v);}
+void __stdcall _Lazy_glTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz)                {if (GLeeInit()) glTangent3dEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3dvEXT(const GLdouble * v)                                  {if (GLeeInit()) glTangent3dvEXT(v);}
+void __stdcall _Lazy_glTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz)                   {if (GLeeInit()) glTangent3fEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3fvEXT(const GLfloat * v)                                   {if (GLeeInit()) glTangent3fvEXT(v);}
+void __stdcall _Lazy_glTangent3iEXT(GLint tx, GLint ty, GLint tz)                         {if (GLeeInit()) glTangent3iEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3ivEXT(const GLint * v)                                     {if (GLeeInit()) glTangent3ivEXT(v);}
+void __stdcall _Lazy_glTangent3sEXT(GLshort tx, GLshort ty, GLshort tz)                   {if (GLeeInit()) glTangent3sEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3svEXT(const GLshort * v)                                   {if (GLeeInit()) glTangent3svEXT(v);}
+void __stdcall _Lazy_glBinormal3bEXT(GLbyte bx, GLbyte by, GLbyte bz)                     {if (GLeeInit()) glBinormal3bEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3bvEXT(const GLbyte * v)                                   {if (GLeeInit()) glBinormal3bvEXT(v);}
+void __stdcall _Lazy_glBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz)               {if (GLeeInit()) glBinormal3dEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3dvEXT(const GLdouble * v)                                 {if (GLeeInit()) glBinormal3dvEXT(v);}
+void __stdcall _Lazy_glBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz)                  {if (GLeeInit()) glBinormal3fEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3fvEXT(const GLfloat * v)                                  {if (GLeeInit()) glBinormal3fvEXT(v);}
+void __stdcall _Lazy_glBinormal3iEXT(GLint bx, GLint by, GLint bz)                        {if (GLeeInit()) glBinormal3iEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3ivEXT(const GLint * v)                                    {if (GLeeInit()) glBinormal3ivEXT(v);}
+void __stdcall _Lazy_glBinormal3sEXT(GLshort bx, GLshort by, GLshort bz)                  {if (GLeeInit()) glBinormal3sEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3svEXT(const GLshort * v)                                  {if (GLeeInit()) glBinormal3svEXT(v);}
+void __stdcall _Lazy_glTangentPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glTangentPointerEXT(type, stride, pointer);}
+void __stdcall _Lazy_glBinormalPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glBinormalPointerEXT(type, stride, pointer);}
+PFNGLTANGENT3BEXTPROC pglTangent3bEXT=_Lazy_glTangent3bEXT;
+PFNGLTANGENT3BVEXTPROC pglTangent3bvEXT=_Lazy_glTangent3bvEXT;
+PFNGLTANGENT3DEXTPROC pglTangent3dEXT=_Lazy_glTangent3dEXT;
+PFNGLTANGENT3DVEXTPROC pglTangent3dvEXT=_Lazy_glTangent3dvEXT;
+PFNGLTANGENT3FEXTPROC pglTangent3fEXT=_Lazy_glTangent3fEXT;
+PFNGLTANGENT3FVEXTPROC pglTangent3fvEXT=_Lazy_glTangent3fvEXT;
+PFNGLTANGENT3IEXTPROC pglTangent3iEXT=_Lazy_glTangent3iEXT;
+PFNGLTANGENT3IVEXTPROC pglTangent3ivEXT=_Lazy_glTangent3ivEXT;
+PFNGLTANGENT3SEXTPROC pglTangent3sEXT=_Lazy_glTangent3sEXT;
+PFNGLTANGENT3SVEXTPROC pglTangent3svEXT=_Lazy_glTangent3svEXT;
+PFNGLBINORMAL3BEXTPROC pglBinormal3bEXT=_Lazy_glBinormal3bEXT;
+PFNGLBINORMAL3BVEXTPROC pglBinormal3bvEXT=_Lazy_glBinormal3bvEXT;
+PFNGLBINORMAL3DEXTPROC pglBinormal3dEXT=_Lazy_glBinormal3dEXT;
+PFNGLBINORMAL3DVEXTPROC pglBinormal3dvEXT=_Lazy_glBinormal3dvEXT;
+PFNGLBINORMAL3FEXTPROC pglBinormal3fEXT=_Lazy_glBinormal3fEXT;
+PFNGLBINORMAL3FVEXTPROC pglBinormal3fvEXT=_Lazy_glBinormal3fvEXT;
+PFNGLBINORMAL3IEXTPROC pglBinormal3iEXT=_Lazy_glBinormal3iEXT;
+PFNGLBINORMAL3IVEXTPROC pglBinormal3ivEXT=_Lazy_glBinormal3ivEXT;
+PFNGLBINORMAL3SEXTPROC pglBinormal3sEXT=_Lazy_glBinormal3sEXT;
+PFNGLBINORMAL3SVEXTPROC pglBinormal3svEXT=_Lazy_glBinormal3svEXT;
+PFNGLTANGENTPOINTEREXTPROC pglTangentPointerEXT=_Lazy_glTangentPointerEXT;
+PFNGLBINORMALPOINTEREXTPROC pglBinormalPointerEXT=_Lazy_glBinormalPointerEXT;
+#endif 
+
+/* GL_EXT_texture_env_combine */
+
+#ifdef __GLEE_GL_EXT_texture_env_combine
+#endif 
+
+/* GL_APPLE_specular_vector */
+
+#ifdef __GLEE_GL_APPLE_specular_vector
+#endif 
+
+/* GL_APPLE_transform_hint */
+
+#ifdef __GLEE_GL_APPLE_transform_hint
+#endif 
+
+/* GL_SGIX_fog_scale */
+
+#ifdef __GLEE_GL_SGIX_fog_scale
+#endif 
+
+/* GL_SUNX_constant_data */
+
+#ifdef __GLEE_GL_SUNX_constant_data
+void __stdcall _Lazy_glFinishTextureSUNX(void)                                            {if (GLeeInit()) glFinishTextureSUNX();}
+PFNGLFINISHTEXTURESUNXPROC pglFinishTextureSUNX=_Lazy_glFinishTextureSUNX;
+#endif 
+
+/* GL_SUN_global_alpha */
+
+#ifdef __GLEE_GL_SUN_global_alpha
+void __stdcall _Lazy_glGlobalAlphaFactorbSUN(GLbyte factor)                               {if (GLeeInit()) glGlobalAlphaFactorbSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactorsSUN(GLshort factor)                              {if (GLeeInit()) glGlobalAlphaFactorsSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactoriSUN(GLint factor)                                {if (GLeeInit()) glGlobalAlphaFactoriSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactorfSUN(GLfloat factor)                              {if (GLeeInit()) glGlobalAlphaFactorfSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactordSUN(GLdouble factor)                             {if (GLeeInit()) glGlobalAlphaFactordSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactorubSUN(GLubyte factor)                             {if (GLeeInit()) glGlobalAlphaFactorubSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactorusSUN(GLushort factor)                            {if (GLeeInit()) glGlobalAlphaFactorusSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactoruiSUN(GLuint factor)                              {if (GLeeInit()) glGlobalAlphaFactoruiSUN(factor);}
+PFNGLGLOBALALPHAFACTORBSUNPROC pglGlobalAlphaFactorbSUN=_Lazy_glGlobalAlphaFactorbSUN;
+PFNGLGLOBALALPHAFACTORSSUNPROC pglGlobalAlphaFactorsSUN=_Lazy_glGlobalAlphaFactorsSUN;
+PFNGLGLOBALALPHAFACTORISUNPROC pglGlobalAlphaFactoriSUN=_Lazy_glGlobalAlphaFactoriSUN;
+PFNGLGLOBALALPHAFACTORFSUNPROC pglGlobalAlphaFactorfSUN=_Lazy_glGlobalAlphaFactorfSUN;
+PFNGLGLOBALALPHAFACTORDSUNPROC pglGlobalAlphaFactordSUN=_Lazy_glGlobalAlphaFactordSUN;
+PFNGLGLOBALALPHAFACTORUBSUNPROC pglGlobalAlphaFactorubSUN=_Lazy_glGlobalAlphaFactorubSUN;
+PFNGLGLOBALALPHAFACTORUSSUNPROC pglGlobalAlphaFactorusSUN=_Lazy_glGlobalAlphaFactorusSUN;
+PFNGLGLOBALALPHAFACTORUISUNPROC pglGlobalAlphaFactoruiSUN=_Lazy_glGlobalAlphaFactoruiSUN;
+#endif 
+
+/* GL_SUN_triangle_list */
+
+#ifdef __GLEE_GL_SUN_triangle_list
+void __stdcall _Lazy_glReplacementCodeuiSUN(GLuint code)                                  {if (GLeeInit()) glReplacementCodeuiSUN(code);}
+void __stdcall _Lazy_glReplacementCodeusSUN(GLushort code)                                {if (GLeeInit()) glReplacementCodeusSUN(code);}
+void __stdcall _Lazy_glReplacementCodeubSUN(GLubyte code)                                 {if (GLeeInit()) glReplacementCodeubSUN(code);}
+void __stdcall _Lazy_glReplacementCodeuivSUN(const GLuint * code)                         {if (GLeeInit()) glReplacementCodeuivSUN(code);}
+void __stdcall _Lazy_glReplacementCodeusvSUN(const GLushort * code)                       {if (GLeeInit()) glReplacementCodeusvSUN(code);}
+void __stdcall _Lazy_glReplacementCodeubvSUN(const GLubyte * code)                        {if (GLeeInit()) glReplacementCodeubvSUN(code);}
+void __stdcall _Lazy_glReplacementCodePointerSUN(GLenum type, GLsizei stride, const GLvoid* * pointer)  {if (GLeeInit()) glReplacementCodePointerSUN(type, stride, pointer);}
+PFNGLREPLACEMENTCODEUISUNPROC pglReplacementCodeuiSUN=_Lazy_glReplacementCodeuiSUN;
+PFNGLREPLACEMENTCODEUSSUNPROC pglReplacementCodeusSUN=_Lazy_glReplacementCodeusSUN;
+PFNGLREPLACEMENTCODEUBSUNPROC pglReplacementCodeubSUN=_Lazy_glReplacementCodeubSUN;
+PFNGLREPLACEMENTCODEUIVSUNPROC pglReplacementCodeuivSUN=_Lazy_glReplacementCodeuivSUN;
+PFNGLREPLACEMENTCODEUSVSUNPROC pglReplacementCodeusvSUN=_Lazy_glReplacementCodeusvSUN;
+PFNGLREPLACEMENTCODEUBVSUNPROC pglReplacementCodeubvSUN=_Lazy_glReplacementCodeubvSUN;
+PFNGLREPLACEMENTCODEPOINTERSUNPROC pglReplacementCodePointerSUN=_Lazy_glReplacementCodePointerSUN;
+#endif 
+
+/* GL_SUN_vertex */
+
+#ifdef __GLEE_GL_SUN_vertex
+void __stdcall _Lazy_glColor4ubVertex2fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y)  {if (GLeeInit()) glColor4ubVertex2fSUN(r, g, b, a, x, y);}
+void __stdcall _Lazy_glColor4ubVertex2fvSUN(const GLubyte * c, const GLfloat * v)         {if (GLeeInit()) glColor4ubVertex2fvSUN(c, v);}
+void __stdcall _Lazy_glColor4ubVertex3fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glColor4ubVertex3fSUN(r, g, b, a, x, y, z);}
+void __stdcall _Lazy_glColor4ubVertex3fvSUN(const GLubyte * c, const GLfloat * v)         {if (GLeeInit()) glColor4ubVertex3fvSUN(c, v);}
+void __stdcall _Lazy_glColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glColor3fVertex3fSUN(r, g, b, x, y, z);}
+void __stdcall _Lazy_glColor3fVertex3fvSUN(const GLfloat * c, const GLfloat * v)          {if (GLeeInit()) glColor3fVertex3fvSUN(c, v);}
+void __stdcall _Lazy_glNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glNormal3fVertex3fSUN(nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glNormal3fVertex3fvSUN(const GLfloat * n, const GLfloat * v)         {if (GLeeInit()) glNormal3fVertex3fvSUN(n, v);}
+void __stdcall _Lazy_glColor4fNormal3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glColor4fNormal3fVertex3fSUN(r, g, b, a, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glColor4fNormal3fVertex3fvSUN(const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glColor4fNormal3fVertex3fvSUN(c, n, v);}
+void __stdcall _Lazy_glTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fVertex3fSUN(s, t, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fVertex3fvSUN(const GLfloat * tc, const GLfloat * v)      {if (GLeeInit()) glTexCoord2fVertex3fvSUN(tc, v);}
+void __stdcall _Lazy_glTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glTexCoord4fVertex4fSUN(s, t, p, q, x, y, z, w);}
+void __stdcall _Lazy_glTexCoord4fVertex4fvSUN(const GLfloat * tc, const GLfloat * v)      {if (GLeeInit()) glTexCoord4fVertex4fvSUN(tc, v);}
+void __stdcall _Lazy_glTexCoord2fColor4ubVertex3fSUN(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fColor4ubVertex3fSUN(s, t, r, g, b, a, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fColor4ubVertex3fvSUN(const GLfloat * tc, const GLubyte * c, const GLfloat * v)  {if (GLeeInit()) glTexCoord2fColor4ubVertex3fvSUN(tc, c, v);}
+void __stdcall _Lazy_glTexCoord2fColor3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fColor3fVertex3fSUN(s, t, r, g, b, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fColor3fVertex3fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * v)  {if (GLeeInit()) glTexCoord2fColor3fVertex3fvSUN(tc, c, v);}
+void __stdcall _Lazy_glTexCoord2fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fNormal3fVertex3fSUN(s, t, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fNormal3fVertex3fvSUN(const GLfloat * tc, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glTexCoord2fNormal3fVertex3fvSUN(tc, n, v);}
+void __stdcall _Lazy_glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fColor4fNormal3fVertex3fSUN(s, t, r, g, b, a, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glTexCoord2fColor4fNormal3fVertex3fvSUN(tc, c, n, v);}
+void __stdcall _Lazy_glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glTexCoord4fColor4fNormal3fVertex4fSUN(s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w);}
+void __stdcall _Lazy_glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glTexCoord4fColor4fNormal3fVertex4fvSUN(tc, c, n, v);}
+void __stdcall _Lazy_glReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiVertex3fSUN(rc, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiVertex3fvSUN(const GLuint * rc, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiVertex3fvSUN(rc, v);}
+void __stdcall _Lazy_glReplacementCodeuiColor4ubVertex3fSUN(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiColor4ubVertex3fSUN(rc, r, g, b, a, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint * rc, const GLubyte * c, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiColor4ubVertex3fvSUN(rc, c, v);}
+void __stdcall _Lazy_glReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiColor3fVertex3fSUN(rc, r, g, b, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiColor3fVertex3fvSUN(const GLuint * rc, const GLfloat * c, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiColor3fVertex3fvSUN(rc, c, v);}
+void __stdcall _Lazy_glReplacementCodeuiNormal3fVertex3fSUN(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiNormal3fVertex3fSUN(rc, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiNormal3fVertex3fvSUN(rc, n, v);}
+void __stdcall _Lazy_glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiColor4fNormal3fVertex3fSUN(rc, r, g, b, a, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiColor4fNormal3fVertex3fvSUN(rc, c, n, v);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fVertex3fSUN(rc, s, t, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fVertex3fvSUN(rc, tc, v);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(rc, s, t, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(rc, tc, n, v);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(rc, s, t, r, g, b, a, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(rc, tc, c, n, v);}
+PFNGLCOLOR4UBVERTEX2FSUNPROC pglColor4ubVertex2fSUN=_Lazy_glColor4ubVertex2fSUN;
+PFNGLCOLOR4UBVERTEX2FVSUNPROC pglColor4ubVertex2fvSUN=_Lazy_glColor4ubVertex2fvSUN;
+PFNGLCOLOR4UBVERTEX3FSUNPROC pglColor4ubVertex3fSUN=_Lazy_glColor4ubVertex3fSUN;
+PFNGLCOLOR4UBVERTEX3FVSUNPROC pglColor4ubVertex3fvSUN=_Lazy_glColor4ubVertex3fvSUN;
+PFNGLCOLOR3FVERTEX3FSUNPROC pglColor3fVertex3fSUN=_Lazy_glColor3fVertex3fSUN;
+PFNGLCOLOR3FVERTEX3FVSUNPROC pglColor3fVertex3fvSUN=_Lazy_glColor3fVertex3fvSUN;
+PFNGLNORMAL3FVERTEX3FSUNPROC pglNormal3fVertex3fSUN=_Lazy_glNormal3fVertex3fSUN;
+PFNGLNORMAL3FVERTEX3FVSUNPROC pglNormal3fVertex3fvSUN=_Lazy_glNormal3fVertex3fvSUN;
+PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC pglColor4fNormal3fVertex3fSUN=_Lazy_glColor4fNormal3fVertex3fSUN;
+PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglColor4fNormal3fVertex3fvSUN=_Lazy_glColor4fNormal3fVertex3fvSUN;
+PFNGLTEXCOORD2FVERTEX3FSUNPROC pglTexCoord2fVertex3fSUN=_Lazy_glTexCoord2fVertex3fSUN;
+PFNGLTEXCOORD2FVERTEX3FVSUNPROC pglTexCoord2fVertex3fvSUN=_Lazy_glTexCoord2fVertex3fvSUN;
+PFNGLTEXCOORD4FVERTEX4FSUNPROC pglTexCoord4fVertex4fSUN=_Lazy_glTexCoord4fVertex4fSUN;
+PFNGLTEXCOORD4FVERTEX4FVSUNPROC pglTexCoord4fVertex4fvSUN=_Lazy_glTexCoord4fVertex4fvSUN;
+PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC pglTexCoord2fColor4ubVertex3fSUN=_Lazy_glTexCoord2fColor4ubVertex3fSUN;
+PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC pglTexCoord2fColor4ubVertex3fvSUN=_Lazy_glTexCoord2fColor4ubVertex3fvSUN;
+PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC pglTexCoord2fColor3fVertex3fSUN=_Lazy_glTexCoord2fColor3fVertex3fSUN;
+PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC pglTexCoord2fColor3fVertex3fvSUN=_Lazy_glTexCoord2fColor3fVertex3fvSUN;
+PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC pglTexCoord2fNormal3fVertex3fSUN=_Lazy_glTexCoord2fNormal3fVertex3fSUN;
+PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC pglTexCoord2fNormal3fVertex3fvSUN=_Lazy_glTexCoord2fNormal3fVertex3fvSUN;
+PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC pglTexCoord2fColor4fNormal3fVertex3fSUN=_Lazy_glTexCoord2fColor4fNormal3fVertex3fSUN;
+PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglTexCoord2fColor4fNormal3fVertex3fvSUN=_Lazy_glTexCoord2fColor4fNormal3fVertex3fvSUN;
+PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC pglTexCoord4fColor4fNormal3fVertex4fSUN=_Lazy_glTexCoord4fColor4fNormal3fVertex4fSUN;
+PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC pglTexCoord4fColor4fNormal3fVertex4fvSUN=_Lazy_glTexCoord4fColor4fNormal3fVertex4fvSUN;
+PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC pglReplacementCodeuiVertex3fSUN=_Lazy_glReplacementCodeuiVertex3fSUN;
+PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC pglReplacementCodeuiVertex3fvSUN=_Lazy_glReplacementCodeuiVertex3fvSUN;
+PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC pglReplacementCodeuiColor4ubVertex3fSUN=_Lazy_glReplacementCodeuiColor4ubVertex3fSUN;
+PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC pglReplacementCodeuiColor4ubVertex3fvSUN=_Lazy_glReplacementCodeuiColor4ubVertex3fvSUN;
+PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC pglReplacementCodeuiColor3fVertex3fSUN=_Lazy_glReplacementCodeuiColor3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC pglReplacementCodeuiColor3fVertex3fvSUN=_Lazy_glReplacementCodeuiColor3fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiNormal3fVertex3fSUN=_Lazy_glReplacementCodeuiNormal3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiNormal3fVertex3fvSUN=_Lazy_glReplacementCodeuiNormal3fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiColor4fNormal3fVertex3fSUN=_Lazy_glReplacementCodeuiColor4fNormal3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiColor4fNormal3fVertex3fvSUN=_Lazy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fVertex3fSUN=_Lazy_glReplacementCodeuiTexCoord2fVertex3fSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fVertex3fvSUN=_Lazy_glReplacementCodeuiTexCoord2fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fNormal3fVertex3fSUN=_Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN=_Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN=_Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN=_Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN;
+#endif 
+
+/* GL_EXT_blend_func_separate */
+
+#ifdef __GLEE_GL_EXT_blend_func_separate
+void __stdcall _Lazy_glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)  {if (GLeeInit()) glBlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);}
+PFNGLBLENDFUNCSEPARATEEXTPROC pglBlendFuncSeparateEXT=_Lazy_glBlendFuncSeparateEXT;
+#endif 
+
+/* GL_INGR_color_clamp */
+
+#ifdef __GLEE_GL_INGR_color_clamp
+#endif 
+
+/* GL_INGR_interlace_read */
+
+#ifdef __GLEE_GL_INGR_interlace_read
+#endif 
+
+/* GL_EXT_stencil_wrap */
+
+#ifdef __GLEE_GL_EXT_stencil_wrap
+#endif 
+
+/* GL_EXT_422_pixels */
+
+#ifdef __GLEE_GL_EXT_422_pixels
+#endif 
+
+/* GL_NV_texgen_reflection */
+
+#ifdef __GLEE_GL_NV_texgen_reflection
+#endif 
+
+/* GL_EXT_texture_cube_map */
+
+#ifdef __GLEE_GL_EXT_texture_cube_map
+#endif 
+
+/* GL_SUN_convolution_border_modes */
+
+#ifdef __GLEE_GL_SUN_convolution_border_modes
+#endif 
+
+/* GL_EXT_texture_env_add */
+
+#ifdef __GLEE_GL_EXT_texture_env_add
+#endif 
+
+/* GL_EXT_texture_lod_bias */
+
+#ifdef __GLEE_GL_EXT_texture_lod_bias
+#endif 
+
+/* GL_EXT_texture_filter_anisotropic */
+
+#ifdef __GLEE_GL_EXT_texture_filter_anisotropic
+#endif 
+
+/* GL_EXT_vertex_weighting */
+
+#ifdef __GLEE_GL_EXT_vertex_weighting
+void __stdcall _Lazy_glVertexWeightfEXT(GLfloat weight)                                   {if (GLeeInit()) glVertexWeightfEXT(weight);}
+void __stdcall _Lazy_glVertexWeightfvEXT(const GLfloat * weight)                          {if (GLeeInit()) glVertexWeightfvEXT(weight);}
+void __stdcall _Lazy_glVertexWeightPointerEXT(GLsizei size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexWeightPointerEXT(size, type, stride, pointer);}
+PFNGLVERTEXWEIGHTFEXTPROC pglVertexWeightfEXT=_Lazy_glVertexWeightfEXT;
+PFNGLVERTEXWEIGHTFVEXTPROC pglVertexWeightfvEXT=_Lazy_glVertexWeightfvEXT;
+PFNGLVERTEXWEIGHTPOINTEREXTPROC pglVertexWeightPointerEXT=_Lazy_glVertexWeightPointerEXT;
+#endif 
+
+/* GL_NV_light_max_exponent */
+
+#ifdef __GLEE_GL_NV_light_max_exponent
+#endif 
+
+/* GL_NV_vertex_array_range */
+
+#ifdef __GLEE_GL_NV_vertex_array_range
+void __stdcall _Lazy_glFlushVertexArrayRangeNV(void)                                      {if (GLeeInit()) glFlushVertexArrayRangeNV();}
+void __stdcall _Lazy_glVertexArrayRangeNV(GLsizei length, const GLvoid * pointer)         {if (GLeeInit()) glVertexArrayRangeNV(length, pointer);}
+PFNGLFLUSHVERTEXARRAYRANGENVPROC pglFlushVertexArrayRangeNV=_Lazy_glFlushVertexArrayRangeNV;
+PFNGLVERTEXARRAYRANGENVPROC pglVertexArrayRangeNV=_Lazy_glVertexArrayRangeNV;
+#endif 
+
+/* GL_NV_register_combiners */
+
+#ifdef __GLEE_GL_NV_register_combiners
+void __stdcall _Lazy_glCombinerParameterfvNV(GLenum pname, const GLfloat * params)        {if (GLeeInit()) glCombinerParameterfvNV(pname, params);}
+void __stdcall _Lazy_glCombinerParameterfNV(GLenum pname, GLfloat param)                  {if (GLeeInit()) glCombinerParameterfNV(pname, param);}
+void __stdcall _Lazy_glCombinerParameterivNV(GLenum pname, const GLint * params)          {if (GLeeInit()) glCombinerParameterivNV(pname, params);}
+void __stdcall _Lazy_glCombinerParameteriNV(GLenum pname, GLint param)                    {if (GLeeInit()) glCombinerParameteriNV(pname, param);}
+void __stdcall _Lazy_glCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)  {if (GLeeInit()) glCombinerInputNV(stage, portion, variable, input, mapping, componentUsage);}
+void __stdcall _Lazy_glCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)  {if (GLeeInit()) glCombinerOutputNV(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum);}
+void __stdcall _Lazy_glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)  {if (GLeeInit()) glFinalCombinerInputNV(variable, input, mapping, componentUsage);}
+void __stdcall _Lazy_glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetCombinerInputParameterfvNV(stage, portion, variable, pname, params);}
+void __stdcall _Lazy_glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params)  {if (GLeeInit()) glGetCombinerInputParameterivNV(stage, portion, variable, pname, params);}
+void __stdcall _Lazy_glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetCombinerOutputParameterfvNV(stage, portion, pname, params);}
+void __stdcall _Lazy_glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint * params)  {if (GLeeInit()) glGetCombinerOutputParameterivNV(stage, portion, pname, params);}
+void __stdcall _Lazy_glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetFinalCombinerInputParameterfvNV(variable, pname, params);}
+void __stdcall _Lazy_glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFinalCombinerInputParameterivNV(variable, pname, params);}
+PFNGLCOMBINERPARAMETERFVNVPROC pglCombinerParameterfvNV=_Lazy_glCombinerParameterfvNV;
+PFNGLCOMBINERPARAMETERFNVPROC pglCombinerParameterfNV=_Lazy_glCombinerParameterfNV;
+PFNGLCOMBINERPARAMETERIVNVPROC pglCombinerParameterivNV=_Lazy_glCombinerParameterivNV;
+PFNGLCOMBINERPARAMETERINVPROC pglCombinerParameteriNV=_Lazy_glCombinerParameteriNV;
+PFNGLCOMBINERINPUTNVPROC pglCombinerInputNV=_Lazy_glCombinerInputNV;
+PFNGLCOMBINEROUTPUTNVPROC pglCombinerOutputNV=_Lazy_glCombinerOutputNV;
+PFNGLFINALCOMBINERINPUTNVPROC pglFinalCombinerInputNV=_Lazy_glFinalCombinerInputNV;
+PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC pglGetCombinerInputParameterfvNV=_Lazy_glGetCombinerInputParameterfvNV;
+PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC pglGetCombinerInputParameterivNV=_Lazy_glGetCombinerInputParameterivNV;
+PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC pglGetCombinerOutputParameterfvNV=_Lazy_glGetCombinerOutputParameterfvNV;
+PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC pglGetCombinerOutputParameterivNV=_Lazy_glGetCombinerOutputParameterivNV;
+PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC pglGetFinalCombinerInputParameterfvNV=_Lazy_glGetFinalCombinerInputParameterfvNV;
+PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC pglGetFinalCombinerInputParameterivNV=_Lazy_glGetFinalCombinerInputParameterivNV;
+#endif 
+
+/* GL_NV_fog_distance */
+
+#ifdef __GLEE_GL_NV_fog_distance
+#endif 
+
+/* GL_NV_texgen_emboss */
+
+#ifdef __GLEE_GL_NV_texgen_emboss
+#endif 
+
+/* GL_NV_blend_square */
+
+#ifdef __GLEE_GL_NV_blend_square
+#endif 
+
+/* GL_NV_texture_env_combine4 */
+
+#ifdef __GLEE_GL_NV_texture_env_combine4
+#endif 
+
+/* GL_MESA_resize_buffers */
+
+#ifdef __GLEE_GL_MESA_resize_buffers
+void __stdcall _Lazy_glResizeBuffersMESA(void)                                            {if (GLeeInit()) glResizeBuffersMESA();}
+PFNGLRESIZEBUFFERSMESAPROC pglResizeBuffersMESA=_Lazy_glResizeBuffersMESA;
+#endif 
+
+/* GL_MESA_window_pos */
+
+#ifdef __GLEE_GL_MESA_window_pos
+void __stdcall _Lazy_glWindowPos2dMESA(GLdouble x, GLdouble y)                            {if (GLeeInit()) glWindowPos2dMESA(x, y);}
+void __stdcall _Lazy_glWindowPos2dvMESA(const GLdouble * v)                               {if (GLeeInit()) glWindowPos2dvMESA(v);}
+void __stdcall _Lazy_glWindowPos2fMESA(GLfloat x, GLfloat y)                              {if (GLeeInit()) glWindowPos2fMESA(x, y);}
+void __stdcall _Lazy_glWindowPos2fvMESA(const GLfloat * v)                                {if (GLeeInit()) glWindowPos2fvMESA(v);}
+void __stdcall _Lazy_glWindowPos2iMESA(GLint x, GLint y)                                  {if (GLeeInit()) glWindowPos2iMESA(x, y);}
+void __stdcall _Lazy_glWindowPos2ivMESA(const GLint * v)                                  {if (GLeeInit()) glWindowPos2ivMESA(v);}
+void __stdcall _Lazy_glWindowPos2sMESA(GLshort x, GLshort y)                              {if (GLeeInit()) glWindowPos2sMESA(x, y);}
+void __stdcall _Lazy_glWindowPos2svMESA(const GLshort * v)                                {if (GLeeInit()) glWindowPos2svMESA(v);}
+void __stdcall _Lazy_glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z)                {if (GLeeInit()) glWindowPos3dMESA(x, y, z);}
+void __stdcall _Lazy_glWindowPos3dvMESA(const GLdouble * v)                               {if (GLeeInit()) glWindowPos3dvMESA(v);}
+void __stdcall _Lazy_glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z)                   {if (GLeeInit()) glWindowPos3fMESA(x, y, z);}
+void __stdcall _Lazy_glWindowPos3fvMESA(const GLfloat * v)                                {if (GLeeInit()) glWindowPos3fvMESA(v);}
+void __stdcall _Lazy_glWindowPos3iMESA(GLint x, GLint y, GLint z)                         {if (GLeeInit()) glWindowPos3iMESA(x, y, z);}
+void __stdcall _Lazy_glWindowPos3ivMESA(const GLint * v)                                  {if (GLeeInit()) glWindowPos3ivMESA(v);}
+void __stdcall _Lazy_glWindowPos3sMESA(GLshort x, GLshort y, GLshort z)                   {if (GLeeInit()) glWindowPos3sMESA(x, y, z);}
+void __stdcall _Lazy_glWindowPos3svMESA(const GLshort * v)                                {if (GLeeInit()) glWindowPos3svMESA(v);}
+void __stdcall _Lazy_glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w)    {if (GLeeInit()) glWindowPos4dMESA(x, y, z, w);}
+void __stdcall _Lazy_glWindowPos4dvMESA(const GLdouble * v)                               {if (GLeeInit()) glWindowPos4dvMESA(v);}
+void __stdcall _Lazy_glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w)        {if (GLeeInit()) glWindowPos4fMESA(x, y, z, w);}
+void __stdcall _Lazy_glWindowPos4fvMESA(const GLfloat * v)                                {if (GLeeInit()) glWindowPos4fvMESA(v);}
+void __stdcall _Lazy_glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w)                {if (GLeeInit()) glWindowPos4iMESA(x, y, z, w);}
+void __stdcall _Lazy_glWindowPos4ivMESA(const GLint * v)                                  {if (GLeeInit()) glWindowPos4ivMESA(v);}
+void __stdcall _Lazy_glWindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w)        {if (GLeeInit()) glWindowPos4sMESA(x, y, z, w);}
+void __stdcall _Lazy_glWindowPos4svMESA(const GLshort * v)                                {if (GLeeInit()) glWindowPos4svMESA(v);}
+PFNGLWINDOWPOS2DMESAPROC pglWindowPos2dMESA=_Lazy_glWindowPos2dMESA;
+PFNGLWINDOWPOS2DVMESAPROC pglWindowPos2dvMESA=_Lazy_glWindowPos2dvMESA;
+PFNGLWINDOWPOS2FMESAPROC pglWindowPos2fMESA=_Lazy_glWindowPos2fMESA;
+PFNGLWINDOWPOS2FVMESAPROC pglWindowPos2fvMESA=_Lazy_glWindowPos2fvMESA;
+PFNGLWINDOWPOS2IMESAPROC pglWindowPos2iMESA=_Lazy_glWindowPos2iMESA;
+PFNGLWINDOWPOS2IVMESAPROC pglWindowPos2ivMESA=_Lazy_glWindowPos2ivMESA;
+PFNGLWINDOWPOS2SMESAPROC pglWindowPos2sMESA=_Lazy_glWindowPos2sMESA;
+PFNGLWINDOWPOS2SVMESAPROC pglWindowPos2svMESA=_Lazy_glWindowPos2svMESA;
+PFNGLWINDOWPOS3DMESAPROC pglWindowPos3dMESA=_Lazy_glWindowPos3dMESA;
+PFNGLWINDOWPOS3DVMESAPROC pglWindowPos3dvMESA=_Lazy_glWindowPos3dvMESA;
+PFNGLWINDOWPOS3FMESAPROC pglWindowPos3fMESA=_Lazy_glWindowPos3fMESA;
+PFNGLWINDOWPOS3FVMESAPROC pglWindowPos3fvMESA=_Lazy_glWindowPos3fvMESA;
+PFNGLWINDOWPOS3IMESAPROC pglWindowPos3iMESA=_Lazy_glWindowPos3iMESA;
+PFNGLWINDOWPOS3IVMESAPROC pglWindowPos3ivMESA=_Lazy_glWindowPos3ivMESA;
+PFNGLWINDOWPOS3SMESAPROC pglWindowPos3sMESA=_Lazy_glWindowPos3sMESA;
+PFNGLWINDOWPOS3SVMESAPROC pglWindowPos3svMESA=_Lazy_glWindowPos3svMESA;
+PFNGLWINDOWPOS4DMESAPROC pglWindowPos4dMESA=_Lazy_glWindowPos4dMESA;
+PFNGLWINDOWPOS4DVMESAPROC pglWindowPos4dvMESA=_Lazy_glWindowPos4dvMESA;
+PFNGLWINDOWPOS4FMESAPROC pglWindowPos4fMESA=_Lazy_glWindowPos4fMESA;
+PFNGLWINDOWPOS4FVMESAPROC pglWindowPos4fvMESA=_Lazy_glWindowPos4fvMESA;
+PFNGLWINDOWPOS4IMESAPROC pglWindowPos4iMESA=_Lazy_glWindowPos4iMESA;
+PFNGLWINDOWPOS4IVMESAPROC pglWindowPos4ivMESA=_Lazy_glWindowPos4ivMESA;
+PFNGLWINDOWPOS4SMESAPROC pglWindowPos4sMESA=_Lazy_glWindowPos4sMESA;
+PFNGLWINDOWPOS4SVMESAPROC pglWindowPos4svMESA=_Lazy_glWindowPos4svMESA;
+#endif 
+
+/* GL_EXT_texture_compression_s3tc */
+
+#ifdef __GLEE_GL_EXT_texture_compression_s3tc
+#endif 
+
+/* GL_IBM_cull_vertex */
+
+#ifdef __GLEE_GL_IBM_cull_vertex
+#endif 
+
+/* GL_IBM_multimode_draw_arrays */
+
+#ifdef __GLEE_GL_IBM_multimode_draw_arrays
+void __stdcall _Lazy_glMultiModeDrawArraysIBM(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride)  {if (GLeeInit()) glMultiModeDrawArraysIBM(mode, first, count, primcount, modestride);}
+void __stdcall _Lazy_glMultiModeDrawElementsIBM(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei primcount, GLint modestride)  {if (GLeeInit()) glMultiModeDrawElementsIBM(mode, count, type, indices, primcount, modestride);}
+PFNGLMULTIMODEDRAWARRAYSIBMPROC pglMultiModeDrawArraysIBM=_Lazy_glMultiModeDrawArraysIBM;
+PFNGLMULTIMODEDRAWELEMENTSIBMPROC pglMultiModeDrawElementsIBM=_Lazy_glMultiModeDrawElementsIBM;
+#endif 
+
+/* GL_IBM_vertex_array_lists */
+
+#ifdef __GLEE_GL_IBM_vertex_array_lists
+void __stdcall _Lazy_glColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glColorPointerListIBM(size, type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glSecondaryColorPointerListIBM(size, type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glEdgeFlagPointerListIBM(GLint stride, const GLboolean* * pointer, GLint ptrstride)  {if (GLeeInit()) glEdgeFlagPointerListIBM(stride, pointer, ptrstride);}
+void __stdcall _Lazy_glFogCoordPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glFogCoordPointerListIBM(type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glIndexPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glIndexPointerListIBM(type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glNormalPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glNormalPointerListIBM(type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glTexCoordPointerListIBM(size, type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glVertexPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glVertexPointerListIBM(size, type, stride, pointer, ptrstride);}
+PFNGLCOLORPOINTERLISTIBMPROC pglColorPointerListIBM=_Lazy_glColorPointerListIBM;
+PFNGLSECONDARYCOLORPOINTERLISTIBMPROC pglSecondaryColorPointerListIBM=_Lazy_glSecondaryColorPointerListIBM;
+PFNGLEDGEFLAGPOINTERLISTIBMPROC pglEdgeFlagPointerListIBM=_Lazy_glEdgeFlagPointerListIBM;
+PFNGLFOGCOORDPOINTERLISTIBMPROC pglFogCoordPointerListIBM=_Lazy_glFogCoordPointerListIBM;
+PFNGLINDEXPOINTERLISTIBMPROC pglIndexPointerListIBM=_Lazy_glIndexPointerListIBM;
+PFNGLNORMALPOINTERLISTIBMPROC pglNormalPointerListIBM=_Lazy_glNormalPointerListIBM;
+PFNGLTEXCOORDPOINTERLISTIBMPROC pglTexCoordPointerListIBM=_Lazy_glTexCoordPointerListIBM;
+PFNGLVERTEXPOINTERLISTIBMPROC pglVertexPointerListIBM=_Lazy_glVertexPointerListIBM;
+#endif 
+
+/* GL_SGIX_subsample */
+
+#ifdef __GLEE_GL_SGIX_subsample
+#endif 
+
+/* GL_SGIX_ycrcb_subsample */
+
+#ifdef __GLEE_GL_SGIX_ycrcb_subsample
+#endif 
+
+/* GL_SGIX_ycrcba */
+
+#ifdef __GLEE_GL_SGIX_ycrcba
+#endif 
+
+/* GL_SGI_depth_pass_instrument */
+
+#ifdef __GLEE_GL_SGI_depth_pass_instrument
+#endif 
+
+/* GL_3DFX_texture_compression_FXT1 */
+
+#ifdef __GLEE_GL_3DFX_texture_compression_FXT1
+#endif 
+
+/* GL_3DFX_multisample */
+
+#ifdef __GLEE_GL_3DFX_multisample
+#endif 
+
+/* GL_3DFX_tbuffer */
+
+#ifdef __GLEE_GL_3DFX_tbuffer
+void __stdcall _Lazy_glTbufferMask3DFX(GLuint mask)                                       {if (GLeeInit()) glTbufferMask3DFX(mask);}
+PFNGLTBUFFERMASK3DFXPROC pglTbufferMask3DFX=_Lazy_glTbufferMask3DFX;
+#endif 
+
+/* GL_EXT_multisample */
+
+#ifdef __GLEE_GL_EXT_multisample
+void __stdcall _Lazy_glSampleMaskEXT(GLclampf value, GLboolean invert)                    {if (GLeeInit()) glSampleMaskEXT(value, invert);}
+void __stdcall _Lazy_glSamplePatternEXT(GLenum pattern)                                   {if (GLeeInit()) glSamplePatternEXT(pattern);}
+PFNGLSAMPLEMASKEXTPROC pglSampleMaskEXT=_Lazy_glSampleMaskEXT;
+PFNGLSAMPLEPATTERNEXTPROC pglSamplePatternEXT=_Lazy_glSamplePatternEXT;
+#endif 
+
+/* GL_SGIX_vertex_preclip */
+
+#ifdef __GLEE_GL_SGIX_vertex_preclip
+#endif 
+
+/* GL_SGIX_convolution_accuracy */
+
+#ifdef __GLEE_GL_SGIX_convolution_accuracy
+#endif 
+
+/* GL_SGIX_resample */
+
+#ifdef __GLEE_GL_SGIX_resample
+#endif 
+
+/* GL_SGIS_point_line_texgen */
+
+#ifdef __GLEE_GL_SGIS_point_line_texgen
+#endif 
+
+/* GL_SGIS_texture_color_mask */
+
+#ifdef __GLEE_GL_SGIS_texture_color_mask
+void __stdcall _Lazy_glTextureColorMaskSGIS(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)  {if (GLeeInit()) glTextureColorMaskSGIS(red, green, blue, alpha);}
+PFNGLTEXTURECOLORMASKSGISPROC pglTextureColorMaskSGIS=_Lazy_glTextureColorMaskSGIS;
+#endif 
+
+/* GL_EXT_texture_env_dot3 */
+
+#ifdef __GLEE_GL_EXT_texture_env_dot3
+#endif 
+
+/* GL_ATI_texture_mirror_once */
+
+#ifdef __GLEE_GL_ATI_texture_mirror_once
+#endif 
+
+/* GL_NV_fence */
+
+#ifdef __GLEE_GL_NV_fence
+void __stdcall _Lazy_glDeleteFencesNV(GLsizei n, const GLuint * fences)                   {if (GLeeInit()) glDeleteFencesNV(n, fences);}
+void __stdcall _Lazy_glGenFencesNV(GLsizei n, GLuint * fences)                            {if (GLeeInit()) glGenFencesNV(n, fences);}
+GLboolean __stdcall _Lazy_glIsFenceNV(GLuint fence)                                       {if (GLeeInit()) return glIsFenceNV(fence); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_glTestFenceNV(GLuint fence)                                     {if (GLeeInit()) return glTestFenceNV(fence); return (GLboolean)0;}
+void __stdcall _Lazy_glGetFenceivNV(GLuint fence, GLenum pname, GLint * params)           {if (GLeeInit()) glGetFenceivNV(fence, pname, params);}
+void __stdcall _Lazy_glFinishFenceNV(GLuint fence)                                        {if (GLeeInit()) glFinishFenceNV(fence);}
+void __stdcall _Lazy_glSetFenceNV(GLuint fence, GLenum condition)                         {if (GLeeInit()) glSetFenceNV(fence, condition);}
+PFNGLDELETEFENCESNVPROC pglDeleteFencesNV=_Lazy_glDeleteFencesNV;
+PFNGLGENFENCESNVPROC pglGenFencesNV=_Lazy_glGenFencesNV;
+PFNGLISFENCENVPROC pglIsFenceNV=_Lazy_glIsFenceNV;
+PFNGLTESTFENCENVPROC pglTestFenceNV=_Lazy_glTestFenceNV;
+PFNGLGETFENCEIVNVPROC pglGetFenceivNV=_Lazy_glGetFenceivNV;
+PFNGLFINISHFENCENVPROC pglFinishFenceNV=_Lazy_glFinishFenceNV;
+PFNGLSETFENCENVPROC pglSetFenceNV=_Lazy_glSetFenceNV;
+#endif 
+
+/* GL_IBM_texture_mirrored_repeat */
+
+#ifdef __GLEE_GL_IBM_texture_mirrored_repeat
+#endif 
+
+/* GL_NV_evaluators */
+
+#ifdef __GLEE_GL_NV_evaluators
+void __stdcall _Lazy_glMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid * points)  {if (GLeeInit()) glMapControlPointsNV(target, index, type, ustride, vstride, uorder, vorder, packed, points);}
+void __stdcall _Lazy_glMapParameterivNV(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glMapParameterivNV(target, pname, params);}
+void __stdcall _Lazy_glMapParameterfvNV(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glMapParameterfvNV(target, pname, params);}
+void __stdcall _Lazy_glGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid * points)  {if (GLeeInit()) glGetMapControlPointsNV(target, index, type, ustride, vstride, packed, points);}
+void __stdcall _Lazy_glGetMapParameterivNV(GLenum target, GLenum pname, GLint * params)   {if (GLeeInit()) glGetMapParameterivNV(target, pname, params);}
+void __stdcall _Lazy_glGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetMapParameterfvNV(target, pname, params);}
+void __stdcall _Lazy_glGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint * params)  {if (GLeeInit()) glGetMapAttribParameterivNV(target, index, pname, params);}
+void __stdcall _Lazy_glGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetMapAttribParameterfvNV(target, index, pname, params);}
+void __stdcall _Lazy_glEvalMapsNV(GLenum target, GLenum mode)                             {if (GLeeInit()) glEvalMapsNV(target, mode);}
+PFNGLMAPCONTROLPOINTSNVPROC pglMapControlPointsNV=_Lazy_glMapControlPointsNV;
+PFNGLMAPPARAMETERIVNVPROC pglMapParameterivNV=_Lazy_glMapParameterivNV;
+PFNGLMAPPARAMETERFVNVPROC pglMapParameterfvNV=_Lazy_glMapParameterfvNV;
+PFNGLGETMAPCONTROLPOINTSNVPROC pglGetMapControlPointsNV=_Lazy_glGetMapControlPointsNV;
+PFNGLGETMAPPARAMETERIVNVPROC pglGetMapParameterivNV=_Lazy_glGetMapParameterivNV;
+PFNGLGETMAPPARAMETERFVNVPROC pglGetMapParameterfvNV=_Lazy_glGetMapParameterfvNV;
+PFNGLGETMAPATTRIBPARAMETERIVNVPROC pglGetMapAttribParameterivNV=_Lazy_glGetMapAttribParameterivNV;
+PFNGLGETMAPATTRIBPARAMETERFVNVPROC pglGetMapAttribParameterfvNV=_Lazy_glGetMapAttribParameterfvNV;
+PFNGLEVALMAPSNVPROC pglEvalMapsNV=_Lazy_glEvalMapsNV;
+#endif 
+
+/* GL_NV_packed_depth_stencil */
+
+#ifdef __GLEE_GL_NV_packed_depth_stencil
+#endif 
+
+/* GL_NV_register_combiners2 */
+
+#ifdef __GLEE_GL_NV_register_combiners2
+void __stdcall _Lazy_glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glCombinerStageParameterfvNV(stage, pname, params);}
+void __stdcall _Lazy_glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetCombinerStageParameterfvNV(stage, pname, params);}
+PFNGLCOMBINERSTAGEPARAMETERFVNVPROC pglCombinerStageParameterfvNV=_Lazy_glCombinerStageParameterfvNV;
+PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC pglGetCombinerStageParameterfvNV=_Lazy_glGetCombinerStageParameterfvNV;
+#endif 
+
+/* GL_NV_texture_compression_vtc */
+
+#ifdef __GLEE_GL_NV_texture_compression_vtc
+#endif 
+
+/* GL_NV_texture_rectangle */
+
+#ifdef __GLEE_GL_NV_texture_rectangle
+#endif 
+
+/* GL_NV_texture_shader */
+
+#ifdef __GLEE_GL_NV_texture_shader
+#endif 
+
+/* GL_NV_texture_shader2 */
+
+#ifdef __GLEE_GL_NV_texture_shader2
+#endif 
+
+/* GL_NV_vertex_array_range2 */
+
+#ifdef __GLEE_GL_NV_vertex_array_range2
+#endif 
+
+/* GL_NV_vertex_program */
+
+#ifdef __GLEE_GL_NV_vertex_program
+GLboolean __stdcall _Lazy_glAreProgramsResidentNV(GLsizei n, const GLuint * programs, GLboolean * residences)  {if (GLeeInit()) return glAreProgramsResidentNV(n, programs, residences); return (GLboolean)0;}
+void __stdcall _Lazy_glBindProgramNV(GLenum target, GLuint id)                            {if (GLeeInit()) glBindProgramNV(target, id);}
+void __stdcall _Lazy_glDeleteProgramsNV(GLsizei n, const GLuint * programs)               {if (GLeeInit()) glDeleteProgramsNV(n, programs);}
+void __stdcall _Lazy_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat * params)  {if (GLeeInit()) glExecuteProgramNV(target, id, params);}
+void __stdcall _Lazy_glGenProgramsNV(GLsizei n, GLuint * programs)                        {if (GLeeInit()) glGenProgramsNV(n, programs);}
+void __stdcall _Lazy_glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble * params)  {if (GLeeInit()) glGetProgramParameterdvNV(target, index, pname, params);}
+void __stdcall _Lazy_glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetProgramParameterfvNV(target, index, pname, params);}
+void __stdcall _Lazy_glGetProgramivNV(GLuint id, GLenum pname, GLint * params)            {if (GLeeInit()) glGetProgramivNV(id, pname, params);}
+void __stdcall _Lazy_glGetProgramStringNV(GLuint id, GLenum pname, GLubyte * program)     {if (GLeeInit()) glGetProgramStringNV(id, pname, program);}
+void __stdcall _Lazy_glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint * params)  {if (GLeeInit()) glGetTrackMatrixivNV(target, address, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble * params)  {if (GLeeInit()) glGetVertexAttribdvNV(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetVertexAttribfvNV(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint * params)    {if (GLeeInit()) glGetVertexAttribivNV(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid* * pointer)  {if (GLeeInit()) glGetVertexAttribPointervNV(index, pname, pointer);}
+GLboolean __stdcall _Lazy_glIsProgramNV(GLuint id)                                        {if (GLeeInit()) return glIsProgramNV(id); return (GLboolean)0;}
+void __stdcall _Lazy_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program)  {if (GLeeInit()) glLoadProgramNV(target, id, len, program);}
+void __stdcall _Lazy_glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glProgramParameter4dNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble * v)  {if (GLeeInit()) glProgramParameter4dvNV(target, index, v);}
+void __stdcall _Lazy_glProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glProgramParameter4fNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat * v)  {if (GLeeInit()) glProgramParameter4fvNV(target, index, v);}
+void __stdcall _Lazy_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint count, const GLdouble * v)  {if (GLeeInit()) glProgramParameters4dvNV(target, index, count, v);}
+void __stdcall _Lazy_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint count, const GLfloat * v)  {if (GLeeInit()) glProgramParameters4fvNV(target, index, count, v);}
+void __stdcall _Lazy_glRequestResidentProgramsNV(GLsizei n, const GLuint * programs)      {if (GLeeInit()) glRequestResidentProgramsNV(n, programs);}
+void __stdcall _Lazy_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform)  {if (GLeeInit()) glTrackMatrixNV(target, address, matrix, transform);}
+void __stdcall _Lazy_glVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexAttribPointerNV(index, fsize, type, stride, pointer);}
+void __stdcall _Lazy_glVertexAttrib1dNV(GLuint index, GLdouble x)                         {if (GLeeInit()) glVertexAttrib1dNV(index, x);}
+void __stdcall _Lazy_glVertexAttrib1dvNV(GLuint index, const GLdouble * v)                {if (GLeeInit()) glVertexAttrib1dvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib1fNV(GLuint index, GLfloat x)                          {if (GLeeInit()) glVertexAttrib1fNV(index, x);}
+void __stdcall _Lazy_glVertexAttrib1fvNV(GLuint index, const GLfloat * v)                 {if (GLeeInit()) glVertexAttrib1fvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib1sNV(GLuint index, GLshort x)                          {if (GLeeInit()) glVertexAttrib1sNV(index, x);}
+void __stdcall _Lazy_glVertexAttrib1svNV(GLuint index, const GLshort * v)                 {if (GLeeInit()) glVertexAttrib1svNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)             {if (GLeeInit()) glVertexAttrib2dNV(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2dvNV(GLuint index, const GLdouble * v)                {if (GLeeInit()) glVertexAttrib2dvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y)               {if (GLeeInit()) glVertexAttrib2fNV(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2fvNV(GLuint index, const GLfloat * v)                 {if (GLeeInit()) glVertexAttrib2fvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y)               {if (GLeeInit()) glVertexAttrib2sNV(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2svNV(GLuint index, const GLshort * v)                 {if (GLeeInit()) glVertexAttrib2svNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)  {if (GLeeInit()) glVertexAttrib3dNV(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3dvNV(GLuint index, const GLdouble * v)                {if (GLeeInit()) glVertexAttrib3dvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z)    {if (GLeeInit()) glVertexAttrib3fNV(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3fvNV(GLuint index, const GLfloat * v)                 {if (GLeeInit()) glVertexAttrib3fvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)    {if (GLeeInit()) glVertexAttrib3sNV(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3svNV(GLuint index, const GLshort * v)                 {if (GLeeInit()) glVertexAttrib3svNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glVertexAttrib4dNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4dvNV(GLuint index, const GLdouble * v)                {if (GLeeInit()) glVertexAttrib4dvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glVertexAttrib4fNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4fvNV(GLuint index, const GLfloat * v)                 {if (GLeeInit()) glVertexAttrib4fvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)  {if (GLeeInit()) glVertexAttrib4sNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4svNV(GLuint index, const GLshort * v)                 {if (GLeeInit()) glVertexAttrib4svNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)  {if (GLeeInit()) glVertexAttrib4ubNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4ubvNV(GLuint index, const GLubyte * v)                {if (GLeeInit()) glVertexAttrib4ubvNV(index, v);}
+void __stdcall _Lazy_glVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble * v)  {if (GLeeInit()) glVertexAttribs1dvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat * v)  {if (GLeeInit()) glVertexAttribs1fvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort * v)  {if (GLeeInit()) glVertexAttribs1svNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble * v)  {if (GLeeInit()) glVertexAttribs2dvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat * v)  {if (GLeeInit()) glVertexAttribs2fvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort * v)  {if (GLeeInit()) glVertexAttribs2svNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble * v)  {if (GLeeInit()) glVertexAttribs3dvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat * v)  {if (GLeeInit()) glVertexAttribs3fvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort * v)  {if (GLeeInit()) glVertexAttribs3svNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble * v)  {if (GLeeInit()) glVertexAttribs4dvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat * v)  {if (GLeeInit()) glVertexAttribs4fvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort * v)  {if (GLeeInit()) glVertexAttribs4svNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte * v)  {if (GLeeInit()) glVertexAttribs4ubvNV(index, count, v);}
+PFNGLAREPROGRAMSRESIDENTNVPROC pglAreProgramsResidentNV=_Lazy_glAreProgramsResidentNV;
+PFNGLBINDPROGRAMNVPROC pglBindProgramNV=_Lazy_glBindProgramNV;
+PFNGLDELETEPROGRAMSNVPROC pglDeleteProgramsNV=_Lazy_glDeleteProgramsNV;
+PFNGLEXECUTEPROGRAMNVPROC pglExecuteProgramNV=_Lazy_glExecuteProgramNV;
+PFNGLGENPROGRAMSNVPROC pglGenProgramsNV=_Lazy_glGenProgramsNV;
+PFNGLGETPROGRAMPARAMETERDVNVPROC pglGetProgramParameterdvNV=_Lazy_glGetProgramParameterdvNV;
+PFNGLGETPROGRAMPARAMETERFVNVPROC pglGetProgramParameterfvNV=_Lazy_glGetProgramParameterfvNV;
+PFNGLGETPROGRAMIVNVPROC pglGetProgramivNV=_Lazy_glGetProgramivNV;
+PFNGLGETPROGRAMSTRINGNVPROC pglGetProgramStringNV=_Lazy_glGetProgramStringNV;
+PFNGLGETTRACKMATRIXIVNVPROC pglGetTrackMatrixivNV=_Lazy_glGetTrackMatrixivNV;
+PFNGLGETVERTEXATTRIBDVNVPROC pglGetVertexAttribdvNV=_Lazy_glGetVertexAttribdvNV;
+PFNGLGETVERTEXATTRIBFVNVPROC pglGetVertexAttribfvNV=_Lazy_glGetVertexAttribfvNV;
+PFNGLGETVERTEXATTRIBIVNVPROC pglGetVertexAttribivNV=_Lazy_glGetVertexAttribivNV;
+PFNGLGETVERTEXATTRIBPOINTERVNVPROC pglGetVertexAttribPointervNV=_Lazy_glGetVertexAttribPointervNV;
+PFNGLISPROGRAMNVPROC pglIsProgramNV=_Lazy_glIsProgramNV;
+PFNGLLOADPROGRAMNVPROC pglLoadProgramNV=_Lazy_glLoadProgramNV;
+PFNGLPROGRAMPARAMETER4DNVPROC pglProgramParameter4dNV=_Lazy_glProgramParameter4dNV;
+PFNGLPROGRAMPARAMETER4DVNVPROC pglProgramParameter4dvNV=_Lazy_glProgramParameter4dvNV;
+PFNGLPROGRAMPARAMETER4FNVPROC pglProgramParameter4fNV=_Lazy_glProgramParameter4fNV;
+PFNGLPROGRAMPARAMETER4FVNVPROC pglProgramParameter4fvNV=_Lazy_glProgramParameter4fvNV;
+PFNGLPROGRAMPARAMETERS4DVNVPROC pglProgramParameters4dvNV=_Lazy_glProgramParameters4dvNV;
+PFNGLPROGRAMPARAMETERS4FVNVPROC pglProgramParameters4fvNV=_Lazy_glProgramParameters4fvNV;
+PFNGLREQUESTRESIDENTPROGRAMSNVPROC pglRequestResidentProgramsNV=_Lazy_glRequestResidentProgramsNV;
+PFNGLTRACKMATRIXNVPROC pglTrackMatrixNV=_Lazy_glTrackMatrixNV;
+PFNGLVERTEXATTRIBPOINTERNVPROC pglVertexAttribPointerNV=_Lazy_glVertexAttribPointerNV;
+PFNGLVERTEXATTRIB1DNVPROC pglVertexAttrib1dNV=_Lazy_glVertexAttrib1dNV;
+PFNGLVERTEXATTRIB1DVNVPROC pglVertexAttrib1dvNV=_Lazy_glVertexAttrib1dvNV;
+PFNGLVERTEXATTRIB1FNVPROC pglVertexAttrib1fNV=_Lazy_glVertexAttrib1fNV;
+PFNGLVERTEXATTRIB1FVNVPROC pglVertexAttrib1fvNV=_Lazy_glVertexAttrib1fvNV;
+PFNGLVERTEXATTRIB1SNVPROC pglVertexAttrib1sNV=_Lazy_glVertexAttrib1sNV;
+PFNGLVERTEXATTRIB1SVNVPROC pglVertexAttrib1svNV=_Lazy_glVertexAttrib1svNV;
+PFNGLVERTEXATTRIB2DNVPROC pglVertexAttrib2dNV=_Lazy_glVertexAttrib2dNV;
+PFNGLVERTEXATTRIB2DVNVPROC pglVertexAttrib2dvNV=_Lazy_glVertexAttrib2dvNV;
+PFNGLVERTEXATTRIB2FNVPROC pglVertexAttrib2fNV=_Lazy_glVertexAttrib2fNV;
+PFNGLVERTEXATTRIB2FVNVPROC pglVertexAttrib2fvNV=_Lazy_glVertexAttrib2fvNV;
+PFNGLVERTEXATTRIB2SNVPROC pglVertexAttrib2sNV=_Lazy_glVertexAttrib2sNV;
+PFNGLVERTEXATTRIB2SVNVPROC pglVertexAttrib2svNV=_Lazy_glVertexAttrib2svNV;
+PFNGLVERTEXATTRIB3DNVPROC pglVertexAttrib3dNV=_Lazy_glVertexAttrib3dNV;
+PFNGLVERTEXATTRIB3DVNVPROC pglVertexAttrib3dvNV=_Lazy_glVertexAttrib3dvNV;
+PFNGLVERTEXATTRIB3FNVPROC pglVertexAttrib3fNV=_Lazy_glVertexAttrib3fNV;
+PFNGLVERTEXATTRIB3FVNVPROC pglVertexAttrib3fvNV=_Lazy_glVertexAttrib3fvNV;
+PFNGLVERTEXATTRIB3SNVPROC pglVertexAttrib3sNV=_Lazy_glVertexAttrib3sNV;
+PFNGLVERTEXATTRIB3SVNVPROC pglVertexAttrib3svNV=_Lazy_glVertexAttrib3svNV;
+PFNGLVERTEXATTRIB4DNVPROC pglVertexAttrib4dNV=_Lazy_glVertexAttrib4dNV;
+PFNGLVERTEXATTRIB4DVNVPROC pglVertexAttrib4dvNV=_Lazy_glVertexAttrib4dvNV;
+PFNGLVERTEXATTRIB4FNVPROC pglVertexAttrib4fNV=_Lazy_glVertexAttrib4fNV;
+PFNGLVERTEXATTRIB4FVNVPROC pglVertexAttrib4fvNV=_Lazy_glVertexAttrib4fvNV;
+PFNGLVERTEXATTRIB4SNVPROC pglVertexAttrib4sNV=_Lazy_glVertexAttrib4sNV;
+PFNGLVERTEXATTRIB4SVNVPROC pglVertexAttrib4svNV=_Lazy_glVertexAttrib4svNV;
+PFNGLVERTEXATTRIB4UBNVPROC pglVertexAttrib4ubNV=_Lazy_glVertexAttrib4ubNV;
+PFNGLVERTEXATTRIB4UBVNVPROC pglVertexAttrib4ubvNV=_Lazy_glVertexAttrib4ubvNV;
+PFNGLVERTEXATTRIBS1DVNVPROC pglVertexAttribs1dvNV=_Lazy_glVertexAttribs1dvNV;
+PFNGLVERTEXATTRIBS1FVNVPROC pglVertexAttribs1fvNV=_Lazy_glVertexAttribs1fvNV;
+PFNGLVERTEXATTRIBS1SVNVPROC pglVertexAttribs1svNV=_Lazy_glVertexAttribs1svNV;
+PFNGLVERTEXATTRIBS2DVNVPROC pglVertexAttribs2dvNV=_Lazy_glVertexAttribs2dvNV;
+PFNGLVERTEXATTRIBS2FVNVPROC pglVertexAttribs2fvNV=_Lazy_glVertexAttribs2fvNV;
+PFNGLVERTEXATTRIBS2SVNVPROC pglVertexAttribs2svNV=_Lazy_glVertexAttribs2svNV;
+PFNGLVERTEXATTRIBS3DVNVPROC pglVertexAttribs3dvNV=_Lazy_glVertexAttribs3dvNV;
+PFNGLVERTEXATTRIBS3FVNVPROC pglVertexAttribs3fvNV=_Lazy_glVertexAttribs3fvNV;
+PFNGLVERTEXATTRIBS3SVNVPROC pglVertexAttribs3svNV=_Lazy_glVertexAttribs3svNV;
+PFNGLVERTEXATTRIBS4DVNVPROC pglVertexAttribs4dvNV=_Lazy_glVertexAttribs4dvNV;
+PFNGLVERTEXATTRIBS4FVNVPROC pglVertexAttribs4fvNV=_Lazy_glVertexAttribs4fvNV;
+PFNGLVERTEXATTRIBS4SVNVPROC pglVertexAttribs4svNV=_Lazy_glVertexAttribs4svNV;
+PFNGLVERTEXATTRIBS4UBVNVPROC pglVertexAttribs4ubvNV=_Lazy_glVertexAttribs4ubvNV;
+#endif 
+
+/* GL_SGIX_texture_coordinate_clamp */
+
+#ifdef __GLEE_GL_SGIX_texture_coordinate_clamp
+#endif 
+
+/* GL_SGIX_scalebias_hint */
+
+#ifdef __GLEE_GL_SGIX_scalebias_hint
+#endif 
+
+/* GL_OML_interlace */
+
+#ifdef __GLEE_GL_OML_interlace
+#endif 
+
+/* GL_OML_subsample */
+
+#ifdef __GLEE_GL_OML_subsample
+#endif 
+
+/* GL_OML_resample */
+
+#ifdef __GLEE_GL_OML_resample
+#endif 
+
+/* GL_NV_copy_depth_to_color */
+
+#ifdef __GLEE_GL_NV_copy_depth_to_color
+#endif 
+
+/* GL_ATI_envmap_bumpmap */
+
+#ifdef __GLEE_GL_ATI_envmap_bumpmap
+void __stdcall _Lazy_glTexBumpParameterivATI(GLenum pname, const GLint * param)           {if (GLeeInit()) glTexBumpParameterivATI(pname, param);}
+void __stdcall _Lazy_glTexBumpParameterfvATI(GLenum pname, const GLfloat * param)         {if (GLeeInit()) glTexBumpParameterfvATI(pname, param);}
+void __stdcall _Lazy_glGetTexBumpParameterivATI(GLenum pname, GLint * param)              {if (GLeeInit()) glGetTexBumpParameterivATI(pname, param);}
+void __stdcall _Lazy_glGetTexBumpParameterfvATI(GLenum pname, GLfloat * param)            {if (GLeeInit()) glGetTexBumpParameterfvATI(pname, param);}
+PFNGLTEXBUMPPARAMETERIVATIPROC pglTexBumpParameterivATI=_Lazy_glTexBumpParameterivATI;
+PFNGLTEXBUMPPARAMETERFVATIPROC pglTexBumpParameterfvATI=_Lazy_glTexBumpParameterfvATI;
+PFNGLGETTEXBUMPPARAMETERIVATIPROC pglGetTexBumpParameterivATI=_Lazy_glGetTexBumpParameterivATI;
+PFNGLGETTEXBUMPPARAMETERFVATIPROC pglGetTexBumpParameterfvATI=_Lazy_glGetTexBumpParameterfvATI;
+#endif 
+
+/* GL_ATI_fragment_shader */
+
+#ifdef __GLEE_GL_ATI_fragment_shader
+GLuint __stdcall _Lazy_glGenFragmentShadersATI(GLuint range)                              {if (GLeeInit()) return glGenFragmentShadersATI(range); return (GLuint)0;}
+void __stdcall _Lazy_glBindFragmentShaderATI(GLuint id)                                   {if (GLeeInit()) glBindFragmentShaderATI(id);}
+void __stdcall _Lazy_glDeleteFragmentShaderATI(GLuint id)                                 {if (GLeeInit()) glDeleteFragmentShaderATI(id);}
+void __stdcall _Lazy_glBeginFragmentShaderATI(void)                                       {if (GLeeInit()) glBeginFragmentShaderATI();}
+void __stdcall _Lazy_glEndFragmentShaderATI(void)                                         {if (GLeeInit()) glEndFragmentShaderATI();}
+void __stdcall _Lazy_glPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle)          {if (GLeeInit()) glPassTexCoordATI(dst, coord, swizzle);}
+void __stdcall _Lazy_glSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle)            {if (GLeeInit()) glSampleMapATI(dst, interp, swizzle);}
+void __stdcall _Lazy_glColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)  {if (GLeeInit()) glColorFragmentOp1ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod);}
+void __stdcall _Lazy_glColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)  {if (GLeeInit()) glColorFragmentOp2ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod);}
+void __stdcall _Lazy_glColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)  {if (GLeeInit()) glColorFragmentOp3ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);}
+void __stdcall _Lazy_glAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)  {if (GLeeInit()) glAlphaFragmentOp1ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod);}
+void __stdcall _Lazy_glAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)  {if (GLeeInit()) glAlphaFragmentOp2ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod);}
+void __stdcall _Lazy_glAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)  {if (GLeeInit()) glAlphaFragmentOp3ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);}
+void __stdcall _Lazy_glSetFragmentShaderConstantATI(GLuint dst, const GLfloat * value)    {if (GLeeInit()) glSetFragmentShaderConstantATI(dst, value);}
+PFNGLGENFRAGMENTSHADERSATIPROC pglGenFragmentShadersATI=_Lazy_glGenFragmentShadersATI;
+PFNGLBINDFRAGMENTSHADERATIPROC pglBindFragmentShaderATI=_Lazy_glBindFragmentShaderATI;
+PFNGLDELETEFRAGMENTSHADERATIPROC pglDeleteFragmentShaderATI=_Lazy_glDeleteFragmentShaderATI;
+PFNGLBEGINFRAGMENTSHADERATIPROC pglBeginFragmentShaderATI=_Lazy_glBeginFragmentShaderATI;
+PFNGLENDFRAGMENTSHADERATIPROC pglEndFragmentShaderATI=_Lazy_glEndFragmentShaderATI;
+PFNGLPASSTEXCOORDATIPROC pglPassTexCoordATI=_Lazy_glPassTexCoordATI;
+PFNGLSAMPLEMAPATIPROC pglSampleMapATI=_Lazy_glSampleMapATI;
+PFNGLCOLORFRAGMENTOP1ATIPROC pglColorFragmentOp1ATI=_Lazy_glColorFragmentOp1ATI;
+PFNGLCOLORFRAGMENTOP2ATIPROC pglColorFragmentOp2ATI=_Lazy_glColorFragmentOp2ATI;
+PFNGLCOLORFRAGMENTOP3ATIPROC pglColorFragmentOp3ATI=_Lazy_glColorFragmentOp3ATI;
+PFNGLALPHAFRAGMENTOP1ATIPROC pglAlphaFragmentOp1ATI=_Lazy_glAlphaFragmentOp1ATI;
+PFNGLALPHAFRAGMENTOP2ATIPROC pglAlphaFragmentOp2ATI=_Lazy_glAlphaFragmentOp2ATI;
+PFNGLALPHAFRAGMENTOP3ATIPROC pglAlphaFragmentOp3ATI=_Lazy_glAlphaFragmentOp3ATI;
+PFNGLSETFRAGMENTSHADERCONSTANTATIPROC pglSetFragmentShaderConstantATI=_Lazy_glSetFragmentShaderConstantATI;
+#endif 
+
+/* GL_ATI_pn_triangles */
+
+#ifdef __GLEE_GL_ATI_pn_triangles
+void __stdcall _Lazy_glPNTrianglesiATI(GLenum pname, GLint param)                         {if (GLeeInit()) glPNTrianglesiATI(pname, param);}
+void __stdcall _Lazy_glPNTrianglesfATI(GLenum pname, GLfloat param)                       {if (GLeeInit()) glPNTrianglesfATI(pname, param);}
+PFNGLPNTRIANGLESIATIPROC pglPNTrianglesiATI=_Lazy_glPNTrianglesiATI;
+PFNGLPNTRIANGLESFATIPROC pglPNTrianglesfATI=_Lazy_glPNTrianglesfATI;
+#endif 
+
+/* GL_ATI_vertex_array_object */
+
+#ifdef __GLEE_GL_ATI_vertex_array_object
+GLuint __stdcall _Lazy_glNewObjectBufferATI(GLsizei size, const GLvoid * pointer, GLenum usage)  {if (GLeeInit()) return glNewObjectBufferATI(size, pointer, usage); return (GLuint)0;}
+GLboolean __stdcall _Lazy_glIsObjectBufferATI(GLuint buffer)                              {if (GLeeInit()) return glIsObjectBufferATI(buffer); return (GLboolean)0;}
+void __stdcall _Lazy_glUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const GLvoid * pointer, GLenum preserve)  {if (GLeeInit()) glUpdateObjectBufferATI(buffer, offset, size, pointer, preserve);}
+void __stdcall _Lazy_glGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetObjectBufferfvATI(buffer, pname, params);}
+void __stdcall _Lazy_glGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint * params)  {if (GLeeInit()) glGetObjectBufferivATI(buffer, pname, params);}
+void __stdcall _Lazy_glFreeObjectBufferATI(GLuint buffer)                                 {if (GLeeInit()) glFreeObjectBufferATI(buffer);}
+void __stdcall _Lazy_glArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)  {if (GLeeInit()) glArrayObjectATI(array, size, type, stride, buffer, offset);}
+void __stdcall _Lazy_glGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetArrayObjectfvATI(array, pname, params);}
+void __stdcall _Lazy_glGetArrayObjectivATI(GLenum array, GLenum pname, GLint * params)    {if (GLeeInit()) glGetArrayObjectivATI(array, pname, params);}
+void __stdcall _Lazy_glVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)  {if (GLeeInit()) glVariantArrayObjectATI(id, type, stride, buffer, offset);}
+void __stdcall _Lazy_glGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetVariantArrayObjectfvATI(id, pname, params);}
+void __stdcall _Lazy_glGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint * params)  {if (GLeeInit()) glGetVariantArrayObjectivATI(id, pname, params);}
+PFNGLNEWOBJECTBUFFERATIPROC pglNewObjectBufferATI=_Lazy_glNewObjectBufferATI;
+PFNGLISOBJECTBUFFERATIPROC pglIsObjectBufferATI=_Lazy_glIsObjectBufferATI;
+PFNGLUPDATEOBJECTBUFFERATIPROC pglUpdateObjectBufferATI=_Lazy_glUpdateObjectBufferATI;
+PFNGLGETOBJECTBUFFERFVATIPROC pglGetObjectBufferfvATI=_Lazy_glGetObjectBufferfvATI;
+PFNGLGETOBJECTBUFFERIVATIPROC pglGetObjectBufferivATI=_Lazy_glGetObjectBufferivATI;
+PFNGLFREEOBJECTBUFFERATIPROC pglFreeObjectBufferATI=_Lazy_glFreeObjectBufferATI;
+PFNGLARRAYOBJECTATIPROC pglArrayObjectATI=_Lazy_glArrayObjectATI;
+PFNGLGETARRAYOBJECTFVATIPROC pglGetArrayObjectfvATI=_Lazy_glGetArrayObjectfvATI;
+PFNGLGETARRAYOBJECTIVATIPROC pglGetArrayObjectivATI=_Lazy_glGetArrayObjectivATI;
+PFNGLVARIANTARRAYOBJECTATIPROC pglVariantArrayObjectATI=_Lazy_glVariantArrayObjectATI;
+PFNGLGETVARIANTARRAYOBJECTFVATIPROC pglGetVariantArrayObjectfvATI=_Lazy_glGetVariantArrayObjectfvATI;
+PFNGLGETVARIANTARRAYOBJECTIVATIPROC pglGetVariantArrayObjectivATI=_Lazy_glGetVariantArrayObjectivATI;
+#endif 
+
+/* GL_EXT_vertex_shader */
+
+#ifdef __GLEE_GL_EXT_vertex_shader
+void __stdcall _Lazy_glBeginVertexShaderEXT(void)                                         {if (GLeeInit()) glBeginVertexShaderEXT();}
+void __stdcall _Lazy_glEndVertexShaderEXT(void)                                           {if (GLeeInit()) glEndVertexShaderEXT();}
+void __stdcall _Lazy_glBindVertexShaderEXT(GLuint id)                                     {if (GLeeInit()) glBindVertexShaderEXT(id);}
+GLuint __stdcall _Lazy_glGenVertexShadersEXT(GLuint range)                                {if (GLeeInit()) return glGenVertexShadersEXT(range); return (GLuint)0;}
+void __stdcall _Lazy_glDeleteVertexShaderEXT(GLuint id)                                   {if (GLeeInit()) glDeleteVertexShaderEXT(id);}
+void __stdcall _Lazy_glShaderOp1EXT(GLenum op, GLuint res, GLuint arg1)                   {if (GLeeInit()) glShaderOp1EXT(op, res, arg1);}
+void __stdcall _Lazy_glShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2)      {if (GLeeInit()) glShaderOp2EXT(op, res, arg1, arg2);}
+void __stdcall _Lazy_glShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3)  {if (GLeeInit()) glShaderOp3EXT(op, res, arg1, arg2, arg3);}
+void __stdcall _Lazy_glSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)  {if (GLeeInit()) glSwizzleEXT(res, in, outX, outY, outZ, outW);}
+void __stdcall _Lazy_glWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)  {if (GLeeInit()) glWriteMaskEXT(res, in, outX, outY, outZ, outW);}
+void __stdcall _Lazy_glInsertComponentEXT(GLuint res, GLuint src, GLuint num)             {if (GLeeInit()) glInsertComponentEXT(res, src, num);}
+void __stdcall _Lazy_glExtractComponentEXT(GLuint res, GLuint src, GLuint num)            {if (GLeeInit()) glExtractComponentEXT(res, src, num);}
+GLuint __stdcall _Lazy_glGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components)  {if (GLeeInit()) return glGenSymbolsEXT(datatype, storagetype, range, components); return (GLuint)0;}
+void __stdcall _Lazy_glSetInvariantEXT(GLuint id, GLenum type, const GLvoid * addr)       {if (GLeeInit()) glSetInvariantEXT(id, type, addr);}
+void __stdcall _Lazy_glSetLocalConstantEXT(GLuint id, GLenum type, const GLvoid * addr)   {if (GLeeInit()) glSetLocalConstantEXT(id, type, addr);}
+void __stdcall _Lazy_glVariantbvEXT(GLuint id, const GLbyte * addr)                       {if (GLeeInit()) glVariantbvEXT(id, addr);}
+void __stdcall _Lazy_glVariantsvEXT(GLuint id, const GLshort * addr)                      {if (GLeeInit()) glVariantsvEXT(id, addr);}
+void __stdcall _Lazy_glVariantivEXT(GLuint id, const GLint * addr)                        {if (GLeeInit()) glVariantivEXT(id, addr);}
+void __stdcall _Lazy_glVariantfvEXT(GLuint id, const GLfloat * addr)                      {if (GLeeInit()) glVariantfvEXT(id, addr);}
+void __stdcall _Lazy_glVariantdvEXT(GLuint id, const GLdouble * addr)                     {if (GLeeInit()) glVariantdvEXT(id, addr);}
+void __stdcall _Lazy_glVariantubvEXT(GLuint id, const GLubyte * addr)                     {if (GLeeInit()) glVariantubvEXT(id, addr);}
+void __stdcall _Lazy_glVariantusvEXT(GLuint id, const GLushort * addr)                    {if (GLeeInit()) glVariantusvEXT(id, addr);}
+void __stdcall _Lazy_glVariantuivEXT(GLuint id, const GLuint * addr)                      {if (GLeeInit()) glVariantuivEXT(id, addr);}
+void __stdcall _Lazy_glVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const GLvoid * addr)  {if (GLeeInit()) glVariantPointerEXT(id, type, stride, addr);}
+void __stdcall _Lazy_glEnableVariantClientStateEXT(GLuint id)                             {if (GLeeInit()) glEnableVariantClientStateEXT(id);}
+void __stdcall _Lazy_glDisableVariantClientStateEXT(GLuint id)                            {if (GLeeInit()) glDisableVariantClientStateEXT(id);}
+GLuint __stdcall _Lazy_glBindLightParameterEXT(GLenum light, GLenum value)                {if (GLeeInit()) return glBindLightParameterEXT(light, value); return (GLuint)0;}
+GLuint __stdcall _Lazy_glBindMaterialParameterEXT(GLenum face, GLenum value)              {if (GLeeInit()) return glBindMaterialParameterEXT(face, value); return (GLuint)0;}
+GLuint __stdcall _Lazy_glBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value)  {if (GLeeInit()) return glBindTexGenParameterEXT(unit, coord, value); return (GLuint)0;}
+GLuint __stdcall _Lazy_glBindTextureUnitParameterEXT(GLenum unit, GLenum value)           {if (GLeeInit()) return glBindTextureUnitParameterEXT(unit, value); return (GLuint)0;}
+GLuint __stdcall _Lazy_glBindParameterEXT(GLenum value)                                   {if (GLeeInit()) return glBindParameterEXT(value); return (GLuint)0;}
+GLboolean __stdcall _Lazy_glIsVariantEnabledEXT(GLuint id, GLenum cap)                    {if (GLeeInit()) return glIsVariantEnabledEXT(id, cap); return (GLboolean)0;}
+void __stdcall _Lazy_glGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean * data)   {if (GLeeInit()) glGetVariantBooleanvEXT(id, value, data);}
+void __stdcall _Lazy_glGetVariantIntegervEXT(GLuint id, GLenum value, GLint * data)       {if (GLeeInit()) glGetVariantIntegervEXT(id, value, data);}
+void __stdcall _Lazy_glGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat * data)       {if (GLeeInit()) glGetVariantFloatvEXT(id, value, data);}
+void __stdcall _Lazy_glGetVariantPointervEXT(GLuint id, GLenum value, GLvoid* * data)     {if (GLeeInit()) glGetVariantPointervEXT(id, value, data);}
+void __stdcall _Lazy_glGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean * data)  {if (GLeeInit()) glGetInvariantBooleanvEXT(id, value, data);}
+void __stdcall _Lazy_glGetInvariantIntegervEXT(GLuint id, GLenum value, GLint * data)     {if (GLeeInit()) glGetInvariantIntegervEXT(id, value, data);}
+void __stdcall _Lazy_glGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat * data)     {if (GLeeInit()) glGetInvariantFloatvEXT(id, value, data);}
+void __stdcall _Lazy_glGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean * data)  {if (GLeeInit()) glGetLocalConstantBooleanvEXT(id, value, data);}
+void __stdcall _Lazy_glGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint * data)  {if (GLeeInit()) glGetLocalConstantIntegervEXT(id, value, data);}
+void __stdcall _Lazy_glGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat * data)  {if (GLeeInit()) glGetLocalConstantFloatvEXT(id, value, data);}
+PFNGLBEGINVERTEXSHADEREXTPROC pglBeginVertexShaderEXT=_Lazy_glBeginVertexShaderEXT;
+PFNGLENDVERTEXSHADEREXTPROC pglEndVertexShaderEXT=_Lazy_glEndVertexShaderEXT;
+PFNGLBINDVERTEXSHADEREXTPROC pglBindVertexShaderEXT=_Lazy_glBindVertexShaderEXT;
+PFNGLGENVERTEXSHADERSEXTPROC pglGenVertexShadersEXT=_Lazy_glGenVertexShadersEXT;
+PFNGLDELETEVERTEXSHADEREXTPROC pglDeleteVertexShaderEXT=_Lazy_glDeleteVertexShaderEXT;
+PFNGLSHADEROP1EXTPROC pglShaderOp1EXT=_Lazy_glShaderOp1EXT;
+PFNGLSHADEROP2EXTPROC pglShaderOp2EXT=_Lazy_glShaderOp2EXT;
+PFNGLSHADEROP3EXTPROC pglShaderOp3EXT=_Lazy_glShaderOp3EXT;
+PFNGLSWIZZLEEXTPROC pglSwizzleEXT=_Lazy_glSwizzleEXT;
+PFNGLWRITEMASKEXTPROC pglWriteMaskEXT=_Lazy_glWriteMaskEXT;
+PFNGLINSERTCOMPONENTEXTPROC pglInsertComponentEXT=_Lazy_glInsertComponentEXT;
+PFNGLEXTRACTCOMPONENTEXTPROC pglExtractComponentEXT=_Lazy_glExtractComponentEXT;
+PFNGLGENSYMBOLSEXTPROC pglGenSymbolsEXT=_Lazy_glGenSymbolsEXT;
+PFNGLSETINVARIANTEXTPROC pglSetInvariantEXT=_Lazy_glSetInvariantEXT;
+PFNGLSETLOCALCONSTANTEXTPROC pglSetLocalConstantEXT=_Lazy_glSetLocalConstantEXT;
+PFNGLVARIANTBVEXTPROC pglVariantbvEXT=_Lazy_glVariantbvEXT;
+PFNGLVARIANTSVEXTPROC pglVariantsvEXT=_Lazy_glVariantsvEXT;
+PFNGLVARIANTIVEXTPROC pglVariantivEXT=_Lazy_glVariantivEXT;
+PFNGLVARIANTFVEXTPROC pglVariantfvEXT=_Lazy_glVariantfvEXT;
+PFNGLVARIANTDVEXTPROC pglVariantdvEXT=_Lazy_glVariantdvEXT;
+PFNGLVARIANTUBVEXTPROC pglVariantubvEXT=_Lazy_glVariantubvEXT;
+PFNGLVARIANTUSVEXTPROC pglVariantusvEXT=_Lazy_glVariantusvEXT;
+PFNGLVARIANTUIVEXTPROC pglVariantuivEXT=_Lazy_glVariantuivEXT;
+PFNGLVARIANTPOINTEREXTPROC pglVariantPointerEXT=_Lazy_glVariantPointerEXT;
+PFNGLENABLEVARIANTCLIENTSTATEEXTPROC pglEnableVariantClientStateEXT=_Lazy_glEnableVariantClientStateEXT;
+PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC pglDisableVariantClientStateEXT=_Lazy_glDisableVariantClientStateEXT;
+PFNGLBINDLIGHTPARAMETEREXTPROC pglBindLightParameterEXT=_Lazy_glBindLightParameterEXT;
+PFNGLBINDMATERIALPARAMETEREXTPROC pglBindMaterialParameterEXT=_Lazy_glBindMaterialParameterEXT;
+PFNGLBINDTEXGENPARAMETEREXTPROC pglBindTexGenParameterEXT=_Lazy_glBindTexGenParameterEXT;
+PFNGLBINDTEXTUREUNITPARAMETEREXTPROC pglBindTextureUnitParameterEXT=_Lazy_glBindTextureUnitParameterEXT;
+PFNGLBINDPARAMETEREXTPROC pglBindParameterEXT=_Lazy_glBindParameterEXT;
+PFNGLISVARIANTENABLEDEXTPROC pglIsVariantEnabledEXT=_Lazy_glIsVariantEnabledEXT;
+PFNGLGETVARIANTBOOLEANVEXTPROC pglGetVariantBooleanvEXT=_Lazy_glGetVariantBooleanvEXT;
+PFNGLGETVARIANTINTEGERVEXTPROC pglGetVariantIntegervEXT=_Lazy_glGetVariantIntegervEXT;
+PFNGLGETVARIANTFLOATVEXTPROC pglGetVariantFloatvEXT=_Lazy_glGetVariantFloatvEXT;
+PFNGLGETVARIANTPOINTERVEXTPROC pglGetVariantPointervEXT=_Lazy_glGetVariantPointervEXT;
+PFNGLGETINVARIANTBOOLEANVEXTPROC pglGetInvariantBooleanvEXT=_Lazy_glGetInvariantBooleanvEXT;
+PFNGLGETINVARIANTINTEGERVEXTPROC pglGetInvariantIntegervEXT=_Lazy_glGetInvariantIntegervEXT;
+PFNGLGETINVARIANTFLOATVEXTPROC pglGetInvariantFloatvEXT=_Lazy_glGetInvariantFloatvEXT;
+PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC pglGetLocalConstantBooleanvEXT=_Lazy_glGetLocalConstantBooleanvEXT;
+PFNGLGETLOCALCONSTANTINTEGERVEXTPROC pglGetLocalConstantIntegervEXT=_Lazy_glGetLocalConstantIntegervEXT;
+PFNGLGETLOCALCONSTANTFLOATVEXTPROC pglGetLocalConstantFloatvEXT=_Lazy_glGetLocalConstantFloatvEXT;
+#endif 
+
+/* GL_ATI_vertex_streams */
+
+#ifdef __GLEE_GL_ATI_vertex_streams
+void __stdcall _Lazy_glVertexStream1sATI(GLenum stream, GLshort x)                        {if (GLeeInit()) glVertexStream1sATI(stream, x);}
+void __stdcall _Lazy_glVertexStream1svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glVertexStream1svATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream1iATI(GLenum stream, GLint x)                          {if (GLeeInit()) glVertexStream1iATI(stream, x);}
+void __stdcall _Lazy_glVertexStream1ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glVertexStream1ivATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream1fATI(GLenum stream, GLfloat x)                        {if (GLeeInit()) glVertexStream1fATI(stream, x);}
+void __stdcall _Lazy_glVertexStream1fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glVertexStream1fvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream1dATI(GLenum stream, GLdouble x)                       {if (GLeeInit()) glVertexStream1dATI(stream, x);}
+void __stdcall _Lazy_glVertexStream1dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glVertexStream1dvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream2sATI(GLenum stream, GLshort x, GLshort y)             {if (GLeeInit()) glVertexStream2sATI(stream, x, y);}
+void __stdcall _Lazy_glVertexStream2svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glVertexStream2svATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream2iATI(GLenum stream, GLint x, GLint y)                 {if (GLeeInit()) glVertexStream2iATI(stream, x, y);}
+void __stdcall _Lazy_glVertexStream2ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glVertexStream2ivATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y)             {if (GLeeInit()) glVertexStream2fATI(stream, x, y);}
+void __stdcall _Lazy_glVertexStream2fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glVertexStream2fvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y)           {if (GLeeInit()) glVertexStream2dATI(stream, x, y);}
+void __stdcall _Lazy_glVertexStream2dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glVertexStream2dvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream3sATI(GLenum stream, GLshort x, GLshort y, GLshort z)  {if (GLeeInit()) glVertexStream3sATI(stream, x, y, z);}
+void __stdcall _Lazy_glVertexStream3svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glVertexStream3svATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z)        {if (GLeeInit()) glVertexStream3iATI(stream, x, y, z);}
+void __stdcall _Lazy_glVertexStream3ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glVertexStream3ivATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glVertexStream3fATI(stream, x, y, z);}
+void __stdcall _Lazy_glVertexStream3fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glVertexStream3fvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z)  {if (GLeeInit()) glVertexStream3dATI(stream, x, y, z);}
+void __stdcall _Lazy_glVertexStream3dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glVertexStream3dvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream4sATI(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w)  {if (GLeeInit()) glVertexStream4sATI(stream, x, y, z, w);}
+void __stdcall _Lazy_glVertexStream4svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glVertexStream4svATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w)  {if (GLeeInit()) glVertexStream4iATI(stream, x, y, z, w);}
+void __stdcall _Lazy_glVertexStream4ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glVertexStream4ivATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glVertexStream4fATI(stream, x, y, z, w);}
+void __stdcall _Lazy_glVertexStream4fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glVertexStream4fvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glVertexStream4dATI(stream, x, y, z, w);}
+void __stdcall _Lazy_glVertexStream4dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glVertexStream4dvATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3bATI(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz)  {if (GLeeInit()) glNormalStream3bATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3bvATI(GLenum stream, const GLbyte * coords)           {if (GLeeInit()) glNormalStream3bvATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3sATI(GLenum stream, GLshort nx, GLshort ny, GLshort nz)  {if (GLeeInit()) glNormalStream3sATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glNormalStream3svATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz)     {if (GLeeInit()) glNormalStream3iATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glNormalStream3ivATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz)  {if (GLeeInit()) glNormalStream3fATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glNormalStream3fvATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz)  {if (GLeeInit()) glNormalStream3dATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glNormalStream3dvATI(stream, coords);}
+void __stdcall _Lazy_glClientActiveVertexStreamATI(GLenum stream)                         {if (GLeeInit()) glClientActiveVertexStreamATI(stream);}
+void __stdcall _Lazy_glVertexBlendEnviATI(GLenum pname, GLint param)                      {if (GLeeInit()) glVertexBlendEnviATI(pname, param);}
+void __stdcall _Lazy_glVertexBlendEnvfATI(GLenum pname, GLfloat param)                    {if (GLeeInit()) glVertexBlendEnvfATI(pname, param);}
+PFNGLVERTEXSTREAM1SATIPROC pglVertexStream1sATI=_Lazy_glVertexStream1sATI;
+PFNGLVERTEXSTREAM1SVATIPROC pglVertexStream1svATI=_Lazy_glVertexStream1svATI;
+PFNGLVERTEXSTREAM1IATIPROC pglVertexStream1iATI=_Lazy_glVertexStream1iATI;
+PFNGLVERTEXSTREAM1IVATIPROC pglVertexStream1ivATI=_Lazy_glVertexStream1ivATI;
+PFNGLVERTEXSTREAM1FATIPROC pglVertexStream1fATI=_Lazy_glVertexStream1fATI;
+PFNGLVERTEXSTREAM1FVATIPROC pglVertexStream1fvATI=_Lazy_glVertexStream1fvATI;
+PFNGLVERTEXSTREAM1DATIPROC pglVertexStream1dATI=_Lazy_glVertexStream1dATI;
+PFNGLVERTEXSTREAM1DVATIPROC pglVertexStream1dvATI=_Lazy_glVertexStream1dvATI;
+PFNGLVERTEXSTREAM2SATIPROC pglVertexStream2sATI=_Lazy_glVertexStream2sATI;
+PFNGLVERTEXSTREAM2SVATIPROC pglVertexStream2svATI=_Lazy_glVertexStream2svATI;
+PFNGLVERTEXSTREAM2IATIPROC pglVertexStream2iATI=_Lazy_glVertexStream2iATI;
+PFNGLVERTEXSTREAM2IVATIPROC pglVertexStream2ivATI=_Lazy_glVertexStream2ivATI;
+PFNGLVERTEXSTREAM2FATIPROC pglVertexStream2fATI=_Lazy_glVertexStream2fATI;
+PFNGLVERTEXSTREAM2FVATIPROC pglVertexStream2fvATI=_Lazy_glVertexStream2fvATI;
+PFNGLVERTEXSTREAM2DATIPROC pglVertexStream2dATI=_Lazy_glVertexStream2dATI;
+PFNGLVERTEXSTREAM2DVATIPROC pglVertexStream2dvATI=_Lazy_glVertexStream2dvATI;
+PFNGLVERTEXSTREAM3SATIPROC pglVertexStream3sATI=_Lazy_glVertexStream3sATI;
+PFNGLVERTEXSTREAM3SVATIPROC pglVertexStream3svATI=_Lazy_glVertexStream3svATI;
+PFNGLVERTEXSTREAM3IATIPROC pglVertexStream3iATI=_Lazy_glVertexStream3iATI;
+PFNGLVERTEXSTREAM3IVATIPROC pglVertexStream3ivATI=_Lazy_glVertexStream3ivATI;
+PFNGLVERTEXSTREAM3FATIPROC pglVertexStream3fATI=_Lazy_glVertexStream3fATI;
+PFNGLVERTEXSTREAM3FVATIPROC pglVertexStream3fvATI=_Lazy_glVertexStream3fvATI;
+PFNGLVERTEXSTREAM3DATIPROC pglVertexStream3dATI=_Lazy_glVertexStream3dATI;
+PFNGLVERTEXSTREAM3DVATIPROC pglVertexStream3dvATI=_Lazy_glVertexStream3dvATI;
+PFNGLVERTEXSTREAM4SATIPROC pglVertexStream4sATI=_Lazy_glVertexStream4sATI;
+PFNGLVERTEXSTREAM4SVATIPROC pglVertexStream4svATI=_Lazy_glVertexStream4svATI;
+PFNGLVERTEXSTREAM4IATIPROC pglVertexStream4iATI=_Lazy_glVertexStream4iATI;
+PFNGLVERTEXSTREAM4IVATIPROC pglVertexStream4ivATI=_Lazy_glVertexStream4ivATI;
+PFNGLVERTEXSTREAM4FATIPROC pglVertexStream4fATI=_Lazy_glVertexStream4fATI;
+PFNGLVERTEXSTREAM4FVATIPROC pglVertexStream4fvATI=_Lazy_glVertexStream4fvATI;
+PFNGLVERTEXSTREAM4DATIPROC pglVertexStream4dATI=_Lazy_glVertexStream4dATI;
+PFNGLVERTEXSTREAM4DVATIPROC pglVertexStream4dvATI=_Lazy_glVertexStream4dvATI;
+PFNGLNORMALSTREAM3BATIPROC pglNormalStream3bATI=_Lazy_glNormalStream3bATI;
+PFNGLNORMALSTREAM3BVATIPROC pglNormalStream3bvATI=_Lazy_glNormalStream3bvATI;
+PFNGLNORMALSTREAM3SATIPROC pglNormalStream3sATI=_Lazy_glNormalStream3sATI;
+PFNGLNORMALSTREAM3SVATIPROC pglNormalStream3svATI=_Lazy_glNormalStream3svATI;
+PFNGLNORMALSTREAM3IATIPROC pglNormalStream3iATI=_Lazy_glNormalStream3iATI;
+PFNGLNORMALSTREAM3IVATIPROC pglNormalStream3ivATI=_Lazy_glNormalStream3ivATI;
+PFNGLNORMALSTREAM3FATIPROC pglNormalStream3fATI=_Lazy_glNormalStream3fATI;
+PFNGLNORMALSTREAM3FVATIPROC pglNormalStream3fvATI=_Lazy_glNormalStream3fvATI;
+PFNGLNORMALSTREAM3DATIPROC pglNormalStream3dATI=_Lazy_glNormalStream3dATI;
+PFNGLNORMALSTREAM3DVATIPROC pglNormalStream3dvATI=_Lazy_glNormalStream3dvATI;
+PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC pglClientActiveVertexStreamATI=_Lazy_glClientActiveVertexStreamATI;
+PFNGLVERTEXBLENDENVIATIPROC pglVertexBlendEnviATI=_Lazy_glVertexBlendEnviATI;
+PFNGLVERTEXBLENDENVFATIPROC pglVertexBlendEnvfATI=_Lazy_glVertexBlendEnvfATI;
+#endif 
+
+/* GL_ATI_element_array */
+
+#ifdef __GLEE_GL_ATI_element_array
+void __stdcall _Lazy_glElementPointerATI(GLenum type, const GLvoid * pointer)             {if (GLeeInit()) glElementPointerATI(type, pointer);}
+void __stdcall _Lazy_glDrawElementArrayATI(GLenum mode, GLsizei count)                    {if (GLeeInit()) glDrawElementArrayATI(mode, count);}
+void __stdcall _Lazy_glDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count)  {if (GLeeInit()) glDrawRangeElementArrayATI(mode, start, end, count);}
+PFNGLELEMENTPOINTERATIPROC pglElementPointerATI=_Lazy_glElementPointerATI;
+PFNGLDRAWELEMENTARRAYATIPROC pglDrawElementArrayATI=_Lazy_glDrawElementArrayATI;
+PFNGLDRAWRANGEELEMENTARRAYATIPROC pglDrawRangeElementArrayATI=_Lazy_glDrawRangeElementArrayATI;
+#endif 
+
+/* GL_SUN_mesh_array */
+
+#ifdef __GLEE_GL_SUN_mesh_array
+void __stdcall _Lazy_glDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width)  {if (GLeeInit()) glDrawMeshArraysSUN(mode, first, count, width);}
+PFNGLDRAWMESHARRAYSSUNPROC pglDrawMeshArraysSUN=_Lazy_glDrawMeshArraysSUN;
+#endif 
+
+/* GL_SUN_slice_accum */
+
+#ifdef __GLEE_GL_SUN_slice_accum
+#endif 
+
+/* GL_NV_multisample_filter_hint */
+
+#ifdef __GLEE_GL_NV_multisample_filter_hint
+#endif 
+
+/* GL_NV_depth_clamp */
+
+#ifdef __GLEE_GL_NV_depth_clamp
+#endif 
+
+/* GL_NV_occlusion_query */
+
+#ifdef __GLEE_GL_NV_occlusion_query
+void __stdcall _Lazy_glGenOcclusionQueriesNV(GLsizei n, GLuint * ids)                     {if (GLeeInit()) glGenOcclusionQueriesNV(n, ids);}
+void __stdcall _Lazy_glDeleteOcclusionQueriesNV(GLsizei n, const GLuint * ids)            {if (GLeeInit()) glDeleteOcclusionQueriesNV(n, ids);}
+GLboolean __stdcall _Lazy_glIsOcclusionQueryNV(GLuint id)                                 {if (GLeeInit()) return glIsOcclusionQueryNV(id); return (GLboolean)0;}
+void __stdcall _Lazy_glBeginOcclusionQueryNV(GLuint id)                                   {if (GLeeInit()) glBeginOcclusionQueryNV(id);}
+void __stdcall _Lazy_glEndOcclusionQueryNV(void)                                          {if (GLeeInit()) glEndOcclusionQueryNV();}
+void __stdcall _Lazy_glGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint * params)     {if (GLeeInit()) glGetOcclusionQueryivNV(id, pname, params);}
+void __stdcall _Lazy_glGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint * params)   {if (GLeeInit()) glGetOcclusionQueryuivNV(id, pname, params);}
+PFNGLGENOCCLUSIONQUERIESNVPROC pglGenOcclusionQueriesNV=_Lazy_glGenOcclusionQueriesNV;
+PFNGLDELETEOCCLUSIONQUERIESNVPROC pglDeleteOcclusionQueriesNV=_Lazy_glDeleteOcclusionQueriesNV;
+PFNGLISOCCLUSIONQUERYNVPROC pglIsOcclusionQueryNV=_Lazy_glIsOcclusionQueryNV;
+PFNGLBEGINOCCLUSIONQUERYNVPROC pglBeginOcclusionQueryNV=_Lazy_glBeginOcclusionQueryNV;
+PFNGLENDOCCLUSIONQUERYNVPROC pglEndOcclusionQueryNV=_Lazy_glEndOcclusionQueryNV;
+PFNGLGETOCCLUSIONQUERYIVNVPROC pglGetOcclusionQueryivNV=_Lazy_glGetOcclusionQueryivNV;
+PFNGLGETOCCLUSIONQUERYUIVNVPROC pglGetOcclusionQueryuivNV=_Lazy_glGetOcclusionQueryuivNV;
+#endif 
+
+/* GL_NV_point_sprite */
+
+#ifdef __GLEE_GL_NV_point_sprite
+void __stdcall _Lazy_glPointParameteriNV(GLenum pname, GLint param)                       {if (GLeeInit()) glPointParameteriNV(pname, param);}
+void __stdcall _Lazy_glPointParameterivNV(GLenum pname, const GLint * params)             {if (GLeeInit()) glPointParameterivNV(pname, params);}
+PFNGLPOINTPARAMETERINVPROC pglPointParameteriNV=_Lazy_glPointParameteriNV;
+PFNGLPOINTPARAMETERIVNVPROC pglPointParameterivNV=_Lazy_glPointParameterivNV;
+#endif 
+
+/* GL_NV_texture_shader3 */
+
+#ifdef __GLEE_GL_NV_texture_shader3
+#endif 
+
+/* GL_NV_vertex_program1_1 */
+
+#ifdef __GLEE_GL_NV_vertex_program1_1
+#endif 
+
+/* GL_EXT_shadow_funcs */
+
+#ifdef __GLEE_GL_EXT_shadow_funcs
+#endif 
+
+/* GL_EXT_stencil_two_side */
+
+#ifdef __GLEE_GL_EXT_stencil_two_side
+void __stdcall _Lazy_glActiveStencilFaceEXT(GLenum face)                                  {if (GLeeInit()) glActiveStencilFaceEXT(face);}
+PFNGLACTIVESTENCILFACEEXTPROC pglActiveStencilFaceEXT=_Lazy_glActiveStencilFaceEXT;
+#endif 
+
+/* GL_ATI_text_fragment_shader */
+
+#ifdef __GLEE_GL_ATI_text_fragment_shader
+#endif 
+
+/* GL_APPLE_client_storage */
+
+#ifdef __GLEE_GL_APPLE_client_storage
+#endif 
+
+/* GL_APPLE_element_array */
+
+#ifdef __GLEE_GL_APPLE_element_array
+void __stdcall _Lazy_glElementPointerAPPLE(GLenum type, const GLvoid * pointer)           {if (GLeeInit()) glElementPointerAPPLE(type, pointer);}
+void __stdcall _Lazy_glDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count)     {if (GLeeInit()) glDrawElementArrayAPPLE(mode, first, count);}
+void __stdcall _Lazy_glDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count)  {if (GLeeInit()) glDrawRangeElementArrayAPPLE(mode, start, end, first, count);}
+void __stdcall _Lazy_glMultiDrawElementArrayAPPLE(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount)  {if (GLeeInit()) glMultiDrawElementArrayAPPLE(mode, first, count, primcount);}
+void __stdcall _Lazy_glMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, const GLint * first, const GLsizei * count, GLsizei primcount)  {if (GLeeInit()) glMultiDrawRangeElementArrayAPPLE(mode, start, end, first, count, primcount);}
+PFNGLELEMENTPOINTERAPPLEPROC pglElementPointerAPPLE=_Lazy_glElementPointerAPPLE;
+PFNGLDRAWELEMENTARRAYAPPLEPROC pglDrawElementArrayAPPLE=_Lazy_glDrawElementArrayAPPLE;
+PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC pglDrawRangeElementArrayAPPLE=_Lazy_glDrawRangeElementArrayAPPLE;
+PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC pglMultiDrawElementArrayAPPLE=_Lazy_glMultiDrawElementArrayAPPLE;
+PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC pglMultiDrawRangeElementArrayAPPLE=_Lazy_glMultiDrawRangeElementArrayAPPLE;
+#endif 
+
+/* GL_APPLE_fence */
+
+#ifdef __GLEE_GL_APPLE_fence
+void __stdcall _Lazy_glGenFencesAPPLE(GLsizei n, GLuint * fences)                         {if (GLeeInit()) glGenFencesAPPLE(n, fences);}
+void __stdcall _Lazy_glDeleteFencesAPPLE(GLsizei n, const GLuint * fences)                {if (GLeeInit()) glDeleteFencesAPPLE(n, fences);}
+void __stdcall _Lazy_glSetFenceAPPLE(GLuint fence)                                        {if (GLeeInit()) glSetFenceAPPLE(fence);}
+GLboolean __stdcall _Lazy_glIsFenceAPPLE(GLuint fence)                                    {if (GLeeInit()) return glIsFenceAPPLE(fence); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_glTestFenceAPPLE(GLuint fence)                                  {if (GLeeInit()) return glTestFenceAPPLE(fence); return (GLboolean)0;}
+void __stdcall _Lazy_glFinishFenceAPPLE(GLuint fence)                                     {if (GLeeInit()) glFinishFenceAPPLE(fence);}
+GLboolean __stdcall _Lazy_glTestObjectAPPLE(GLenum object, GLuint name)                   {if (GLeeInit()) return glTestObjectAPPLE(object, name); return (GLboolean)0;}
+void __stdcall _Lazy_glFinishObjectAPPLE(GLenum object, GLint name)                       {if (GLeeInit()) glFinishObjectAPPLE(object, name);}
+PFNGLGENFENCESAPPLEPROC pglGenFencesAPPLE=_Lazy_glGenFencesAPPLE;
+PFNGLDELETEFENCESAPPLEPROC pglDeleteFencesAPPLE=_Lazy_glDeleteFencesAPPLE;
+PFNGLSETFENCEAPPLEPROC pglSetFenceAPPLE=_Lazy_glSetFenceAPPLE;
+PFNGLISFENCEAPPLEPROC pglIsFenceAPPLE=_Lazy_glIsFenceAPPLE;
+PFNGLTESTFENCEAPPLEPROC pglTestFenceAPPLE=_Lazy_glTestFenceAPPLE;
+PFNGLFINISHFENCEAPPLEPROC pglFinishFenceAPPLE=_Lazy_glFinishFenceAPPLE;
+PFNGLTESTOBJECTAPPLEPROC pglTestObjectAPPLE=_Lazy_glTestObjectAPPLE;
+PFNGLFINISHOBJECTAPPLEPROC pglFinishObjectAPPLE=_Lazy_glFinishObjectAPPLE;
+#endif 
+
+/* GL_APPLE_vertex_array_object */
+
+#ifdef __GLEE_GL_APPLE_vertex_array_object
+void __stdcall _Lazy_glBindVertexArrayAPPLE(GLuint array)                                 {if (GLeeInit()) glBindVertexArrayAPPLE(array);}
+void __stdcall _Lazy_glDeleteVertexArraysAPPLE(GLsizei n, const GLuint * arrays)          {if (GLeeInit()) glDeleteVertexArraysAPPLE(n, arrays);}
+void __stdcall _Lazy_glGenVertexArraysAPPLE(GLsizei n, const GLuint * arrays)             {if (GLeeInit()) glGenVertexArraysAPPLE(n, arrays);}
+GLboolean __stdcall _Lazy_glIsVertexArrayAPPLE(GLuint array)                              {if (GLeeInit()) return glIsVertexArrayAPPLE(array); return (GLboolean)0;}
+PFNGLBINDVERTEXARRAYAPPLEPROC pglBindVertexArrayAPPLE=_Lazy_glBindVertexArrayAPPLE;
+PFNGLDELETEVERTEXARRAYSAPPLEPROC pglDeleteVertexArraysAPPLE=_Lazy_glDeleteVertexArraysAPPLE;
+PFNGLGENVERTEXARRAYSAPPLEPROC pglGenVertexArraysAPPLE=_Lazy_glGenVertexArraysAPPLE;
+PFNGLISVERTEXARRAYAPPLEPROC pglIsVertexArrayAPPLE=_Lazy_glIsVertexArrayAPPLE;
+#endif 
+
+/* GL_APPLE_vertex_array_range */
+
+#ifdef __GLEE_GL_APPLE_vertex_array_range
+void __stdcall _Lazy_glVertexArrayRangeAPPLE(GLsizei length, GLvoid * pointer)            {if (GLeeInit()) glVertexArrayRangeAPPLE(length, pointer);}
+void __stdcall _Lazy_glFlushVertexArrayRangeAPPLE(GLsizei length, GLvoid * pointer)       {if (GLeeInit()) glFlushVertexArrayRangeAPPLE(length, pointer);}
+void __stdcall _Lazy_glVertexArrayParameteriAPPLE(GLenum pname, GLint param)              {if (GLeeInit()) glVertexArrayParameteriAPPLE(pname, param);}
+PFNGLVERTEXARRAYRANGEAPPLEPROC pglVertexArrayRangeAPPLE=_Lazy_glVertexArrayRangeAPPLE;
+PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC pglFlushVertexArrayRangeAPPLE=_Lazy_glFlushVertexArrayRangeAPPLE;
+PFNGLVERTEXARRAYPARAMETERIAPPLEPROC pglVertexArrayParameteriAPPLE=_Lazy_glVertexArrayParameteriAPPLE;
+#endif 
+
+/* GL_APPLE_ycbcr_422 */
+
+#ifdef __GLEE_GL_APPLE_ycbcr_422
+#endif 
+
+/* GL_S3_s3tc */
+
+#ifdef __GLEE_GL_S3_s3tc
+#endif 
+
+/* GL_ATI_draw_buffers */
+
+#ifdef __GLEE_GL_ATI_draw_buffers
+void __stdcall _Lazy_glDrawBuffersATI(GLsizei n, const GLenum * bufs)                     {if (GLeeInit()) glDrawBuffersATI(n, bufs);}
+PFNGLDRAWBUFFERSATIPROC pglDrawBuffersATI=_Lazy_glDrawBuffersATI;
+#endif 
+
+/* GL_ATI_pixel_format_float */
+
+#ifdef __GLEE_GL_ATI_pixel_format_float
+#endif 
+
+/* GL_ATI_texture_env_combine3 */
+
+#ifdef __GLEE_GL_ATI_texture_env_combine3
+#endif 
+
+/* GL_ATI_texture_float */
+
+#ifdef __GLEE_GL_ATI_texture_float
+#endif 
+
+/* GL_NV_float_buffer */
+
+#ifdef __GLEE_GL_NV_float_buffer
+#endif 
+
+/* GL_NV_fragment_program */
+
+#ifdef __GLEE_GL_NV_fragment_program
+void __stdcall _Lazy_glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glProgramNamedParameter4fNV(id, len, name, x, y, z, w);}
+void __stdcall _Lazy_glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glProgramNamedParameter4dNV(id, len, name, x, y, z, w);}
+void __stdcall _Lazy_glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v)  {if (GLeeInit()) glProgramNamedParameter4fvNV(id, len, name, v);}
+void __stdcall _Lazy_glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v)  {if (GLeeInit()) glProgramNamedParameter4dvNV(id, len, name, v);}
+void __stdcall _Lazy_glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params)  {if (GLeeInit()) glGetProgramNamedParameterfvNV(id, len, name, params);}
+void __stdcall _Lazy_glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params)  {if (GLeeInit()) glGetProgramNamedParameterdvNV(id, len, name, params);}
+PFNGLPROGRAMNAMEDPARAMETER4FNVPROC pglProgramNamedParameter4fNV=_Lazy_glProgramNamedParameter4fNV;
+PFNGLPROGRAMNAMEDPARAMETER4DNVPROC pglProgramNamedParameter4dNV=_Lazy_glProgramNamedParameter4dNV;
+PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC pglProgramNamedParameter4fvNV=_Lazy_glProgramNamedParameter4fvNV;
+PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC pglProgramNamedParameter4dvNV=_Lazy_glProgramNamedParameter4dvNV;
+PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC pglGetProgramNamedParameterfvNV=_Lazy_glGetProgramNamedParameterfvNV;
+PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC pglGetProgramNamedParameterdvNV=_Lazy_glGetProgramNamedParameterdvNV;
+#endif 
+
+/* GL_NV_half_float */
+
+#ifdef __GLEE_GL_NV_half_float
+void __stdcall _Lazy_glVertex2hNV(GLhalfNV x, GLhalfNV y)                                 {if (GLeeInit()) glVertex2hNV(x, y);}
+void __stdcall _Lazy_glVertex2hvNV(const GLhalfNV * v)                                    {if (GLeeInit()) glVertex2hvNV(v);}
+void __stdcall _Lazy_glVertex3hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z)                     {if (GLeeInit()) glVertex3hNV(x, y, z);}
+void __stdcall _Lazy_glVertex3hvNV(const GLhalfNV * v)                                    {if (GLeeInit()) glVertex3hvNV(v);}
+void __stdcall _Lazy_glVertex4hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)         {if (GLeeInit()) glVertex4hNV(x, y, z, w);}
+void __stdcall _Lazy_glVertex4hvNV(const GLhalfNV * v)                                    {if (GLeeInit()) glVertex4hvNV(v);}
+void __stdcall _Lazy_glNormal3hNV(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz)                  {if (GLeeInit()) glNormal3hNV(nx, ny, nz);}
+void __stdcall _Lazy_glNormal3hvNV(const GLhalfNV * v)                                    {if (GLeeInit()) glNormal3hvNV(v);}
+void __stdcall _Lazy_glColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue)             {if (GLeeInit()) glColor3hNV(red, green, blue);}
+void __stdcall _Lazy_glColor3hvNV(const GLhalfNV * v)                                     {if (GLeeInit()) glColor3hvNV(v);}
+void __stdcall _Lazy_glColor4hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha)  {if (GLeeInit()) glColor4hNV(red, green, blue, alpha);}
+void __stdcall _Lazy_glColor4hvNV(const GLhalfNV * v)                                     {if (GLeeInit()) glColor4hvNV(v);}
+void __stdcall _Lazy_glTexCoord1hNV(GLhalfNV s)                                           {if (GLeeInit()) glTexCoord1hNV(s);}
+void __stdcall _Lazy_glTexCoord1hvNV(const GLhalfNV * v)                                  {if (GLeeInit()) glTexCoord1hvNV(v);}
+void __stdcall _Lazy_glTexCoord2hNV(GLhalfNV s, GLhalfNV t)                               {if (GLeeInit()) glTexCoord2hNV(s, t);}
+void __stdcall _Lazy_glTexCoord2hvNV(const GLhalfNV * v)                                  {if (GLeeInit()) glTexCoord2hvNV(v);}
+void __stdcall _Lazy_glTexCoord3hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r)                   {if (GLeeInit()) glTexCoord3hNV(s, t, r);}
+void __stdcall _Lazy_glTexCoord3hvNV(const GLhalfNV * v)                                  {if (GLeeInit()) glTexCoord3hvNV(v);}
+void __stdcall _Lazy_glTexCoord4hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q)       {if (GLeeInit()) glTexCoord4hNV(s, t, r, q);}
+void __stdcall _Lazy_glTexCoord4hvNV(const GLhalfNV * v)                                  {if (GLeeInit()) glTexCoord4hvNV(v);}
+void __stdcall _Lazy_glMultiTexCoord1hNV(GLenum target, GLhalfNV s)                       {if (GLeeInit()) glMultiTexCoord1hNV(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1hvNV(GLenum target, const GLhalfNV * v)              {if (GLeeInit()) glMultiTexCoord1hvNV(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2hNV(GLenum target, GLhalfNV s, GLhalfNV t)           {if (GLeeInit()) glMultiTexCoord2hNV(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2hvNV(GLenum target, const GLhalfNV * v)              {if (GLeeInit()) glMultiTexCoord2hvNV(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r)  {if (GLeeInit()) glMultiTexCoord3hNV(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3hvNV(GLenum target, const GLhalfNV * v)              {if (GLeeInit()) glMultiTexCoord3hvNV(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q)  {if (GLeeInit()) glMultiTexCoord4hNV(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4hvNV(GLenum target, const GLhalfNV * v)              {if (GLeeInit()) glMultiTexCoord4hvNV(target, v);}
+void __stdcall _Lazy_glFogCoordhNV(GLhalfNV fog)                                          {if (GLeeInit()) glFogCoordhNV(fog);}
+void __stdcall _Lazy_glFogCoordhvNV(const GLhalfNV * fog)                                 {if (GLeeInit()) glFogCoordhvNV(fog);}
+void __stdcall _Lazy_glSecondaryColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue)    {if (GLeeInit()) glSecondaryColor3hNV(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3hvNV(const GLhalfNV * v)                            {if (GLeeInit()) glSecondaryColor3hvNV(v);}
+void __stdcall _Lazy_glVertexWeighthNV(GLhalfNV weight)                                   {if (GLeeInit()) glVertexWeighthNV(weight);}
+void __stdcall _Lazy_glVertexWeighthvNV(const GLhalfNV * weight)                          {if (GLeeInit()) glVertexWeighthvNV(weight);}
+void __stdcall _Lazy_glVertexAttrib1hNV(GLuint index, GLhalfNV x)                         {if (GLeeInit()) glVertexAttrib1hNV(index, x);}
+void __stdcall _Lazy_glVertexAttrib1hvNV(GLuint index, const GLhalfNV * v)                {if (GLeeInit()) glVertexAttrib1hvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib2hNV(GLuint index, GLhalfNV x, GLhalfNV y)             {if (GLeeInit()) glVertexAttrib2hNV(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2hvNV(GLuint index, const GLhalfNV * v)                {if (GLeeInit()) glVertexAttrib2hvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib3hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z)  {if (GLeeInit()) glVertexAttrib3hNV(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3hvNV(GLuint index, const GLhalfNV * v)                {if (GLeeInit()) glVertexAttrib3hvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)  {if (GLeeInit()) glVertexAttrib4hNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4hvNV(GLuint index, const GLhalfNV * v)                {if (GLeeInit()) glVertexAttrib4hvNV(index, v);}
+void __stdcall _Lazy_glVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV * v)    {if (GLeeInit()) glVertexAttribs1hvNV(index, n, v);}
+void __stdcall _Lazy_glVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV * v)    {if (GLeeInit()) glVertexAttribs2hvNV(index, n, v);}
+void __stdcall _Lazy_glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV * v)    {if (GLeeInit()) glVertexAttribs3hvNV(index, n, v);}
+void __stdcall _Lazy_glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV * v)    {if (GLeeInit()) glVertexAttribs4hvNV(index, n, v);}
+PFNGLVERTEX2HNVPROC pglVertex2hNV=_Lazy_glVertex2hNV;
+PFNGLVERTEX2HVNVPROC pglVertex2hvNV=_Lazy_glVertex2hvNV;
+PFNGLVERTEX3HNVPROC pglVertex3hNV=_Lazy_glVertex3hNV;
+PFNGLVERTEX3HVNVPROC pglVertex3hvNV=_Lazy_glVertex3hvNV;
+PFNGLVERTEX4HNVPROC pglVertex4hNV=_Lazy_glVertex4hNV;
+PFNGLVERTEX4HVNVPROC pglVertex4hvNV=_Lazy_glVertex4hvNV;
+PFNGLNORMAL3HNVPROC pglNormal3hNV=_Lazy_glNormal3hNV;
+PFNGLNORMAL3HVNVPROC pglNormal3hvNV=_Lazy_glNormal3hvNV;
+PFNGLCOLOR3HNVPROC pglColor3hNV=_Lazy_glColor3hNV;
+PFNGLCOLOR3HVNVPROC pglColor3hvNV=_Lazy_glColor3hvNV;
+PFNGLCOLOR4HNVPROC pglColor4hNV=_Lazy_glColor4hNV;
+PFNGLCOLOR4HVNVPROC pglColor4hvNV=_Lazy_glColor4hvNV;
+PFNGLTEXCOORD1HNVPROC pglTexCoord1hNV=_Lazy_glTexCoord1hNV;
+PFNGLTEXCOORD1HVNVPROC pglTexCoord1hvNV=_Lazy_glTexCoord1hvNV;
+PFNGLTEXCOORD2HNVPROC pglTexCoord2hNV=_Lazy_glTexCoord2hNV;
+PFNGLTEXCOORD2HVNVPROC pglTexCoord2hvNV=_Lazy_glTexCoord2hvNV;
+PFNGLTEXCOORD3HNVPROC pglTexCoord3hNV=_Lazy_glTexCoord3hNV;
+PFNGLTEXCOORD3HVNVPROC pglTexCoord3hvNV=_Lazy_glTexCoord3hvNV;
+PFNGLTEXCOORD4HNVPROC pglTexCoord4hNV=_Lazy_glTexCoord4hNV;
+PFNGLTEXCOORD4HVNVPROC pglTexCoord4hvNV=_Lazy_glTexCoord4hvNV;
+PFNGLMULTITEXCOORD1HNVPROC pglMultiTexCoord1hNV=_Lazy_glMultiTexCoord1hNV;
+PFNGLMULTITEXCOORD1HVNVPROC pglMultiTexCoord1hvNV=_Lazy_glMultiTexCoord1hvNV;
+PFNGLMULTITEXCOORD2HNVPROC pglMultiTexCoord2hNV=_Lazy_glMultiTexCoord2hNV;
+PFNGLMULTITEXCOORD2HVNVPROC pglMultiTexCoord2hvNV=_Lazy_glMultiTexCoord2hvNV;
+PFNGLMULTITEXCOORD3HNVPROC pglMultiTexCoord3hNV=_Lazy_glMultiTexCoord3hNV;
+PFNGLMULTITEXCOORD3HVNVPROC pglMultiTexCoord3hvNV=_Lazy_glMultiTexCoord3hvNV;
+PFNGLMULTITEXCOORD4HNVPROC pglMultiTexCoord4hNV=_Lazy_glMultiTexCoord4hNV;
+PFNGLMULTITEXCOORD4HVNVPROC pglMultiTexCoord4hvNV=_Lazy_glMultiTexCoord4hvNV;
+PFNGLFOGCOORDHNVPROC pglFogCoordhNV=_Lazy_glFogCoordhNV;
+PFNGLFOGCOORDHVNVPROC pglFogCoordhvNV=_Lazy_glFogCoordhvNV;
+PFNGLSECONDARYCOLOR3HNVPROC pglSecondaryColor3hNV=_Lazy_glSecondaryColor3hNV;
+PFNGLSECONDARYCOLOR3HVNVPROC pglSecondaryColor3hvNV=_Lazy_glSecondaryColor3hvNV;
+PFNGLVERTEXWEIGHTHNVPROC pglVertexWeighthNV=_Lazy_glVertexWeighthNV;
+PFNGLVERTEXWEIGHTHVNVPROC pglVertexWeighthvNV=_Lazy_glVertexWeighthvNV;
+PFNGLVERTEXATTRIB1HNVPROC pglVertexAttrib1hNV=_Lazy_glVertexAttrib1hNV;
+PFNGLVERTEXATTRIB1HVNVPROC pglVertexAttrib1hvNV=_Lazy_glVertexAttrib1hvNV;
+PFNGLVERTEXATTRIB2HNVPROC pglVertexAttrib2hNV=_Lazy_glVertexAttrib2hNV;
+PFNGLVERTEXATTRIB2HVNVPROC pglVertexAttrib2hvNV=_Lazy_glVertexAttrib2hvNV;
+PFNGLVERTEXATTRIB3HNVPROC pglVertexAttrib3hNV=_Lazy_glVertexAttrib3hNV;
+PFNGLVERTEXATTRIB3HVNVPROC pglVertexAttrib3hvNV=_Lazy_glVertexAttrib3hvNV;
+PFNGLVERTEXATTRIB4HNVPROC pglVertexAttrib4hNV=_Lazy_glVertexAttrib4hNV;
+PFNGLVERTEXATTRIB4HVNVPROC pglVertexAttrib4hvNV=_Lazy_glVertexAttrib4hvNV;
+PFNGLVERTEXATTRIBS1HVNVPROC pglVertexAttribs1hvNV=_Lazy_glVertexAttribs1hvNV;
+PFNGLVERTEXATTRIBS2HVNVPROC pglVertexAttribs2hvNV=_Lazy_glVertexAttribs2hvNV;
+PFNGLVERTEXATTRIBS3HVNVPROC pglVertexAttribs3hvNV=_Lazy_glVertexAttribs3hvNV;
+PFNGLVERTEXATTRIBS4HVNVPROC pglVertexAttribs4hvNV=_Lazy_glVertexAttribs4hvNV;
+#endif 
+
+/* GL_NV_pixel_data_range */
+
+#ifdef __GLEE_GL_NV_pixel_data_range
+void __stdcall _Lazy_glPixelDataRangeNV(GLenum target, GLsizei length, GLvoid * pointer)  {if (GLeeInit()) glPixelDataRangeNV(target, length, pointer);}
+void __stdcall _Lazy_glFlushPixelDataRangeNV(GLenum target)                               {if (GLeeInit()) glFlushPixelDataRangeNV(target);}
+PFNGLPIXELDATARANGENVPROC pglPixelDataRangeNV=_Lazy_glPixelDataRangeNV;
+PFNGLFLUSHPIXELDATARANGENVPROC pglFlushPixelDataRangeNV=_Lazy_glFlushPixelDataRangeNV;
+#endif 
+
+/* GL_NV_primitive_restart */
+
+#ifdef __GLEE_GL_NV_primitive_restart
+void __stdcall _Lazy_glPrimitiveRestartNV(void)                                           {if (GLeeInit()) glPrimitiveRestartNV();}
+void __stdcall _Lazy_glPrimitiveRestartIndexNV(GLuint index)                              {if (GLeeInit()) glPrimitiveRestartIndexNV(index);}
+PFNGLPRIMITIVERESTARTNVPROC pglPrimitiveRestartNV=_Lazy_glPrimitiveRestartNV;
+PFNGLPRIMITIVERESTARTINDEXNVPROC pglPrimitiveRestartIndexNV=_Lazy_glPrimitiveRestartIndexNV;
+#endif 
+
+/* GL_NV_texture_expand_normal */
+
+#ifdef __GLEE_GL_NV_texture_expand_normal
+#endif 
+
+/* GL_NV_vertex_program2 */
+
+#ifdef __GLEE_GL_NV_vertex_program2
+#endif 
+
+/* GL_ATI_map_object_buffer */
+
+#ifdef __GLEE_GL_ATI_map_object_buffer
+GLvoid* __stdcall _Lazy_glMapObjectBufferATI(GLuint buffer)                               {if (GLeeInit()) return glMapObjectBufferATI(buffer); return (GLvoid*)0;}
+void __stdcall _Lazy_glUnmapObjectBufferATI(GLuint buffer)                                {if (GLeeInit()) glUnmapObjectBufferATI(buffer);}
+PFNGLMAPOBJECTBUFFERATIPROC pglMapObjectBufferATI=_Lazy_glMapObjectBufferATI;
+PFNGLUNMAPOBJECTBUFFERATIPROC pglUnmapObjectBufferATI=_Lazy_glUnmapObjectBufferATI;
+#endif 
+
+/* GL_ATI_separate_stencil */
+
+#ifdef __GLEE_GL_ATI_separate_stencil
+void __stdcall _Lazy_glStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)  {if (GLeeInit()) glStencilOpSeparateATI(face, sfail, dpfail, dppass);}
+void __stdcall _Lazy_glStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)  {if (GLeeInit()) glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);}
+PFNGLSTENCILOPSEPARATEATIPROC pglStencilOpSeparateATI=_Lazy_glStencilOpSeparateATI;
+PFNGLSTENCILFUNCSEPARATEATIPROC pglStencilFuncSeparateATI=_Lazy_glStencilFuncSeparateATI;
+#endif 
+
+/* GL_ATI_vertex_attrib_array_object */
+
+#ifdef __GLEE_GL_ATI_vertex_attrib_array_object
+void __stdcall _Lazy_glVertexAttribArrayObjectATI(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset)  {if (GLeeInit()) glVertexAttribArrayObjectATI(index, size, type, normalized, stride, buffer, offset);}
+void __stdcall _Lazy_glGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetVertexAttribArrayObjectfvATI(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint * params)  {if (GLeeInit()) glGetVertexAttribArrayObjectivATI(index, pname, params);}
+PFNGLVERTEXATTRIBARRAYOBJECTATIPROC pglVertexAttribArrayObjectATI=_Lazy_glVertexAttribArrayObjectATI;
+PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC pglGetVertexAttribArrayObjectfvATI=_Lazy_glGetVertexAttribArrayObjectfvATI;
+PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC pglGetVertexAttribArrayObjectivATI=_Lazy_glGetVertexAttribArrayObjectivATI;
+#endif 
+
+/* GL_OES_read_format */
+
+#ifdef __GLEE_GL_OES_read_format
+#endif 
+
+/* GL_EXT_depth_bounds_test */
+
+#ifdef __GLEE_GL_EXT_depth_bounds_test
+void __stdcall _Lazy_glDepthBoundsEXT(GLclampd zmin, GLclampd zmax)                       {if (GLeeInit()) glDepthBoundsEXT(zmin, zmax);}
+PFNGLDEPTHBOUNDSEXTPROC pglDepthBoundsEXT=_Lazy_glDepthBoundsEXT;
+#endif 
+
+/* GL_EXT_texture_mirror_clamp */
+
+#ifdef __GLEE_GL_EXT_texture_mirror_clamp
+#endif 
+
+/* GL_EXT_blend_equation_separate */
+
+#ifdef __GLEE_GL_EXT_blend_equation_separate
+void __stdcall _Lazy_glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha)         {if (GLeeInit()) glBlendEquationSeparateEXT(modeRGB, modeAlpha);}
+PFNGLBLENDEQUATIONSEPARATEEXTPROC pglBlendEquationSeparateEXT=_Lazy_glBlendEquationSeparateEXT;
+#endif 
+
+/* GL_MESA_pack_invert */
+
+#ifdef __GLEE_GL_MESA_pack_invert
+#endif 
+
+/* GL_MESA_ycbcr_texture */
+
+#ifdef __GLEE_GL_MESA_ycbcr_texture
+#endif 
+
+/* GL_EXT_pixel_buffer_object */
+
+#ifdef __GLEE_GL_EXT_pixel_buffer_object
+#endif 
+
+/* GL_NV_fragment_program_option */
+
+#ifdef __GLEE_GL_NV_fragment_program_option
+#endif 
+
+/* GL_NV_fragment_program2 */
+
+#ifdef __GLEE_GL_NV_fragment_program2
+#endif 
+
+/* GL_NV_vertex_program2_option */
+
+#ifdef __GLEE_GL_NV_vertex_program2_option
+#endif 
+
+/* GL_NV_vertex_program3 */
+
+#ifdef __GLEE_GL_NV_vertex_program3
+#endif 
+
+/* GL_EXT_framebuffer_object */
+
+#ifdef __GLEE_GL_EXT_framebuffer_object
+GLboolean __stdcall _Lazy_glIsRenderbufferEXT(GLuint renderbuffer)                        {if (GLeeInit()) return glIsRenderbufferEXT(renderbuffer); return (GLboolean)0;}
+void __stdcall _Lazy_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer)            {if (GLeeInit()) glBindRenderbufferEXT(target, renderbuffer);}
+void __stdcall _Lazy_glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers)    {if (GLeeInit()) glDeleteRenderbuffersEXT(n, renderbuffers);}
+void __stdcall _Lazy_glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers)             {if (GLeeInit()) glGenRenderbuffersEXT(n, renderbuffers);}
+void __stdcall _Lazy_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)  {if (GLeeInit()) glRenderbufferStorageEXT(target, internalformat, width, height);}
+void __stdcall _Lazy_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetRenderbufferParameterivEXT(target, pname, params);}
+GLboolean __stdcall _Lazy_glIsFramebufferEXT(GLuint framebuffer)                          {if (GLeeInit()) return glIsFramebufferEXT(framebuffer); return (GLboolean)0;}
+void __stdcall _Lazy_glBindFramebufferEXT(GLenum target, GLuint framebuffer)              {if (GLeeInit()) glBindFramebufferEXT(target, framebuffer);}
+void __stdcall _Lazy_glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers)      {if (GLeeInit()) glDeleteFramebuffersEXT(n, framebuffers);}
+void __stdcall _Lazy_glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers)               {if (GLeeInit()) glGenFramebuffersEXT(n, framebuffers);}
+GLenum __stdcall _Lazy_glCheckFramebufferStatusEXT(GLenum target)                         {if (GLeeInit()) return glCheckFramebufferStatusEXT(target); return (GLenum)0;}
+void __stdcall _Lazy_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)  {if (GLeeInit()) glFramebufferTexture1DEXT(target, attachment, textarget, texture, level);}
+void __stdcall _Lazy_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)  {if (GLeeInit()) glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);}
+void __stdcall _Lazy_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)  {if (GLeeInit()) glFramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset);}
+void __stdcall _Lazy_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)  {if (GLeeInit()) glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);}
+void __stdcall _Lazy_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);}
+void __stdcall _Lazy_glGenerateMipmapEXT(GLenum target)                                   {if (GLeeInit()) glGenerateMipmapEXT(target);}
+PFNGLISRENDERBUFFEREXTPROC pglIsRenderbufferEXT=_Lazy_glIsRenderbufferEXT;
+PFNGLBINDRENDERBUFFEREXTPROC pglBindRenderbufferEXT=_Lazy_glBindRenderbufferEXT;
+PFNGLDELETERENDERBUFFERSEXTPROC pglDeleteRenderbuffersEXT=_Lazy_glDeleteRenderbuffersEXT;
+PFNGLGENRENDERBUFFERSEXTPROC pglGenRenderbuffersEXT=_Lazy_glGenRenderbuffersEXT;
+PFNGLRENDERBUFFERSTORAGEEXTPROC pglRenderbufferStorageEXT=_Lazy_glRenderbufferStorageEXT;
+PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC pglGetRenderbufferParameterivEXT=_Lazy_glGetRenderbufferParameterivEXT;
+PFNGLISFRAMEBUFFEREXTPROC pglIsFramebufferEXT=_Lazy_glIsFramebufferEXT;
+PFNGLBINDFRAMEBUFFEREXTPROC pglBindFramebufferEXT=_Lazy_glBindFramebufferEXT;
+PFNGLDELETEFRAMEBUFFERSEXTPROC pglDeleteFramebuffersEXT=_Lazy_glDeleteFramebuffersEXT;
+PFNGLGENFRAMEBUFFERSEXTPROC pglGenFramebuffersEXT=_Lazy_glGenFramebuffersEXT;
+PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC pglCheckFramebufferStatusEXT=_Lazy_glCheckFramebufferStatusEXT;
+PFNGLFRAMEBUFFERTEXTURE1DEXTPROC pglFramebufferTexture1DEXT=_Lazy_glFramebufferTexture1DEXT;
+PFNGLFRAMEBUFFERTEXTURE2DEXTPROC pglFramebufferTexture2DEXT=_Lazy_glFramebufferTexture2DEXT;
+PFNGLFRAMEBUFFERTEXTURE3DEXTPROC pglFramebufferTexture3DEXT=_Lazy_glFramebufferTexture3DEXT;
+PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC pglFramebufferRenderbufferEXT=_Lazy_glFramebufferRenderbufferEXT;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC pglGetFramebufferAttachmentParameterivEXT=_Lazy_glGetFramebufferAttachmentParameterivEXT;
+PFNGLGENERATEMIPMAPEXTPROC pglGenerateMipmapEXT=_Lazy_glGenerateMipmapEXT;
+#endif 
+
+/* GL_GREMEDY_string_marker */
+
+#ifdef __GLEE_GL_GREMEDY_string_marker
+void __stdcall _Lazy_glStringMarkerGREMEDY(GLsizei len, const GLvoid * string)            {if (GLeeInit()) glStringMarkerGREMEDY(len, string);}
+PFNGLSTRINGMARKERGREMEDYPROC pglStringMarkerGREMEDY=_Lazy_glStringMarkerGREMEDY;
+#endif 
+
+/* GL_EXT_Cg_shader */
+
+#ifdef __GLEE_GL_EXT_Cg_shader
+#endif 
+
+/* GL_EXT_timer_query */
+
+#ifdef __GLEE_GL_EXT_timer_query
+void __stdcall _Lazy_glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64EXT * params)  {if (GLeeInit()) glGetQueryObjecti64vEXT(id, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64EXT * params)  {if (GLeeInit()) glGetQueryObjectui64vEXT(id, pname, params);}
+PFNGLGETQUERYOBJECTI64VEXTPROC pglGetQueryObjecti64vEXT=_Lazy_glGetQueryObjecti64vEXT;
+PFNGLGETQUERYOBJECTUI64VEXTPROC pglGetQueryObjectui64vEXT=_Lazy_glGetQueryObjectui64vEXT;
+#endif 
+
+/* GL_EXT_texture_buffer_object */
+
+#ifdef __GLEE_GL_EXT_texture_buffer_object
+void __stdcall _Lazy_glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer)  {if (GLeeInit()) glTexBufferEXT(target, internalformat, buffer);}
+PFNGLTEXBUFFEREXTPROC pglTexBufferEXT=_Lazy_glTexBufferEXT;
+#endif 
+
+/* GL_EXT_gpu_shader4 */
+
+#ifdef __GLEE_GL_EXT_gpu_shader4
+void __stdcall _Lazy_glGetUniformuivEXT(GLuint program, GLint location, GLuint * params)  {if (GLeeInit()) glGetUniformuivEXT(program, location, params);}
+void __stdcall _Lazy_glBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar * name)  {if (GLeeInit()) glBindFragDataLocationEXT(program, color, name);}
+GLint __stdcall _Lazy_glGetFragDataLocationEXT(GLuint program, const GLchar * name)       {if (GLeeInit()) return glGetFragDataLocationEXT(program, name); return (GLint)0;}
+void __stdcall _Lazy_glUniform1uiEXT(GLint location, GLuint v0)                           {if (GLeeInit()) glUniform1uiEXT(location, v0);}
+void __stdcall _Lazy_glUniform2uiEXT(GLint location, GLuint v0, GLuint v1)                {if (GLeeInit()) glUniform2uiEXT(location, v0, v1);}
+void __stdcall _Lazy_glUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2)     {if (GLeeInit()) glUniform3uiEXT(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)  {if (GLeeInit()) glUniform4uiEXT(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1uivEXT(GLint location, GLsizei count, const GLuint * value)  {if (GLeeInit()) glUniform1uivEXT(location, count, value);}
+void __stdcall _Lazy_glUniform2uivEXT(GLint location, GLsizei count, const GLuint * value)  {if (GLeeInit()) glUniform2uivEXT(location, count, value);}
+void __stdcall _Lazy_glUniform3uivEXT(GLint location, GLsizei count, const GLuint * value)  {if (GLeeInit()) glUniform3uivEXT(location, count, value);}
+void __stdcall _Lazy_glUniform4uivEXT(GLint location, GLsizei count, const GLuint * value)  {if (GLeeInit()) glUniform4uivEXT(location, count, value);}
+void __stdcall _Lazy_glVertexAttribI1iEXT(GLuint index, GLint x)                          {if (GLeeInit()) glVertexAttribI1iEXT(index, x);}
+void __stdcall _Lazy_glVertexAttribI2iEXT(GLuint index, GLint x, GLint y)                 {if (GLeeInit()) glVertexAttribI2iEXT(index, x, y);}
+void __stdcall _Lazy_glVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z)        {if (GLeeInit()) glVertexAttribI3iEXT(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w)  {if (GLeeInit()) glVertexAttribI4iEXT(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttribI1uiEXT(GLuint index, GLuint x)                        {if (GLeeInit()) glVertexAttribI1uiEXT(index, x);}
+void __stdcall _Lazy_glVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y)              {if (GLeeInit()) glVertexAttribI2uiEXT(index, x, y);}
+void __stdcall _Lazy_glVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z)    {if (GLeeInit()) glVertexAttribI3uiEXT(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)  {if (GLeeInit()) glVertexAttribI4uiEXT(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttribI1ivEXT(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttribI1ivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI2ivEXT(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttribI2ivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI3ivEXT(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttribI3ivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4ivEXT(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttribI4ivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI1uivEXT(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttribI1uivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI2uivEXT(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttribI2uivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI3uivEXT(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttribI3uivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4uivEXT(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttribI4uivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4bvEXT(GLuint index, const GLbyte * v)                {if (GLeeInit()) glVertexAttribI4bvEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4svEXT(GLuint index, const GLshort * v)               {if (GLeeInit()) glVertexAttribI4svEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4ubvEXT(GLuint index, const GLubyte * v)              {if (GLeeInit()) glVertexAttribI4ubvEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4usvEXT(GLuint index, const GLushort * v)             {if (GLeeInit()) glVertexAttribI4usvEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexAttribIPointerEXT(index, size, type, stride, pointer);}
+void __stdcall _Lazy_glGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint * params)  {if (GLeeInit()) glGetVertexAttribIivEXT(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint * params)  {if (GLeeInit()) glGetVertexAttribIuivEXT(index, pname, params);}
+PFNGLGETUNIFORMUIVEXTPROC pglGetUniformuivEXT=_Lazy_glGetUniformuivEXT;
+PFNGLBINDFRAGDATALOCATIONEXTPROC pglBindFragDataLocationEXT=_Lazy_glBindFragDataLocationEXT;
+PFNGLGETFRAGDATALOCATIONEXTPROC pglGetFragDataLocationEXT=_Lazy_glGetFragDataLocationEXT;
+PFNGLUNIFORM1UIEXTPROC pglUniform1uiEXT=_Lazy_glUniform1uiEXT;
+PFNGLUNIFORM2UIEXTPROC pglUniform2uiEXT=_Lazy_glUniform2uiEXT;
+PFNGLUNIFORM3UIEXTPROC pglUniform3uiEXT=_Lazy_glUniform3uiEXT;
+PFNGLUNIFORM4UIEXTPROC pglUniform4uiEXT=_Lazy_glUniform4uiEXT;
+PFNGLUNIFORM1UIVEXTPROC pglUniform1uivEXT=_Lazy_glUniform1uivEXT;
+PFNGLUNIFORM2UIVEXTPROC pglUniform2uivEXT=_Lazy_glUniform2uivEXT;
+PFNGLUNIFORM3UIVEXTPROC pglUniform3uivEXT=_Lazy_glUniform3uivEXT;
+PFNGLUNIFORM4UIVEXTPROC pglUniform4uivEXT=_Lazy_glUniform4uivEXT;
+PFNGLVERTEXATTRIBI1IEXTPROC pglVertexAttribI1iEXT=_Lazy_glVertexAttribI1iEXT;
+PFNGLVERTEXATTRIBI2IEXTPROC pglVertexAttribI2iEXT=_Lazy_glVertexAttribI2iEXT;
+PFNGLVERTEXATTRIBI3IEXTPROC pglVertexAttribI3iEXT=_Lazy_glVertexAttribI3iEXT;
+PFNGLVERTEXATTRIBI4IEXTPROC pglVertexAttribI4iEXT=_Lazy_glVertexAttribI4iEXT;
+PFNGLVERTEXATTRIBI1UIEXTPROC pglVertexAttribI1uiEXT=_Lazy_glVertexAttribI1uiEXT;
+PFNGLVERTEXATTRIBI2UIEXTPROC pglVertexAttribI2uiEXT=_Lazy_glVertexAttribI2uiEXT;
+PFNGLVERTEXATTRIBI3UIEXTPROC pglVertexAttribI3uiEXT=_Lazy_glVertexAttribI3uiEXT;
+PFNGLVERTEXATTRIBI4UIEXTPROC pglVertexAttribI4uiEXT=_Lazy_glVertexAttribI4uiEXT;
+PFNGLVERTEXATTRIBI1IVEXTPROC pglVertexAttribI1ivEXT=_Lazy_glVertexAttribI1ivEXT;
+PFNGLVERTEXATTRIBI2IVEXTPROC pglVertexAttribI2ivEXT=_Lazy_glVertexAttribI2ivEXT;
+PFNGLVERTEXATTRIBI3IVEXTPROC pglVertexAttribI3ivEXT=_Lazy_glVertexAttribI3ivEXT;
+PFNGLVERTEXATTRIBI4IVEXTPROC pglVertexAttribI4ivEXT=_Lazy_glVertexAttribI4ivEXT;
+PFNGLVERTEXATTRIBI1UIVEXTPROC pglVertexAttribI1uivEXT=_Lazy_glVertexAttribI1uivEXT;
+PFNGLVERTEXATTRIBI2UIVEXTPROC pglVertexAttribI2uivEXT=_Lazy_glVertexAttribI2uivEXT;
+PFNGLVERTEXATTRIBI3UIVEXTPROC pglVertexAttribI3uivEXT=_Lazy_glVertexAttribI3uivEXT;
+PFNGLVERTEXATTRIBI4UIVEXTPROC pglVertexAttribI4uivEXT=_Lazy_glVertexAttribI4uivEXT;
+PFNGLVERTEXATTRIBI4BVEXTPROC pglVertexAttribI4bvEXT=_Lazy_glVertexAttribI4bvEXT;
+PFNGLVERTEXATTRIBI4SVEXTPROC pglVertexAttribI4svEXT=_Lazy_glVertexAttribI4svEXT;
+PFNGLVERTEXATTRIBI4UBVEXTPROC pglVertexAttribI4ubvEXT=_Lazy_glVertexAttribI4ubvEXT;
+PFNGLVERTEXATTRIBI4USVEXTPROC pglVertexAttribI4usvEXT=_Lazy_glVertexAttribI4usvEXT;
+PFNGLVERTEXATTRIBIPOINTEREXTPROC pglVertexAttribIPointerEXT=_Lazy_glVertexAttribIPointerEXT;
+PFNGLGETVERTEXATTRIBIIVEXTPROC pglGetVertexAttribIivEXT=_Lazy_glGetVertexAttribIivEXT;
+PFNGLGETVERTEXATTRIBIUIVEXTPROC pglGetVertexAttribIuivEXT=_Lazy_glGetVertexAttribIuivEXT;
+#endif 
+
+/* GL_EXT_geometry_shader4 */
+
+#ifdef __GLEE_GL_EXT_geometry_shader4
+void __stdcall _Lazy_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value)    {if (GLeeInit()) glProgramParameteriEXT(program, pname, value);}
+void __stdcall _Lazy_glFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level)  {if (GLeeInit()) glFramebufferTextureEXT(target, attachment, texture, level);}
+void __stdcall _Lazy_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)  {if (GLeeInit()) glFramebufferTextureLayerEXT(target, attachment, texture, level, layer);}
+void __stdcall _Lazy_glFramebufferTextureFaceEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)  {if (GLeeInit()) glFramebufferTextureFaceEXT(target, attachment, texture, level, face);}
+PFNGLPROGRAMPARAMETERIEXTPROC pglProgramParameteriEXT=_Lazy_glProgramParameteriEXT;
+PFNGLFRAMEBUFFERTEXTUREEXTPROC pglFramebufferTextureEXT=_Lazy_glFramebufferTextureEXT;
+PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC pglFramebufferTextureLayerEXT=_Lazy_glFramebufferTextureLayerEXT;
+PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC pglFramebufferTextureFaceEXT=_Lazy_glFramebufferTextureFaceEXT;
+#endif 
+
+/* GL_EXT_bindable_uniform */
+
+#ifdef __GLEE_GL_EXT_bindable_uniform
+void __stdcall _Lazy_glUniformBufferEXT(GLuint program, GLint location, GLuint buffer)    {if (GLeeInit()) glUniformBufferEXT(program, location, buffer);}
+GLint __stdcall _Lazy_glGetUniformBufferSizeEXT(GLuint program, GLint location)           {if (GLeeInit()) return glGetUniformBufferSizeEXT(program, location); return (GLint)0;}
+GLintptr __stdcall _Lazy_glGetUniformOffsetEXT(GLuint program, GLint location)            {if (GLeeInit()) return glGetUniformOffsetEXT(program, location); return (GLintptr)0;}
+PFNGLUNIFORMBUFFEREXTPROC pglUniformBufferEXT=_Lazy_glUniformBufferEXT;
+PFNGLGETUNIFORMBUFFERSIZEEXTPROC pglGetUniformBufferSizeEXT=_Lazy_glGetUniformBufferSizeEXT;
+PFNGLGETUNIFORMOFFSETEXTPROC pglGetUniformOffsetEXT=_Lazy_glGetUniformOffsetEXT;
+#endif 
+
+/* GL_EXT_framebuffer_sRGB */
+
+#ifdef __GLEE_GL_EXT_framebuffer_sRGB
+#endif 
+
+/* GL_EXT_texture_shared_exponent */
+
+#ifdef __GLEE_GL_EXT_texture_shared_exponent
+#endif 
+
+/* GL_EXT_packed_float */
+
+#ifdef __GLEE_GL_EXT_packed_float
+#endif 
+
+/* GL_EXT_texture_array */
+
+#ifdef __GLEE_GL_EXT_texture_array
+#endif 
+
+/* GL_EXT_texture_integer */
+
+#ifdef __GLEE_GL_EXT_texture_integer
+void __stdcall _Lazy_glTexParameterIivEXT(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glTexParameterIivEXT(target, pname, params);}
+void __stdcall _Lazy_glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint * params)  {if (GLeeInit()) glTexParameterIuivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetTexParameterIivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint * params)  {if (GLeeInit()) glGetTexParameterIuivEXT(target, pname, params);}
+void __stdcall _Lazy_glClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha)   {if (GLeeInit()) glClearColorIiEXT(red, green, blue, alpha);}
+void __stdcall _Lazy_glClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha)  {if (GLeeInit()) glClearColorIuiEXT(red, green, blue, alpha);}
+PFNGLTEXPARAMETERIIVEXTPROC pglTexParameterIivEXT=_Lazy_glTexParameterIivEXT;
+PFNGLTEXPARAMETERIUIVEXTPROC pglTexParameterIuivEXT=_Lazy_glTexParameterIuivEXT;
+PFNGLGETTEXPARAMETERIIVEXTPROC pglGetTexParameterIivEXT=_Lazy_glGetTexParameterIivEXT;
+PFNGLGETTEXPARAMETERIUIVEXTPROC pglGetTexParameterIuivEXT=_Lazy_glGetTexParameterIuivEXT;
+PFNGLCLEARCOLORIIEXTPROC pglClearColorIiEXT=_Lazy_glClearColorIiEXT;
+PFNGLCLEARCOLORIUIEXTPROC pglClearColorIuiEXT=_Lazy_glClearColorIuiEXT;
+#endif 
+
+/* GL_NV_depth_buffer_float */
+
+#ifdef __GLEE_GL_NV_depth_buffer_float
+void __stdcall _Lazy_glDepthRangedNV(GLdouble zNear, GLdouble zFar)                       {if (GLeeInit()) glDepthRangedNV(zNear, zFar);}
+void __stdcall _Lazy_glClearDepthdNV(GLdouble depth)                                      {if (GLeeInit()) glClearDepthdNV(depth);}
+void __stdcall _Lazy_glDepthBoundsdNV(GLdouble zmin, GLdouble zmax)                       {if (GLeeInit()) glDepthBoundsdNV(zmin, zmax);}
+PFNGLDEPTHRANGEDNVPROC pglDepthRangedNV=_Lazy_glDepthRangedNV;
+PFNGLCLEARDEPTHDNVPROC pglClearDepthdNV=_Lazy_glClearDepthdNV;
+PFNGLDEPTHBOUNDSDNVPROC pglDepthBoundsdNV=_Lazy_glDepthBoundsdNV;
+#endif 
+
+/* GL_EXT_texture_compression_latc */
+
+#ifdef __GLEE_GL_EXT_texture_compression_latc
+#endif 
+
+/* GL_NV_transform_feedback */
+
+#ifdef __GLEE_GL_NV_transform_feedback
+void __stdcall _Lazy_glBeginTransformFeedbackNV(GLenum primitiveMode)                     {if (GLeeInit()) glBeginTransformFeedbackNV(primitiveMode);}
+void __stdcall _Lazy_glEndTransformFeedbackNV(void)                                       {if (GLeeInit()) glEndTransformFeedbackNV();}
+void __stdcall _Lazy_glTransformFeedbackAttribsNV(GLuint count, const GLint * attribs, GLenum bufferMode)  {if (GLeeInit()) glTransformFeedbackAttribsNV(count, attribs, bufferMode);}
+void __stdcall _Lazy_glBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)  {if (GLeeInit()) glBindBufferRangeNV(target, index, buffer, offset, size);}
+void __stdcall _Lazy_glBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset)  {if (GLeeInit()) glBindBufferOffsetNV(target, index, buffer, offset);}
+void __stdcall _Lazy_glBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer)       {if (GLeeInit()) glBindBufferBaseNV(target, index, buffer);}
+void __stdcall _Lazy_glTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint * locations, GLenum bufferMode)  {if (GLeeInit()) glTransformFeedbackVaryingsNV(program, count, locations, bufferMode);}
+void __stdcall _Lazy_glActiveVaryingNV(GLuint program, const GLchar * name)               {if (GLeeInit()) glActiveVaryingNV(program, name);}
+GLint __stdcall _Lazy_glGetVaryingLocationNV(GLuint program, const GLchar * name)         {if (GLeeInit()) return glGetVaryingLocationNV(program, name); return (GLint)0;}
+void __stdcall _Lazy_glGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name)  {if (GLeeInit()) glGetActiveVaryingNV(program, index, bufSize, length, size, type, name);}
+void __stdcall _Lazy_glGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint * location)  {if (GLeeInit()) glGetTransformFeedbackVaryingNV(program, index, location);}
+PFNGLBEGINTRANSFORMFEEDBACKNVPROC pglBeginTransformFeedbackNV=_Lazy_glBeginTransformFeedbackNV;
+PFNGLENDTRANSFORMFEEDBACKNVPROC pglEndTransformFeedbackNV=_Lazy_glEndTransformFeedbackNV;
+PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC pglTransformFeedbackAttribsNV=_Lazy_glTransformFeedbackAttribsNV;
+PFNGLBINDBUFFERRANGENVPROC pglBindBufferRangeNV=_Lazy_glBindBufferRangeNV;
+PFNGLBINDBUFFEROFFSETNVPROC pglBindBufferOffsetNV=_Lazy_glBindBufferOffsetNV;
+PFNGLBINDBUFFERBASENVPROC pglBindBufferBaseNV=_Lazy_glBindBufferBaseNV;
+PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC pglTransformFeedbackVaryingsNV=_Lazy_glTransformFeedbackVaryingsNV;
+PFNGLACTIVEVARYINGNVPROC pglActiveVaryingNV=_Lazy_glActiveVaryingNV;
+PFNGLGETVARYINGLOCATIONNVPROC pglGetVaryingLocationNV=_Lazy_glGetVaryingLocationNV;
+PFNGLGETACTIVEVARYINGNVPROC pglGetActiveVaryingNV=_Lazy_glGetActiveVaryingNV;
+PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC pglGetTransformFeedbackVaryingNV=_Lazy_glGetTransformFeedbackVaryingNV;
+#endif 
+
+/* GL_NV_geometry_program4 */
+
+#ifdef __GLEE_GL_NV_geometry_program4
+void __stdcall _Lazy_glProgramVertexLimitNV(GLenum target, GLint limit)                   {if (GLeeInit()) glProgramVertexLimitNV(target, limit);}
+PFNGLPROGRAMVERTEXLIMITNVPROC pglProgramVertexLimitNV=_Lazy_glProgramVertexLimitNV;
+#endif 
+
+/* GL_NV_gpu_program4 */
+
+#ifdef __GLEE_GL_NV_gpu_program4
+void __stdcall _Lazy_glProgramLocalParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)  {if (GLeeInit()) glProgramLocalParameterI4iNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramLocalParameterI4ivNV(GLenum target, GLuint index, const GLint * params)  {if (GLeeInit()) glProgramLocalParameterI4ivNV(target, index, params);}
+void __stdcall _Lazy_glProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint * params)  {if (GLeeInit()) glProgramLocalParametersI4ivNV(target, index, count, params);}
+void __stdcall _Lazy_glProgramLocalParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)  {if (GLeeInit()) glProgramLocalParameterI4uiNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramLocalParameterI4uivNV(GLenum target, GLuint index, const GLuint * params)  {if (GLeeInit()) glProgramLocalParameterI4uivNV(target, index, params);}
+void __stdcall _Lazy_glProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint * params)  {if (GLeeInit()) glProgramLocalParametersI4uivNV(target, index, count, params);}
+void __stdcall _Lazy_glProgramEnvParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)  {if (GLeeInit()) glProgramEnvParameterI4iNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramEnvParameterI4ivNV(GLenum target, GLuint index, const GLint * params)  {if (GLeeInit()) glProgramEnvParameterI4ivNV(target, index, params);}
+void __stdcall _Lazy_glProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint * params)  {if (GLeeInit()) glProgramEnvParametersI4ivNV(target, index, count, params);}
+void __stdcall _Lazy_glProgramEnvParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)  {if (GLeeInit()) glProgramEnvParameterI4uiNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramEnvParameterI4uivNV(GLenum target, GLuint index, const GLuint * params)  {if (GLeeInit()) glProgramEnvParameterI4uivNV(target, index, params);}
+void __stdcall _Lazy_glProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint * params)  {if (GLeeInit()) glProgramEnvParametersI4uivNV(target, index, count, params);}
+void __stdcall _Lazy_glGetProgramLocalParameterIivNV(GLenum target, GLuint index, GLint * params)  {if (GLeeInit()) glGetProgramLocalParameterIivNV(target, index, params);}
+void __stdcall _Lazy_glGetProgramLocalParameterIuivNV(GLenum target, GLuint index, GLuint * params)  {if (GLeeInit()) glGetProgramLocalParameterIuivNV(target, index, params);}
+void __stdcall _Lazy_glGetProgramEnvParameterIivNV(GLenum target, GLuint index, GLint * params)  {if (GLeeInit()) glGetProgramEnvParameterIivNV(target, index, params);}
+void __stdcall _Lazy_glGetProgramEnvParameterIuivNV(GLenum target, GLuint index, GLuint * params)  {if (GLeeInit()) glGetProgramEnvParameterIuivNV(target, index, params);}
+PFNGLPROGRAMLOCALPARAMETERI4INVPROC pglProgramLocalParameterI4iNV=_Lazy_glProgramLocalParameterI4iNV;
+PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC pglProgramLocalParameterI4ivNV=_Lazy_glProgramLocalParameterI4ivNV;
+PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC pglProgramLocalParametersI4ivNV=_Lazy_glProgramLocalParametersI4ivNV;
+PFNGLPROGRAMLOCALPARAMETERI4UINVPROC pglProgramLocalParameterI4uiNV=_Lazy_glProgramLocalParameterI4uiNV;
+PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC pglProgramLocalParameterI4uivNV=_Lazy_glProgramLocalParameterI4uivNV;
+PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC pglProgramLocalParametersI4uivNV=_Lazy_glProgramLocalParametersI4uivNV;
+PFNGLPROGRAMENVPARAMETERI4INVPROC pglProgramEnvParameterI4iNV=_Lazy_glProgramEnvParameterI4iNV;
+PFNGLPROGRAMENVPARAMETERI4IVNVPROC pglProgramEnvParameterI4ivNV=_Lazy_glProgramEnvParameterI4ivNV;
+PFNGLPROGRAMENVPARAMETERSI4IVNVPROC pglProgramEnvParametersI4ivNV=_Lazy_glProgramEnvParametersI4ivNV;
+PFNGLPROGRAMENVPARAMETERI4UINVPROC pglProgramEnvParameterI4uiNV=_Lazy_glProgramEnvParameterI4uiNV;
+PFNGLPROGRAMENVPARAMETERI4UIVNVPROC pglProgramEnvParameterI4uivNV=_Lazy_glProgramEnvParameterI4uivNV;
+PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC pglProgramEnvParametersI4uivNV=_Lazy_glProgramEnvParametersI4uivNV;
+PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC pglGetProgramLocalParameterIivNV=_Lazy_glGetProgramLocalParameterIivNV;
+PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC pglGetProgramLocalParameterIuivNV=_Lazy_glGetProgramLocalParameterIuivNV;
+PFNGLGETPROGRAMENVPARAMETERIIVNVPROC pglGetProgramEnvParameterIivNV=_Lazy_glGetProgramEnvParameterIivNV;
+PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC pglGetProgramEnvParameterIuivNV=_Lazy_glGetProgramEnvParameterIuivNV;
+#endif 
+
+/* GL_NV_framebuffer_multisample_coverage */
+
+#ifdef __GLEE_GL_NV_framebuffer_multisample_coverage
+void __stdcall _Lazy_glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)  {if (GLeeInit()) glRenderbufferStorageMultisampleCoverageNV(target, coverageSamples, colorSamples, internalformat, width, height);}
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC pglRenderbufferStorageMultisampleCoverageNV=_Lazy_glRenderbufferStorageMultisampleCoverageNV;
+#endif 
+
+/* GL_EXT_framebuffer_multisample */
+
+#ifdef __GLEE_GL_EXT_framebuffer_multisample
+void __stdcall _Lazy_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)  {if (GLeeInit()) glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);}
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC pglRenderbufferStorageMultisampleEXT=_Lazy_glRenderbufferStorageMultisampleEXT;
+#endif 
+
+/* GL_EXT_framebuffer_blit */
+
+#ifdef __GLEE_GL_EXT_framebuffer_blit
+void __stdcall _Lazy_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)  {if (GLeeInit()) glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);}
+PFNGLBLITFRAMEBUFFEREXTPROC pglBlitFramebufferEXT=_Lazy_glBlitFramebufferEXT;
+#endif 
+
+/* GL_EXT_texture_compression_rgtc */
+
+#ifdef __GLEE_GL_EXT_texture_compression_rgtc
+#endif 
+
+/* GL_EXT_color_matrix */
+
+#ifdef __GLEE_GL_EXT_color_matrix
+#endif 
+
+/* GL_SGIX_texture_select */
+
+#ifdef __GLEE_GL_SGIX_texture_select
+#endif 
+
+/* GL_INGR_blend_func_separate */
+
+#ifdef __GLEE_GL_INGR_blend_func_separate
+void __stdcall _Lazy_glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)  {if (GLeeInit()) glBlendFuncSeparateINGR(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);}
+PFNGLBLENDFUNCSEPARATEINGRPROC pglBlendFuncSeparateINGR=_Lazy_glBlendFuncSeparateINGR;
+#endif 
+
+/* GL_SGIX_depth_pass_instrument */
+
+#ifdef __GLEE_GL_SGIX_depth_pass_instrument
+#endif 
+
+/* GL_SGIX_igloo_interface */
+
+#ifdef __GLEE_GL_SGIX_igloo_interface
+void __stdcall _Lazy_glIglooInterfaceSGIX(GLenum pname, const GLvoid * params)            {if (GLeeInit()) glIglooInterfaceSGIX(pname, params);}
+PFNGLIGLOOINTERFACESGIXPROC pglIglooInterfaceSGIX=_Lazy_glIglooInterfaceSGIX;
+#endif 
+
+/* GL_EXT_draw_buffers2 */
+
+#ifdef __GLEE_GL_EXT_draw_buffers2
+void __stdcall _Lazy_glColorMaskIndexedEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)  {if (GLeeInit()) glColorMaskIndexedEXT(index, r, g, b, a);}
+void __stdcall _Lazy_glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean * data)  {if (GLeeInit()) glGetBooleanIndexedvEXT(target, index, data);}
+void __stdcall _Lazy_glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint * data)   {if (GLeeInit()) glGetIntegerIndexedvEXT(target, index, data);}
+void __stdcall _Lazy_glEnableIndexedEXT(GLenum target, GLuint index)                      {if (GLeeInit()) glEnableIndexedEXT(target, index);}
+void __stdcall _Lazy_glDisableIndexedEXT(GLenum target, GLuint index)                     {if (GLeeInit()) glDisableIndexedEXT(target, index);}
+GLboolean __stdcall _Lazy_glIsEnabledIndexedEXT(GLenum target, GLuint index)              {if (GLeeInit()) return glIsEnabledIndexedEXT(target, index); return (GLboolean)0;}
+PFNGLCOLORMASKINDEXEDEXTPROC pglColorMaskIndexedEXT=_Lazy_glColorMaskIndexedEXT;
+PFNGLGETBOOLEANINDEXEDVEXTPROC pglGetBooleanIndexedvEXT=_Lazy_glGetBooleanIndexedvEXT;
+PFNGLGETINTEGERINDEXEDVEXTPROC pglGetIntegerIndexedvEXT=_Lazy_glGetIntegerIndexedvEXT;
+PFNGLENABLEINDEXEDEXTPROC pglEnableIndexedEXT=_Lazy_glEnableIndexedEXT;
+PFNGLDISABLEINDEXEDEXTPROC pglDisableIndexedEXT=_Lazy_glDisableIndexedEXT;
+PFNGLISENABLEDINDEXEDEXTPROC pglIsEnabledIndexedEXT=_Lazy_glIsEnabledIndexedEXT;
+#endif 
+
+/* GL_NV_parameter_buffer_object */
+
+#ifdef __GLEE_GL_NV_parameter_buffer_object
+void __stdcall _Lazy_glProgramBufferParametersfvNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat * params)  {if (GLeeInit()) glProgramBufferParametersfvNV(target, buffer, index, count, params);}
+void __stdcall _Lazy_glProgramBufferParametersIivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint * params)  {if (GLeeInit()) glProgramBufferParametersIivNV(target, buffer, index, count, params);}
+void __stdcall _Lazy_glProgramBufferParametersIuivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint * params)  {if (GLeeInit()) glProgramBufferParametersIuivNV(target, buffer, index, count, params);}
+PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC pglProgramBufferParametersfvNV=_Lazy_glProgramBufferParametersfvNV;
+PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC pglProgramBufferParametersIivNV=_Lazy_glProgramBufferParametersIivNV;
+PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC pglProgramBufferParametersIuivNV=_Lazy_glProgramBufferParametersIuivNV;
+#endif 
+
+/* GL_EXT_draw_instanced */
+
+#ifdef __GLEE_GL_EXT_draw_instanced
+void __stdcall _Lazy_glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount)  {if (GLeeInit()) glDrawArraysInstancedEXT(mode, start, count, primcount);}
+void __stdcall _Lazy_glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)  {if (GLeeInit()) glDrawElementsInstancedEXT(mode, count, type, indices, primcount);}
+PFNGLDRAWARRAYSINSTANCEDEXTPROC pglDrawArraysInstancedEXT=_Lazy_glDrawArraysInstancedEXT;
+PFNGLDRAWELEMENTSINSTANCEDEXTPROC pglDrawElementsInstancedEXT=_Lazy_glDrawElementsInstancedEXT;
+#endif 
+
+/* GL_EXT_fragment_lighting */
+
+#ifdef __GLEE_GL_EXT_fragment_lighting
+GLvoid __stdcall _Lazy_glFragmentLightModeliEXT(GLenum pname, GLint param)                {if (GLeeInit()) glFragmentLightModeliEXT(pname, param);}
+GLvoid __stdcall _Lazy_glFragmentLightModelfEXT(GLenum pname, GLfloat param)              {if (GLeeInit()) glFragmentLightModelfEXT(pname, param);}
+GLvoid __stdcall _Lazy_glFragmentLightModelivEXT(GLenum pname, GLint * params)            {if (GLeeInit()) glFragmentLightModelivEXT(pname, params);}
+GLvoid __stdcall _Lazy_glFragmentLightModelfvEXT(GLenum pname, GLfloat * params)          {if (GLeeInit()) glFragmentLightModelfvEXT(pname, params);}
+GLvoid __stdcall _Lazy_glFragmentLightiEXT(GLenum light, GLenum pname, GLint param)       {if (GLeeInit()) glFragmentLightiEXT(light, pname, param);}
+GLvoid __stdcall _Lazy_glFragmentLightfEXT(GLenum light, GLenum pname, GLfloat param)     {if (GLeeInit()) glFragmentLightfEXT(light, pname, param);}
+GLvoid __stdcall _Lazy_glFragmentLightivEXT(GLenum light, GLenum pname, GLint * params)   {if (GLeeInit()) glFragmentLightivEXT(light, pname, params);}
+GLvoid __stdcall _Lazy_glFragmentLightfvEXT(GLenum light, GLenum pname, GLfloat * params)  {if (GLeeInit()) glFragmentLightfvEXT(light, pname, params);}
+GLvoid __stdcall _Lazy_glGetFragmentLightivEXT(GLenum light, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFragmentLightivEXT(light, pname, params);}
+GLvoid __stdcall _Lazy_glGetFragmentLightfvEXT(GLenum light, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetFragmentLightfvEXT(light, pname, params);}
+GLvoid __stdcall _Lazy_glFragmentMaterialfEXT(GLenum face, GLenum pname, const GLfloat param)  {if (GLeeInit()) glFragmentMaterialfEXT(face, pname, param);}
+GLvoid __stdcall _Lazy_glFragmentMaterialiEXT(GLenum face, GLenum pname, const GLint param)  {if (GLeeInit()) glFragmentMaterialiEXT(face, pname, param);}
+GLvoid __stdcall _Lazy_glFragmentMaterialfvEXT(GLenum face, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glFragmentMaterialfvEXT(face, pname, params);}
+GLvoid __stdcall _Lazy_glFragmentMaterialivEXT(GLenum face, GLenum pname, const GLint * params)  {if (GLeeInit()) glFragmentMaterialivEXT(face, pname, params);}
+GLvoid __stdcall _Lazy_glFragmentColorMaterialEXT(GLenum face, GLenum mode)               {if (GLeeInit()) glFragmentColorMaterialEXT(face, mode);}
+GLvoid __stdcall _Lazy_glGetFragmentMaterialfvEXT(GLenum face, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glGetFragmentMaterialfvEXT(face, pname, params);}
+GLvoid __stdcall _Lazy_glGetFragmentMaterialivEXT(GLenum face, GLenum pname, const GLint * params)  {if (GLeeInit()) glGetFragmentMaterialivEXT(face, pname, params);}
+GLvoid __stdcall _Lazy_glLightEnviEXT(GLenum pname, GLint param)                          {if (GLeeInit()) glLightEnviEXT(pname, param);}
+PFNGLFRAGMENTLIGHTMODELIEXTPROC pglFragmentLightModeliEXT=_Lazy_glFragmentLightModeliEXT;
+PFNGLFRAGMENTLIGHTMODELFEXTPROC pglFragmentLightModelfEXT=_Lazy_glFragmentLightModelfEXT;
+PFNGLFRAGMENTLIGHTMODELIVEXTPROC pglFragmentLightModelivEXT=_Lazy_glFragmentLightModelivEXT;
+PFNGLFRAGMENTLIGHTMODELFVEXTPROC pglFragmentLightModelfvEXT=_Lazy_glFragmentLightModelfvEXT;
+PFNGLFRAGMENTLIGHTIEXTPROC pglFragmentLightiEXT=_Lazy_glFragmentLightiEXT;
+PFNGLFRAGMENTLIGHTFEXTPROC pglFragmentLightfEXT=_Lazy_glFragmentLightfEXT;
+PFNGLFRAGMENTLIGHTIVEXTPROC pglFragmentLightivEXT=_Lazy_glFragmentLightivEXT;
+PFNGLFRAGMENTLIGHTFVEXTPROC pglFragmentLightfvEXT=_Lazy_glFragmentLightfvEXT;
+PFNGLGETFRAGMENTLIGHTIVEXTPROC pglGetFragmentLightivEXT=_Lazy_glGetFragmentLightivEXT;
+PFNGLGETFRAGMENTLIGHTFVEXTPROC pglGetFragmentLightfvEXT=_Lazy_glGetFragmentLightfvEXT;
+PFNGLFRAGMENTMATERIALFEXTPROC pglFragmentMaterialfEXT=_Lazy_glFragmentMaterialfEXT;
+PFNGLFRAGMENTMATERIALIEXTPROC pglFragmentMaterialiEXT=_Lazy_glFragmentMaterialiEXT;
+PFNGLFRAGMENTMATERIALFVEXTPROC pglFragmentMaterialfvEXT=_Lazy_glFragmentMaterialfvEXT;
+PFNGLFRAGMENTMATERIALIVEXTPROC pglFragmentMaterialivEXT=_Lazy_glFragmentMaterialivEXT;
+PFNGLFRAGMENTCOLORMATERIALEXTPROC pglFragmentColorMaterialEXT=_Lazy_glFragmentColorMaterialEXT;
+PFNGLGETFRAGMENTMATERIALFVEXTPROC pglGetFragmentMaterialfvEXT=_Lazy_glGetFragmentMaterialfvEXT;
+PFNGLGETFRAGMENTMATERIALIVEXTPROC pglGetFragmentMaterialivEXT=_Lazy_glGetFragmentMaterialivEXT;
+PFNGLLIGHTENVIEXTPROC pglLightEnviEXT=_Lazy_glLightEnviEXT;
+#endif 
+
+/* GL_EXT_packed_depth_stencil */
+
+#ifdef __GLEE_GL_EXT_packed_depth_stencil
+#endif 
+
+/* GL_EXT_scene_marker */
+
+#ifdef __GLEE_GL_EXT_scene_marker
+GLvoid __stdcall _Lazy_glBeginSceneEXT(void)                                              {if (GLeeInit()) glBeginSceneEXT();}
+GLvoid __stdcall _Lazy_glEndSceneEXT(void)                                                {if (GLeeInit()) glEndSceneEXT();}
+PFNGLBEGINSCENEEXTPROC pglBeginSceneEXT=_Lazy_glBeginSceneEXT;
+PFNGLENDSCENEEXTPROC pglEndSceneEXT=_Lazy_glEndSceneEXT;
+#endif 
+
+/* GL_EXT_stencil_clear_tag */
+
+#ifdef __GLEE_GL_EXT_stencil_clear_tag
+#endif 
+
+/* GL_EXT_texture_compression_dxt1 */
+
+#ifdef __GLEE_GL_EXT_texture_compression_dxt1
+#endif 
+
+/* GL_EXT_texture_env */
+
+#ifdef __GLEE_GL_EXT_texture_env
+#endif 
+
+/* GL_EXT_texture_sRGB */
+
+#ifdef __GLEE_GL_EXT_texture_sRGB
+#endif 
+
+/* GL_IBM_static_data */
+
+#ifdef __GLEE_GL_IBM_static_data
+#endif 
+
+/* GL_MESAX_texture_stack */
+
+#ifdef __GLEE_GL_MESAX_texture_stack
+#endif 
+
+/* GL_OES_byte_coordinates */
+
+#ifdef __GLEE_GL_OES_byte_coordinates
+#endif 
+
+/* GL_OES_compressed_paletted_texture */
+
+#ifdef __GLEE_GL_OES_compressed_paletted_texture
+#endif 
+
+/* GL_OES_single_precision */
+
+#ifdef __GLEE_GL_OES_single_precision
+GLvoid __stdcall _Lazy_glDepthRangefOES(GLclampf n, GLclampf f)                           {if (GLeeInit()) glDepthRangefOES(n, f);}
+GLvoid __stdcall _Lazy_glFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)  {if (GLeeInit()) glFrustumfOES(l, r, b, t, n, f);}
+GLvoid __stdcall _Lazy_glOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)  {if (GLeeInit()) glOrthofOES(l, r, b, t, n, f);}
+GLvoid __stdcall _Lazy_glClipPlanefOES(GLenum plane, const GLfloat* equation)             {if (GLeeInit()) glClipPlanefOES(plane, equation);}
+GLvoid __stdcall _Lazy_glGetClipPlanefOES(GLenum plane, GLfloat* equation)                {if (GLeeInit()) glGetClipPlanefOES(plane, equation);}
+GLvoid __stdcall _Lazy_glClearDepthfOES(GLclampd depth)                                   {if (GLeeInit()) glClearDepthfOES(depth);}
+PFNGLDEPTHRANGEFOESPROC pglDepthRangefOES=_Lazy_glDepthRangefOES;
+PFNGLFRUSTUMFOESPROC pglFrustumfOES=_Lazy_glFrustumfOES;
+PFNGLORTHOFOESPROC pglOrthofOES=_Lazy_glOrthofOES;
+PFNGLCLIPPLANEFOESPROC pglClipPlanefOES=_Lazy_glClipPlanefOES;
+PFNGLGETCLIPPLANEFOESPROC pglGetClipPlanefOES=_Lazy_glGetClipPlanefOES;
+PFNGLCLEARDEPTHFOESPROC pglClearDepthfOES=_Lazy_glClearDepthfOES;
+#endif 
+
+/* GL_SGIX_pixel_texture_bits */
+
+#ifdef __GLEE_GL_SGIX_pixel_texture_bits
+#endif 
+
+/* GL_SGIX_texture_range */
+
+#ifdef __GLEE_GL_SGIX_texture_range
+#endif 
+
+/* WGL */
+
+#ifdef WIN32
+
+/* Extension querying variables */
+
+GLboolean _GLEE_WGL_ARB_buffer_region = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_multisample = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_extensions_string = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_pixel_format = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_make_current_read = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_pbuffer = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_render_texture = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_pixel_format_float = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_make_current_read = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_pixel_format = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_pbuffer = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_depth_float = GL_FALSE;
+GLboolean _GLEE_WGL_3DFX_multisample = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_multisample = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_digital_video_control = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_gamma = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_genlock = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_image_buffer = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_swap_frame_lock = GL_FALSE;
+GLboolean _GLEE_WGL_NV_render_depth_texture = GL_FALSE;
+GLboolean _GLEE_WGL_NV_render_texture_rectangle = GL_FALSE;
+GLboolean _GLEE_WGL_ATI_pixel_format_float = GL_FALSE;
+GLboolean _GLEE_WGL_NV_float_buffer = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_display_color_table = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_extensions_string = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_swap_control = GL_FALSE;
+GLboolean _GLEE_WGL_NV_vertex_array_range = GL_FALSE;
+GLboolean _GLEE_WGL_OML_sync_control = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_swap_frame_usage = GL_FALSE;
+GLboolean _GLEE_WGL_3DL_stereo_control = GL_FALSE;
+
+/*  WGL Extension names */
+
+char __GLeeWGLExtensionNames[30][32]={
+    "WGL_ARB_buffer_region",
+    "WGL_ARB_multisample",
+    "WGL_ARB_extensions_string",
+    "WGL_ARB_pixel_format",
+    "WGL_ARB_make_current_read",
+    "WGL_ARB_pbuffer",
+    "WGL_ARB_render_texture",
+    "WGL_ARB_pixel_format_float",
+    "WGL_EXT_make_current_read",
+    "WGL_EXT_pixel_format",
+    "WGL_EXT_pbuffer",
+    "WGL_EXT_depth_float",
+    "WGL_3DFX_multisample",
+    "WGL_EXT_multisample",
+    "WGL_I3D_digital_video_control",
+    "WGL_I3D_gamma",
+    "WGL_I3D_genlock",
+    "WGL_I3D_image_buffer",
+    "WGL_I3D_swap_frame_lock",
+    "WGL_NV_render_depth_texture",
+    "WGL_NV_render_texture_rectangle",
+    "WGL_ATI_pixel_format_float",
+    "WGL_NV_float_buffer",
+    "WGL_EXT_display_color_table",
+    "WGL_EXT_extensions_string",
+    "WGL_EXT_swap_control",
+    "WGL_NV_vertex_array_range",
+    "WGL_OML_sync_control",
+    "WGL_I3D_swap_frame_usage",
+    "WGL_3DL_stereo_control"
+};
+int __GLeeWGLNumExtensions=30;
+
+/* WGL_ARB_buffer_region */
+
+#ifdef __GLEE_WGL_ARB_buffer_region
+HANDLE __stdcall _Lazy_wglCreateBufferRegionARB(HDC hDC, int iLayerPlane, UINT uType)     {if (GLeeInit()) return wglCreateBufferRegionARB(hDC, iLayerPlane, uType); return (HANDLE)0;}
+VOID __stdcall _Lazy_wglDeleteBufferRegionARB(HANDLE hRegion)                             {if (GLeeInit()) wglDeleteBufferRegionARB(hRegion);}
+BOOL __stdcall _Lazy_wglSaveBufferRegionARB(HANDLE hRegion, int x, int y, int width, int height)  {if (GLeeInit()) return wglSaveBufferRegionARB(hRegion, x, y, width, height); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglRestoreBufferRegionARB(HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc)  {if (GLeeInit()) return wglRestoreBufferRegionARB(hRegion, x, y, width, height, xSrc, ySrc); return (BOOL)0;}
+PFNWGLCREATEBUFFERREGIONARBPROC pwglCreateBufferRegionARB=_Lazy_wglCreateBufferRegionARB;
+PFNWGLDELETEBUFFERREGIONARBPROC pwglDeleteBufferRegionARB=_Lazy_wglDeleteBufferRegionARB;
+PFNWGLSAVEBUFFERREGIONARBPROC pwglSaveBufferRegionARB=_Lazy_wglSaveBufferRegionARB;
+PFNWGLRESTOREBUFFERREGIONARBPROC pwglRestoreBufferRegionARB=_Lazy_wglRestoreBufferRegionARB;
+#endif 
+
+/* WGL_ARB_multisample */
+
+#ifdef __GLEE_WGL_ARB_multisample
+#endif 
+
+/* WGL_ARB_extensions_string */
+
+#ifdef __GLEE_WGL_ARB_extensions_string
+const char * __stdcall _Lazy_wglGetExtensionsStringARB(HDC hdc)                           {if (GLeeInit()) return wglGetExtensionsStringARB(hdc); return (const char *)0;}
+PFNWGLGETEXTENSIONSSTRINGARBPROC pwglGetExtensionsStringARB=_Lazy_wglGetExtensionsStringARB;
+#endif 
+
+/* WGL_ARB_pixel_format */
+
+#ifdef __GLEE_WGL_ARB_pixel_format
+BOOL __stdcall _Lazy_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, int * piValues)  {if (GLeeInit()) return wglGetPixelFormatAttribivARB(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, piValues); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetPixelFormatAttribfvARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, FLOAT * pfValues)  {if (GLeeInit()) return wglGetPixelFormatAttribfvARB(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, pfValues); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglChoosePixelFormatARB(HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats)  {if (GLeeInit()) return wglChoosePixelFormatARB(hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats); return (BOOL)0;}
+PFNWGLGETPIXELFORMATATTRIBIVARBPROC pwglGetPixelFormatAttribivARB=_Lazy_wglGetPixelFormatAttribivARB;
+PFNWGLGETPIXELFORMATATTRIBFVARBPROC pwglGetPixelFormatAttribfvARB=_Lazy_wglGetPixelFormatAttribfvARB;
+PFNWGLCHOOSEPIXELFORMATARBPROC pwglChoosePixelFormatARB=_Lazy_wglChoosePixelFormatARB;
+#endif 
+
+/* WGL_ARB_make_current_read */
+
+#ifdef __GLEE_WGL_ARB_make_current_read
+BOOL __stdcall _Lazy_wglMakeContextCurrentARB(HDC hDrawDC, HDC hReadDC, HGLRC hglrc)      {if (GLeeInit()) return wglMakeContextCurrentARB(hDrawDC, hReadDC, hglrc); return (BOOL)0;}
+HDC __stdcall _Lazy_wglGetCurrentReadDCARB(void)                                          {if (GLeeInit()) return wglGetCurrentReadDCARB(); return (HDC)0;}
+PFNWGLMAKECONTEXTCURRENTARBPROC pwglMakeContextCurrentARB=_Lazy_wglMakeContextCurrentARB;
+PFNWGLGETCURRENTREADDCARBPROC pwglGetCurrentReadDCARB=_Lazy_wglGetCurrentReadDCARB;
+#endif 
+
+/* WGL_ARB_pbuffer */
+
+#ifdef __GLEE_WGL_ARB_pbuffer
+HPBUFFERARB __stdcall _Lazy_wglCreatePbufferARB(HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList)  {if (GLeeInit()) return wglCreatePbufferARB(hDC, iPixelFormat, iWidth, iHeight, piAttribList); return (HPBUFFERARB)0;}
+HDC __stdcall _Lazy_wglGetPbufferDCARB(HPBUFFERARB hPbuffer)                              {if (GLeeInit()) return wglGetPbufferDCARB(hPbuffer); return (HDC)0;}
+int __stdcall _Lazy_wglReleasePbufferDCARB(HPBUFFERARB hPbuffer, HDC hDC)                 {if (GLeeInit()) return wglReleasePbufferDCARB(hPbuffer, hDC); return (int)0;}
+BOOL __stdcall _Lazy_wglDestroyPbufferARB(HPBUFFERARB hPbuffer)                           {if (GLeeInit()) return wglDestroyPbufferARB(hPbuffer); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAttribute, int * piValue)  {if (GLeeInit()) return wglQueryPbufferARB(hPbuffer, iAttribute, piValue); return (BOOL)0;}
+PFNWGLCREATEPBUFFERARBPROC pwglCreatePbufferARB=_Lazy_wglCreatePbufferARB;
+PFNWGLGETPBUFFERDCARBPROC pwglGetPbufferDCARB=_Lazy_wglGetPbufferDCARB;
+PFNWGLRELEASEPBUFFERDCARBPROC pwglReleasePbufferDCARB=_Lazy_wglReleasePbufferDCARB;
+PFNWGLDESTROYPBUFFERARBPROC pwglDestroyPbufferARB=_Lazy_wglDestroyPbufferARB;
+PFNWGLQUERYPBUFFERARBPROC pwglQueryPbufferARB=_Lazy_wglQueryPbufferARB;
+#endif 
+
+/* WGL_ARB_render_texture */
+
+#ifdef __GLEE_WGL_ARB_render_texture
+BOOL __stdcall _Lazy_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuffer)                {if (GLeeInit()) return wglBindTexImageARB(hPbuffer, iBuffer); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglReleaseTexImageARB(HPBUFFERARB hPbuffer, int iBuffer)             {if (GLeeInit()) return wglReleaseTexImageARB(hPbuffer, iBuffer); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglSetPbufferAttribARB(HPBUFFERARB hPbuffer, const int * piAttribList)  {if (GLeeInit()) return wglSetPbufferAttribARB(hPbuffer, piAttribList); return (BOOL)0;}
+PFNWGLBINDTEXIMAGEARBPROC pwglBindTexImageARB=_Lazy_wglBindTexImageARB;
+PFNWGLRELEASETEXIMAGEARBPROC pwglReleaseTexImageARB=_Lazy_wglReleaseTexImageARB;
+PFNWGLSETPBUFFERATTRIBARBPROC pwglSetPbufferAttribARB=_Lazy_wglSetPbufferAttribARB;
+#endif 
+
+/* WGL_ARB_pixel_format_float */
+
+#ifdef __GLEE_WGL_ARB_pixel_format_float
+#endif 
+
+/* WGL_EXT_make_current_read */
+
+#ifdef __GLEE_WGL_EXT_make_current_read
+BOOL __stdcall _Lazy_wglMakeContextCurrentEXT(HDC hDrawDC, HDC hReadDC, HGLRC hglrc)      {if (GLeeInit()) return wglMakeContextCurrentEXT(hDrawDC, hReadDC, hglrc); return (BOOL)0;}
+HDC __stdcall _Lazy_wglGetCurrentReadDCEXT(void)                                          {if (GLeeInit()) return wglGetCurrentReadDCEXT(); return (HDC)0;}
+PFNWGLMAKECONTEXTCURRENTEXTPROC pwglMakeContextCurrentEXT=_Lazy_wglMakeContextCurrentEXT;
+PFNWGLGETCURRENTREADDCEXTPROC pwglGetCurrentReadDCEXT=_Lazy_wglGetCurrentReadDCEXT;
+#endif 
+
+/* WGL_EXT_pixel_format */
+
+#ifdef __GLEE_WGL_EXT_pixel_format
+BOOL __stdcall _Lazy_wglGetPixelFormatAttribivEXT(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, int * piValues)  {if (GLeeInit()) return wglGetPixelFormatAttribivEXT(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, piValues); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetPixelFormatAttribfvEXT(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, FLOAT * pfValues)  {if (GLeeInit()) return wglGetPixelFormatAttribfvEXT(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, pfValues); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglChoosePixelFormatEXT(HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats)  {if (GLeeInit()) return wglChoosePixelFormatEXT(hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats); return (BOOL)0;}
+PFNWGLGETPIXELFORMATATTRIBIVEXTPROC pwglGetPixelFormatAttribivEXT=_Lazy_wglGetPixelFormatAttribivEXT;
+PFNWGLGETPIXELFORMATATTRIBFVEXTPROC pwglGetPixelFormatAttribfvEXT=_Lazy_wglGetPixelFormatAttribfvEXT;
+PFNWGLCHOOSEPIXELFORMATEXTPROC pwglChoosePixelFormatEXT=_Lazy_wglChoosePixelFormatEXT;
+#endif 
+
+/* WGL_EXT_pbuffer */
+
+#ifdef __GLEE_WGL_EXT_pbuffer
+HPBUFFEREXT __stdcall _Lazy_wglCreatePbufferEXT(HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList)  {if (GLeeInit()) return wglCreatePbufferEXT(hDC, iPixelFormat, iWidth, iHeight, piAttribList); return (HPBUFFEREXT)0;}
+HDC __stdcall _Lazy_wglGetPbufferDCEXT(HPBUFFEREXT hPbuffer)                              {if (GLeeInit()) return wglGetPbufferDCEXT(hPbuffer); return (HDC)0;}
+int __stdcall _Lazy_wglReleasePbufferDCEXT(HPBUFFEREXT hPbuffer, HDC hDC)                 {if (GLeeInit()) return wglReleasePbufferDCEXT(hPbuffer, hDC); return (int)0;}
+BOOL __stdcall _Lazy_wglDestroyPbufferEXT(HPBUFFEREXT hPbuffer)                           {if (GLeeInit()) return wglDestroyPbufferEXT(hPbuffer); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryPbufferEXT(HPBUFFEREXT hPbuffer, int iAttribute, int * piValue)  {if (GLeeInit()) return wglQueryPbufferEXT(hPbuffer, iAttribute, piValue); return (BOOL)0;}
+PFNWGLCREATEPBUFFEREXTPROC pwglCreatePbufferEXT=_Lazy_wglCreatePbufferEXT;
+PFNWGLGETPBUFFERDCEXTPROC pwglGetPbufferDCEXT=_Lazy_wglGetPbufferDCEXT;
+PFNWGLRELEASEPBUFFERDCEXTPROC pwglReleasePbufferDCEXT=_Lazy_wglReleasePbufferDCEXT;
+PFNWGLDESTROYPBUFFEREXTPROC pwglDestroyPbufferEXT=_Lazy_wglDestroyPbufferEXT;
+PFNWGLQUERYPBUFFEREXTPROC pwglQueryPbufferEXT=_Lazy_wglQueryPbufferEXT;
+#endif 
+
+/* WGL_EXT_depth_float */
+
+#ifdef __GLEE_WGL_EXT_depth_float
+#endif 
+
+/* WGL_3DFX_multisample */
+
+#ifdef __GLEE_WGL_3DFX_multisample
+#endif 
+
+/* WGL_EXT_multisample */
+
+#ifdef __GLEE_WGL_EXT_multisample
+#endif 
+
+/* WGL_I3D_digital_video_control */
+
+#ifdef __GLEE_WGL_I3D_digital_video_control
+BOOL __stdcall _Lazy_wglGetDigitalVideoParametersI3D(HDC hDC, int iAttribute, int * piValue)  {if (GLeeInit()) return wglGetDigitalVideoParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglSetDigitalVideoParametersI3D(HDC hDC, int iAttribute, const int * piValue)  {if (GLeeInit()) return wglSetDigitalVideoParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;}
+PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC pwglGetDigitalVideoParametersI3D=_Lazy_wglGetDigitalVideoParametersI3D;
+PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC pwglSetDigitalVideoParametersI3D=_Lazy_wglSetDigitalVideoParametersI3D;
+#endif 
+
+/* WGL_I3D_gamma */
+
+#ifdef __GLEE_WGL_I3D_gamma
+BOOL __stdcall _Lazy_wglGetGammaTableParametersI3D(HDC hDC, int iAttribute, int * piValue)  {if (GLeeInit()) return wglGetGammaTableParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglSetGammaTableParametersI3D(HDC hDC, int iAttribute, const int * piValue)  {if (GLeeInit()) return wglSetGammaTableParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGammaTableI3D(HDC hDC, int iEntries, USHORT * puRed, USHORT * puGreen, USHORT * puBlue)  {if (GLeeInit()) return wglGetGammaTableI3D(hDC, iEntries, puRed, puGreen, puBlue); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglSetGammaTableI3D(HDC hDC, int iEntries, const USHORT * puRed, const USHORT * puGreen, const USHORT * puBlue)  {if (GLeeInit()) return wglSetGammaTableI3D(hDC, iEntries, puRed, puGreen, puBlue); return (BOOL)0;}
+PFNWGLGETGAMMATABLEPARAMETERSI3DPROC pwglGetGammaTableParametersI3D=_Lazy_wglGetGammaTableParametersI3D;
+PFNWGLSETGAMMATABLEPARAMETERSI3DPROC pwglSetGammaTableParametersI3D=_Lazy_wglSetGammaTableParametersI3D;
+PFNWGLGETGAMMATABLEI3DPROC pwglGetGammaTableI3D=_Lazy_wglGetGammaTableI3D;
+PFNWGLSETGAMMATABLEI3DPROC pwglSetGammaTableI3D=_Lazy_wglSetGammaTableI3D;
+#endif 
+
+/* WGL_I3D_genlock */
+
+#ifdef __GLEE_WGL_I3D_genlock
+BOOL __stdcall _Lazy_wglEnableGenlockI3D(HDC hDC)                                         {if (GLeeInit()) return wglEnableGenlockI3D(hDC); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglDisableGenlockI3D(HDC hDC)                                        {if (GLeeInit()) return wglDisableGenlockI3D(hDC); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglIsEnabledGenlockI3D(HDC hDC, BOOL * pFlag)                        {if (GLeeInit()) return wglIsEnabledGenlockI3D(hDC, pFlag); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGenlockSourceI3D(HDC hDC, UINT uSource)                           {if (GLeeInit()) return wglGenlockSourceI3D(hDC, uSource); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGenlockSourceI3D(HDC hDC, UINT * uSource)                      {if (GLeeInit()) return wglGetGenlockSourceI3D(hDC, uSource); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGenlockSourceEdgeI3D(HDC hDC, UINT uEdge)                         {if (GLeeInit()) return wglGenlockSourceEdgeI3D(hDC, uEdge); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGenlockSourceEdgeI3D(HDC hDC, UINT * uEdge)                    {if (GLeeInit()) return wglGetGenlockSourceEdgeI3D(hDC, uEdge); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGenlockSampleRateI3D(HDC hDC, UINT uRate)                         {if (GLeeInit()) return wglGenlockSampleRateI3D(hDC, uRate); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGenlockSampleRateI3D(HDC hDC, UINT * uRate)                    {if (GLeeInit()) return wglGetGenlockSampleRateI3D(hDC, uRate); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGenlockSourceDelayI3D(HDC hDC, UINT uDelay)                       {if (GLeeInit()) return wglGenlockSourceDelayI3D(hDC, uDelay); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGenlockSourceDelayI3D(HDC hDC, UINT * uDelay)                  {if (GLeeInit()) return wglGetGenlockSourceDelayI3D(hDC, uDelay); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryGenlockMaxSourceDelayI3D(HDC hDC, UINT * uMaxLineDelay, UINT * uMaxPixelDelay)  {if (GLeeInit()) return wglQueryGenlockMaxSourceDelayI3D(hDC, uMaxLineDelay, uMaxPixelDelay); return (BOOL)0;}
+PFNWGLENABLEGENLOCKI3DPROC pwglEnableGenlockI3D=_Lazy_wglEnableGenlockI3D;
+PFNWGLDISABLEGENLOCKI3DPROC pwglDisableGenlockI3D=_Lazy_wglDisableGenlockI3D;
+PFNWGLISENABLEDGENLOCKI3DPROC pwglIsEnabledGenlockI3D=_Lazy_wglIsEnabledGenlockI3D;
+PFNWGLGENLOCKSOURCEI3DPROC pwglGenlockSourceI3D=_Lazy_wglGenlockSourceI3D;
+PFNWGLGETGENLOCKSOURCEI3DPROC pwglGetGenlockSourceI3D=_Lazy_wglGetGenlockSourceI3D;
+PFNWGLGENLOCKSOURCEEDGEI3DPROC pwglGenlockSourceEdgeI3D=_Lazy_wglGenlockSourceEdgeI3D;
+PFNWGLGETGENLOCKSOURCEEDGEI3DPROC pwglGetGenlockSourceEdgeI3D=_Lazy_wglGetGenlockSourceEdgeI3D;
+PFNWGLGENLOCKSAMPLERATEI3DPROC pwglGenlockSampleRateI3D=_Lazy_wglGenlockSampleRateI3D;
+PFNWGLGETGENLOCKSAMPLERATEI3DPROC pwglGetGenlockSampleRateI3D=_Lazy_wglGetGenlockSampleRateI3D;
+PFNWGLGENLOCKSOURCEDELAYI3DPROC pwglGenlockSourceDelayI3D=_Lazy_wglGenlockSourceDelayI3D;
+PFNWGLGETGENLOCKSOURCEDELAYI3DPROC pwglGetGenlockSourceDelayI3D=_Lazy_wglGetGenlockSourceDelayI3D;
+PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC pwglQueryGenlockMaxSourceDelayI3D=_Lazy_wglQueryGenlockMaxSourceDelayI3D;
+#endif 
+
+/* WGL_I3D_image_buffer */
+
+#ifdef __GLEE_WGL_I3D_image_buffer
+LPVOID __stdcall _Lazy_wglCreateImageBufferI3D(HDC hDC, DWORD dwSize, UINT uFlags)        {if (GLeeInit()) return wglCreateImageBufferI3D(hDC, dwSize, uFlags); return (LPVOID)0;}
+BOOL __stdcall _Lazy_wglDestroyImageBufferI3D(HDC hDC, LPVOID pAddress)                   {if (GLeeInit()) return wglDestroyImageBufferI3D(hDC, pAddress); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglAssociateImageBufferEventsI3D(HDC hDC, const HANDLE * pEvent, const LPVOID * pAddress, const DWORD * pSize, UINT count)  {if (GLeeInit()) return wglAssociateImageBufferEventsI3D(hDC, pEvent, pAddress, pSize, count); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglReleaseImageBufferEventsI3D(HDC hDC, const LPVOID * pAddress, UINT count)  {if (GLeeInit()) return wglReleaseImageBufferEventsI3D(hDC, pAddress, count); return (BOOL)0;}
+PFNWGLCREATEIMAGEBUFFERI3DPROC pwglCreateImageBufferI3D=_Lazy_wglCreateImageBufferI3D;
+PFNWGLDESTROYIMAGEBUFFERI3DPROC pwglDestroyImageBufferI3D=_Lazy_wglDestroyImageBufferI3D;
+PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC pwglAssociateImageBufferEventsI3D=_Lazy_wglAssociateImageBufferEventsI3D;
+PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC pwglReleaseImageBufferEventsI3D=_Lazy_wglReleaseImageBufferEventsI3D;
+#endif 
+
+/* WGL_I3D_swap_frame_lock */
+
+#ifdef __GLEE_WGL_I3D_swap_frame_lock
+BOOL __stdcall _Lazy_wglEnableFrameLockI3D(void)                                          {if (GLeeInit()) return wglEnableFrameLockI3D(); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglDisableFrameLockI3D(void)                                         {if (GLeeInit()) return wglDisableFrameLockI3D(); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglIsEnabledFrameLockI3D(BOOL * pFlag)                               {if (GLeeInit()) return wglIsEnabledFrameLockI3D(pFlag); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryFrameLockMasterI3D(BOOL * pFlag)                             {if (GLeeInit()) return wglQueryFrameLockMasterI3D(pFlag); return (BOOL)0;}
+PFNWGLENABLEFRAMELOCKI3DPROC pwglEnableFrameLockI3D=_Lazy_wglEnableFrameLockI3D;
+PFNWGLDISABLEFRAMELOCKI3DPROC pwglDisableFrameLockI3D=_Lazy_wglDisableFrameLockI3D;
+PFNWGLISENABLEDFRAMELOCKI3DPROC pwglIsEnabledFrameLockI3D=_Lazy_wglIsEnabledFrameLockI3D;
+PFNWGLQUERYFRAMELOCKMASTERI3DPROC pwglQueryFrameLockMasterI3D=_Lazy_wglQueryFrameLockMasterI3D;
+#endif 
+
+/* WGL_NV_render_depth_texture */
+
+#ifdef __GLEE_WGL_NV_render_depth_texture
+#endif 
+
+/* WGL_NV_render_texture_rectangle */
+
+#ifdef __GLEE_WGL_NV_render_texture_rectangle
+#endif 
+
+/* WGL_ATI_pixel_format_float */
+
+#ifdef __GLEE_WGL_ATI_pixel_format_float
+#endif 
+
+/* WGL_NV_float_buffer */
+
+#ifdef __GLEE_WGL_NV_float_buffer
+#endif 
+
+/* WGL_EXT_display_color_table */
+
+#ifdef __GLEE_WGL_EXT_display_color_table
+GLboolean __stdcall _Lazy_wglCreateDisplayColorTableEXT(GLushort id)                      {if (GLeeInit()) return wglCreateDisplayColorTableEXT(id); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_wglLoadDisplayColorTableEXT(const GLushort * table, GLuint length)  {if (GLeeInit()) return wglLoadDisplayColorTableEXT(table, length); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_wglBindDisplayColorTableEXT(GLushort id)                        {if (GLeeInit()) return wglBindDisplayColorTableEXT(id); return (GLboolean)0;}
+VOID __stdcall _Lazy_wglDestroyDisplayColorTableEXT(GLushort id)                          {if (GLeeInit()) wglDestroyDisplayColorTableEXT(id);}
+PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC pwglCreateDisplayColorTableEXT=_Lazy_wglCreateDisplayColorTableEXT;
+PFNWGLLOADDISPLAYCOLORTABLEEXTPROC pwglLoadDisplayColorTableEXT=_Lazy_wglLoadDisplayColorTableEXT;
+PFNWGLBINDDISPLAYCOLORTABLEEXTPROC pwglBindDisplayColorTableEXT=_Lazy_wglBindDisplayColorTableEXT;
+PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC pwglDestroyDisplayColorTableEXT=_Lazy_wglDestroyDisplayColorTableEXT;
+#endif 
+
+/* WGL_EXT_extensions_string */
+
+#ifdef __GLEE_WGL_EXT_extensions_string
+const char * __stdcall _Lazy_wglGetExtensionsStringEXT(void)                              {if (GLeeInit()) return wglGetExtensionsStringEXT(); return (const char *)0;}
+PFNWGLGETEXTENSIONSSTRINGEXTPROC pwglGetExtensionsStringEXT=_Lazy_wglGetExtensionsStringEXT;
+#endif 
+
+/* WGL_EXT_swap_control */
+
+#ifdef __GLEE_WGL_EXT_swap_control
+BOOL __stdcall _Lazy_wglSwapIntervalEXT(int interval)                                     {if (GLeeInit()) return wglSwapIntervalEXT(interval); return (BOOL)0;}
+int __stdcall _Lazy_wglGetSwapIntervalEXT(void)                                           {if (GLeeInit()) return wglGetSwapIntervalEXT(); return (int)0;}
+PFNWGLSWAPINTERVALEXTPROC pwglSwapIntervalEXT=_Lazy_wglSwapIntervalEXT;
+PFNWGLGETSWAPINTERVALEXTPROC pwglGetSwapIntervalEXT=_Lazy_wglGetSwapIntervalEXT;
+#endif 
+
+/* WGL_NV_vertex_array_range */
+
+#ifdef __GLEE_WGL_NV_vertex_array_range
+void* __stdcall _Lazy_wglAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority)  {if (GLeeInit()) return wglAllocateMemoryNV(size, readfreq, writefreq, priority); return (void*)0;}
+void __stdcall _Lazy_wglFreeMemoryNV(void * pointer)                                      {if (GLeeInit()) wglFreeMemoryNV(pointer);}
+PFNWGLALLOCATEMEMORYNVPROC pwglAllocateMemoryNV=_Lazy_wglAllocateMemoryNV;
+PFNWGLFREEMEMORYNVPROC pwglFreeMemoryNV=_Lazy_wglFreeMemoryNV;
+#endif 
+
+/* WGL_OML_sync_control */
+
+#ifdef __GLEE_WGL_OML_sync_control
+BOOL __stdcall _Lazy_wglGetSyncValuesOML(HDC hdc, INT64 * ust, INT64 * msc, INT64 * sbc)  {if (GLeeInit()) return wglGetSyncValuesOML(hdc, ust, msc, sbc); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetMscRateOML(HDC hdc, INT32 * numerator, INT32 * denominator)    {if (GLeeInit()) return wglGetMscRateOML(hdc, numerator, denominator); return (BOOL)0;}
+INT64 __stdcall _Lazy_wglSwapBuffersMscOML(HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder)  {if (GLeeInit()) return wglSwapBuffersMscOML(hdc, target_msc, divisor, remainder); return (INT64)0;}
+INT64 __stdcall _Lazy_wglSwapLayerBuffersMscOML(HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder)  {if (GLeeInit()) return wglSwapLayerBuffersMscOML(hdc, fuPlanes, target_msc, divisor, remainder); return (INT64)0;}
+BOOL __stdcall _Lazy_wglWaitForMscOML(HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 * ust, INT64 * msc, INT64 * sbc)  {if (GLeeInit()) return wglWaitForMscOML(hdc, target_msc, divisor, remainder, ust, msc, sbc); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglWaitForSbcOML(HDC hdc, INT64 target_sbc, INT64 * ust, INT64 * msc, INT64 * sbc)  {if (GLeeInit()) return wglWaitForSbcOML(hdc, target_sbc, ust, msc, sbc); return (BOOL)0;}
+PFNWGLGETSYNCVALUESOMLPROC pwglGetSyncValuesOML=_Lazy_wglGetSyncValuesOML;
+PFNWGLGETMSCRATEOMLPROC pwglGetMscRateOML=_Lazy_wglGetMscRateOML;
+PFNWGLSWAPBUFFERSMSCOMLPROC pwglSwapBuffersMscOML=_Lazy_wglSwapBuffersMscOML;
+PFNWGLSWAPLAYERBUFFERSMSCOMLPROC pwglSwapLayerBuffersMscOML=_Lazy_wglSwapLayerBuffersMscOML;
+PFNWGLWAITFORMSCOMLPROC pwglWaitForMscOML=_Lazy_wglWaitForMscOML;
+PFNWGLWAITFORSBCOMLPROC pwglWaitForSbcOML=_Lazy_wglWaitForSbcOML;
+#endif 
+
+/* WGL_I3D_swap_frame_usage */
+
+#ifdef __GLEE_WGL_I3D_swap_frame_usage
+BOOL __stdcall _Lazy_wglGetFrameUsageI3D(float * pUsage)                                  {if (GLeeInit()) return wglGetFrameUsageI3D(pUsage); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglBeginFrameTrackingI3D(void)                                       {if (GLeeInit()) return wglBeginFrameTrackingI3D(); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglEndFrameTrackingI3D(void)                                         {if (GLeeInit()) return wglEndFrameTrackingI3D(); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryFrameTrackingI3D(DWORD * pFrameCount, DWORD * pMissedFrames, float * pLastMissedUsage)  {if (GLeeInit()) return wglQueryFrameTrackingI3D(pFrameCount, pMissedFrames, pLastMissedUsage); return (BOOL)0;}
+PFNWGLGETFRAMEUSAGEI3DPROC pwglGetFrameUsageI3D=_Lazy_wglGetFrameUsageI3D;
+PFNWGLBEGINFRAMETRACKINGI3DPROC pwglBeginFrameTrackingI3D=_Lazy_wglBeginFrameTrackingI3D;
+PFNWGLENDFRAMETRACKINGI3DPROC pwglEndFrameTrackingI3D=_Lazy_wglEndFrameTrackingI3D;
+PFNWGLQUERYFRAMETRACKINGI3DPROC pwglQueryFrameTrackingI3D=_Lazy_wglQueryFrameTrackingI3D;
+#endif 
+
+/* WGL_3DL_stereo_control */
+
+#ifdef __GLEE_WGL_3DL_stereo_control
+BOOL __stdcall _Lazy_wglSetStereoEmitterState3DL(HDC hDC, UINT uState)                    {if (GLeeInit()) return wglSetStereoEmitterState3DL(hDC, uState); return (BOOL)0;}
+PFNWGLSETSTEREOEMITTERSTATE3DLPROC pwglSetStereoEmitterState3DL=_Lazy_wglSetStereoEmitterState3DL;
+#endif 
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else /* GLX */
+
+/* Extension querying variables */
+
+GLboolean _GLEE_GLX_VERSION_1_3 = GL_FALSE;
+GLboolean _GLEE_GLX_VERSION_1_4 = GL_FALSE;
+GLboolean _GLEE_GLX_ARB_multisample = GL_FALSE;
+GLboolean _GLEE_GLX_ARB_fbconfig_float = GL_FALSE;
+GLboolean _GLEE_GLX_SGIS_multisample = GL_FALSE;
+GLboolean _GLEE_GLX_EXT_visual_info = GL_FALSE;
+GLboolean _GLEE_GLX_SGI_swap_control = GL_FALSE;
+GLboolean _GLEE_GLX_SGI_video_sync = GL_FALSE;
+GLboolean _GLEE_GLX_SGI_make_current_read = GL_FALSE;
+GLboolean _GLEE_GLX_EXT_visual_rating = GL_FALSE;
+GLboolean _GLEE_GLX_EXT_import_context = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_fbconfig = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_pbuffer = GL_FALSE;
+GLboolean _GLEE_GLX_SGI_cushion = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_video_resize = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_swap_group = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_swap_barrier = GL_FALSE;
+GLboolean _GLEE_GLX_SGIS_blended_overlay = GL_FALSE;
+GLboolean _GLEE_GLX_SGIS_shared_multisample = GL_FALSE;
+GLboolean _GLEE_GLX_SUN_get_transparent_index = GL_FALSE;
+GLboolean _GLEE_GLX_3DFX_multisample = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_copy_sub_buffer = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_pixmap_colormap = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_release_buffers = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_set_3dfx_mode = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_visual_select_group = GL_FALSE;
+GLboolean _GLEE_GLX_OML_swap_method = GL_FALSE;
+GLboolean _GLEE_GLX_OML_sync_control = GL_FALSE;
+GLboolean _GLEE_GLX_NV_float_buffer = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_hyperpipe = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_agp_offset = GL_FALSE;
+GLboolean _GLEE_GLX_EXT_scene_marker = GL_FALSE;
+
+/*  GLX Extension names */
+
+char __GLeeGLXExtensionNames[32][30]={
+    "GLX_VERSION_1_3",
+    "GLX_VERSION_1_4",
+    "GLX_ARB_multisample",
+    "GLX_ARB_fbconfig_float",
+    "GLX_SGIS_multisample",
+    "GLX_EXT_visual_info",
+    "GLX_SGI_swap_control",
+    "GLX_SGI_video_sync",
+    "GLX_SGI_make_current_read",
+    "GLX_EXT_visual_rating",
+    "GLX_EXT_import_context",
+    "GLX_SGIX_fbconfig",
+    "GLX_SGIX_pbuffer",
+    "GLX_SGI_cushion",
+    "GLX_SGIX_video_resize",
+    "GLX_SGIX_swap_group",
+    "GLX_SGIX_swap_barrier",
+    "GLX_SGIS_blended_overlay",
+    "GLX_SGIS_shared_multisample",
+    "GLX_SUN_get_transparent_index",
+    "GLX_3DFX_multisample",
+    "GLX_MESA_copy_sub_buffer",
+    "GLX_MESA_pixmap_colormap",
+    "GLX_MESA_release_buffers",
+    "GLX_MESA_set_3dfx_mode",
+    "GLX_SGIX_visual_select_group",
+    "GLX_OML_swap_method",
+    "GLX_OML_sync_control",
+    "GLX_NV_float_buffer",
+    "GLX_SGIX_hyperpipe",
+    "GLX_MESA_agp_offset",
+    "GLX_EXT_scene_marker"
+};
+int __GLeeGLXNumExtensions=32;
+
+/* GLX_VERSION_1_3 */
+
+#ifdef __GLEE_GLX_VERSION_1_3
+GLXFBConfig * __stdcall _Lazy_glXGetFBConfigs(Display * dpy, int screen, int * nelements)  {if (GLeeInit()) return glXGetFBConfigs(dpy, screen, nelements); return (GLXFBConfig *)0;}
+GLXFBConfig * __stdcall _Lazy_glXChooseFBConfig(Display * dpy, int screen, const int * attrib_list, int * nelements)  {if (GLeeInit()) return glXChooseFBConfig(dpy, screen, attrib_list, nelements); return (GLXFBConfig *)0;}
+int __stdcall _Lazy_glXGetFBConfigAttrib(Display * dpy, GLXFBConfig config, int attribute, int * value)  {if (GLeeInit()) return glXGetFBConfigAttrib(dpy, config, attribute, value); return (int)0;}
+XVisualInfo * __stdcall _Lazy_glXGetVisualFromFBConfig(Display * dpy, GLXFBConfig config)  {if (GLeeInit()) return glXGetVisualFromFBConfig(dpy, config); return (XVisualInfo *)0;}
+GLXWindow __stdcall _Lazy_glXCreateWindow(Display * dpy, GLXFBConfig config, Window win, const int * attrib_list)  {if (GLeeInit()) return glXCreateWindow(dpy, config, win, attrib_list); return (GLXWindow)0;}
+void __stdcall _Lazy_glXDestroyWindow(Display * dpy, GLXWindow win)                       {if (GLeeInit()) glXDestroyWindow(dpy, win);}
+GLXPixmap __stdcall _Lazy_glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap, const int * attrib_list)  {if (GLeeInit()) return glXCreatePixmap(dpy, config, pixmap, attrib_list); return (GLXPixmap)0;}
+void __stdcall _Lazy_glXDestroyPixmap(Display * dpy, GLXPixmap pixmap)                    {if (GLeeInit()) glXDestroyPixmap(dpy, pixmap);}
+GLXPbuffer __stdcall _Lazy_glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int * attrib_list)  {if (GLeeInit()) return glXCreatePbuffer(dpy, config, attrib_list); return (GLXPbuffer)0;}
+void __stdcall _Lazy_glXDestroyPbuffer(Display * dpy, GLXPbuffer pbuf)                    {if (GLeeInit()) glXDestroyPbuffer(dpy, pbuf);}
+void __stdcall _Lazy_glXQueryDrawable(Display * dpy, GLXDrawable draw, int attribute, unsigned int * value)  {if (GLeeInit()) glXQueryDrawable(dpy, draw, attribute, value);}
+GLXContext __stdcall _Lazy_glXCreateNewContext(Display * dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct)  {if (GLeeInit()) return glXCreateNewContext(dpy, config, render_type, share_list, direct); return (GLXContext)0;}
+Bool __stdcall _Lazy_glXMakeContextCurrent(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)  {if (GLeeInit()) return glXMakeContextCurrent(dpy, draw, read, ctx); return (Bool)0;}
+GLXDrawable __stdcall _Lazy_glXGetCurrentReadDrawable(void)                               {if (GLeeInit()) return glXGetCurrentReadDrawable(); return (GLXDrawable)0;}
+Display * __stdcall _Lazy_glXGetCurrentDisplay(void)                                      {if (GLeeInit()) return glXGetCurrentDisplay(); return (Display *)0;}
+int __stdcall _Lazy_glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int * value)  {if (GLeeInit()) return glXQueryContext(dpy, ctx, attribute, value); return (int)0;}
+void __stdcall _Lazy_glXSelectEvent(Display * dpy, GLXDrawable draw, unsigned long event_mask)  {if (GLeeInit()) glXSelectEvent(dpy, draw, event_mask);}
+void __stdcall _Lazy_glXGetSelectedEvent(Display * dpy, GLXDrawable draw, unsigned long * event_mask)  {if (GLeeInit()) glXGetSelectedEvent(dpy, draw, event_mask);}
+PFNGLXGETFBCONFIGSPROC pglXGetFBConfigs=_Lazy_glXGetFBConfigs;
+PFNGLXCHOOSEFBCONFIGPROC pglXChooseFBConfig=_Lazy_glXChooseFBConfig;
+PFNGLXGETFBCONFIGATTRIBPROC pglXGetFBConfigAttrib=_Lazy_glXGetFBConfigAttrib;
+PFNGLXGETVISUALFROMFBCONFIGPROC pglXGetVisualFromFBConfig=_Lazy_glXGetVisualFromFBConfig;
+PFNGLXCREATEWINDOWPROC pglXCreateWindow=_Lazy_glXCreateWindow;
+PFNGLXDESTROYWINDOWPROC pglXDestroyWindow=_Lazy_glXDestroyWindow;
+PFNGLXCREATEPIXMAPPROC pglXCreatePixmap=_Lazy_glXCreatePixmap;
+PFNGLXDESTROYPIXMAPPROC pglXDestroyPixmap=_Lazy_glXDestroyPixmap;
+PFNGLXCREATEPBUFFERPROC pglXCreatePbuffer=_Lazy_glXCreatePbuffer;
+PFNGLXDESTROYPBUFFERPROC pglXDestroyPbuffer=_Lazy_glXDestroyPbuffer;
+PFNGLXQUERYDRAWABLEPROC pglXQueryDrawable=_Lazy_glXQueryDrawable;
+PFNGLXCREATENEWCONTEXTPROC pglXCreateNewContext=_Lazy_glXCreateNewContext;
+PFNGLXMAKECONTEXTCURRENTPROC pglXMakeContextCurrent=_Lazy_glXMakeContextCurrent;
+PFNGLXGETCURRENTREADDRAWABLEPROC pglXGetCurrentReadDrawable=_Lazy_glXGetCurrentReadDrawable;
+PFNGLXGETCURRENTDISPLAYPROC pglXGetCurrentDisplay=_Lazy_glXGetCurrentDisplay;
+PFNGLXQUERYCONTEXTPROC pglXQueryContext=_Lazy_glXQueryContext;
+PFNGLXSELECTEVENTPROC pglXSelectEvent=_Lazy_glXSelectEvent;
+PFNGLXGETSELECTEDEVENTPROC pglXGetSelectedEvent=_Lazy_glXGetSelectedEvent;
+#endif 
+
+/* GLX_VERSION_1_4 */
+
+#ifdef __GLEE_GLX_VERSION_1_4
+__GLXextFuncPtr __stdcall _Lazy_glXGetProcAddress(const GLubyte * procName)               {if (GLeeInit()) return glXGetProcAddress(procName); return (__GLXextFuncPtr)0;}
+PFNGLXGETPROCADDRESSPROC pglXGetProcAddress=_Lazy_glXGetProcAddress;
+#endif 
+
+/* GLX_ARB_multisample */
+
+#ifdef __GLEE_GLX_ARB_multisample
+#endif 
+
+/* GLX_ARB_fbconfig_float */
+
+#ifdef __GLEE_GLX_ARB_fbconfig_float
+#endif 
+
+/* GLX_SGIS_multisample */
+
+#ifdef __GLEE_GLX_SGIS_multisample
+#endif 
+
+/* GLX_EXT_visual_info */
+
+#ifdef __GLEE_GLX_EXT_visual_info
+#endif 
+
+/* GLX_SGI_swap_control */
+
+#ifdef __GLEE_GLX_SGI_swap_control
+int __stdcall _Lazy_glXSwapIntervalSGI(int interval)                                      {if (GLeeInit()) return glXSwapIntervalSGI(interval); return (int)0;}
+PFNGLXSWAPINTERVALSGIPROC pglXSwapIntervalSGI=_Lazy_glXSwapIntervalSGI;
+#endif 
+
+/* GLX_SGI_video_sync */
+
+#ifdef __GLEE_GLX_SGI_video_sync
+int __stdcall _Lazy_glXGetVideoSyncSGI(unsigned int * count)                              {if (GLeeInit()) return glXGetVideoSyncSGI(count); return (int)0;}
+int __stdcall _Lazy_glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int * count)  {if (GLeeInit()) return glXWaitVideoSyncSGI(divisor, remainder, count); return (int)0;}
+PFNGLXGETVIDEOSYNCSGIPROC pglXGetVideoSyncSGI=_Lazy_glXGetVideoSyncSGI;
+PFNGLXWAITVIDEOSYNCSGIPROC pglXWaitVideoSyncSGI=_Lazy_glXWaitVideoSyncSGI;
+#endif 
+
+/* GLX_SGI_make_current_read */
+
+#ifdef __GLEE_GLX_SGI_make_current_read
+Bool __stdcall _Lazy_glXMakeCurrentReadSGI(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)  {if (GLeeInit()) return glXMakeCurrentReadSGI(dpy, draw, read, ctx); return (Bool)0;}
+GLXDrawable __stdcall _Lazy_glXGetCurrentReadDrawableSGI(void)                            {if (GLeeInit()) return glXGetCurrentReadDrawableSGI(); return (GLXDrawable)0;}
+PFNGLXMAKECURRENTREADSGIPROC pglXMakeCurrentReadSGI=_Lazy_glXMakeCurrentReadSGI;
+PFNGLXGETCURRENTREADDRAWABLESGIPROC pglXGetCurrentReadDrawableSGI=_Lazy_glXGetCurrentReadDrawableSGI;
+#endif 
+
+/* GLX_EXT_visual_rating */
+
+#ifdef __GLEE_GLX_EXT_visual_rating
+#endif 
+
+/* GLX_EXT_import_context */
+
+#ifdef __GLEE_GLX_EXT_import_context
+Display * __stdcall _Lazy_glXGetCurrentDisplayEXT(void)                                   {if (GLeeInit()) return glXGetCurrentDisplayEXT(); return (Display *)0;}
+int __stdcall _Lazy_glXQueryContextInfoEXT(Display * dpy, GLXContext context, int attribute, int * value)  {if (GLeeInit()) return glXQueryContextInfoEXT(dpy, context, attribute, value); return (int)0;}
+GLXContextID __stdcall _Lazy_glXGetContextIDEXT(const GLXContext context)                 {if (GLeeInit()) return glXGetContextIDEXT(context); return (GLXContextID)0;}
+GLXContext __stdcall _Lazy_glXImportContextEXT(Display * dpy, GLXContextID contextID)     {if (GLeeInit()) return glXImportContextEXT(dpy, contextID); return (GLXContext)0;}
+void __stdcall _Lazy_glXFreeContextEXT(Display * dpy, GLXContext context)                 {if (GLeeInit()) glXFreeContextEXT(dpy, context);}
+PFNGLXGETCURRENTDISPLAYEXTPROC pglXGetCurrentDisplayEXT=_Lazy_glXGetCurrentDisplayEXT;
+PFNGLXQUERYCONTEXTINFOEXTPROC pglXQueryContextInfoEXT=_Lazy_glXQueryContextInfoEXT;
+PFNGLXGETCONTEXTIDEXTPROC pglXGetContextIDEXT=_Lazy_glXGetContextIDEXT;
+PFNGLXIMPORTCONTEXTEXTPROC pglXImportContextEXT=_Lazy_glXImportContextEXT;
+PFNGLXFREECONTEXTEXTPROC pglXFreeContextEXT=_Lazy_glXFreeContextEXT;
+#endif 
+
+/* GLX_SGIX_fbconfig */
+
+#ifdef __GLEE_GLX_SGIX_fbconfig
+int __stdcall _Lazy_glXGetFBConfigAttribSGIX(Display * dpy, GLXFBConfigSGIX config, int attribute, int * value)  {if (GLeeInit()) return glXGetFBConfigAttribSGIX(dpy, config, attribute, value); return (int)0;}
+GLXFBConfigSGIX * __stdcall _Lazy_glXChooseFBConfigSGIX(Display * dpy, int screen, int * attrib_list, int * nelements)  {if (GLeeInit()) return glXChooseFBConfigSGIX(dpy, screen, attrib_list, nelements); return (GLXFBConfigSGIX *)0;}
+GLXPixmap __stdcall _Lazy_glXCreateGLXPixmapWithConfigSGIX(Display * dpy, GLXFBConfigSGIX config, Pixmap pixmap)  {if (GLeeInit()) return glXCreateGLXPixmapWithConfigSGIX(dpy, config, pixmap); return (GLXPixmap)0;}
+GLXContext __stdcall _Lazy_glXCreateContextWithConfigSGIX(Display * dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct)  {if (GLeeInit()) return glXCreateContextWithConfigSGIX(dpy, config, render_type, share_list, direct); return (GLXContext)0;}
+XVisualInfo * __stdcall _Lazy_glXGetVisualFromFBConfigSGIX(Display * dpy, GLXFBConfigSGIX config)  {if (GLeeInit()) return glXGetVisualFromFBConfigSGIX(dpy, config); return (XVisualInfo *)0;}
+GLXFBConfigSGIX __stdcall _Lazy_glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis)  {if (GLeeInit()) return glXGetFBConfigFromVisualSGIX(dpy, vis); return (GLXFBConfigSGIX)0;}
+PFNGLXGETFBCONFIGATTRIBSGIXPROC pglXGetFBConfigAttribSGIX=_Lazy_glXGetFBConfigAttribSGIX;
+PFNGLXCHOOSEFBCONFIGSGIXPROC pglXChooseFBConfigSGIX=_Lazy_glXChooseFBConfigSGIX;
+PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC pglXCreateGLXPixmapWithConfigSGIX=_Lazy_glXCreateGLXPixmapWithConfigSGIX;
+PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC pglXCreateContextWithConfigSGIX=_Lazy_glXCreateContextWithConfigSGIX;
+PFNGLXGETVISUALFROMFBCONFIGSGIXPROC pglXGetVisualFromFBConfigSGIX=_Lazy_glXGetVisualFromFBConfigSGIX;
+PFNGLXGETFBCONFIGFROMVISUALSGIXPROC pglXGetFBConfigFromVisualSGIX=_Lazy_glXGetFBConfigFromVisualSGIX;
+#endif 
+
+/* GLX_SGIX_pbuffer */
+
+#ifdef __GLEE_GLX_SGIX_pbuffer
+GLXPbufferSGIX __stdcall _Lazy_glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int * attrib_list)  {if (GLeeInit()) return glXCreateGLXPbufferSGIX(dpy, config, width, height, attrib_list); return (GLXPbufferSGIX)0;}
+void __stdcall _Lazy_glXDestroyGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX pbuf)         {if (GLeeInit()) glXDestroyGLXPbufferSGIX(dpy, pbuf);}
+int __stdcall _Lazy_glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int * value)  {if (GLeeInit()) return glXQueryGLXPbufferSGIX(dpy, pbuf, attribute, value); return (int)0;}
+void __stdcall _Lazy_glXSelectEventSGIX(Display * dpy, GLXDrawable drawable, unsigned long mask)  {if (GLeeInit()) glXSelectEventSGIX(dpy, drawable, mask);}
+void __stdcall _Lazy_glXGetSelectedEventSGIX(Display * dpy, GLXDrawable drawable, unsigned long * mask)  {if (GLeeInit()) glXGetSelectedEventSGIX(dpy, drawable, mask);}
+PFNGLXCREATEGLXPBUFFERSGIXPROC pglXCreateGLXPbufferSGIX=_Lazy_glXCreateGLXPbufferSGIX;
+PFNGLXDESTROYGLXPBUFFERSGIXPROC pglXDestroyGLXPbufferSGIX=_Lazy_glXDestroyGLXPbufferSGIX;
+PFNGLXQUERYGLXPBUFFERSGIXPROC pglXQueryGLXPbufferSGIX=_Lazy_glXQueryGLXPbufferSGIX;
+PFNGLXSELECTEVENTSGIXPROC pglXSelectEventSGIX=_Lazy_glXSelectEventSGIX;
+PFNGLXGETSELECTEDEVENTSGIXPROC pglXGetSelectedEventSGIX=_Lazy_glXGetSelectedEventSGIX;
+#endif 
+
+/* GLX_SGI_cushion */
+
+#ifdef __GLEE_GLX_SGI_cushion
+void __stdcall _Lazy_glXCushionSGI(Display * dpy, Window window, float cushion)           {if (GLeeInit()) glXCushionSGI(dpy, window, cushion);}
+PFNGLXCUSHIONSGIPROC pglXCushionSGI=_Lazy_glXCushionSGI;
+#endif 
+
+/* GLX_SGIX_video_resize */
+
+#ifdef __GLEE_GLX_SGIX_video_resize
+int __stdcall _Lazy_glXBindChannelToWindowSGIX(Display * display, int screen, int channel, Window window)  {if (GLeeInit()) return glXBindChannelToWindowSGIX(display, screen, channel, window); return (int)0;}
+int __stdcall _Lazy_glXChannelRectSGIX(Display * display, int screen, int channel, int x, int y, int w, int h)  {if (GLeeInit()) return glXChannelRectSGIX(display, screen, channel, x, y, w, h); return (int)0;}
+int __stdcall _Lazy_glXQueryChannelRectSGIX(Display * display, int screen, int channel, int * dx, int * dy, int * dw, int * dh)  {if (GLeeInit()) return glXQueryChannelRectSGIX(display, screen, channel, dx, dy, dw, dh); return (int)0;}
+int __stdcall _Lazy_glXQueryChannelDeltasSGIX(Display * display, int screen, int channel, int * x, int * y, int * w, int * h)  {if (GLeeInit()) return glXQueryChannelDeltasSGIX(display, screen, channel, x, y, w, h); return (int)0;}
+int __stdcall _Lazy_glXChannelRectSyncSGIX(Display * display, int screen, int channel, GLenum synctype)  {if (GLeeInit()) return glXChannelRectSyncSGIX(display, screen, channel, synctype); return (int)0;}
+PFNGLXBINDCHANNELTOWINDOWSGIXPROC pglXBindChannelToWindowSGIX=_Lazy_glXBindChannelToWindowSGIX;
+PFNGLXCHANNELRECTSGIXPROC pglXChannelRectSGIX=_Lazy_glXChannelRectSGIX;
+PFNGLXQUERYCHANNELRECTSGIXPROC pglXQueryChannelRectSGIX=_Lazy_glXQueryChannelRectSGIX;
+PFNGLXQUERYCHANNELDELTASSGIXPROC pglXQueryChannelDeltasSGIX=_Lazy_glXQueryChannelDeltasSGIX;
+PFNGLXCHANNELRECTSYNCSGIXPROC pglXChannelRectSyncSGIX=_Lazy_glXChannelRectSyncSGIX;
+#endif 
+
+/* GLX_SGIX_swap_group */
+
+#ifdef __GLEE_GLX_SGIX_swap_group
+void __stdcall _Lazy_glXJoinSwapGroupSGIX(Display * dpy, GLXDrawable drawable, GLXDrawable member)  {if (GLeeInit()) glXJoinSwapGroupSGIX(dpy, drawable, member);}
+PFNGLXJOINSWAPGROUPSGIXPROC pglXJoinSwapGroupSGIX=_Lazy_glXJoinSwapGroupSGIX;
+#endif 
+
+/* GLX_SGIX_swap_barrier */
+
+#ifdef __GLEE_GLX_SGIX_swap_barrier
+void __stdcall _Lazy_glXBindSwapBarrierSGIX(Display * dpy, GLXDrawable drawable, int barrier)  {if (GLeeInit()) glXBindSwapBarrierSGIX(dpy, drawable, barrier);}
+Bool __stdcall _Lazy_glXQueryMaxSwapBarriersSGIX(Display * dpy, int screen, int * max)    {if (GLeeInit()) return glXQueryMaxSwapBarriersSGIX(dpy, screen, max); return (Bool)0;}
+PFNGLXBINDSWAPBARRIERSGIXPROC pglXBindSwapBarrierSGIX=_Lazy_glXBindSwapBarrierSGIX;
+PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC pglXQueryMaxSwapBarriersSGIX=_Lazy_glXQueryMaxSwapBarriersSGIX;
+#endif 
+
+/* GLX_SGIS_blended_overlay */
+
+#ifdef __GLEE_GLX_SGIS_blended_overlay
+#endif 
+
+/* GLX_SGIS_shared_multisample */
+
+#ifdef __GLEE_GLX_SGIS_shared_multisample
+#endif 
+
+/* GLX_SUN_get_transparent_index */
+
+#ifdef __GLEE_GLX_SUN_get_transparent_index
+Status __stdcall _Lazy_glXGetTransparentIndexSUN(Display * dpy, Window overlay, Window underlay, long * pTransparentIndex)  {if (GLeeInit()) return glXGetTransparentIndexSUN(dpy, overlay, underlay, pTransparentIndex); return (Status)0;}
+PFNGLXGETTRANSPARENTINDEXSUNPROC pglXGetTransparentIndexSUN=_Lazy_glXGetTransparentIndexSUN;
+#endif 
+
+/* GLX_3DFX_multisample */
+
+#ifdef __GLEE_GLX_3DFX_multisample
+#endif 
+
+/* GLX_MESA_copy_sub_buffer */
+
+#ifdef __GLEE_GLX_MESA_copy_sub_buffer
+void __stdcall _Lazy_glXCopySubBufferMESA(Display * dpy, GLXDrawable drawable, int x, int y, int width, int height)  {if (GLeeInit()) glXCopySubBufferMESA(dpy, drawable, x, y, width, height);}
+PFNGLXCOPYSUBBUFFERMESAPROC pglXCopySubBufferMESA=_Lazy_glXCopySubBufferMESA;
+#endif 
+
+/* GLX_MESA_pixmap_colormap */
+
+#ifdef __GLEE_GLX_MESA_pixmap_colormap
+GLXPixmap __stdcall _Lazy_glXCreateGLXPixmapMESA(Display * dpy, XVisualInfo * visual, Pixmap pixmap, Colormap cmap)  {if (GLeeInit()) return glXCreateGLXPixmapMESA(dpy, visual, pixmap, cmap); return (GLXPixmap)0;}
+PFNGLXCREATEGLXPIXMAPMESAPROC pglXCreateGLXPixmapMESA=_Lazy_glXCreateGLXPixmapMESA;
+#endif 
+
+/* GLX_MESA_release_buffers */
+
+#ifdef __GLEE_GLX_MESA_release_buffers
+Bool __stdcall _Lazy_glXReleaseBuffersMESA(Display * dpy, GLXDrawable drawable)           {if (GLeeInit()) return glXReleaseBuffersMESA(dpy, drawable); return (Bool)0;}
+PFNGLXRELEASEBUFFERSMESAPROC pglXReleaseBuffersMESA=_Lazy_glXReleaseBuffersMESA;
+#endif 
+
+/* GLX_MESA_set_3dfx_mode */
+
+#ifdef __GLEE_GLX_MESA_set_3dfx_mode
+Bool __stdcall _Lazy_glXSet3DfxModeMESA(int mode)                                         {if (GLeeInit()) return glXSet3DfxModeMESA(mode); return (Bool)0;}
+PFNGLXSET3DFXMODEMESAPROC pglXSet3DfxModeMESA=_Lazy_glXSet3DfxModeMESA;
+#endif 
+
+/* GLX_SGIX_visual_select_group */
+
+#ifdef __GLEE_GLX_SGIX_visual_select_group
+#endif 
+
+/* GLX_OML_swap_method */
+
+#ifdef __GLEE_GLX_OML_swap_method
+#endif 
+
+/* GLX_OML_sync_control */
+
+#ifdef __GLEE_GLX_OML_sync_control
+Bool __stdcall _Lazy_glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable, int64_t * ust, int64_t * msc, int64_t * sbc)  {if (GLeeInit()) return glXGetSyncValuesOML(dpy, drawable, ust, msc, sbc); return (Bool)0;}
+Bool __stdcall _Lazy_glXGetMscRateOML(Display * dpy, GLXDrawable drawable, int32_t * numerator, int32_t * denominator)  {if (GLeeInit()) return glXGetMscRateOML(dpy, drawable, numerator, denominator); return (Bool)0;}
+int64_t __stdcall _Lazy_glXSwapBuffersMscOML(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder)  {if (GLeeInit()) return glXSwapBuffersMscOML(dpy, drawable, target_msc, divisor, remainder); return (int64_t)0;}
+Bool __stdcall _Lazy_glXWaitForMscOML(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc, int64_t * sbc)  {if (GLeeInit()) return glXWaitForMscOML(dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc); return (Bool)0;}
+Bool __stdcall _Lazy_glXWaitForSbcOML(Display * dpy, GLXDrawable drawable, int64_t target_sbc, int64_t * ust, int64_t * msc, int64_t * sbc)  {if (GLeeInit()) return glXWaitForSbcOML(dpy, drawable, target_sbc, ust, msc, sbc); return (Bool)0;}
+PFNGLXGETSYNCVALUESOMLPROC pglXGetSyncValuesOML=_Lazy_glXGetSyncValuesOML;
+PFNGLXGETMSCRATEOMLPROC pglXGetMscRateOML=_Lazy_glXGetMscRateOML;
+PFNGLXSWAPBUFFERSMSCOMLPROC pglXSwapBuffersMscOML=_Lazy_glXSwapBuffersMscOML;
+PFNGLXWAITFORMSCOMLPROC pglXWaitForMscOML=_Lazy_glXWaitForMscOML;
+PFNGLXWAITFORSBCOMLPROC pglXWaitForSbcOML=_Lazy_glXWaitForSbcOML;
+#endif 
+
+/* GLX_NV_float_buffer */
+
+#ifdef __GLEE_GLX_NV_float_buffer
+#endif 
+
+/* GLX_SGIX_hyperpipe */
+
+#ifdef __GLEE_GLX_SGIX_hyperpipe
+GLXHyperpipeNetworkSGIX * __stdcall _Lazy_glXQueryHyperpipeNetworkSGIX(Display * dpy, int * npipes)  {if (GLeeInit()) return glXQueryHyperpipeNetworkSGIX(dpy, npipes); return (GLXHyperpipeNetworkSGIX *)0;}
+int __stdcall _Lazy_glXHyperpipeConfigSGIX(Display * dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX * cfg, int * hpId)  {if (GLeeInit()) return glXHyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId); return (int)0;}
+GLXHyperpipeConfigSGIX * __stdcall _Lazy_glXQueryHyperpipeConfigSGIX(Display * dpy, int hpId, int * npipes)  {if (GLeeInit()) return glXQueryHyperpipeConfigSGIX(dpy, hpId, npipes); return (GLXHyperpipeConfigSGIX *)0;}
+int __stdcall _Lazy_glXDestroyHyperpipeConfigSGIX(Display * dpy, int hpId)                {if (GLeeInit()) return glXDestroyHyperpipeConfigSGIX(dpy, hpId); return (int)0;}
+int __stdcall _Lazy_glXBindHyperpipeSGIX(Display * dpy, int hpId)                         {if (GLeeInit()) return glXBindHyperpipeSGIX(dpy, hpId); return (int)0;}
+int __stdcall _Lazy_glXQueryHyperpipeBestAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * attribList, void * returnAttribList)  {if (GLeeInit()) return glXQueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList); return (int)0;}
+int __stdcall _Lazy_glXHyperpipeAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * attribList)  {if (GLeeInit()) return glXHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList); return (int)0;}
+int __stdcall _Lazy_glXQueryHyperpipeAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * returnAttribList)  {if (GLeeInit()) return glXQueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList); return (int)0;}
+PFNGLXQUERYHYPERPIPENETWORKSGIXPROC pglXQueryHyperpipeNetworkSGIX=_Lazy_glXQueryHyperpipeNetworkSGIX;
+PFNGLXHYPERPIPECONFIGSGIXPROC pglXHyperpipeConfigSGIX=_Lazy_glXHyperpipeConfigSGIX;
+PFNGLXQUERYHYPERPIPECONFIGSGIXPROC pglXQueryHyperpipeConfigSGIX=_Lazy_glXQueryHyperpipeConfigSGIX;
+PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC pglXDestroyHyperpipeConfigSGIX=_Lazy_glXDestroyHyperpipeConfigSGIX;
+PFNGLXBINDHYPERPIPESGIXPROC pglXBindHyperpipeSGIX=_Lazy_glXBindHyperpipeSGIX;
+PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC pglXQueryHyperpipeBestAttribSGIX=_Lazy_glXQueryHyperpipeBestAttribSGIX;
+PFNGLXHYPERPIPEATTRIBSGIXPROC pglXHyperpipeAttribSGIX=_Lazy_glXHyperpipeAttribSGIX;
+PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC pglXQueryHyperpipeAttribSGIX=_Lazy_glXQueryHyperpipeAttribSGIX;
+#endif 
+
+/* GLX_MESA_agp_offset */
+
+#ifdef __GLEE_GLX_MESA_agp_offset
+unsigned int __stdcall _Lazy_glXGetAGPOffsetMESA(const void * pointer)                    {if (GLeeInit()) return glXGetAGPOffsetMESA(pointer); return (unsigned int)0;}
+PFNGLXGETAGPOFFSETMESAPROC pglXGetAGPOffsetMESA=_Lazy_glXGetAGPOffsetMESA;
+#endif 
+
+/* GLX_EXT_scene_marker */
+
+#ifdef __GLEE_GLX_EXT_scene_marker
+#endif 
+#endif /* end GLX */
+/*****************************************************************
+* Extension link functions
+*****************************************************************/
+
+GLuint __GLeeLink_GL_VERSION_1_2(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_1_2
+    if ((pglBlendColor = (PFNGLBLENDCOLORPROC) __GLeeGetProcAddress("glBlendColor"))!=0) nLinked++;
+    if ((pglBlendEquation = (PFNGLBLENDEQUATIONPROC) __GLeeGetProcAddress("glBlendEquation"))!=0) nLinked++;
+    if ((pglDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC) __GLeeGetProcAddress("glDrawRangeElements"))!=0) nLinked++;
+    if ((pglColorTable = (PFNGLCOLORTABLEPROC) __GLeeGetProcAddress("glColorTable"))!=0) nLinked++;
+    if ((pglColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC) __GLeeGetProcAddress("glColorTableParameterfv"))!=0) nLinked++;
+    if ((pglColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC) __GLeeGetProcAddress("glColorTableParameteriv"))!=0) nLinked++;
+    if ((pglCopyColorTable = (PFNGLCOPYCOLORTABLEPROC) __GLeeGetProcAddress("glCopyColorTable"))!=0) nLinked++;
+    if ((pglGetColorTable = (PFNGLGETCOLORTABLEPROC) __GLeeGetProcAddress("glGetColorTable"))!=0) nLinked++;
+    if ((pglGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC) __GLeeGetProcAddress("glGetColorTableParameterfv"))!=0) nLinked++;
+    if ((pglGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC) __GLeeGetProcAddress("glGetColorTableParameteriv"))!=0) nLinked++;
+    if ((pglColorSubTable = (PFNGLCOLORSUBTABLEPROC) __GLeeGetProcAddress("glColorSubTable"))!=0) nLinked++;
+    if ((pglCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC) __GLeeGetProcAddress("glCopyColorSubTable"))!=0) nLinked++;
+    if ((pglConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC) __GLeeGetProcAddress("glConvolutionFilter1D"))!=0) nLinked++;
+    if ((pglConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC) __GLeeGetProcAddress("glConvolutionFilter2D"))!=0) nLinked++;
+    if ((pglConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC) __GLeeGetProcAddress("glConvolutionParameterf"))!=0) nLinked++;
+    if ((pglConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC) __GLeeGetProcAddress("glConvolutionParameterfv"))!=0) nLinked++;
+    if ((pglConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC) __GLeeGetProcAddress("glConvolutionParameteri"))!=0) nLinked++;
+    if ((pglConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC) __GLeeGetProcAddress("glConvolutionParameteriv"))!=0) nLinked++;
+    if ((pglCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC) __GLeeGetProcAddress("glCopyConvolutionFilter1D"))!=0) nLinked++;
+    if ((pglCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC) __GLeeGetProcAddress("glCopyConvolutionFilter2D"))!=0) nLinked++;
+    if ((pglGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC) __GLeeGetProcAddress("glGetConvolutionFilter"))!=0) nLinked++;
+    if ((pglGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC) __GLeeGetProcAddress("glGetConvolutionParameterfv"))!=0) nLinked++;
+    if ((pglGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC) __GLeeGetProcAddress("glGetConvolutionParameteriv"))!=0) nLinked++;
+    if ((pglGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC) __GLeeGetProcAddress("glGetSeparableFilter"))!=0) nLinked++;
+    if ((pglSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC) __GLeeGetProcAddress("glSeparableFilter2D"))!=0) nLinked++;
+    if ((pglGetHistogram = (PFNGLGETHISTOGRAMPROC) __GLeeGetProcAddress("glGetHistogram"))!=0) nLinked++;
+    if ((pglGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC) __GLeeGetProcAddress("glGetHistogramParameterfv"))!=0) nLinked++;
+    if ((pglGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC) __GLeeGetProcAddress("glGetHistogramParameteriv"))!=0) nLinked++;
+    if ((pglGetMinmax = (PFNGLGETMINMAXPROC) __GLeeGetProcAddress("glGetMinmax"))!=0) nLinked++;
+    if ((pglGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC) __GLeeGetProcAddress("glGetMinmaxParameterfv"))!=0) nLinked++;
+    if ((pglGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC) __GLeeGetProcAddress("glGetMinmaxParameteriv"))!=0) nLinked++;
+    if ((pglHistogram = (PFNGLHISTOGRAMPROC) __GLeeGetProcAddress("glHistogram"))!=0) nLinked++;
+    if ((pglMinmax = (PFNGLMINMAXPROC) __GLeeGetProcAddress("glMinmax"))!=0) nLinked++;
+    if ((pglResetHistogram = (PFNGLRESETHISTOGRAMPROC) __GLeeGetProcAddress("glResetHistogram"))!=0) nLinked++;
+    if ((pglResetMinmax = (PFNGLRESETMINMAXPROC) __GLeeGetProcAddress("glResetMinmax"))!=0) nLinked++;
+    if ((pglTexImage3D = (PFNGLTEXIMAGE3DPROC) __GLeeGetProcAddress("glTexImage3D"))!=0) nLinked++;
+    if ((pglTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glTexSubImage3D"))!=0) nLinked++;
+    if ((pglCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glCopyTexSubImage3D"))!=0) nLinked++;
+#endif
+    if (nLinked==38) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_imaging(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_VERSION_1_3(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_1_3
+    if ((pglActiveTexture = (PFNGLACTIVETEXTUREPROC) __GLeeGetProcAddress("glActiveTexture"))!=0) nLinked++;
+    if ((pglClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC) __GLeeGetProcAddress("glClientActiveTexture"))!=0) nLinked++;
+    if ((pglMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC) __GLeeGetProcAddress("glMultiTexCoord1d"))!=0) nLinked++;
+    if ((pglMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC) __GLeeGetProcAddress("glMultiTexCoord1dv"))!=0) nLinked++;
+    if ((pglMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC) __GLeeGetProcAddress("glMultiTexCoord1f"))!=0) nLinked++;
+    if ((pglMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC) __GLeeGetProcAddress("glMultiTexCoord1fv"))!=0) nLinked++;
+    if ((pglMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC) __GLeeGetProcAddress("glMultiTexCoord1i"))!=0) nLinked++;
+    if ((pglMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC) __GLeeGetProcAddress("glMultiTexCoord1iv"))!=0) nLinked++;
+    if ((pglMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC) __GLeeGetProcAddress("glMultiTexCoord1s"))!=0) nLinked++;
+    if ((pglMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC) __GLeeGetProcAddress("glMultiTexCoord1sv"))!=0) nLinked++;
+    if ((pglMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC) __GLeeGetProcAddress("glMultiTexCoord2d"))!=0) nLinked++;
+    if ((pglMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC) __GLeeGetProcAddress("glMultiTexCoord2dv"))!=0) nLinked++;
+    if ((pglMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC) __GLeeGetProcAddress("glMultiTexCoord2f"))!=0) nLinked++;
+    if ((pglMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC) __GLeeGetProcAddress("glMultiTexCoord2fv"))!=0) nLinked++;
+    if ((pglMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC) __GLeeGetProcAddress("glMultiTexCoord2i"))!=0) nLinked++;
+    if ((pglMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC) __GLeeGetProcAddress("glMultiTexCoord2iv"))!=0) nLinked++;
+    if ((pglMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC) __GLeeGetProcAddress("glMultiTexCoord2s"))!=0) nLinked++;
+    if ((pglMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC) __GLeeGetProcAddress("glMultiTexCoord2sv"))!=0) nLinked++;
+    if ((pglMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC) __GLeeGetProcAddress("glMultiTexCoord3d"))!=0) nLinked++;
+    if ((pglMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC) __GLeeGetProcAddress("glMultiTexCoord3dv"))!=0) nLinked++;
+    if ((pglMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC) __GLeeGetProcAddress("glMultiTexCoord3f"))!=0) nLinked++;
+    if ((pglMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC) __GLeeGetProcAddress("glMultiTexCoord3fv"))!=0) nLinked++;
+    if ((pglMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC) __GLeeGetProcAddress("glMultiTexCoord3i"))!=0) nLinked++;
+    if ((pglMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC) __GLeeGetProcAddress("glMultiTexCoord3iv"))!=0) nLinked++;
+    if ((pglMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC) __GLeeGetProcAddress("glMultiTexCoord3s"))!=0) nLinked++;
+    if ((pglMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC) __GLeeGetProcAddress("glMultiTexCoord3sv"))!=0) nLinked++;
+    if ((pglMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC) __GLeeGetProcAddress("glMultiTexCoord4d"))!=0) nLinked++;
+    if ((pglMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC) __GLeeGetProcAddress("glMultiTexCoord4dv"))!=0) nLinked++;
+    if ((pglMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC) __GLeeGetProcAddress("glMultiTexCoord4f"))!=0) nLinked++;
+    if ((pglMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC) __GLeeGetProcAddress("glMultiTexCoord4fv"))!=0) nLinked++;
+    if ((pglMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC) __GLeeGetProcAddress("glMultiTexCoord4i"))!=0) nLinked++;
+    if ((pglMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC) __GLeeGetProcAddress("glMultiTexCoord4iv"))!=0) nLinked++;
+    if ((pglMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC) __GLeeGetProcAddress("glMultiTexCoord4s"))!=0) nLinked++;
+    if ((pglMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC) __GLeeGetProcAddress("glMultiTexCoord4sv"))!=0) nLinked++;
+    if ((pglLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC) __GLeeGetProcAddress("glLoadTransposeMatrixf"))!=0) nLinked++;
+    if ((pglLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC) __GLeeGetProcAddress("glLoadTransposeMatrixd"))!=0) nLinked++;
+    if ((pglMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC) __GLeeGetProcAddress("glMultTransposeMatrixf"))!=0) nLinked++;
+    if ((pglMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC) __GLeeGetProcAddress("glMultTransposeMatrixd"))!=0) nLinked++;
+    if ((pglSampleCoverage = (PFNGLSAMPLECOVERAGEPROC) __GLeeGetProcAddress("glSampleCoverage"))!=0) nLinked++;
+    if ((pglCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC) __GLeeGetProcAddress("glCompressedTexImage3D"))!=0) nLinked++;
+    if ((pglCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC) __GLeeGetProcAddress("glCompressedTexImage2D"))!=0) nLinked++;
+    if ((pglCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC) __GLeeGetProcAddress("glCompressedTexImage1D"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glCompressedTexSubImage3D"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) __GLeeGetProcAddress("glCompressedTexSubImage2D"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) __GLeeGetProcAddress("glCompressedTexSubImage1D"))!=0) nLinked++;
+    if ((pglGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC) __GLeeGetProcAddress("glGetCompressedTexImage"))!=0) nLinked++;
+#endif
+    if (nLinked==46) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_VERSION_1_4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_1_4
+    if ((pglBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) __GLeeGetProcAddress("glBlendFuncSeparate"))!=0) nLinked++;
+    if ((pglFogCoordf = (PFNGLFOGCOORDFPROC) __GLeeGetProcAddress("glFogCoordf"))!=0) nLinked++;
+    if ((pglFogCoordfv = (PFNGLFOGCOORDFVPROC) __GLeeGetProcAddress("glFogCoordfv"))!=0) nLinked++;
+    if ((pglFogCoordd = (PFNGLFOGCOORDDPROC) __GLeeGetProcAddress("glFogCoordd"))!=0) nLinked++;
+    if ((pglFogCoorddv = (PFNGLFOGCOORDDVPROC) __GLeeGetProcAddress("glFogCoorddv"))!=0) nLinked++;
+    if ((pglFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC) __GLeeGetProcAddress("glFogCoordPointer"))!=0) nLinked++;
+    if ((pglMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC) __GLeeGetProcAddress("glMultiDrawArrays"))!=0) nLinked++;
+    if ((pglMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC) __GLeeGetProcAddress("glMultiDrawElements"))!=0) nLinked++;
+    if ((pglPointParameterf = (PFNGLPOINTPARAMETERFPROC) __GLeeGetProcAddress("glPointParameterf"))!=0) nLinked++;
+    if ((pglPointParameterfv = (PFNGLPOINTPARAMETERFVPROC) __GLeeGetProcAddress("glPointParameterfv"))!=0) nLinked++;
+    if ((pglPointParameteri = (PFNGLPOINTPARAMETERIPROC) __GLeeGetProcAddress("glPointParameteri"))!=0) nLinked++;
+    if ((pglPointParameteriv = (PFNGLPOINTPARAMETERIVPROC) __GLeeGetProcAddress("glPointParameteriv"))!=0) nLinked++;
+    if ((pglSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC) __GLeeGetProcAddress("glSecondaryColor3b"))!=0) nLinked++;
+    if ((pglSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC) __GLeeGetProcAddress("glSecondaryColor3bv"))!=0) nLinked++;
+    if ((pglSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC) __GLeeGetProcAddress("glSecondaryColor3d"))!=0) nLinked++;
+    if ((pglSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC) __GLeeGetProcAddress("glSecondaryColor3dv"))!=0) nLinked++;
+    if ((pglSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC) __GLeeGetProcAddress("glSecondaryColor3f"))!=0) nLinked++;
+    if ((pglSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC) __GLeeGetProcAddress("glSecondaryColor3fv"))!=0) nLinked++;
+    if ((pglSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC) __GLeeGetProcAddress("glSecondaryColor3i"))!=0) nLinked++;
+    if ((pglSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC) __GLeeGetProcAddress("glSecondaryColor3iv"))!=0) nLinked++;
+    if ((pglSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC) __GLeeGetProcAddress("glSecondaryColor3s"))!=0) nLinked++;
+    if ((pglSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC) __GLeeGetProcAddress("glSecondaryColor3sv"))!=0) nLinked++;
+    if ((pglSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC) __GLeeGetProcAddress("glSecondaryColor3ub"))!=0) nLinked++;
+    if ((pglSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC) __GLeeGetProcAddress("glSecondaryColor3ubv"))!=0) nLinked++;
+    if ((pglSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC) __GLeeGetProcAddress("glSecondaryColor3ui"))!=0) nLinked++;
+    if ((pglSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC) __GLeeGetProcAddress("glSecondaryColor3uiv"))!=0) nLinked++;
+    if ((pglSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC) __GLeeGetProcAddress("glSecondaryColor3us"))!=0) nLinked++;
+    if ((pglSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC) __GLeeGetProcAddress("glSecondaryColor3usv"))!=0) nLinked++;
+    if ((pglSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC) __GLeeGetProcAddress("glSecondaryColorPointer"))!=0) nLinked++;
+    if ((pglWindowPos2d = (PFNGLWINDOWPOS2DPROC) __GLeeGetProcAddress("glWindowPos2d"))!=0) nLinked++;
+    if ((pglWindowPos2dv = (PFNGLWINDOWPOS2DVPROC) __GLeeGetProcAddress("glWindowPos2dv"))!=0) nLinked++;
+    if ((pglWindowPos2f = (PFNGLWINDOWPOS2FPROC) __GLeeGetProcAddress("glWindowPos2f"))!=0) nLinked++;
+    if ((pglWindowPos2fv = (PFNGLWINDOWPOS2FVPROC) __GLeeGetProcAddress("glWindowPos2fv"))!=0) nLinked++;
+    if ((pglWindowPos2i = (PFNGLWINDOWPOS2IPROC) __GLeeGetProcAddress("glWindowPos2i"))!=0) nLinked++;
+    if ((pglWindowPos2iv = (PFNGLWINDOWPOS2IVPROC) __GLeeGetProcAddress("glWindowPos2iv"))!=0) nLinked++;
+    if ((pglWindowPos2s = (PFNGLWINDOWPOS2SPROC) __GLeeGetProcAddress("glWindowPos2s"))!=0) nLinked++;
+    if ((pglWindowPos2sv = (PFNGLWINDOWPOS2SVPROC) __GLeeGetProcAddress("glWindowPos2sv"))!=0) nLinked++;
+    if ((pglWindowPos3d = (PFNGLWINDOWPOS3DPROC) __GLeeGetProcAddress("glWindowPos3d"))!=0) nLinked++;
+    if ((pglWindowPos3dv = (PFNGLWINDOWPOS3DVPROC) __GLeeGetProcAddress("glWindowPos3dv"))!=0) nLinked++;
+    if ((pglWindowPos3f = (PFNGLWINDOWPOS3FPROC) __GLeeGetProcAddress("glWindowPos3f"))!=0) nLinked++;
+    if ((pglWindowPos3fv = (PFNGLWINDOWPOS3FVPROC) __GLeeGetProcAddress("glWindowPos3fv"))!=0) nLinked++;
+    if ((pglWindowPos3i = (PFNGLWINDOWPOS3IPROC) __GLeeGetProcAddress("glWindowPos3i"))!=0) nLinked++;
+    if ((pglWindowPos3iv = (PFNGLWINDOWPOS3IVPROC) __GLeeGetProcAddress("glWindowPos3iv"))!=0) nLinked++;
+    if ((pglWindowPos3s = (PFNGLWINDOWPOS3SPROC) __GLeeGetProcAddress("glWindowPos3s"))!=0) nLinked++;
+    if ((pglWindowPos3sv = (PFNGLWINDOWPOS3SVPROC) __GLeeGetProcAddress("glWindowPos3sv"))!=0) nLinked++;
+#endif
+    if (nLinked==45) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_VERSION_1_5(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_1_5
+    if ((pglGenQueries = (PFNGLGENQUERIESPROC) __GLeeGetProcAddress("glGenQueries"))!=0) nLinked++;
+    if ((pglDeleteQueries = (PFNGLDELETEQUERIESPROC) __GLeeGetProcAddress("glDeleteQueries"))!=0) nLinked++;
+    if ((pglIsQuery = (PFNGLISQUERYPROC) __GLeeGetProcAddress("glIsQuery"))!=0) nLinked++;
+    if ((pglBeginQuery = (PFNGLBEGINQUERYPROC) __GLeeGetProcAddress("glBeginQuery"))!=0) nLinked++;
+    if ((pglEndQuery = (PFNGLENDQUERYPROC) __GLeeGetProcAddress("glEndQuery"))!=0) nLinked++;
+    if ((pglGetQueryiv = (PFNGLGETQUERYIVPROC) __GLeeGetProcAddress("glGetQueryiv"))!=0) nLinked++;
+    if ((pglGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC) __GLeeGetProcAddress("glGetQueryObjectiv"))!=0) nLinked++;
+    if ((pglGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC) __GLeeGetProcAddress("glGetQueryObjectuiv"))!=0) nLinked++;
+    if ((pglBindBuffer = (PFNGLBINDBUFFERPROC) __GLeeGetProcAddress("glBindBuffer"))!=0) nLinked++;
+    if ((pglDeleteBuffers = (PFNGLDELETEBUFFERSPROC) __GLeeGetProcAddress("glDeleteBuffers"))!=0) nLinked++;
+    if ((pglGenBuffers = (PFNGLGENBUFFERSPROC) __GLeeGetProcAddress("glGenBuffers"))!=0) nLinked++;
+    if ((pglIsBuffer = (PFNGLISBUFFERPROC) __GLeeGetProcAddress("glIsBuffer"))!=0) nLinked++;
+    if ((pglBufferData = (PFNGLBUFFERDATAPROC) __GLeeGetProcAddress("glBufferData"))!=0) nLinked++;
+    if ((pglBufferSubData = (PFNGLBUFFERSUBDATAPROC) __GLeeGetProcAddress("glBufferSubData"))!=0) nLinked++;
+    if ((pglGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC) __GLeeGetProcAddress("glGetBufferSubData"))!=0) nLinked++;
+    if ((pglMapBuffer = (PFNGLMAPBUFFERPROC) __GLeeGetProcAddress("glMapBuffer"))!=0) nLinked++;
+    if ((pglUnmapBuffer = (PFNGLUNMAPBUFFERPROC) __GLeeGetProcAddress("glUnmapBuffer"))!=0) nLinked++;
+    if ((pglGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC) __GLeeGetProcAddress("glGetBufferParameteriv"))!=0) nLinked++;
+    if ((pglGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC) __GLeeGetProcAddress("glGetBufferPointerv"))!=0) nLinked++;
+#endif
+    if (nLinked==19) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_VERSION_2_0(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_2_0
+    if ((pglBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC) __GLeeGetProcAddress("glBlendEquationSeparate"))!=0) nLinked++;
+    if ((pglDrawBuffers = (PFNGLDRAWBUFFERSPROC) __GLeeGetProcAddress("glDrawBuffers"))!=0) nLinked++;
+    if ((pglStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC) __GLeeGetProcAddress("glStencilOpSeparate"))!=0) nLinked++;
+    if ((pglStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC) __GLeeGetProcAddress("glStencilFuncSeparate"))!=0) nLinked++;
+    if ((pglStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC) __GLeeGetProcAddress("glStencilMaskSeparate"))!=0) nLinked++;
+    if ((pglAttachShader = (PFNGLATTACHSHADERPROC) __GLeeGetProcAddress("glAttachShader"))!=0) nLinked++;
+    if ((pglBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC) __GLeeGetProcAddress("glBindAttribLocation"))!=0) nLinked++;
+    if ((pglCompileShader = (PFNGLCOMPILESHADERPROC) __GLeeGetProcAddress("glCompileShader"))!=0) nLinked++;
+    if ((pglCreateProgram = (PFNGLCREATEPROGRAMPROC) __GLeeGetProcAddress("glCreateProgram"))!=0) nLinked++;
+    if ((pglCreateShader = (PFNGLCREATESHADERPROC) __GLeeGetProcAddress("glCreateShader"))!=0) nLinked++;
+    if ((pglDeleteProgram = (PFNGLDELETEPROGRAMPROC) __GLeeGetProcAddress("glDeleteProgram"))!=0) nLinked++;
+    if ((pglDeleteShader = (PFNGLDELETESHADERPROC) __GLeeGetProcAddress("glDeleteShader"))!=0) nLinked++;
+    if ((pglDetachShader = (PFNGLDETACHSHADERPROC) __GLeeGetProcAddress("glDetachShader"))!=0) nLinked++;
+    if ((pglDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) __GLeeGetProcAddress("glDisableVertexAttribArray"))!=0) nLinked++;
+    if ((pglEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) __GLeeGetProcAddress("glEnableVertexAttribArray"))!=0) nLinked++;
+    if ((pglGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC) __GLeeGetProcAddress("glGetActiveAttrib"))!=0) nLinked++;
+    if ((pglGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC) __GLeeGetProcAddress("glGetActiveUniform"))!=0) nLinked++;
+    if ((pglGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC) __GLeeGetProcAddress("glGetAttachedShaders"))!=0) nLinked++;
+    if ((pglGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC) __GLeeGetProcAddress("glGetAttribLocation"))!=0) nLinked++;
+    if ((pglGetProgramiv = (PFNGLGETPROGRAMIVPROC) __GLeeGetProcAddress("glGetProgramiv"))!=0) nLinked++;
+    if ((pglGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) __GLeeGetProcAddress("glGetProgramInfoLog"))!=0) nLinked++;
+    if ((pglGetShaderiv = (PFNGLGETSHADERIVPROC) __GLeeGetProcAddress("glGetShaderiv"))!=0) nLinked++;
+    if ((pglGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) __GLeeGetProcAddress("glGetShaderInfoLog"))!=0) nLinked++;
+    if ((pglGetShaderSource = (PFNGLGETSHADERSOURCEPROC) __GLeeGetProcAddress("glGetShaderSource"))!=0) nLinked++;
+    if ((pglGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) __GLeeGetProcAddress("glGetUniformLocation"))!=0) nLinked++;
+    if ((pglGetUniformfv = (PFNGLGETUNIFORMFVPROC) __GLeeGetProcAddress("glGetUniformfv"))!=0) nLinked++;
+    if ((pglGetUniformiv = (PFNGLGETUNIFORMIVPROC) __GLeeGetProcAddress("glGetUniformiv"))!=0) nLinked++;
+    if ((pglGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC) __GLeeGetProcAddress("glGetVertexAttribdv"))!=0) nLinked++;
+    if ((pglGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC) __GLeeGetProcAddress("glGetVertexAttribfv"))!=0) nLinked++;
+    if ((pglGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC) __GLeeGetProcAddress("glGetVertexAttribiv"))!=0) nLinked++;
+    if ((pglGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC) __GLeeGetProcAddress("glGetVertexAttribPointerv"))!=0) nLinked++;
+    if ((pglIsProgram = (PFNGLISPROGRAMPROC) __GLeeGetProcAddress("glIsProgram"))!=0) nLinked++;
+    if ((pglIsShader = (PFNGLISSHADERPROC) __GLeeGetProcAddress("glIsShader"))!=0) nLinked++;
+    if ((pglLinkProgram = (PFNGLLINKPROGRAMPROC) __GLeeGetProcAddress("glLinkProgram"))!=0) nLinked++;
+    if ((pglShaderSource = (PFNGLSHADERSOURCEPROC) __GLeeGetProcAddress("glShaderSource"))!=0) nLinked++;
+    if ((pglUseProgram = (PFNGLUSEPROGRAMPROC) __GLeeGetProcAddress("glUseProgram"))!=0) nLinked++;
+    if ((pglUniform1f = (PFNGLUNIFORM1FPROC) __GLeeGetProcAddress("glUniform1f"))!=0) nLinked++;
+    if ((pglUniform2f = (PFNGLUNIFORM2FPROC) __GLeeGetProcAddress("glUniform2f"))!=0) nLinked++;
+    if ((pglUniform3f = (PFNGLUNIFORM3FPROC) __GLeeGetProcAddress("glUniform3f"))!=0) nLinked++;
+    if ((pglUniform4f = (PFNGLUNIFORM4FPROC) __GLeeGetProcAddress("glUniform4f"))!=0) nLinked++;
+    if ((pglUniform1i = (PFNGLUNIFORM1IPROC) __GLeeGetProcAddress("glUniform1i"))!=0) nLinked++;
+    if ((pglUniform2i = (PFNGLUNIFORM2IPROC) __GLeeGetProcAddress("glUniform2i"))!=0) nLinked++;
+    if ((pglUniform3i = (PFNGLUNIFORM3IPROC) __GLeeGetProcAddress("glUniform3i"))!=0) nLinked++;
+    if ((pglUniform4i = (PFNGLUNIFORM4IPROC) __GLeeGetProcAddress("glUniform4i"))!=0) nLinked++;
+    if ((pglUniform1fv = (PFNGLUNIFORM1FVPROC) __GLeeGetProcAddress("glUniform1fv"))!=0) nLinked++;
+    if ((pglUniform2fv = (PFNGLUNIFORM2FVPROC) __GLeeGetProcAddress("glUniform2fv"))!=0) nLinked++;
+    if ((pglUniform3fv = (PFNGLUNIFORM3FVPROC) __GLeeGetProcAddress("glUniform3fv"))!=0) nLinked++;
+    if ((pglUniform4fv = (PFNGLUNIFORM4FVPROC) __GLeeGetProcAddress("glUniform4fv"))!=0) nLinked++;
+    if ((pglUniform1iv = (PFNGLUNIFORM1IVPROC) __GLeeGetProcAddress("glUniform1iv"))!=0) nLinked++;
+    if ((pglUniform2iv = (PFNGLUNIFORM2IVPROC) __GLeeGetProcAddress("glUniform2iv"))!=0) nLinked++;
+    if ((pglUniform3iv = (PFNGLUNIFORM3IVPROC) __GLeeGetProcAddress("glUniform3iv"))!=0) nLinked++;
+    if ((pglUniform4iv = (PFNGLUNIFORM4IVPROC) __GLeeGetProcAddress("glUniform4iv"))!=0) nLinked++;
+    if ((pglUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC) __GLeeGetProcAddress("glUniformMatrix2fv"))!=0) nLinked++;
+    if ((pglUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC) __GLeeGetProcAddress("glUniformMatrix3fv"))!=0) nLinked++;
+    if ((pglUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC) __GLeeGetProcAddress("glUniformMatrix4fv"))!=0) nLinked++;
+    if ((pglValidateProgram = (PFNGLVALIDATEPROGRAMPROC) __GLeeGetProcAddress("glValidateProgram"))!=0) nLinked++;
+    if ((pglVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC) __GLeeGetProcAddress("glVertexAttrib1d"))!=0) nLinked++;
+    if ((pglVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC) __GLeeGetProcAddress("glVertexAttrib1dv"))!=0) nLinked++;
+    if ((pglVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC) __GLeeGetProcAddress("glVertexAttrib1f"))!=0) nLinked++;
+    if ((pglVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC) __GLeeGetProcAddress("glVertexAttrib1fv"))!=0) nLinked++;
+    if ((pglVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC) __GLeeGetProcAddress("glVertexAttrib1s"))!=0) nLinked++;
+    if ((pglVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC) __GLeeGetProcAddress("glVertexAttrib1sv"))!=0) nLinked++;
+    if ((pglVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC) __GLeeGetProcAddress("glVertexAttrib2d"))!=0) nLinked++;
+    if ((pglVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC) __GLeeGetProcAddress("glVertexAttrib2dv"))!=0) nLinked++;
+    if ((pglVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC) __GLeeGetProcAddress("glVertexAttrib2f"))!=0) nLinked++;
+    if ((pglVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC) __GLeeGetProcAddress("glVertexAttrib2fv"))!=0) nLinked++;
+    if ((pglVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC) __GLeeGetProcAddress("glVertexAttrib2s"))!=0) nLinked++;
+    if ((pglVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC) __GLeeGetProcAddress("glVertexAttrib2sv"))!=0) nLinked++;
+    if ((pglVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC) __GLeeGetProcAddress("glVertexAttrib3d"))!=0) nLinked++;
+    if ((pglVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC) __GLeeGetProcAddress("glVertexAttrib3dv"))!=0) nLinked++;
+    if ((pglVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC) __GLeeGetProcAddress("glVertexAttrib3f"))!=0) nLinked++;
+    if ((pglVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC) __GLeeGetProcAddress("glVertexAttrib3fv"))!=0) nLinked++;
+    if ((pglVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC) __GLeeGetProcAddress("glVertexAttrib3s"))!=0) nLinked++;
+    if ((pglVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC) __GLeeGetProcAddress("glVertexAttrib3sv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC) __GLeeGetProcAddress("glVertexAttrib4Nbv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC) __GLeeGetProcAddress("glVertexAttrib4Niv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC) __GLeeGetProcAddress("glVertexAttrib4Nsv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC) __GLeeGetProcAddress("glVertexAttrib4Nub"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC) __GLeeGetProcAddress("glVertexAttrib4Nubv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC) __GLeeGetProcAddress("glVertexAttrib4Nuiv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC) __GLeeGetProcAddress("glVertexAttrib4Nusv"))!=0) nLinked++;
+    if ((pglVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC) __GLeeGetProcAddress("glVertexAttrib4bv"))!=0) nLinked++;
+    if ((pglVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC) __GLeeGetProcAddress("glVertexAttrib4d"))!=0) nLinked++;
+    if ((pglVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC) __GLeeGetProcAddress("glVertexAttrib4dv"))!=0) nLinked++;
+    if ((pglVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC) __GLeeGetProcAddress("glVertexAttrib4f"))!=0) nLinked++;
+    if ((pglVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) __GLeeGetProcAddress("glVertexAttrib4fv"))!=0) nLinked++;
+    if ((pglVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC) __GLeeGetProcAddress("glVertexAttrib4iv"))!=0) nLinked++;
+    if ((pglVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC) __GLeeGetProcAddress("glVertexAttrib4s"))!=0) nLinked++;
+    if ((pglVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC) __GLeeGetProcAddress("glVertexAttrib4sv"))!=0) nLinked++;
+    if ((pglVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC) __GLeeGetProcAddress("glVertexAttrib4ubv"))!=0) nLinked++;
+    if ((pglVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC) __GLeeGetProcAddress("glVertexAttrib4uiv"))!=0) nLinked++;
+    if ((pglVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC) __GLeeGetProcAddress("glVertexAttrib4usv"))!=0) nLinked++;
+    if ((pglVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) __GLeeGetProcAddress("glVertexAttribPointer"))!=0) nLinked++;
+#endif
+    if (nLinked==93) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_VERSION_2_1(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_2_1
+    if ((pglUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC) __GLeeGetProcAddress("glUniformMatrix2x3fv"))!=0) nLinked++;
+    if ((pglUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC) __GLeeGetProcAddress("glUniformMatrix3x2fv"))!=0) nLinked++;
+    if ((pglUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC) __GLeeGetProcAddress("glUniformMatrix2x4fv"))!=0) nLinked++;
+    if ((pglUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC) __GLeeGetProcAddress("glUniformMatrix4x2fv"))!=0) nLinked++;
+    if ((pglUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC) __GLeeGetProcAddress("glUniformMatrix3x4fv"))!=0) nLinked++;
+    if ((pglUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC) __GLeeGetProcAddress("glUniformMatrix4x3fv"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_multitexture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_multitexture
+    if ((pglActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) __GLeeGetProcAddress("glActiveTextureARB"))!=0) nLinked++;
+    if ((pglClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC) __GLeeGetProcAddress("glClientActiveTextureARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC) __GLeeGetProcAddress("glMultiTexCoord1dARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1dvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC) __GLeeGetProcAddress("glMultiTexCoord1fARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1fvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC) __GLeeGetProcAddress("glMultiTexCoord1iARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1ivARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC) __GLeeGetProcAddress("glMultiTexCoord1sARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1svARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC) __GLeeGetProcAddress("glMultiTexCoord2dARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2dvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) __GLeeGetProcAddress("glMultiTexCoord2fARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2fvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC) __GLeeGetProcAddress("glMultiTexCoord2iARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2ivARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC) __GLeeGetProcAddress("glMultiTexCoord2sARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2svARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC) __GLeeGetProcAddress("glMultiTexCoord3dARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3dvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC) __GLeeGetProcAddress("glMultiTexCoord3fARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3fvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC) __GLeeGetProcAddress("glMultiTexCoord3iARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3ivARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC) __GLeeGetProcAddress("glMultiTexCoord3sARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3svARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC) __GLeeGetProcAddress("glMultiTexCoord4dARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4dvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC) __GLeeGetProcAddress("glMultiTexCoord4fARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4fvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC) __GLeeGetProcAddress("glMultiTexCoord4iARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4ivARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC) __GLeeGetProcAddress("glMultiTexCoord4sARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4svARB"))!=0) nLinked++;
+#endif
+    if (nLinked==34) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_transpose_matrix(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_transpose_matrix
+    if ((pglLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC) __GLeeGetProcAddress("glLoadTransposeMatrixfARB"))!=0) nLinked++;
+    if ((pglLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC) __GLeeGetProcAddress("glLoadTransposeMatrixdARB"))!=0) nLinked++;
+    if ((pglMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC) __GLeeGetProcAddress("glMultTransposeMatrixfARB"))!=0) nLinked++;
+    if ((pglMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC) __GLeeGetProcAddress("glMultTransposeMatrixdARB"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_multisample(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_multisample
+    if ((pglSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC) __GLeeGetProcAddress("glSampleCoverageARB"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_texture_env_add(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_cube_map(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_compression(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_texture_compression
+    if ((pglCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) __GLeeGetProcAddress("glCompressedTexImage3DARB"))!=0) nLinked++;
+    if ((pglCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) __GLeeGetProcAddress("glCompressedTexImage2DARB"))!=0) nLinked++;
+    if ((pglCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) __GLeeGetProcAddress("glCompressedTexImage1DARB"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage3DARB"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage2DARB"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage1DARB"))!=0) nLinked++;
+    if ((pglGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) __GLeeGetProcAddress("glGetCompressedTexImageARB"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_texture_border_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_point_parameters(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_point_parameters
+    if ((pglPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC) __GLeeGetProcAddress("glPointParameterfARB"))!=0) nLinked++;
+    if ((pglPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC) __GLeeGetProcAddress("glPointParameterfvARB"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_vertex_blend(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_vertex_blend
+    if ((pglWeightbvARB = (PFNGLWEIGHTBVARBPROC) __GLeeGetProcAddress("glWeightbvARB"))!=0) nLinked++;
+    if ((pglWeightsvARB = (PFNGLWEIGHTSVARBPROC) __GLeeGetProcAddress("glWeightsvARB"))!=0) nLinked++;
+    if ((pglWeightivARB = (PFNGLWEIGHTIVARBPROC) __GLeeGetProcAddress("glWeightivARB"))!=0) nLinked++;
+    if ((pglWeightfvARB = (PFNGLWEIGHTFVARBPROC) __GLeeGetProcAddress("glWeightfvARB"))!=0) nLinked++;
+    if ((pglWeightdvARB = (PFNGLWEIGHTDVARBPROC) __GLeeGetProcAddress("glWeightdvARB"))!=0) nLinked++;
+    if ((pglWeightubvARB = (PFNGLWEIGHTUBVARBPROC) __GLeeGetProcAddress("glWeightubvARB"))!=0) nLinked++;
+    if ((pglWeightusvARB = (PFNGLWEIGHTUSVARBPROC) __GLeeGetProcAddress("glWeightusvARB"))!=0) nLinked++;
+    if ((pglWeightuivARB = (PFNGLWEIGHTUIVARBPROC) __GLeeGetProcAddress("glWeightuivARB"))!=0) nLinked++;
+    if ((pglWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC) __GLeeGetProcAddress("glWeightPointerARB"))!=0) nLinked++;
+    if ((pglVertexBlendARB = (PFNGLVERTEXBLENDARBPROC) __GLeeGetProcAddress("glVertexBlendARB"))!=0) nLinked++;
+#endif
+    if (nLinked==10) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_matrix_palette(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_matrix_palette
+    if ((pglCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC) __GLeeGetProcAddress("glCurrentPaletteMatrixARB"))!=0) nLinked++;
+    if ((pglMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC) __GLeeGetProcAddress("glMatrixIndexubvARB"))!=0) nLinked++;
+    if ((pglMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC) __GLeeGetProcAddress("glMatrixIndexusvARB"))!=0) nLinked++;
+    if ((pglMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC) __GLeeGetProcAddress("glMatrixIndexuivARB"))!=0) nLinked++;
+    if ((pglMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC) __GLeeGetProcAddress("glMatrixIndexPointerARB"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_texture_env_combine(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_env_crossbar(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_env_dot3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_mirrored_repeat(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_depth_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_shadow(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_shadow_ambient(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_window_pos(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_window_pos
+    if ((pglWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC) __GLeeGetProcAddress("glWindowPos2dARB"))!=0) nLinked++;
+    if ((pglWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC) __GLeeGetProcAddress("glWindowPos2dvARB"))!=0) nLinked++;
+    if ((pglWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC) __GLeeGetProcAddress("glWindowPos2fARB"))!=0) nLinked++;
+    if ((pglWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC) __GLeeGetProcAddress("glWindowPos2fvARB"))!=0) nLinked++;
+    if ((pglWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC) __GLeeGetProcAddress("glWindowPos2iARB"))!=0) nLinked++;
+    if ((pglWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC) __GLeeGetProcAddress("glWindowPos2ivARB"))!=0) nLinked++;
+    if ((pglWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC) __GLeeGetProcAddress("glWindowPos2sARB"))!=0) nLinked++;
+    if ((pglWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC) __GLeeGetProcAddress("glWindowPos2svARB"))!=0) nLinked++;
+    if ((pglWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC) __GLeeGetProcAddress("glWindowPos3dARB"))!=0) nLinked++;
+    if ((pglWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC) __GLeeGetProcAddress("glWindowPos3dvARB"))!=0) nLinked++;
+    if ((pglWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC) __GLeeGetProcAddress("glWindowPos3fARB"))!=0) nLinked++;
+    if ((pglWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC) __GLeeGetProcAddress("glWindowPos3fvARB"))!=0) nLinked++;
+    if ((pglWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC) __GLeeGetProcAddress("glWindowPos3iARB"))!=0) nLinked++;
+    if ((pglWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC) __GLeeGetProcAddress("glWindowPos3ivARB"))!=0) nLinked++;
+    if ((pglWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC) __GLeeGetProcAddress("glWindowPos3sARB"))!=0) nLinked++;
+    if ((pglWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC) __GLeeGetProcAddress("glWindowPos3svARB"))!=0) nLinked++;
+#endif
+    if (nLinked==16) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_vertex_program(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_vertex_program
+    if ((pglVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC) __GLeeGetProcAddress("glVertexAttrib1dARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC) __GLeeGetProcAddress("glVertexAttrib1dvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC) __GLeeGetProcAddress("glVertexAttrib1fARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC) __GLeeGetProcAddress("glVertexAttrib1fvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC) __GLeeGetProcAddress("glVertexAttrib1sARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC) __GLeeGetProcAddress("glVertexAttrib1svARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC) __GLeeGetProcAddress("glVertexAttrib2dARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC) __GLeeGetProcAddress("glVertexAttrib2dvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC) __GLeeGetProcAddress("glVertexAttrib2fARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC) __GLeeGetProcAddress("glVertexAttrib2fvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC) __GLeeGetProcAddress("glVertexAttrib2sARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC) __GLeeGetProcAddress("glVertexAttrib2svARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC) __GLeeGetProcAddress("glVertexAttrib3dARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC) __GLeeGetProcAddress("glVertexAttrib3dvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC) __GLeeGetProcAddress("glVertexAttrib3fARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC) __GLeeGetProcAddress("glVertexAttrib3fvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC) __GLeeGetProcAddress("glVertexAttrib3sARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC) __GLeeGetProcAddress("glVertexAttrib3svARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NbvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NivARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NsvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC) __GLeeGetProcAddress("glVertexAttrib4NubARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NubvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NuivARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NusvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC) __GLeeGetProcAddress("glVertexAttrib4bvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC) __GLeeGetProcAddress("glVertexAttrib4dARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC) __GLeeGetProcAddress("glVertexAttrib4dvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC) __GLeeGetProcAddress("glVertexAttrib4fARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC) __GLeeGetProcAddress("glVertexAttrib4fvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC) __GLeeGetProcAddress("glVertexAttrib4ivARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC) __GLeeGetProcAddress("glVertexAttrib4sARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC) __GLeeGetProcAddress("glVertexAttrib4svARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4ubvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4uivARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC) __GLeeGetProcAddress("glVertexAttrib4usvARB"))!=0) nLinked++;
+    if ((pglVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC) __GLeeGetProcAddress("glVertexAttribPointerARB"))!=0) nLinked++;
+    if ((pglEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC) __GLeeGetProcAddress("glEnableVertexAttribArrayARB"))!=0) nLinked++;
+    if ((pglDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) __GLeeGetProcAddress("glDisableVertexAttribArrayARB"))!=0) nLinked++;
+    if ((pglProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC) __GLeeGetProcAddress("glProgramStringARB"))!=0) nLinked++;
+    if ((pglBindProgramARB = (PFNGLBINDPROGRAMARBPROC) __GLeeGetProcAddress("glBindProgramARB"))!=0) nLinked++;
+    if ((pglDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC) __GLeeGetProcAddress("glDeleteProgramsARB"))!=0) nLinked++;
+    if ((pglGenProgramsARB = (PFNGLGENPROGRAMSARBPROC) __GLeeGetProcAddress("glGenProgramsARB"))!=0) nLinked++;
+    if ((pglProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4dARB"))!=0) nLinked++;
+    if ((pglProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4dvARB"))!=0) nLinked++;
+    if ((pglProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4fARB"))!=0) nLinked++;
+    if ((pglProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4fvARB"))!=0) nLinked++;
+    if ((pglProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4dARB"))!=0) nLinked++;
+    if ((pglProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4dvARB"))!=0) nLinked++;
+    if ((pglProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4fARB"))!=0) nLinked++;
+    if ((pglProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4fvARB"))!=0) nLinked++;
+    if ((pglGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC) __GLeeGetProcAddress("glGetProgramEnvParameterdvARB"))!=0) nLinked++;
+    if ((pglGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetProgramEnvParameterfvARB"))!=0) nLinked++;
+    if ((pglGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) __GLeeGetProcAddress("glGetProgramLocalParameterdvARB"))!=0) nLinked++;
+    if ((pglGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetProgramLocalParameterfvARB"))!=0) nLinked++;
+    if ((pglGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC) __GLeeGetProcAddress("glGetProgramivARB"))!=0) nLinked++;
+    if ((pglGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC) __GLeeGetProcAddress("glGetProgramStringARB"))!=0) nLinked++;
+    if ((pglGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC) __GLeeGetProcAddress("glGetVertexAttribdvARB"))!=0) nLinked++;
+    if ((pglGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) __GLeeGetProcAddress("glGetVertexAttribfvARB"))!=0) nLinked++;
+    if ((pglGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC) __GLeeGetProcAddress("glGetVertexAttribivARB"))!=0) nLinked++;
+    if ((pglGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC) __GLeeGetProcAddress("glGetVertexAttribPointervARB"))!=0) nLinked++;
+    if ((pglIsProgramARB = (PFNGLISPROGRAMARBPROC) __GLeeGetProcAddress("glIsProgramARB"))!=0) nLinked++;
+#endif
+    if (nLinked==62) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_fragment_program(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_vertex_buffer_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_vertex_buffer_object
+    if ((pglBindBufferARB = (PFNGLBINDBUFFERARBPROC) __GLeeGetProcAddress("glBindBufferARB"))!=0) nLinked++;
+    if ((pglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) __GLeeGetProcAddress("glDeleteBuffersARB"))!=0) nLinked++;
+    if ((pglGenBuffersARB = (PFNGLGENBUFFERSARBPROC) __GLeeGetProcAddress("glGenBuffersARB"))!=0) nLinked++;
+    if ((pglIsBufferARB = (PFNGLISBUFFERARBPROC) __GLeeGetProcAddress("glIsBufferARB"))!=0) nLinked++;
+    if ((pglBufferDataARB = (PFNGLBUFFERDATAARBPROC) __GLeeGetProcAddress("glBufferDataARB"))!=0) nLinked++;
+    if ((pglBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC) __GLeeGetProcAddress("glBufferSubDataARB"))!=0) nLinked++;
+    if ((pglGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC) __GLeeGetProcAddress("glGetBufferSubDataARB"))!=0) nLinked++;
+    if ((pglMapBufferARB = (PFNGLMAPBUFFERARBPROC) __GLeeGetProcAddress("glMapBufferARB"))!=0) nLinked++;
+    if ((pglUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC) __GLeeGetProcAddress("glUnmapBufferARB"))!=0) nLinked++;
+    if ((pglGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC) __GLeeGetProcAddress("glGetBufferParameterivARB"))!=0) nLinked++;
+    if ((pglGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC) __GLeeGetProcAddress("glGetBufferPointervARB"))!=0) nLinked++;
+#endif
+    if (nLinked==11) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_occlusion_query(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_occlusion_query
+    if ((pglGenQueriesARB = (PFNGLGENQUERIESARBPROC) __GLeeGetProcAddress("glGenQueriesARB"))!=0) nLinked++;
+    if ((pglDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC) __GLeeGetProcAddress("glDeleteQueriesARB"))!=0) nLinked++;
+    if ((pglIsQueryARB = (PFNGLISQUERYARBPROC) __GLeeGetProcAddress("glIsQueryARB"))!=0) nLinked++;
+    if ((pglBeginQueryARB = (PFNGLBEGINQUERYARBPROC) __GLeeGetProcAddress("glBeginQueryARB"))!=0) nLinked++;
+    if ((pglEndQueryARB = (PFNGLENDQUERYARBPROC) __GLeeGetProcAddress("glEndQueryARB"))!=0) nLinked++;
+    if ((pglGetQueryivARB = (PFNGLGETQUERYIVARBPROC) __GLeeGetProcAddress("glGetQueryivARB"))!=0) nLinked++;
+    if ((pglGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC) __GLeeGetProcAddress("glGetQueryObjectivARB"))!=0) nLinked++;
+    if ((pglGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC) __GLeeGetProcAddress("glGetQueryObjectuivARB"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_shader_objects(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_shader_objects
+    if ((pglDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC) __GLeeGetProcAddress("glDeleteObjectARB"))!=0) nLinked++;
+    if ((pglGetHandleARB = (PFNGLGETHANDLEARBPROC) __GLeeGetProcAddress("glGetHandleARB"))!=0) nLinked++;
+    if ((pglDetachObjectARB = (PFNGLDETACHOBJECTARBPROC) __GLeeGetProcAddress("glDetachObjectARB"))!=0) nLinked++;
+    if ((pglCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) __GLeeGetProcAddress("glCreateShaderObjectARB"))!=0) nLinked++;
+    if ((pglShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) __GLeeGetProcAddress("glShaderSourceARB"))!=0) nLinked++;
+    if ((pglCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) __GLeeGetProcAddress("glCompileShaderARB"))!=0) nLinked++;
+    if ((pglCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) __GLeeGetProcAddress("glCreateProgramObjectARB"))!=0) nLinked++;
+    if ((pglAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) __GLeeGetProcAddress("glAttachObjectARB"))!=0) nLinked++;
+    if ((pglLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) __GLeeGetProcAddress("glLinkProgramARB"))!=0) nLinked++;
+    if ((pglUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) __GLeeGetProcAddress("glUseProgramObjectARB"))!=0) nLinked++;
+    if ((pglValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC) __GLeeGetProcAddress("glValidateProgramARB"))!=0) nLinked++;
+    if ((pglUniform1fARB = (PFNGLUNIFORM1FARBPROC) __GLeeGetProcAddress("glUniform1fARB"))!=0) nLinked++;
+    if ((pglUniform2fARB = (PFNGLUNIFORM2FARBPROC) __GLeeGetProcAddress("glUniform2fARB"))!=0) nLinked++;
+    if ((pglUniform3fARB = (PFNGLUNIFORM3FARBPROC) __GLeeGetProcAddress("glUniform3fARB"))!=0) nLinked++;
+    if ((pglUniform4fARB = (PFNGLUNIFORM4FARBPROC) __GLeeGetProcAddress("glUniform4fARB"))!=0) nLinked++;
+    if ((pglUniform1iARB = (PFNGLUNIFORM1IARBPROC) __GLeeGetProcAddress("glUniform1iARB"))!=0) nLinked++;
+    if ((pglUniform2iARB = (PFNGLUNIFORM2IARBPROC) __GLeeGetProcAddress("glUniform2iARB"))!=0) nLinked++;
+    if ((pglUniform3iARB = (PFNGLUNIFORM3IARBPROC) __GLeeGetProcAddress("glUniform3iARB"))!=0) nLinked++;
+    if ((pglUniform4iARB = (PFNGLUNIFORM4IARBPROC) __GLeeGetProcAddress("glUniform4iARB"))!=0) nLinked++;
+    if ((pglUniform1fvARB = (PFNGLUNIFORM1FVARBPROC) __GLeeGetProcAddress("glUniform1fvARB"))!=0) nLinked++;
+    if ((pglUniform2fvARB = (PFNGLUNIFORM2FVARBPROC) __GLeeGetProcAddress("glUniform2fvARB"))!=0) nLinked++;
+    if ((pglUniform3fvARB = (PFNGLUNIFORM3FVARBPROC) __GLeeGetProcAddress("glUniform3fvARB"))!=0) nLinked++;
+    if ((pglUniform4fvARB = (PFNGLUNIFORM4FVARBPROC) __GLeeGetProcAddress("glUniform4fvARB"))!=0) nLinked++;
+    if ((pglUniform1ivARB = (PFNGLUNIFORM1IVARBPROC) __GLeeGetProcAddress("glUniform1ivARB"))!=0) nLinked++;
+    if ((pglUniform2ivARB = (PFNGLUNIFORM2IVARBPROC) __GLeeGetProcAddress("glUniform2ivARB"))!=0) nLinked++;
+    if ((pglUniform3ivARB = (PFNGLUNIFORM3IVARBPROC) __GLeeGetProcAddress("glUniform3ivARB"))!=0) nLinked++;
+    if ((pglUniform4ivARB = (PFNGLUNIFORM4IVARBPROC) __GLeeGetProcAddress("glUniform4ivARB"))!=0) nLinked++;
+    if ((pglUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC) __GLeeGetProcAddress("glUniformMatrix2fvARB"))!=0) nLinked++;
+    if ((pglUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC) __GLeeGetProcAddress("glUniformMatrix3fvARB"))!=0) nLinked++;
+    if ((pglUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC) __GLeeGetProcAddress("glUniformMatrix4fvARB"))!=0) nLinked++;
+    if ((pglGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetObjectParameterfvARB"))!=0) nLinked++;
+    if ((pglGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC) __GLeeGetProcAddress("glGetObjectParameterivARB"))!=0) nLinked++;
+    if ((pglGetInfoLogARB = (PFNGLGETINFOLOGARBPROC) __GLeeGetProcAddress("glGetInfoLogARB"))!=0) nLinked++;
+    if ((pglGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC) __GLeeGetProcAddress("glGetAttachedObjectsARB"))!=0) nLinked++;
+    if ((pglGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) __GLeeGetProcAddress("glGetUniformLocationARB"))!=0) nLinked++;
+    if ((pglGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC) __GLeeGetProcAddress("glGetActiveUniformARB"))!=0) nLinked++;
+    if ((pglGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC) __GLeeGetProcAddress("glGetUniformfvARB"))!=0) nLinked++;
+    if ((pglGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC) __GLeeGetProcAddress("glGetUniformivARB"))!=0) nLinked++;
+    if ((pglGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC) __GLeeGetProcAddress("glGetShaderSourceARB"))!=0) nLinked++;
+#endif
+    if (nLinked==39) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_vertex_shader(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_vertex_shader
+    if ((pglBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC) __GLeeGetProcAddress("glBindAttribLocationARB"))!=0) nLinked++;
+    if ((pglGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC) __GLeeGetProcAddress("glGetActiveAttribARB"))!=0) nLinked++;
+    if ((pglGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC) __GLeeGetProcAddress("glGetAttribLocationARB"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_fragment_shader(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_shading_language_100(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_non_power_of_two(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_point_sprite(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_fragment_program_shadow(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_draw_buffers(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_draw_buffers
+    if ((pglDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC) __GLeeGetProcAddress("glDrawBuffersARB"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_texture_rectangle(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_color_buffer_float(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_color_buffer_float
+    if ((pglClampColorARB = (PFNGLCLAMPCOLORARBPROC) __GLeeGetProcAddress("glClampColorARB"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_half_float_pixel(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_pixel_buffer_object(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_abgr(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_blend_color(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_blend_color
+    if ((pglBlendColorEXT = (PFNGLBLENDCOLOREXTPROC) __GLeeGetProcAddress("glBlendColorEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_polygon_offset(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_polygon_offset
+    if ((pglPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC) __GLeeGetProcAddress("glPolygonOffsetEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture3D(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture3D
+    if ((pglTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC) __GLeeGetProcAddress("glTexImage3DEXT"))!=0) nLinked++;
+    if ((pglTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glTexSubImage3DEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_texture_filter4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_texture_filter4
+    if ((pglGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC) __GLeeGetProcAddress("glGetTexFilterFuncSGIS"))!=0) nLinked++;
+    if ((pglTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC) __GLeeGetProcAddress("glTexFilterFuncSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_subtexture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_subtexture
+    if ((pglTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glTexSubImage1DEXT"))!=0) nLinked++;
+    if ((pglTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glTexSubImage2DEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_copy_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_copy_texture
+    if ((pglCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyTexImage1DEXT"))!=0) nLinked++;
+    if ((pglCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyTexImage2DEXT"))!=0) nLinked++;
+    if ((pglCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage1DEXT"))!=0) nLinked++;
+    if ((pglCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage2DEXT"))!=0) nLinked++;
+    if ((pglCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage3DEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_histogram(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_histogram
+    if ((pglGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC) __GLeeGetProcAddress("glGetHistogramEXT"))!=0) nLinked++;
+    if ((pglGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetHistogramParameterfvEXT"))!=0) nLinked++;
+    if ((pglGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetHistogramParameterivEXT"))!=0) nLinked++;
+    if ((pglGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC) __GLeeGetProcAddress("glGetMinmaxEXT"))!=0) nLinked++;
+    if ((pglGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetMinmaxParameterfvEXT"))!=0) nLinked++;
+    if ((pglGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetMinmaxParameterivEXT"))!=0) nLinked++;
+    if ((pglHistogramEXT = (PFNGLHISTOGRAMEXTPROC) __GLeeGetProcAddress("glHistogramEXT"))!=0) nLinked++;
+    if ((pglMinmaxEXT = (PFNGLMINMAXEXTPROC) __GLeeGetProcAddress("glMinmaxEXT"))!=0) nLinked++;
+    if ((pglResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC) __GLeeGetProcAddress("glResetHistogramEXT"))!=0) nLinked++;
+    if ((pglResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC) __GLeeGetProcAddress("glResetMinmaxEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==10) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_convolution(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_convolution
+    if ((pglConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC) __GLeeGetProcAddress("glConvolutionFilter1DEXT"))!=0) nLinked++;
+    if ((pglConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC) __GLeeGetProcAddress("glConvolutionFilter2DEXT"))!=0) nLinked++;
+    if ((pglConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC) __GLeeGetProcAddress("glConvolutionParameterfEXT"))!=0) nLinked++;
+    if ((pglConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC) __GLeeGetProcAddress("glConvolutionParameterfvEXT"))!=0) nLinked++;
+    if ((pglConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC) __GLeeGetProcAddress("glConvolutionParameteriEXT"))!=0) nLinked++;
+    if ((pglConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC) __GLeeGetProcAddress("glConvolutionParameterivEXT"))!=0) nLinked++;
+    if ((pglCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) __GLeeGetProcAddress("glCopyConvolutionFilter1DEXT"))!=0) nLinked++;
+    if ((pglCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) __GLeeGetProcAddress("glCopyConvolutionFilter2DEXT"))!=0) nLinked++;
+    if ((pglGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC) __GLeeGetProcAddress("glGetConvolutionFilterEXT"))!=0) nLinked++;
+    if ((pglGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetConvolutionParameterfvEXT"))!=0) nLinked++;
+    if ((pglGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetConvolutionParameterivEXT"))!=0) nLinked++;
+    if ((pglGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC) __GLeeGetProcAddress("glGetSeparableFilterEXT"))!=0) nLinked++;
+    if ((pglSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC) __GLeeGetProcAddress("glSeparableFilter2DEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==13) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGI_color_matrix(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGI_color_table(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGI_color_table
+    if ((pglColorTableSGI = (PFNGLCOLORTABLESGIPROC) __GLeeGetProcAddress("glColorTableSGI"))!=0) nLinked++;
+    if ((pglColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC) __GLeeGetProcAddress("glColorTableParameterfvSGI"))!=0) nLinked++;
+    if ((pglColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC) __GLeeGetProcAddress("glColorTableParameterivSGI"))!=0) nLinked++;
+    if ((pglCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC) __GLeeGetProcAddress("glCopyColorTableSGI"))!=0) nLinked++;
+    if ((pglGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC) __GLeeGetProcAddress("glGetColorTableSGI"))!=0) nLinked++;
+    if ((pglGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) __GLeeGetProcAddress("glGetColorTableParameterfvSGI"))!=0) nLinked++;
+    if ((pglGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) __GLeeGetProcAddress("glGetColorTableParameterivSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_pixel_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_pixel_texture
+    if ((pglPixelTexGenParameteriSGIS = (PFNGLPIXELTEXGENPARAMETERISGISPROC) __GLeeGetProcAddress("glPixelTexGenParameteriSGIS"))!=0) nLinked++;
+    if ((pglPixelTexGenParameterivSGIS = (PFNGLPIXELTEXGENPARAMETERIVSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterivSGIS"))!=0) nLinked++;
+    if ((pglPixelTexGenParameterfSGIS = (PFNGLPIXELTEXGENPARAMETERFSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterfSGIS"))!=0) nLinked++;
+    if ((pglPixelTexGenParameterfvSGIS = (PFNGLPIXELTEXGENPARAMETERFVSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterfvSGIS"))!=0) nLinked++;
+    if ((pglGetPixelTexGenParameterivSGIS = (PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) __GLeeGetProcAddress("glGetPixelTexGenParameterivSGIS"))!=0) nLinked++;
+    if ((pglGetPixelTexGenParameterfvSGIS = (PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) __GLeeGetProcAddress("glGetPixelTexGenParameterfvSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_pixel_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_pixel_texture
+    if ((pglPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC) __GLeeGetProcAddress("glPixelTexGenSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_texture4D(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_texture4D
+    if ((pglTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC) __GLeeGetProcAddress("glTexImage4DSGIS"))!=0) nLinked++;
+    if ((pglTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC) __GLeeGetProcAddress("glTexSubImage4DSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGI_texture_color_table(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_cmyka(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture_object
+    if ((pglAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC) __GLeeGetProcAddress("glAreTexturesResidentEXT"))!=0) nLinked++;
+    if ((pglBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC) __GLeeGetProcAddress("glBindTextureEXT"))!=0) nLinked++;
+    if ((pglDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC) __GLeeGetProcAddress("glDeleteTexturesEXT"))!=0) nLinked++;
+    if ((pglGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC) __GLeeGetProcAddress("glGenTexturesEXT"))!=0) nLinked++;
+    if ((pglIsTextureEXT = (PFNGLISTEXTUREEXTPROC) __GLeeGetProcAddress("glIsTextureEXT"))!=0) nLinked++;
+    if ((pglPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC) __GLeeGetProcAddress("glPrioritizeTexturesEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_detail_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_detail_texture
+    if ((pglDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC) __GLeeGetProcAddress("glDetailTexFuncSGIS"))!=0) nLinked++;
+    if ((pglGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC) __GLeeGetProcAddress("glGetDetailTexFuncSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_sharpen_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_sharpen_texture
+    if ((pglSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC) __GLeeGetProcAddress("glSharpenTexFuncSGIS"))!=0) nLinked++;
+    if ((pglGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC) __GLeeGetProcAddress("glGetSharpenTexFuncSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_packed_pixels(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_lod(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_multisample(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_multisample
+    if ((pglSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC) __GLeeGetProcAddress("glSampleMaskSGIS"))!=0) nLinked++;
+    if ((pglSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC) __GLeeGetProcAddress("glSamplePatternSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_rescale_normal(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_vertex_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_vertex_array
+    if ((pglArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC) __GLeeGetProcAddress("glArrayElementEXT"))!=0) nLinked++;
+    if ((pglColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC) __GLeeGetProcAddress("glColorPointerEXT"))!=0) nLinked++;
+    if ((pglDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC) __GLeeGetProcAddress("glDrawArraysEXT"))!=0) nLinked++;
+    if ((pglEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC) __GLeeGetProcAddress("glEdgeFlagPointerEXT"))!=0) nLinked++;
+    if ((pglGetPointervEXT = (PFNGLGETPOINTERVEXTPROC) __GLeeGetProcAddress("glGetPointervEXT"))!=0) nLinked++;
+    if ((pglIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC) __GLeeGetProcAddress("glIndexPointerEXT"))!=0) nLinked++;
+    if ((pglNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC) __GLeeGetProcAddress("glNormalPointerEXT"))!=0) nLinked++;
+    if ((pglTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC) __GLeeGetProcAddress("glTexCoordPointerEXT"))!=0) nLinked++;
+    if ((pglVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC) __GLeeGetProcAddress("glVertexPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==9) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_misc_attribute(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_generate_mipmap(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_clipmap(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_shadow(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_edge_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_border_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_blend_minmax(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_blend_minmax
+    if ((pglBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC) __GLeeGetProcAddress("glBlendEquationEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_blend_subtract(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_blend_logic_op(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_interlace(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_pixel_tiles(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_select(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_sprite(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_sprite
+    if ((pglSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC) __GLeeGetProcAddress("glSpriteParameterfSGIX"))!=0) nLinked++;
+    if ((pglSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glSpriteParameterfvSGIX"))!=0) nLinked++;
+    if ((pglSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC) __GLeeGetProcAddress("glSpriteParameteriSGIX"))!=0) nLinked++;
+    if ((pglSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glSpriteParameterivSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_texture_multi_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_point_parameters(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_point_parameters
+    if ((pglPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC) __GLeeGetProcAddress("glPointParameterfEXT"))!=0) nLinked++;
+    if ((pglPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC) __GLeeGetProcAddress("glPointParameterfvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_point_parameters(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_point_parameters
+    if ((pglPointParameterfSGIS = (PFNGLPOINTPARAMETERFSGISPROC) __GLeeGetProcAddress("glPointParameterfSGIS"))!=0) nLinked++;
+    if ((pglPointParameterfvSGIS = (PFNGLPOINTPARAMETERFVSGISPROC) __GLeeGetProcAddress("glPointParameterfvSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_instruments(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_instruments
+    if ((pglGetInstrumentsSGIX = (PFNGLGETINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glGetInstrumentsSGIX"))!=0) nLinked++;
+    if ((pglInstrumentsBufferSGIX = (PFNGLINSTRUMENTSBUFFERSGIXPROC) __GLeeGetProcAddress("glInstrumentsBufferSGIX"))!=0) nLinked++;
+    if ((pglPollInstrumentsSGIX = (PFNGLPOLLINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glPollInstrumentsSGIX"))!=0) nLinked++;
+    if ((pglReadInstrumentsSGIX = (PFNGLREADINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glReadInstrumentsSGIX"))!=0) nLinked++;
+    if ((pglStartInstrumentsSGIX = (PFNGLSTARTINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glStartInstrumentsSGIX"))!=0) nLinked++;
+    if ((pglStopInstrumentsSGIX = (PFNGLSTOPINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glStopInstrumentsSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_texture_scale_bias(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_framezoom(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_framezoom
+    if ((pglFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC) __GLeeGetProcAddress("glFrameZoomSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_tag_sample_buffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_tag_sample_buffer
+    if ((pglTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC) __GLeeGetProcAddress("glTagSampleBufferSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_FfdMaskSGIX(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_polynomial_ffd(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_polynomial_ffd
+    if ((pglDeformationMap3dSGIX = (PFNGLDEFORMATIONMAP3DSGIXPROC) __GLeeGetProcAddress("glDeformationMap3dSGIX"))!=0) nLinked++;
+    if ((pglDeformationMap3fSGIX = (PFNGLDEFORMATIONMAP3FSGIXPROC) __GLeeGetProcAddress("glDeformationMap3fSGIX"))!=0) nLinked++;
+    if ((pglDeformSGIX = (PFNGLDEFORMSGIXPROC) __GLeeGetProcAddress("glDeformSGIX"))!=0) nLinked++;
+    if ((pglLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) __GLeeGetProcAddress("glLoadIdentityDeformationMapSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_reference_plane(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_reference_plane
+    if ((pglReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC) __GLeeGetProcAddress("glReferencePlaneSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_flush_raster(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_flush_raster
+    if ((pglFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC) __GLeeGetProcAddress("glFlushRasterSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_depth_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_fog_function(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_fog_function
+    if ((pglFogFuncSGIS = (PFNGLFOGFUNCSGISPROC) __GLeeGetProcAddress("glFogFuncSGIS"))!=0) nLinked++;
+    if ((pglGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC) __GLeeGetProcAddress("glGetFogFuncSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_fog_offset(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_HP_image_transform(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_HP_image_transform
+    if ((pglImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC) __GLeeGetProcAddress("glImageTransformParameteriHP"))!=0) nLinked++;
+    if ((pglImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC) __GLeeGetProcAddress("glImageTransformParameterfHP"))!=0) nLinked++;
+    if ((pglImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) __GLeeGetProcAddress("glImageTransformParameterivHP"))!=0) nLinked++;
+    if ((pglImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) __GLeeGetProcAddress("glImageTransformParameterfvHP"))!=0) nLinked++;
+    if ((pglGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) __GLeeGetProcAddress("glGetImageTransformParameterivHP"))!=0) nLinked++;
+    if ((pglGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) __GLeeGetProcAddress("glGetImageTransformParameterfvHP"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_HP_convolution_border_modes(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INGR_palette_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_texture_add_env(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_color_subtable(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_color_subtable
+    if ((pglColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC) __GLeeGetProcAddress("glColorSubTableEXT"))!=0) nLinked++;
+    if ((pglCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC) __GLeeGetProcAddress("glCopyColorSubTableEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_PGI_vertex_hints(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_PGI_misc_hints(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_PGI_misc_hints
+    if ((pglHintPGI = (PFNGLHINTPGIPROC) __GLeeGetProcAddress("glHintPGI"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_paletted_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_paletted_texture
+    if ((pglColorTableEXT = (PFNGLCOLORTABLEEXTPROC) __GLeeGetProcAddress("glColorTableEXT"))!=0) nLinked++;
+    if ((pglGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC) __GLeeGetProcAddress("glGetColorTableEXT"))!=0) nLinked++;
+    if ((pglGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetColorTableParameterivEXT"))!=0) nLinked++;
+    if ((pglGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetColorTableParameterfvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_clip_volume_hint(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_list_priority(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_list_priority
+    if ((pglGetListParameterfvSGIX = (PFNGLGETLISTPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glGetListParameterfvSGIX"))!=0) nLinked++;
+    if ((pglGetListParameterivSGIX = (PFNGLGETLISTPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glGetListParameterivSGIX"))!=0) nLinked++;
+    if ((pglListParameterfSGIX = (PFNGLLISTPARAMETERFSGIXPROC) __GLeeGetProcAddress("glListParameterfSGIX"))!=0) nLinked++;
+    if ((pglListParameterfvSGIX = (PFNGLLISTPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glListParameterfvSGIX"))!=0) nLinked++;
+    if ((pglListParameteriSGIX = (PFNGLLISTPARAMETERISGIXPROC) __GLeeGetProcAddress("glListParameteriSGIX"))!=0) nLinked++;
+    if ((pglListParameterivSGIX = (PFNGLLISTPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glListParameterivSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_ir_instrument1(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_calligraphic_fragment(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_texture_lod_bias(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_shadow_ambient(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_index_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_index_material(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_index_material
+    if ((pglIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC) __GLeeGetProcAddress("glIndexMaterialEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_index_func(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_index_func
+    if ((pglIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC) __GLeeGetProcAddress("glIndexFuncEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_index_array_formats(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_compiled_vertex_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_compiled_vertex_array
+    if ((pglLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC) __GLeeGetProcAddress("glLockArraysEXT"))!=0) nLinked++;
+    if ((pglUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC) __GLeeGetProcAddress("glUnlockArraysEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_cull_vertex(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_cull_vertex
+    if ((pglCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC) __GLeeGetProcAddress("glCullParameterdvEXT"))!=0) nLinked++;
+    if ((pglCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC) __GLeeGetProcAddress("glCullParameterfvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_ycrcb(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_fragment_lighting(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_fragment_lighting
+    if ((pglFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC) __GLeeGetProcAddress("glFragmentColorMaterialSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC) __GLeeGetProcAddress("glFragmentLightfSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC) __GLeeGetProcAddress("glFragmentLightfvSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC) __GLeeGetProcAddress("glFragmentLightiSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC) __GLeeGetProcAddress("glFragmentLightivSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelfSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelfvSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC) __GLeeGetProcAddress("glFragmentLightModeliSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelivSGIX"))!=0) nLinked++;
+    if ((pglFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialfSGIX"))!=0) nLinked++;
+    if ((pglFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialfvSGIX"))!=0) nLinked++;
+    if ((pglFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC) __GLeeGetProcAddress("glFragmentMaterialiSGIX"))!=0) nLinked++;
+    if ((pglFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialivSGIX"))!=0) nLinked++;
+    if ((pglGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC) __GLeeGetProcAddress("glGetFragmentLightfvSGIX"))!=0) nLinked++;
+    if ((pglGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC) __GLeeGetProcAddress("glGetFragmentLightivSGIX"))!=0) nLinked++;
+    if ((pglGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC) __GLeeGetProcAddress("glGetFragmentMaterialfvSGIX"))!=0) nLinked++;
+    if ((pglGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC) __GLeeGetProcAddress("glGetFragmentMaterialivSGIX"))!=0) nLinked++;
+    if ((pglLightEnviSGIX = (PFNGLLIGHTENVISGIXPROC) __GLeeGetProcAddress("glLightEnviSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==18) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_IBM_rasterpos_clip(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_HP_texture_lighting(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_draw_range_elements(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_draw_range_elements
+    if ((pglDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC) __GLeeGetProcAddress("glDrawRangeElementsEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_WIN_phong_shading(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_WIN_specular_fog(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_light_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_light_texture
+    if ((pglApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC) __GLeeGetProcAddress("glApplyTextureEXT"))!=0) nLinked++;
+    if ((pglTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC) __GLeeGetProcAddress("glTextureLightEXT"))!=0) nLinked++;
+    if ((pglTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC) __GLeeGetProcAddress("glTextureMaterialEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_blend_alpha_minmax(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_impact_pixel_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_bgra(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_async(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_async
+    if ((pglAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC) __GLeeGetProcAddress("glAsyncMarkerSGIX"))!=0) nLinked++;
+    if ((pglFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC) __GLeeGetProcAddress("glFinishAsyncSGIX"))!=0) nLinked++;
+    if ((pglPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC) __GLeeGetProcAddress("glPollAsyncSGIX"))!=0) nLinked++;
+    if ((pglGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC) __GLeeGetProcAddress("glGenAsyncMarkersSGIX"))!=0) nLinked++;
+    if ((pglDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC) __GLeeGetProcAddress("glDeleteAsyncMarkersSGIX"))!=0) nLinked++;
+    if ((pglIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC) __GLeeGetProcAddress("glIsAsyncMarkerSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_async_pixel(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_async_histogram(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INTEL_texture_scissor(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INTEL_parallel_arrays(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_INTEL_parallel_arrays
+    if ((pglVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC) __GLeeGetProcAddress("glVertexPointervINTEL"))!=0) nLinked++;
+    if ((pglNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC) __GLeeGetProcAddress("glNormalPointervINTEL"))!=0) nLinked++;
+    if ((pglColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC) __GLeeGetProcAddress("glColorPointervINTEL"))!=0) nLinked++;
+    if ((pglTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC) __GLeeGetProcAddress("glTexCoordPointervINTEL"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_HP_occlusion_test(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_pixel_transform(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_pixel_transform
+    if ((pglPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) __GLeeGetProcAddress("glPixelTransformParameteriEXT"))!=0) nLinked++;
+    if ((pglPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterfEXT"))!=0) nLinked++;
+    if ((pglPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterivEXT"))!=0) nLinked++;
+    if ((pglPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterfvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_pixel_transform_color_table(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_shared_texture_palette(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_separate_specular_color(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_secondary_color(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_secondary_color
+    if ((pglSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC) __GLeeGetProcAddress("glSecondaryColor3bEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3bvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC) __GLeeGetProcAddress("glSecondaryColor3dEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3dvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC) __GLeeGetProcAddress("glSecondaryColor3fEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3fvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC) __GLeeGetProcAddress("glSecondaryColor3iEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ivEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC) __GLeeGetProcAddress("glSecondaryColor3sEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3svEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ubEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ubvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC) __GLeeGetProcAddress("glSecondaryColor3uiEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3uivEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC) __GLeeGetProcAddress("glSecondaryColor3usEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3usvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC) __GLeeGetProcAddress("glSecondaryColorPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==17) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_perturb_normal(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture_perturb_normal
+    if ((pglTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC) __GLeeGetProcAddress("glTextureNormalEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_multi_draw_arrays(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_multi_draw_arrays
+    if ((pglMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC) __GLeeGetProcAddress("glMultiDrawArraysEXT"))!=0) nLinked++;
+    if ((pglMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC) __GLeeGetProcAddress("glMultiDrawElementsEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_fog_coord(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_fog_coord
+    if ((pglFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC) __GLeeGetProcAddress("glFogCoordfEXT"))!=0) nLinked++;
+    if ((pglFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC) __GLeeGetProcAddress("glFogCoordfvEXT"))!=0) nLinked++;
+    if ((pglFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC) __GLeeGetProcAddress("glFogCoorddEXT"))!=0) nLinked++;
+    if ((pglFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC) __GLeeGetProcAddress("glFogCoorddvEXT"))!=0) nLinked++;
+    if ((pglFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC) __GLeeGetProcAddress("glFogCoordPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_REND_screen_coordinates(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_coordinate_frame(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_coordinate_frame
+    if ((pglTangent3bEXT = (PFNGLTANGENT3BEXTPROC) __GLeeGetProcAddress("glTangent3bEXT"))!=0) nLinked++;
+    if ((pglTangent3bvEXT = (PFNGLTANGENT3BVEXTPROC) __GLeeGetProcAddress("glTangent3bvEXT"))!=0) nLinked++;
+    if ((pglTangent3dEXT = (PFNGLTANGENT3DEXTPROC) __GLeeGetProcAddress("glTangent3dEXT"))!=0) nLinked++;
+    if ((pglTangent3dvEXT = (PFNGLTANGENT3DVEXTPROC) __GLeeGetProcAddress("glTangent3dvEXT"))!=0) nLinked++;
+    if ((pglTangent3fEXT = (PFNGLTANGENT3FEXTPROC) __GLeeGetProcAddress("glTangent3fEXT"))!=0) nLinked++;
+    if ((pglTangent3fvEXT = (PFNGLTANGENT3FVEXTPROC) __GLeeGetProcAddress("glTangent3fvEXT"))!=0) nLinked++;
+    if ((pglTangent3iEXT = (PFNGLTANGENT3IEXTPROC) __GLeeGetProcAddress("glTangent3iEXT"))!=0) nLinked++;
+    if ((pglTangent3ivEXT = (PFNGLTANGENT3IVEXTPROC) __GLeeGetProcAddress("glTangent3ivEXT"))!=0) nLinked++;
+    if ((pglTangent3sEXT = (PFNGLTANGENT3SEXTPROC) __GLeeGetProcAddress("glTangent3sEXT"))!=0) nLinked++;
+    if ((pglTangent3svEXT = (PFNGLTANGENT3SVEXTPROC) __GLeeGetProcAddress("glTangent3svEXT"))!=0) nLinked++;
+    if ((pglBinormal3bEXT = (PFNGLBINORMAL3BEXTPROC) __GLeeGetProcAddress("glBinormal3bEXT"))!=0) nLinked++;
+    if ((pglBinormal3bvEXT = (PFNGLBINORMAL3BVEXTPROC) __GLeeGetProcAddress("glBinormal3bvEXT"))!=0) nLinked++;
+    if ((pglBinormal3dEXT = (PFNGLBINORMAL3DEXTPROC) __GLeeGetProcAddress("glBinormal3dEXT"))!=0) nLinked++;
+    if ((pglBinormal3dvEXT = (PFNGLBINORMAL3DVEXTPROC) __GLeeGetProcAddress("glBinormal3dvEXT"))!=0) nLinked++;
+    if ((pglBinormal3fEXT = (PFNGLBINORMAL3FEXTPROC) __GLeeGetProcAddress("glBinormal3fEXT"))!=0) nLinked++;
+    if ((pglBinormal3fvEXT = (PFNGLBINORMAL3FVEXTPROC) __GLeeGetProcAddress("glBinormal3fvEXT"))!=0) nLinked++;
+    if ((pglBinormal3iEXT = (PFNGLBINORMAL3IEXTPROC) __GLeeGetProcAddress("glBinormal3iEXT"))!=0) nLinked++;
+    if ((pglBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC) __GLeeGetProcAddress("glBinormal3ivEXT"))!=0) nLinked++;
+    if ((pglBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC) __GLeeGetProcAddress("glBinormal3sEXT"))!=0) nLinked++;
+    if ((pglBinormal3svEXT = (PFNGLBINORMAL3SVEXTPROC) __GLeeGetProcAddress("glBinormal3svEXT"))!=0) nLinked++;
+    if ((pglTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC) __GLeeGetProcAddress("glTangentPointerEXT"))!=0) nLinked++;
+    if ((pglBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC) __GLeeGetProcAddress("glBinormalPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==22) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_env_combine(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_APPLE_specular_vector(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_APPLE_transform_hint(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_fog_scale(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SUNX_constant_data(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUNX_constant_data
+    if ((pglFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC) __GLeeGetProcAddress("glFinishTextureSUNX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_global_alpha(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUN_global_alpha
+    if ((pglGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorbSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorsSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactoriSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorfSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactordSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorubSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorusSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactoruiSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_triangle_list(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUN_triangle_list
+    if ((pglReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC) __GLeeGetProcAddress("glReplacementCodeuiSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC) __GLeeGetProcAddress("glReplacementCodeusSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC) __GLeeGetProcAddress("glReplacementCodeubSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuivSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC) __GLeeGetProcAddress("glReplacementCodeusvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC) __GLeeGetProcAddress("glReplacementCodeubvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC) __GLeeGetProcAddress("glReplacementCodePointerSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_vertex(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUN_vertex
+    if ((pglColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC) __GLeeGetProcAddress("glColor4ubVertex2fSUN"))!=0) nLinked++;
+    if ((pglColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC) __GLeeGetProcAddress("glColor4ubVertex2fvSUN"))!=0) nLinked++;
+    if ((pglColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor4ubVertex3fSUN"))!=0) nLinked++;
+    if ((pglColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor4ubVertex3fvSUN"))!=0) nLinked++;
+    if ((pglColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor4fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor4fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC) __GLeeGetProcAddress("glTexCoord4fVertex4fSUN"))!=0) nLinked++;
+    if ((pglTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC) __GLeeGetProcAddress("glTexCoord4fVertex4fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4ubVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4ubVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) __GLeeGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fSUN"))!=0) nLinked++;
+    if ((pglTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) __GLeeGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4ubVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4ubVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==40) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_blend_func_separate(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_blend_func_separate
+    if ((pglBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC) __GLeeGetProcAddress("glBlendFuncSeparateEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_INGR_color_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INGR_interlace_read(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_stencil_wrap(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_422_pixels(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texgen_reflection(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_cube_map(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SUN_convolution_border_modes(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_env_add(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_lod_bias(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_filter_anisotropic(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_vertex_weighting(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_vertex_weighting
+    if ((pglVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC) __GLeeGetProcAddress("glVertexWeightfEXT"))!=0) nLinked++;
+    if ((pglVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC) __GLeeGetProcAddress("glVertexWeightfvEXT"))!=0) nLinked++;
+    if ((pglVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC) __GLeeGetProcAddress("glVertexWeightPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_light_max_exponent(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_array_range(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_vertex_array_range
+    if ((pglFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC) __GLeeGetProcAddress("glFlushVertexArrayRangeNV"))!=0) nLinked++;
+    if ((pglVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC) __GLeeGetProcAddress("glVertexArrayRangeNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_register_combiners(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_register_combiners
+    if ((pglCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC) __GLeeGetProcAddress("glCombinerParameterfvNV"))!=0) nLinked++;
+    if ((pglCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC) __GLeeGetProcAddress("glCombinerParameterfNV"))!=0) nLinked++;
+    if ((pglCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC) __GLeeGetProcAddress("glCombinerParameterivNV"))!=0) nLinked++;
+    if ((pglCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC) __GLeeGetProcAddress("glCombinerParameteriNV"))!=0) nLinked++;
+    if ((pglCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC) __GLeeGetProcAddress("glCombinerInputNV"))!=0) nLinked++;
+    if ((pglCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC) __GLeeGetProcAddress("glCombinerOutputNV"))!=0) nLinked++;
+    if ((pglFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC) __GLeeGetProcAddress("glFinalCombinerInputNV"))!=0) nLinked++;
+    if ((pglGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerInputParameterfvNV"))!=0) nLinked++;
+    if ((pglGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetCombinerInputParameterivNV"))!=0) nLinked++;
+    if ((pglGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerOutputParameterfvNV"))!=0) nLinked++;
+    if ((pglGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetCombinerOutputParameterivNV"))!=0) nLinked++;
+    if ((pglGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetFinalCombinerInputParameterfvNV"))!=0) nLinked++;
+    if ((pglGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetFinalCombinerInputParameterivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==13) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_fog_distance(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texgen_emboss(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_blend_square(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texture_env_combine4(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_MESA_resize_buffers(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_MESA_resize_buffers
+    if ((pglResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC) __GLeeGetProcAddress("glResizeBuffersMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_MESA_window_pos(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_MESA_window_pos
+    if ((pglWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC) __GLeeGetProcAddress("glWindowPos2dMESA"))!=0) nLinked++;
+    if ((pglWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC) __GLeeGetProcAddress("glWindowPos2dvMESA"))!=0) nLinked++;
+    if ((pglWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC) __GLeeGetProcAddress("glWindowPos2fMESA"))!=0) nLinked++;
+    if ((pglWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC) __GLeeGetProcAddress("glWindowPos2fvMESA"))!=0) nLinked++;
+    if ((pglWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC) __GLeeGetProcAddress("glWindowPos2iMESA"))!=0) nLinked++;
+    if ((pglWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC) __GLeeGetProcAddress("glWindowPos2ivMESA"))!=0) nLinked++;
+    if ((pglWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC) __GLeeGetProcAddress("glWindowPos2sMESA"))!=0) nLinked++;
+    if ((pglWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC) __GLeeGetProcAddress("glWindowPos2svMESA"))!=0) nLinked++;
+    if ((pglWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC) __GLeeGetProcAddress("glWindowPos3dMESA"))!=0) nLinked++;
+    if ((pglWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC) __GLeeGetProcAddress("glWindowPos3dvMESA"))!=0) nLinked++;
+    if ((pglWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC) __GLeeGetProcAddress("glWindowPos3fMESA"))!=0) nLinked++;
+    if ((pglWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC) __GLeeGetProcAddress("glWindowPos3fvMESA"))!=0) nLinked++;
+    if ((pglWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC) __GLeeGetProcAddress("glWindowPos3iMESA"))!=0) nLinked++;
+    if ((pglWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC) __GLeeGetProcAddress("glWindowPos3ivMESA"))!=0) nLinked++;
+    if ((pglWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC) __GLeeGetProcAddress("glWindowPos3sMESA"))!=0) nLinked++;
+    if ((pglWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC) __GLeeGetProcAddress("glWindowPos3svMESA"))!=0) nLinked++;
+    if ((pglWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC) __GLeeGetProcAddress("glWindowPos4dMESA"))!=0) nLinked++;
+    if ((pglWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC) __GLeeGetProcAddress("glWindowPos4dvMESA"))!=0) nLinked++;
+    if ((pglWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC) __GLeeGetProcAddress("glWindowPos4fMESA"))!=0) nLinked++;
+    if ((pglWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC) __GLeeGetProcAddress("glWindowPos4fvMESA"))!=0) nLinked++;
+    if ((pglWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC) __GLeeGetProcAddress("glWindowPos4iMESA"))!=0) nLinked++;
+    if ((pglWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC) __GLeeGetProcAddress("glWindowPos4ivMESA"))!=0) nLinked++;
+    if ((pglWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC) __GLeeGetProcAddress("glWindowPos4sMESA"))!=0) nLinked++;
+    if ((pglWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC) __GLeeGetProcAddress("glWindowPos4svMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==24) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_compression_s3tc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_IBM_cull_vertex(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_IBM_multimode_draw_arrays(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_IBM_multimode_draw_arrays
+    if ((pglMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC) __GLeeGetProcAddress("glMultiModeDrawArraysIBM"))!=0) nLinked++;
+    if ((pglMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC) __GLeeGetProcAddress("glMultiModeDrawElementsIBM"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_IBM_vertex_array_lists(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_IBM_vertex_array_lists
+    if ((pglColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC) __GLeeGetProcAddress("glColorPointerListIBM"))!=0) nLinked++;
+    if ((pglSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) __GLeeGetProcAddress("glSecondaryColorPointerListIBM"))!=0) nLinked++;
+    if ((pglEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC) __GLeeGetProcAddress("glEdgeFlagPointerListIBM"))!=0) nLinked++;
+    if ((pglFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC) __GLeeGetProcAddress("glFogCoordPointerListIBM"))!=0) nLinked++;
+    if ((pglIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC) __GLeeGetProcAddress("glIndexPointerListIBM"))!=0) nLinked++;
+    if ((pglNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC) __GLeeGetProcAddress("glNormalPointerListIBM"))!=0) nLinked++;
+    if ((pglTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC) __GLeeGetProcAddress("glTexCoordPointerListIBM"))!=0) nLinked++;
+    if ((pglVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC) __GLeeGetProcAddress("glVertexPointerListIBM"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_subsample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_ycrcb_subsample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_ycrcba(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGI_depth_pass_instrument(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_3DFX_texture_compression_FXT1(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_3DFX_tbuffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_3DFX_tbuffer
+    if ((pglTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC) __GLeeGetProcAddress("glTbufferMask3DFX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_multisample(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_multisample
+    if ((pglSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC) __GLeeGetProcAddress("glSampleMaskEXT"))!=0) nLinked++;
+    if ((pglSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC) __GLeeGetProcAddress("glSamplePatternEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_vertex_preclip(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_convolution_accuracy(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_resample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_point_line_texgen(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_color_mask(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_texture_color_mask
+    if ((pglTextureColorMaskSGIS = (PFNGLTEXTURECOLORMASKSGISPROC) __GLeeGetProcAddress("glTextureColorMaskSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_env_dot3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_texture_mirror_once(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_fence(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_fence
+    if ((pglDeleteFencesNV = (PFNGLDELETEFENCESNVPROC) __GLeeGetProcAddress("glDeleteFencesNV"))!=0) nLinked++;
+    if ((pglGenFencesNV = (PFNGLGENFENCESNVPROC) __GLeeGetProcAddress("glGenFencesNV"))!=0) nLinked++;
+    if ((pglIsFenceNV = (PFNGLISFENCENVPROC) __GLeeGetProcAddress("glIsFenceNV"))!=0) nLinked++;
+    if ((pglTestFenceNV = (PFNGLTESTFENCENVPROC) __GLeeGetProcAddress("glTestFenceNV"))!=0) nLinked++;
+    if ((pglGetFenceivNV = (PFNGLGETFENCEIVNVPROC) __GLeeGetProcAddress("glGetFenceivNV"))!=0) nLinked++;
+    if ((pglFinishFenceNV = (PFNGLFINISHFENCENVPROC) __GLeeGetProcAddress("glFinishFenceNV"))!=0) nLinked++;
+    if ((pglSetFenceNV = (PFNGLSETFENCENVPROC) __GLeeGetProcAddress("glSetFenceNV"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_IBM_texture_mirrored_repeat(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_evaluators(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_evaluators
+    if ((pglMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC) __GLeeGetProcAddress("glMapControlPointsNV"))!=0) nLinked++;
+    if ((pglMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC) __GLeeGetProcAddress("glMapParameterivNV"))!=0) nLinked++;
+    if ((pglMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC) __GLeeGetProcAddress("glMapParameterfvNV"))!=0) nLinked++;
+    if ((pglGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC) __GLeeGetProcAddress("glGetMapControlPointsNV"))!=0) nLinked++;
+    if ((pglGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetMapParameterivNV"))!=0) nLinked++;
+    if ((pglGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetMapParameterfvNV"))!=0) nLinked++;
+    if ((pglGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetMapAttribParameterivNV"))!=0) nLinked++;
+    if ((pglGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetMapAttribParameterfvNV"))!=0) nLinked++;
+    if ((pglEvalMapsNV = (PFNGLEVALMAPSNVPROC) __GLeeGetProcAddress("glEvalMapsNV"))!=0) nLinked++;
+#endif
+    if (nLinked==9) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_packed_depth_stencil(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_register_combiners2(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_register_combiners2
+    if ((pglCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) __GLeeGetProcAddress("glCombinerStageParameterfvNV"))!=0) nLinked++;
+    if ((pglGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerStageParameterfvNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_texture_compression_vtc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texture_rectangle(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texture_shader(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texture_shader2(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_array_range2(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_vertex_program
+    if ((pglAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC) __GLeeGetProcAddress("glAreProgramsResidentNV"))!=0) nLinked++;
+    if ((pglBindProgramNV = (PFNGLBINDPROGRAMNVPROC) __GLeeGetProcAddress("glBindProgramNV"))!=0) nLinked++;
+    if ((pglDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC) __GLeeGetProcAddress("glDeleteProgramsNV"))!=0) nLinked++;
+    if ((pglExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC) __GLeeGetProcAddress("glExecuteProgramNV"))!=0) nLinked++;
+    if ((pglGenProgramsNV = (PFNGLGENPROGRAMSNVPROC) __GLeeGetProcAddress("glGenProgramsNV"))!=0) nLinked++;
+    if ((pglGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC) __GLeeGetProcAddress("glGetProgramParameterdvNV"))!=0) nLinked++;
+    if ((pglGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetProgramParameterfvNV"))!=0) nLinked++;
+    if ((pglGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC) __GLeeGetProcAddress("glGetProgramivNV"))!=0) nLinked++;
+    if ((pglGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC) __GLeeGetProcAddress("glGetProgramStringNV"))!=0) nLinked++;
+    if ((pglGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC) __GLeeGetProcAddress("glGetTrackMatrixivNV"))!=0) nLinked++;
+    if ((pglGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) __GLeeGetProcAddress("glGetVertexAttribdvNV"))!=0) nLinked++;
+    if ((pglGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) __GLeeGetProcAddress("glGetVertexAttribfvNV"))!=0) nLinked++;
+    if ((pglGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) __GLeeGetProcAddress("glGetVertexAttribivNV"))!=0) nLinked++;
+    if ((pglGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC) __GLeeGetProcAddress("glGetVertexAttribPointervNV"))!=0) nLinked++;
+    if ((pglIsProgramNV = (PFNGLISPROGRAMNVPROC) __GLeeGetProcAddress("glIsProgramNV"))!=0) nLinked++;
+    if ((pglLoadProgramNV = (PFNGLLOADPROGRAMNVPROC) __GLeeGetProcAddress("glLoadProgramNV"))!=0) nLinked++;
+    if ((pglProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC) __GLeeGetProcAddress("glProgramParameter4dNV"))!=0) nLinked++;
+    if ((pglProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC) __GLeeGetProcAddress("glProgramParameter4dvNV"))!=0) nLinked++;
+    if ((pglProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC) __GLeeGetProcAddress("glProgramParameter4fNV"))!=0) nLinked++;
+    if ((pglProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC) __GLeeGetProcAddress("glProgramParameter4fvNV"))!=0) nLinked++;
+    if ((pglProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC) __GLeeGetProcAddress("glProgramParameters4dvNV"))!=0) nLinked++;
+    if ((pglProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC) __GLeeGetProcAddress("glProgramParameters4fvNV"))!=0) nLinked++;
+    if ((pglRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC) __GLeeGetProcAddress("glRequestResidentProgramsNV"))!=0) nLinked++;
+    if ((pglTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC) __GLeeGetProcAddress("glTrackMatrixNV"))!=0) nLinked++;
+    if ((pglVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC) __GLeeGetProcAddress("glVertexAttribPointerNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC) __GLeeGetProcAddress("glVertexAttrib1dNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC) __GLeeGetProcAddress("glVertexAttrib1dvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC) __GLeeGetProcAddress("glVertexAttrib1fNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC) __GLeeGetProcAddress("glVertexAttrib1fvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC) __GLeeGetProcAddress("glVertexAttrib1sNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC) __GLeeGetProcAddress("glVertexAttrib1svNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC) __GLeeGetProcAddress("glVertexAttrib2dNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC) __GLeeGetProcAddress("glVertexAttrib2dvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC) __GLeeGetProcAddress("glVertexAttrib2fNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC) __GLeeGetProcAddress("glVertexAttrib2fvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC) __GLeeGetProcAddress("glVertexAttrib2sNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC) __GLeeGetProcAddress("glVertexAttrib2svNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC) __GLeeGetProcAddress("glVertexAttrib3dNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC) __GLeeGetProcAddress("glVertexAttrib3dvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC) __GLeeGetProcAddress("glVertexAttrib3fNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC) __GLeeGetProcAddress("glVertexAttrib3fvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC) __GLeeGetProcAddress("glVertexAttrib3sNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC) __GLeeGetProcAddress("glVertexAttrib3svNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC) __GLeeGetProcAddress("glVertexAttrib4dNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC) __GLeeGetProcAddress("glVertexAttrib4dvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC) __GLeeGetProcAddress("glVertexAttrib4fNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC) __GLeeGetProcAddress("glVertexAttrib4fvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC) __GLeeGetProcAddress("glVertexAttrib4sNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC) __GLeeGetProcAddress("glVertexAttrib4svNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC) __GLeeGetProcAddress("glVertexAttrib4ubNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC) __GLeeGetProcAddress("glVertexAttrib4ubvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC) __GLeeGetProcAddress("glVertexAttribs1dvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC) __GLeeGetProcAddress("glVertexAttribs1fvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC) __GLeeGetProcAddress("glVertexAttribs1svNV"))!=0) nLinked++;
+    if ((pglVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC) __GLeeGetProcAddress("glVertexAttribs2dvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC) __GLeeGetProcAddress("glVertexAttribs2fvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC) __GLeeGetProcAddress("glVertexAttribs2svNV"))!=0) nLinked++;
+    if ((pglVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC) __GLeeGetProcAddress("glVertexAttribs3dvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC) __GLeeGetProcAddress("glVertexAttribs3fvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC) __GLeeGetProcAddress("glVertexAttribs3svNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC) __GLeeGetProcAddress("glVertexAttribs4dvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC) __GLeeGetProcAddress("glVertexAttribs4fvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC) __GLeeGetProcAddress("glVertexAttribs4svNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC) __GLeeGetProcAddress("glVertexAttribs4ubvNV"))!=0) nLinked++;
+#endif
+    if (nLinked==64) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_texture_coordinate_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_scalebias_hint(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OML_interlace(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OML_subsample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OML_resample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_copy_depth_to_color(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_envmap_bumpmap(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_envmap_bumpmap
+    if ((pglTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC) __GLeeGetProcAddress("glTexBumpParameterivATI"))!=0) nLinked++;
+    if ((pglTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC) __GLeeGetProcAddress("glTexBumpParameterfvATI"))!=0) nLinked++;
+    if ((pglGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC) __GLeeGetProcAddress("glGetTexBumpParameterivATI"))!=0) nLinked++;
+    if ((pglGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC) __GLeeGetProcAddress("glGetTexBumpParameterfvATI"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_fragment_shader(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_fragment_shader
+    if ((pglGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC) __GLeeGetProcAddress("glGenFragmentShadersATI"))!=0) nLinked++;
+    if ((pglBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glBindFragmentShaderATI"))!=0) nLinked++;
+    if ((pglDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glDeleteFragmentShaderATI"))!=0) nLinked++;
+    if ((pglBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glBeginFragmentShaderATI"))!=0) nLinked++;
+    if ((pglEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glEndFragmentShaderATI"))!=0) nLinked++;
+    if ((pglPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC) __GLeeGetProcAddress("glPassTexCoordATI"))!=0) nLinked++;
+    if ((pglSampleMapATI = (PFNGLSAMPLEMAPATIPROC) __GLeeGetProcAddress("glSampleMapATI"))!=0) nLinked++;
+    if ((pglColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC) __GLeeGetProcAddress("glColorFragmentOp1ATI"))!=0) nLinked++;
+    if ((pglColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC) __GLeeGetProcAddress("glColorFragmentOp2ATI"))!=0) nLinked++;
+    if ((pglColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC) __GLeeGetProcAddress("glColorFragmentOp3ATI"))!=0) nLinked++;
+    if ((pglAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp1ATI"))!=0) nLinked++;
+    if ((pglAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp2ATI"))!=0) nLinked++;
+    if ((pglAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp3ATI"))!=0) nLinked++;
+    if ((pglSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) __GLeeGetProcAddress("glSetFragmentShaderConstantATI"))!=0) nLinked++;
+#endif
+    if (nLinked==14) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_pn_triangles(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_pn_triangles
+    if ((pglPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC) __GLeeGetProcAddress("glPNTrianglesiATI"))!=0) nLinked++;
+    if ((pglPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC) __GLeeGetProcAddress("glPNTrianglesfATI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_vertex_array_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_vertex_array_object
+    if ((pglNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glNewObjectBufferATI"))!=0) nLinked++;
+    if ((pglIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glIsObjectBufferATI"))!=0) nLinked++;
+    if ((pglUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glUpdateObjectBufferATI"))!=0) nLinked++;
+    if ((pglGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC) __GLeeGetProcAddress("glGetObjectBufferfvATI"))!=0) nLinked++;
+    if ((pglGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC) __GLeeGetProcAddress("glGetObjectBufferivATI"))!=0) nLinked++;
+    if ((pglFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glFreeObjectBufferATI"))!=0) nLinked++;
+    if ((pglArrayObjectATI = (PFNGLARRAYOBJECTATIPROC) __GLeeGetProcAddress("glArrayObjectATI"))!=0) nLinked++;
+    if ((pglGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetArrayObjectfvATI"))!=0) nLinked++;
+    if ((pglGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetArrayObjectivATI"))!=0) nLinked++;
+    if ((pglVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC) __GLeeGetProcAddress("glVariantArrayObjectATI"))!=0) nLinked++;
+    if ((pglGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetVariantArrayObjectfvATI"))!=0) nLinked++;
+    if ((pglGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetVariantArrayObjectivATI"))!=0) nLinked++;
+#endif
+    if (nLinked==12) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_vertex_shader(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_vertex_shader
+    if ((pglBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glBeginVertexShaderEXT"))!=0) nLinked++;
+    if ((pglEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glEndVertexShaderEXT"))!=0) nLinked++;
+    if ((pglBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glBindVertexShaderEXT"))!=0) nLinked++;
+    if ((pglGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC) __GLeeGetProcAddress("glGenVertexShadersEXT"))!=0) nLinked++;
+    if ((pglDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glDeleteVertexShaderEXT"))!=0) nLinked++;
+    if ((pglShaderOp1EXT = (PFNGLSHADEROP1EXTPROC) __GLeeGetProcAddress("glShaderOp1EXT"))!=0) nLinked++;
+    if ((pglShaderOp2EXT = (PFNGLSHADEROP2EXTPROC) __GLeeGetProcAddress("glShaderOp2EXT"))!=0) nLinked++;
+    if ((pglShaderOp3EXT = (PFNGLSHADEROP3EXTPROC) __GLeeGetProcAddress("glShaderOp3EXT"))!=0) nLinked++;
+    if ((pglSwizzleEXT = (PFNGLSWIZZLEEXTPROC) __GLeeGetProcAddress("glSwizzleEXT"))!=0) nLinked++;
+    if ((pglWriteMaskEXT = (PFNGLWRITEMASKEXTPROC) __GLeeGetProcAddress("glWriteMaskEXT"))!=0) nLinked++;
+    if ((pglInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC) __GLeeGetProcAddress("glInsertComponentEXT"))!=0) nLinked++;
+    if ((pglExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC) __GLeeGetProcAddress("glExtractComponentEXT"))!=0) nLinked++;
+    if ((pglGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC) __GLeeGetProcAddress("glGenSymbolsEXT"))!=0) nLinked++;
+    if ((pglSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC) __GLeeGetProcAddress("glSetInvariantEXT"))!=0) nLinked++;
+    if ((pglSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC) __GLeeGetProcAddress("glSetLocalConstantEXT"))!=0) nLinked++;
+    if ((pglVariantbvEXT = (PFNGLVARIANTBVEXTPROC) __GLeeGetProcAddress("glVariantbvEXT"))!=0) nLinked++;
+    if ((pglVariantsvEXT = (PFNGLVARIANTSVEXTPROC) __GLeeGetProcAddress("glVariantsvEXT"))!=0) nLinked++;
+    if ((pglVariantivEXT = (PFNGLVARIANTIVEXTPROC) __GLeeGetProcAddress("glVariantivEXT"))!=0) nLinked++;
+    if ((pglVariantfvEXT = (PFNGLVARIANTFVEXTPROC) __GLeeGetProcAddress("glVariantfvEXT"))!=0) nLinked++;
+    if ((pglVariantdvEXT = (PFNGLVARIANTDVEXTPROC) __GLeeGetProcAddress("glVariantdvEXT"))!=0) nLinked++;
+    if ((pglVariantubvEXT = (PFNGLVARIANTUBVEXTPROC) __GLeeGetProcAddress("glVariantubvEXT"))!=0) nLinked++;
+    if ((pglVariantusvEXT = (PFNGLVARIANTUSVEXTPROC) __GLeeGetProcAddress("glVariantusvEXT"))!=0) nLinked++;
+    if ((pglVariantuivEXT = (PFNGLVARIANTUIVEXTPROC) __GLeeGetProcAddress("glVariantuivEXT"))!=0) nLinked++;
+    if ((pglVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC) __GLeeGetProcAddress("glVariantPointerEXT"))!=0) nLinked++;
+    if ((pglEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) __GLeeGetProcAddress("glEnableVariantClientStateEXT"))!=0) nLinked++;
+    if ((pglDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) __GLeeGetProcAddress("glDisableVariantClientStateEXT"))!=0) nLinked++;
+    if ((pglBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC) __GLeeGetProcAddress("glBindLightParameterEXT"))!=0) nLinked++;
+    if ((pglBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC) __GLeeGetProcAddress("glBindMaterialParameterEXT"))!=0) nLinked++;
+    if ((pglBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC) __GLeeGetProcAddress("glBindTexGenParameterEXT"))!=0) nLinked++;
+    if ((pglBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) __GLeeGetProcAddress("glBindTextureUnitParameterEXT"))!=0) nLinked++;
+    if ((pglBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC) __GLeeGetProcAddress("glBindParameterEXT"))!=0) nLinked++;
+    if ((pglIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC) __GLeeGetProcAddress("glIsVariantEnabledEXT"))!=0) nLinked++;
+    if ((pglGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetVariantBooleanvEXT"))!=0) nLinked++;
+    if ((pglGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetVariantIntegervEXT"))!=0) nLinked++;
+    if ((pglGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetVariantFloatvEXT"))!=0) nLinked++;
+    if ((pglGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC) __GLeeGetProcAddress("glGetVariantPointervEXT"))!=0) nLinked++;
+    if ((pglGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetInvariantBooleanvEXT"))!=0) nLinked++;
+    if ((pglGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetInvariantIntegervEXT"))!=0) nLinked++;
+    if ((pglGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetInvariantFloatvEXT"))!=0) nLinked++;
+    if ((pglGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantBooleanvEXT"))!=0) nLinked++;
+    if ((pglGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantIntegervEXT"))!=0) nLinked++;
+    if ((pglGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantFloatvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==42) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_vertex_streams(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_vertex_streams
+    if ((pglVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC) __GLeeGetProcAddress("glVertexStream1sATI"))!=0) nLinked++;
+    if ((pglVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC) __GLeeGetProcAddress("glVertexStream1svATI"))!=0) nLinked++;
+    if ((pglVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC) __GLeeGetProcAddress("glVertexStream1iATI"))!=0) nLinked++;
+    if ((pglVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC) __GLeeGetProcAddress("glVertexStream1ivATI"))!=0) nLinked++;
+    if ((pglVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC) __GLeeGetProcAddress("glVertexStream1fATI"))!=0) nLinked++;
+    if ((pglVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC) __GLeeGetProcAddress("glVertexStream1fvATI"))!=0) nLinked++;
+    if ((pglVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC) __GLeeGetProcAddress("glVertexStream1dATI"))!=0) nLinked++;
+    if ((pglVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC) __GLeeGetProcAddress("glVertexStream1dvATI"))!=0) nLinked++;
+    if ((pglVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC) __GLeeGetProcAddress("glVertexStream2sATI"))!=0) nLinked++;
+    if ((pglVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC) __GLeeGetProcAddress("glVertexStream2svATI"))!=0) nLinked++;
+    if ((pglVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC) __GLeeGetProcAddress("glVertexStream2iATI"))!=0) nLinked++;
+    if ((pglVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC) __GLeeGetProcAddress("glVertexStream2ivATI"))!=0) nLinked++;
+    if ((pglVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC) __GLeeGetProcAddress("glVertexStream2fATI"))!=0) nLinked++;
+    if ((pglVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC) __GLeeGetProcAddress("glVertexStream2fvATI"))!=0) nLinked++;
+    if ((pglVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC) __GLeeGetProcAddress("glVertexStream2dATI"))!=0) nLinked++;
+    if ((pglVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC) __GLeeGetProcAddress("glVertexStream2dvATI"))!=0) nLinked++;
+    if ((pglVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC) __GLeeGetProcAddress("glVertexStream3sATI"))!=0) nLinked++;
+    if ((pglVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC) __GLeeGetProcAddress("glVertexStream3svATI"))!=0) nLinked++;
+    if ((pglVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC) __GLeeGetProcAddress("glVertexStream3iATI"))!=0) nLinked++;
+    if ((pglVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC) __GLeeGetProcAddress("glVertexStream3ivATI"))!=0) nLinked++;
+    if ((pglVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC) __GLeeGetProcAddress("glVertexStream3fATI"))!=0) nLinked++;
+    if ((pglVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC) __GLeeGetProcAddress("glVertexStream3fvATI"))!=0) nLinked++;
+    if ((pglVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC) __GLeeGetProcAddress("glVertexStream3dATI"))!=0) nLinked++;
+    if ((pglVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC) __GLeeGetProcAddress("glVertexStream3dvATI"))!=0) nLinked++;
+    if ((pglVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC) __GLeeGetProcAddress("glVertexStream4sATI"))!=0) nLinked++;
+    if ((pglVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC) __GLeeGetProcAddress("glVertexStream4svATI"))!=0) nLinked++;
+    if ((pglVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC) __GLeeGetProcAddress("glVertexStream4iATI"))!=0) nLinked++;
+    if ((pglVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC) __GLeeGetProcAddress("glVertexStream4ivATI"))!=0) nLinked++;
+    if ((pglVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC) __GLeeGetProcAddress("glVertexStream4fATI"))!=0) nLinked++;
+    if ((pglVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC) __GLeeGetProcAddress("glVertexStream4fvATI"))!=0) nLinked++;
+    if ((pglVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC) __GLeeGetProcAddress("glVertexStream4dATI"))!=0) nLinked++;
+    if ((pglVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC) __GLeeGetProcAddress("glVertexStream4dvATI"))!=0) nLinked++;
+    if ((pglNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC) __GLeeGetProcAddress("glNormalStream3bATI"))!=0) nLinked++;
+    if ((pglNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC) __GLeeGetProcAddress("glNormalStream3bvATI"))!=0) nLinked++;
+    if ((pglNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC) __GLeeGetProcAddress("glNormalStream3sATI"))!=0) nLinked++;
+    if ((pglNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC) __GLeeGetProcAddress("glNormalStream3svATI"))!=0) nLinked++;
+    if ((pglNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC) __GLeeGetProcAddress("glNormalStream3iATI"))!=0) nLinked++;
+    if ((pglNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC) __GLeeGetProcAddress("glNormalStream3ivATI"))!=0) nLinked++;
+    if ((pglNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC) __GLeeGetProcAddress("glNormalStream3fATI"))!=0) nLinked++;
+    if ((pglNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC) __GLeeGetProcAddress("glNormalStream3fvATI"))!=0) nLinked++;
+    if ((pglNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC) __GLeeGetProcAddress("glNormalStream3dATI"))!=0) nLinked++;
+    if ((pglNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC) __GLeeGetProcAddress("glNormalStream3dvATI"))!=0) nLinked++;
+    if ((pglClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) __GLeeGetProcAddress("glClientActiveVertexStreamATI"))!=0) nLinked++;
+    if ((pglVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC) __GLeeGetProcAddress("glVertexBlendEnviATI"))!=0) nLinked++;
+    if ((pglVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC) __GLeeGetProcAddress("glVertexBlendEnvfATI"))!=0) nLinked++;
+#endif
+    if (nLinked==45) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_element_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_element_array
+    if ((pglElementPointerATI = (PFNGLELEMENTPOINTERATIPROC) __GLeeGetProcAddress("glElementPointerATI"))!=0) nLinked++;
+    if ((pglDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC) __GLeeGetProcAddress("glDrawElementArrayATI"))!=0) nLinked++;
+    if ((pglDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC) __GLeeGetProcAddress("glDrawRangeElementArrayATI"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_mesh_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUN_mesh_array
+    if ((pglDrawMeshArraysSUN = (PFNGLDRAWMESHARRAYSSUNPROC) __GLeeGetProcAddress("glDrawMeshArraysSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_slice_accum(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_multisample_filter_hint(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_depth_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_occlusion_query(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_occlusion_query
+    if ((pglGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC) __GLeeGetProcAddress("glGenOcclusionQueriesNV"))!=0) nLinked++;
+    if ((pglDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC) __GLeeGetProcAddress("glDeleteOcclusionQueriesNV"))!=0) nLinked++;
+    if ((pglIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glIsOcclusionQueryNV"))!=0) nLinked++;
+    if ((pglBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glBeginOcclusionQueryNV"))!=0) nLinked++;
+    if ((pglEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glEndOcclusionQueryNV"))!=0) nLinked++;
+    if ((pglGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC) __GLeeGetProcAddress("glGetOcclusionQueryivNV"))!=0) nLinked++;
+    if ((pglGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC) __GLeeGetProcAddress("glGetOcclusionQueryuivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_point_sprite(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_point_sprite
+    if ((pglPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC) __GLeeGetProcAddress("glPointParameteriNV"))!=0) nLinked++;
+    if ((pglPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC) __GLeeGetProcAddress("glPointParameterivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_texture_shader3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program1_1(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_shadow_funcs(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_stencil_two_side(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_stencil_two_side
+    if ((pglActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC) __GLeeGetProcAddress("glActiveStencilFaceEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_text_fragment_shader(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_APPLE_client_storage(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_APPLE_element_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_APPLE_element_array
+    if ((pglElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC) __GLeeGetProcAddress("glElementPointerAPPLE"))!=0) nLinked++;
+    if ((pglDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glDrawElementArrayAPPLE"))!=0) nLinked++;
+    if ((pglDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glDrawRangeElementArrayAPPLE"))!=0) nLinked++;
+    if ((pglMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glMultiDrawElementArrayAPPLE"))!=0) nLinked++;
+    if ((pglMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glMultiDrawRangeElementArrayAPPLE"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_APPLE_fence(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_APPLE_fence
+    if ((pglGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC) __GLeeGetProcAddress("glGenFencesAPPLE"))!=0) nLinked++;
+    if ((pglDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC) __GLeeGetProcAddress("glDeleteFencesAPPLE"))!=0) nLinked++;
+    if ((pglSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC) __GLeeGetProcAddress("glSetFenceAPPLE"))!=0) nLinked++;
+    if ((pglIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC) __GLeeGetProcAddress("glIsFenceAPPLE"))!=0) nLinked++;
+    if ((pglTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC) __GLeeGetProcAddress("glTestFenceAPPLE"))!=0) nLinked++;
+    if ((pglFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC) __GLeeGetProcAddress("glFinishFenceAPPLE"))!=0) nLinked++;
+    if ((pglTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC) __GLeeGetProcAddress("glTestObjectAPPLE"))!=0) nLinked++;
+    if ((pglFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC) __GLeeGetProcAddress("glFinishObjectAPPLE"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_APPLE_vertex_array_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_APPLE_vertex_array_object
+    if ((pglBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC) __GLeeGetProcAddress("glBindVertexArrayAPPLE"))!=0) nLinked++;
+    if ((pglDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) __GLeeGetProcAddress("glDeleteVertexArraysAPPLE"))!=0) nLinked++;
+    if ((pglGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC) __GLeeGetProcAddress("glGenVertexArraysAPPLE"))!=0) nLinked++;
+    if ((pglIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC) __GLeeGetProcAddress("glIsVertexArrayAPPLE"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_APPLE_vertex_array_range(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_APPLE_vertex_array_range
+    if ((pglVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC) __GLeeGetProcAddress("glVertexArrayRangeAPPLE"))!=0) nLinked++;
+    if ((pglFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) __GLeeGetProcAddress("glFlushVertexArrayRangeAPPLE"))!=0) nLinked++;
+    if ((pglVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) __GLeeGetProcAddress("glVertexArrayParameteriAPPLE"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_APPLE_ycbcr_422(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_S3_s3tc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_draw_buffers(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_draw_buffers
+    if ((pglDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC) __GLeeGetProcAddress("glDrawBuffersATI"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_pixel_format_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_texture_env_combine3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_texture_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_fragment_program(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_fragment_program
+    if ((pglProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4fNV"))!=0) nLinked++;
+    if ((pglProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4dNV"))!=0) nLinked++;
+    if ((pglProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4fvNV"))!=0) nLinked++;
+    if ((pglProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4dvNV"))!=0) nLinked++;
+    if ((pglGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetProgramNamedParameterfvNV"))!=0) nLinked++;
+    if ((pglGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) __GLeeGetProcAddress("glGetProgramNamedParameterdvNV"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_half_float(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_half_float
+    if ((pglVertex2hNV = (PFNGLVERTEX2HNVPROC) __GLeeGetProcAddress("glVertex2hNV"))!=0) nLinked++;
+    if ((pglVertex2hvNV = (PFNGLVERTEX2HVNVPROC) __GLeeGetProcAddress("glVertex2hvNV"))!=0) nLinked++;
+    if ((pglVertex3hNV = (PFNGLVERTEX3HNVPROC) __GLeeGetProcAddress("glVertex3hNV"))!=0) nLinked++;
+    if ((pglVertex3hvNV = (PFNGLVERTEX3HVNVPROC) __GLeeGetProcAddress("glVertex3hvNV"))!=0) nLinked++;
+    if ((pglVertex4hNV = (PFNGLVERTEX4HNVPROC) __GLeeGetProcAddress("glVertex4hNV"))!=0) nLinked++;
+    if ((pglVertex4hvNV = (PFNGLVERTEX4HVNVPROC) __GLeeGetProcAddress("glVertex4hvNV"))!=0) nLinked++;
+    if ((pglNormal3hNV = (PFNGLNORMAL3HNVPROC) __GLeeGetProcAddress("glNormal3hNV"))!=0) nLinked++;
+    if ((pglNormal3hvNV = (PFNGLNORMAL3HVNVPROC) __GLeeGetProcAddress("glNormal3hvNV"))!=0) nLinked++;
+    if ((pglColor3hNV = (PFNGLCOLOR3HNVPROC) __GLeeGetProcAddress("glColor3hNV"))!=0) nLinked++;
+    if ((pglColor3hvNV = (PFNGLCOLOR3HVNVPROC) __GLeeGetProcAddress("glColor3hvNV"))!=0) nLinked++;
+    if ((pglColor4hNV = (PFNGLCOLOR4HNVPROC) __GLeeGetProcAddress("glColor4hNV"))!=0) nLinked++;
+    if ((pglColor4hvNV = (PFNGLCOLOR4HVNVPROC) __GLeeGetProcAddress("glColor4hvNV"))!=0) nLinked++;
+    if ((pglTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC) __GLeeGetProcAddress("glTexCoord1hNV"))!=0) nLinked++;
+    if ((pglTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC) __GLeeGetProcAddress("glTexCoord1hvNV"))!=0) nLinked++;
+    if ((pglTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC) __GLeeGetProcAddress("glTexCoord2hNV"))!=0) nLinked++;
+    if ((pglTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC) __GLeeGetProcAddress("glTexCoord2hvNV"))!=0) nLinked++;
+    if ((pglTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC) __GLeeGetProcAddress("glTexCoord3hNV"))!=0) nLinked++;
+    if ((pglTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC) __GLeeGetProcAddress("glTexCoord3hvNV"))!=0) nLinked++;
+    if ((pglTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC) __GLeeGetProcAddress("glTexCoord4hNV"))!=0) nLinked++;
+    if ((pglTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC) __GLeeGetProcAddress("glTexCoord4hvNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC) __GLeeGetProcAddress("glMultiTexCoord1hNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord1hvNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC) __GLeeGetProcAddress("glMultiTexCoord2hNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord2hvNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC) __GLeeGetProcAddress("glMultiTexCoord3hNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord3hvNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC) __GLeeGetProcAddress("glMultiTexCoord4hNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord4hvNV"))!=0) nLinked++;
+    if ((pglFogCoordhNV = (PFNGLFOGCOORDHNVPROC) __GLeeGetProcAddress("glFogCoordhNV"))!=0) nLinked++;
+    if ((pglFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC) __GLeeGetProcAddress("glFogCoordhvNV"))!=0) nLinked++;
+    if ((pglSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC) __GLeeGetProcAddress("glSecondaryColor3hNV"))!=0) nLinked++;
+    if ((pglSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC) __GLeeGetProcAddress("glSecondaryColor3hvNV"))!=0) nLinked++;
+    if ((pglVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC) __GLeeGetProcAddress("glVertexWeighthNV"))!=0) nLinked++;
+    if ((pglVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC) __GLeeGetProcAddress("glVertexWeighthvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC) __GLeeGetProcAddress("glVertexAttrib1hNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC) __GLeeGetProcAddress("glVertexAttrib1hvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC) __GLeeGetProcAddress("glVertexAttrib2hNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC) __GLeeGetProcAddress("glVertexAttrib2hvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC) __GLeeGetProcAddress("glVertexAttrib3hNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC) __GLeeGetProcAddress("glVertexAttrib3hvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC) __GLeeGetProcAddress("glVertexAttrib4hNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC) __GLeeGetProcAddress("glVertexAttrib4hvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC) __GLeeGetProcAddress("glVertexAttribs1hvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC) __GLeeGetProcAddress("glVertexAttribs2hvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC) __GLeeGetProcAddress("glVertexAttribs3hvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC) __GLeeGetProcAddress("glVertexAttribs4hvNV"))!=0) nLinked++;
+#endif
+    if (nLinked==46) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_pixel_data_range(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_pixel_data_range
+    if ((pglPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC) __GLeeGetProcAddress("glPixelDataRangeNV"))!=0) nLinked++;
+    if ((pglFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC) __GLeeGetProcAddress("glFlushPixelDataRangeNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_primitive_restart(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_primitive_restart
+    if ((pglPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC) __GLeeGetProcAddress("glPrimitiveRestartNV"))!=0) nLinked++;
+    if ((pglPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC) __GLeeGetProcAddress("glPrimitiveRestartIndexNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_texture_expand_normal(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program2(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_map_object_buffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_map_object_buffer
+    if ((pglMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glMapObjectBufferATI"))!=0) nLinked++;
+    if ((pglUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glUnmapObjectBufferATI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_separate_stencil(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_separate_stencil
+    if ((pglStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC) __GLeeGetProcAddress("glStencilOpSeparateATI"))!=0) nLinked++;
+    if ((pglStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC) __GLeeGetProcAddress("glStencilFuncSeparateATI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_vertex_attrib_array_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_vertex_attrib_array_object
+    if ((pglVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) __GLeeGetProcAddress("glVertexAttribArrayObjectATI"))!=0) nLinked++;
+    if ((pglGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetVertexAttribArrayObjectfvATI"))!=0) nLinked++;
+    if ((pglGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetVertexAttribArrayObjectivATI"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_OES_read_format(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_depth_bounds_test(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_depth_bounds_test
+    if ((pglDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC) __GLeeGetProcAddress("glDepthBoundsEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_mirror_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_blend_equation_separate(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_blend_equation_separate
+    if ((pglBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC) __GLeeGetProcAddress("glBlendEquationSeparateEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_MESA_pack_invert(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_MESA_ycbcr_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_pixel_buffer_object(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_fragment_program_option(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_fragment_program2(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program2_option(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_framebuffer_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_framebuffer_object
+    if ((pglIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glIsRenderbufferEXT"))!=0) nLinked++;
+    if ((pglBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glBindRenderbufferEXT"))!=0) nLinked++;
+    if ((pglDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC) __GLeeGetProcAddress("glDeleteRenderbuffersEXT"))!=0) nLinked++;
+    if ((pglGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC) __GLeeGetProcAddress("glGenRenderbuffersEXT"))!=0) nLinked++;
+    if ((pglRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC) __GLeeGetProcAddress("glRenderbufferStorageEXT"))!=0) nLinked++;
+    if ((pglGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetRenderbufferParameterivEXT"))!=0) nLinked++;
+    if ((pglIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glIsFramebufferEXT"))!=0) nLinked++;
+    if ((pglBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glBindFramebufferEXT"))!=0) nLinked++;
+    if ((pglDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) __GLeeGetProcAddress("glDeleteFramebuffersEXT"))!=0) nLinked++;
+    if ((pglGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) __GLeeGetProcAddress("glGenFramebuffersEXT"))!=0) nLinked++;
+    if ((pglCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) __GLeeGetProcAddress("glCheckFramebufferStatusEXT"))!=0) nLinked++;
+    if ((pglFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture1DEXT"))!=0) nLinked++;
+    if ((pglFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture2DEXT"))!=0) nLinked++;
+    if ((pglFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture3DEXT"))!=0) nLinked++;
+    if ((pglFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glFramebufferRenderbufferEXT"))!=0) nLinked++;
+    if ((pglGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetFramebufferAttachmentParameterivEXT"))!=0) nLinked++;
+    if ((pglGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC) __GLeeGetProcAddress("glGenerateMipmapEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==17) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_GREMEDY_string_marker(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_GREMEDY_string_marker
+    if ((pglStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC) __GLeeGetProcAddress("glStringMarkerGREMEDY"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_Cg_shader(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_timer_query(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_timer_query
+    if ((pglGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC) __GLeeGetProcAddress("glGetQueryObjecti64vEXT"))!=0) nLinked++;
+    if ((pglGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC) __GLeeGetProcAddress("glGetQueryObjectui64vEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_buffer_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture_buffer_object
+    if ((pglTexBufferEXT = (PFNGLTEXBUFFEREXTPROC) __GLeeGetProcAddress("glTexBufferEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_gpu_shader4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_gpu_shader4
+    if ((pglGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC) __GLeeGetProcAddress("glGetUniformuivEXT"))!=0) nLinked++;
+    if ((pglBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC) __GLeeGetProcAddress("glBindFragDataLocationEXT"))!=0) nLinked++;
+    if ((pglGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC) __GLeeGetProcAddress("glGetFragDataLocationEXT"))!=0) nLinked++;
+    if ((pglUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC) __GLeeGetProcAddress("glUniform1uiEXT"))!=0) nLinked++;
+    if ((pglUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC) __GLeeGetProcAddress("glUniform2uiEXT"))!=0) nLinked++;
+    if ((pglUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC) __GLeeGetProcAddress("glUniform3uiEXT"))!=0) nLinked++;
+    if ((pglUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC) __GLeeGetProcAddress("glUniform4uiEXT"))!=0) nLinked++;
+    if ((pglUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC) __GLeeGetProcAddress("glUniform1uivEXT"))!=0) nLinked++;
+    if ((pglUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC) __GLeeGetProcAddress("glUniform2uivEXT"))!=0) nLinked++;
+    if ((pglUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC) __GLeeGetProcAddress("glUniform3uivEXT"))!=0) nLinked++;
+    if ((pglUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC) __GLeeGetProcAddress("glUniform4uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC) __GLeeGetProcAddress("glVertexAttribI1iEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC) __GLeeGetProcAddress("glVertexAttribI2iEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC) __GLeeGetProcAddress("glVertexAttribI3iEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC) __GLeeGetProcAddress("glVertexAttribI4iEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC) __GLeeGetProcAddress("glVertexAttribI1uiEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC) __GLeeGetProcAddress("glVertexAttribI2uiEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC) __GLeeGetProcAddress("glVertexAttribI3uiEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC) __GLeeGetProcAddress("glVertexAttribI4uiEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC) __GLeeGetProcAddress("glVertexAttribI1ivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC) __GLeeGetProcAddress("glVertexAttribI2ivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC) __GLeeGetProcAddress("glVertexAttribI3ivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4ivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC) __GLeeGetProcAddress("glVertexAttribI1uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC) __GLeeGetProcAddress("glVertexAttribI2uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC) __GLeeGetProcAddress("glVertexAttribI3uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4bvEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4svEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4ubvEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4usvEXT"))!=0) nLinked++;
+    if ((pglVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC) __GLeeGetProcAddress("glVertexAttribIPointerEXT"))!=0) nLinked++;
+    if ((pglGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC) __GLeeGetProcAddress("glGetVertexAttribIivEXT"))!=0) nLinked++;
+    if ((pglGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC) __GLeeGetProcAddress("glGetVertexAttribIuivEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==34) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_geometry_shader4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_geometry_shader4
+    if ((pglProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC) __GLeeGetProcAddress("glProgramParameteriEXT"))!=0) nLinked++;
+    if ((pglFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC) __GLeeGetProcAddress("glFramebufferTextureEXT"))!=0) nLinked++;
+    if ((pglFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) __GLeeGetProcAddress("glFramebufferTextureLayerEXT"))!=0) nLinked++;
+    if ((pglFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) __GLeeGetProcAddress("glFramebufferTextureFaceEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_bindable_uniform(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_bindable_uniform
+    if ((pglUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC) __GLeeGetProcAddress("glUniformBufferEXT"))!=0) nLinked++;
+    if ((pglGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC) __GLeeGetProcAddress("glGetUniformBufferSizeEXT"))!=0) nLinked++;
+    if ((pglGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC) __GLeeGetProcAddress("glGetUniformOffsetEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_framebuffer_sRGB(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_shared_exponent(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_packed_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_array(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_integer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture_integer
+    if ((pglTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glTexParameterIivEXT"))!=0) nLinked++;
+    if ((pglTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glTexParameterIuivEXT"))!=0) nLinked++;
+    if ((pglGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glGetTexParameterIivEXT"))!=0) nLinked++;
+    if ((pglGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glGetTexParameterIuivEXT"))!=0) nLinked++;
+    if ((pglClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC) __GLeeGetProcAddress("glClearColorIiEXT"))!=0) nLinked++;
+    if ((pglClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC) __GLeeGetProcAddress("glClearColorIuiEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_depth_buffer_float(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_depth_buffer_float
+    if ((pglDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC) __GLeeGetProcAddress("glDepthRangedNV"))!=0) nLinked++;
+    if ((pglClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC) __GLeeGetProcAddress("glClearDepthdNV"))!=0) nLinked++;
+    if ((pglDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC) __GLeeGetProcAddress("glDepthBoundsdNV"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_compression_latc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_transform_feedback(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_transform_feedback
+    if ((pglBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glBeginTransformFeedbackNV"))!=0) nLinked++;
+    if ((pglEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glEndTransformFeedbackNV"))!=0) nLinked++;
+    if ((pglTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) __GLeeGetProcAddress("glTransformFeedbackAttribsNV"))!=0) nLinked++;
+    if ((pglBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC) __GLeeGetProcAddress("glBindBufferRangeNV"))!=0) nLinked++;
+    if ((pglBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC) __GLeeGetProcAddress("glBindBufferOffsetNV"))!=0) nLinked++;
+    if ((pglBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC) __GLeeGetProcAddress("glBindBufferBaseNV"))!=0) nLinked++;
+    if ((pglTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) __GLeeGetProcAddress("glTransformFeedbackVaryingsNV"))!=0) nLinked++;
+    if ((pglActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC) __GLeeGetProcAddress("glActiveVaryingNV"))!=0) nLinked++;
+    if ((pglGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC) __GLeeGetProcAddress("glGetVaryingLocationNV"))!=0) nLinked++;
+    if ((pglGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC) __GLeeGetProcAddress("glGetActiveVaryingNV"))!=0) nLinked++;
+    if ((pglGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) __GLeeGetProcAddress("glGetTransformFeedbackVaryingNV"))!=0) nLinked++;
+#endif
+    if (nLinked==11) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_geometry_program4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_geometry_program4
+    if ((pglProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC) __GLeeGetProcAddress("glProgramVertexLimitNV"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_gpu_program4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_gpu_program4
+    if ((pglProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC) __GLeeGetProcAddress("glProgramLocalParameterI4iNV"))!=0) nLinked++;
+    if ((pglProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) __GLeeGetProcAddress("glProgramLocalParameterI4ivNV"))!=0) nLinked++;
+    if ((pglProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) __GLeeGetProcAddress("glProgramLocalParametersI4ivNV"))!=0) nLinked++;
+    if ((pglProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) __GLeeGetProcAddress("glProgramLocalParameterI4uiNV"))!=0) nLinked++;
+    if ((pglProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) __GLeeGetProcAddress("glProgramLocalParameterI4uivNV"))!=0) nLinked++;
+    if ((pglProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) __GLeeGetProcAddress("glProgramLocalParametersI4uivNV"))!=0) nLinked++;
+    if ((pglProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC) __GLeeGetProcAddress("glProgramEnvParameterI4iNV"))!=0) nLinked++;
+    if ((pglProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC) __GLeeGetProcAddress("glProgramEnvParameterI4ivNV"))!=0) nLinked++;
+    if ((pglProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) __GLeeGetProcAddress("glProgramEnvParametersI4ivNV"))!=0) nLinked++;
+    if ((pglProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC) __GLeeGetProcAddress("glProgramEnvParameterI4uiNV"))!=0) nLinked++;
+    if ((pglProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) __GLeeGetProcAddress("glProgramEnvParameterI4uivNV"))!=0) nLinked++;
+    if ((pglProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) __GLeeGetProcAddress("glProgramEnvParametersI4uivNV"))!=0) nLinked++;
+    if ((pglGetProgramLocalParameterIivNV = (PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) __GLeeGetProcAddress("glGetProgramLocalParameterIivNV"))!=0) nLinked++;
+    if ((pglGetProgramLocalParameterIuivNV = (PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) __GLeeGetProcAddress("glGetProgramLocalParameterIuivNV"))!=0) nLinked++;
+    if ((pglGetProgramEnvParameterIivNV = (PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) __GLeeGetProcAddress("glGetProgramEnvParameterIivNV"))!=0) nLinked++;
+    if ((pglGetProgramEnvParameterIuivNV = (PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) __GLeeGetProcAddress("glGetProgramEnvParameterIuivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==16) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_framebuffer_multisample_coverage(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_framebuffer_multisample_coverage
+    if ((pglRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) __GLeeGetProcAddress("glRenderbufferStorageMultisampleCoverageNV"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_framebuffer_multisample(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_framebuffer_multisample
+    if ((pglRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) __GLeeGetProcAddress("glRenderbufferStorageMultisampleEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_framebuffer_blit(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_framebuffer_blit
+    if ((pglBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glBlitFramebufferEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_compression_rgtc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_color_matrix(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_texture_select(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INGR_blend_func_separate(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_INGR_blend_func_separate
+    if ((pglBlendFuncSeparateINGR = (PFNGLBLENDFUNCSEPARATEINGRPROC) __GLeeGetProcAddress("glBlendFuncSeparateINGR"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_depth_pass_instrument(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_igloo_interface(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_igloo_interface
+    if ((pglIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC) __GLeeGetProcAddress("glIglooInterfaceSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_draw_buffers2(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_draw_buffers2
+    if ((pglColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC) __GLeeGetProcAddress("glColorMaskIndexedEXT"))!=0) nLinked++;
+    if ((pglGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetBooleanIndexedvEXT"))!=0) nLinked++;
+    if ((pglGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetIntegerIndexedvEXT"))!=0) nLinked++;
+    if ((pglEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC) __GLeeGetProcAddress("glEnableIndexedEXT"))!=0) nLinked++;
+    if ((pglDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC) __GLeeGetProcAddress("glDisableIndexedEXT"))!=0) nLinked++;
+    if ((pglIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC) __GLeeGetProcAddress("glIsEnabledIndexedEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_parameter_buffer_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_parameter_buffer_object
+    if ((pglProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersfvNV"))!=0) nLinked++;
+    if ((pglProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersIivNV"))!=0) nLinked++;
+    if ((pglProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersIuivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_draw_instanced(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_draw_instanced
+    if ((pglDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC) __GLeeGetProcAddress("glDrawArraysInstancedEXT"))!=0) nLinked++;
+    if ((pglDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC) __GLeeGetProcAddress("glDrawElementsInstancedEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_fragment_lighting(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_fragment_lighting
+    if ((pglFragmentLightModeliEXT = (PFNGLFRAGMENTLIGHTMODELIEXTPROC) __GLeeGetProcAddress("glFragmentLightModeliEXT"))!=0) nLinked++;
+    if ((pglFragmentLightModelfEXT = (PFNGLFRAGMENTLIGHTMODELFEXTPROC) __GLeeGetProcAddress("glFragmentLightModelfEXT"))!=0) nLinked++;
+    if ((pglFragmentLightModelivEXT = (PFNGLFRAGMENTLIGHTMODELIVEXTPROC) __GLeeGetProcAddress("glFragmentLightModelivEXT"))!=0) nLinked++;
+    if ((pglFragmentLightModelfvEXT = (PFNGLFRAGMENTLIGHTMODELFVEXTPROC) __GLeeGetProcAddress("glFragmentLightModelfvEXT"))!=0) nLinked++;
+    if ((pglFragmentLightiEXT = (PFNGLFRAGMENTLIGHTIEXTPROC) __GLeeGetProcAddress("glFragmentLightiEXT"))!=0) nLinked++;
+    if ((pglFragmentLightfEXT = (PFNGLFRAGMENTLIGHTFEXTPROC) __GLeeGetProcAddress("glFragmentLightfEXT"))!=0) nLinked++;
+    if ((pglFragmentLightivEXT = (PFNGLFRAGMENTLIGHTIVEXTPROC) __GLeeGetProcAddress("glFragmentLightivEXT"))!=0) nLinked++;
+    if ((pglFragmentLightfvEXT = (PFNGLFRAGMENTLIGHTFVEXTPROC) __GLeeGetProcAddress("glFragmentLightfvEXT"))!=0) nLinked++;
+    if ((pglGetFragmentLightivEXT = (PFNGLGETFRAGMENTLIGHTIVEXTPROC) __GLeeGetProcAddress("glGetFragmentLightivEXT"))!=0) nLinked++;
+    if ((pglGetFragmentLightfvEXT = (PFNGLGETFRAGMENTLIGHTFVEXTPROC) __GLeeGetProcAddress("glGetFragmentLightfvEXT"))!=0) nLinked++;
+    if ((pglFragmentMaterialfEXT = (PFNGLFRAGMENTMATERIALFEXTPROC) __GLeeGetProcAddress("glFragmentMaterialfEXT"))!=0) nLinked++;
+    if ((pglFragmentMaterialiEXT = (PFNGLFRAGMENTMATERIALIEXTPROC) __GLeeGetProcAddress("glFragmentMaterialiEXT"))!=0) nLinked++;
+    if ((pglFragmentMaterialfvEXT = (PFNGLFRAGMENTMATERIALFVEXTPROC) __GLeeGetProcAddress("glFragmentMaterialfvEXT"))!=0) nLinked++;
+    if ((pglFragmentMaterialivEXT = (PFNGLFRAGMENTMATERIALIVEXTPROC) __GLeeGetProcAddress("glFragmentMaterialivEXT"))!=0) nLinked++;
+    if ((pglFragmentColorMaterialEXT = (PFNGLFRAGMENTCOLORMATERIALEXTPROC) __GLeeGetProcAddress("glFragmentColorMaterialEXT"))!=0) nLinked++;
+    if ((pglGetFragmentMaterialfvEXT = (PFNGLGETFRAGMENTMATERIALFVEXTPROC) __GLeeGetProcAddress("glGetFragmentMaterialfvEXT"))!=0) nLinked++;
+    if ((pglGetFragmentMaterialivEXT = (PFNGLGETFRAGMENTMATERIALIVEXTPROC) __GLeeGetProcAddress("glGetFragmentMaterialivEXT"))!=0) nLinked++;
+    if ((pglLightEnviEXT = (PFNGLLIGHTENVIEXTPROC) __GLeeGetProcAddress("glLightEnviEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==18) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_packed_depth_stencil(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_scene_marker(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_scene_marker
+    if ((pglBeginSceneEXT = (PFNGLBEGINSCENEEXTPROC) __GLeeGetProcAddress("glBeginSceneEXT"))!=0) nLinked++;
+    if ((pglEndSceneEXT = (PFNGLENDSCENEEXTPROC) __GLeeGetProcAddress("glEndSceneEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_stencil_clear_tag(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_compression_dxt1(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_env(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_sRGB(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_IBM_static_data(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_MESAX_texture_stack(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OES_byte_coordinates(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OES_compressed_paletted_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OES_single_precision(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_OES_single_precision
+    if ((pglDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC) __GLeeGetProcAddress("glDepthRangefOES"))!=0) nLinked++;
+    if ((pglFrustumfOES = (PFNGLFRUSTUMFOESPROC) __GLeeGetProcAddress("glFrustumfOES"))!=0) nLinked++;
+    if ((pglOrthofOES = (PFNGLORTHOFOESPROC) __GLeeGetProcAddress("glOrthofOES"))!=0) nLinked++;
+    if ((pglClipPlanefOES = (PFNGLCLIPPLANEFOESPROC) __GLeeGetProcAddress("glClipPlanefOES"))!=0) nLinked++;
+    if ((pglGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC) __GLeeGetProcAddress("glGetClipPlanefOES"))!=0) nLinked++;
+    if ((pglClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC) __GLeeGetProcAddress("glClearDepthfOES"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_pixel_texture_bits(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_texture_range(void) {return GLEE_LINK_COMPLETE;}
+
+GLEE_LINK_FUNCTION __GLeeGLLoadFunction[300];
+
+void initGLLoadFunctions(void)
+{
+    __GLeeGLLoadFunction[0]=__GLeeLink_GL_VERSION_1_2;
+    __GLeeGLLoadFunction[1]=__GLeeLink_GL_ARB_imaging;
+    __GLeeGLLoadFunction[2]=__GLeeLink_GL_VERSION_1_3;
+    __GLeeGLLoadFunction[3]=__GLeeLink_GL_VERSION_1_4;
+    __GLeeGLLoadFunction[4]=__GLeeLink_GL_VERSION_1_5;
+    __GLeeGLLoadFunction[5]=__GLeeLink_GL_VERSION_2_0;
+    __GLeeGLLoadFunction[6]=__GLeeLink_GL_VERSION_2_1;
+    __GLeeGLLoadFunction[7]=__GLeeLink_GL_ARB_multitexture;
+    __GLeeGLLoadFunction[8]=__GLeeLink_GL_ARB_transpose_matrix;
+    __GLeeGLLoadFunction[9]=__GLeeLink_GL_ARB_multisample;
+    __GLeeGLLoadFunction[10]=__GLeeLink_GL_ARB_texture_env_add;
+    __GLeeGLLoadFunction[11]=__GLeeLink_GL_ARB_texture_cube_map;
+    __GLeeGLLoadFunction[12]=__GLeeLink_GL_ARB_texture_compression;
+    __GLeeGLLoadFunction[13]=__GLeeLink_GL_ARB_texture_border_clamp;
+    __GLeeGLLoadFunction[14]=__GLeeLink_GL_ARB_point_parameters;
+    __GLeeGLLoadFunction[15]=__GLeeLink_GL_ARB_vertex_blend;
+    __GLeeGLLoadFunction[16]=__GLeeLink_GL_ARB_matrix_palette;
+    __GLeeGLLoadFunction[17]=__GLeeLink_GL_ARB_texture_env_combine;
+    __GLeeGLLoadFunction[18]=__GLeeLink_GL_ARB_texture_env_crossbar;
+    __GLeeGLLoadFunction[19]=__GLeeLink_GL_ARB_texture_env_dot3;
+    __GLeeGLLoadFunction[20]=__GLeeLink_GL_ARB_texture_mirrored_repeat;
+    __GLeeGLLoadFunction[21]=__GLeeLink_GL_ARB_depth_texture;
+    __GLeeGLLoadFunction[22]=__GLeeLink_GL_ARB_shadow;
+    __GLeeGLLoadFunction[23]=__GLeeLink_GL_ARB_shadow_ambient;
+    __GLeeGLLoadFunction[24]=__GLeeLink_GL_ARB_window_pos;
+    __GLeeGLLoadFunction[25]=__GLeeLink_GL_ARB_vertex_program;
+    __GLeeGLLoadFunction[26]=__GLeeLink_GL_ARB_fragment_program;
+    __GLeeGLLoadFunction[27]=__GLeeLink_GL_ARB_vertex_buffer_object;
+    __GLeeGLLoadFunction[28]=__GLeeLink_GL_ARB_occlusion_query;
+    __GLeeGLLoadFunction[29]=__GLeeLink_GL_ARB_shader_objects;
+    __GLeeGLLoadFunction[30]=__GLeeLink_GL_ARB_vertex_shader;
+    __GLeeGLLoadFunction[31]=__GLeeLink_GL_ARB_fragment_shader;
+    __GLeeGLLoadFunction[32]=__GLeeLink_GL_ARB_shading_language_100;
+    __GLeeGLLoadFunction[33]=__GLeeLink_GL_ARB_texture_non_power_of_two;
+    __GLeeGLLoadFunction[34]=__GLeeLink_GL_ARB_point_sprite;
+    __GLeeGLLoadFunction[35]=__GLeeLink_GL_ARB_fragment_program_shadow;
+    __GLeeGLLoadFunction[36]=__GLeeLink_GL_ARB_draw_buffers;
+    __GLeeGLLoadFunction[37]=__GLeeLink_GL_ARB_texture_rectangle;
+    __GLeeGLLoadFunction[38]=__GLeeLink_GL_ARB_color_buffer_float;
+    __GLeeGLLoadFunction[39]=__GLeeLink_GL_ARB_half_float_pixel;
+    __GLeeGLLoadFunction[40]=__GLeeLink_GL_ARB_texture_float;
+    __GLeeGLLoadFunction[41]=__GLeeLink_GL_ARB_pixel_buffer_object;
+    __GLeeGLLoadFunction[42]=__GLeeLink_GL_EXT_abgr;
+    __GLeeGLLoadFunction[43]=__GLeeLink_GL_EXT_blend_color;
+    __GLeeGLLoadFunction[44]=__GLeeLink_GL_EXT_polygon_offset;
+    __GLeeGLLoadFunction[45]=__GLeeLink_GL_EXT_texture;
+    __GLeeGLLoadFunction[46]=__GLeeLink_GL_EXT_texture3D;
+    __GLeeGLLoadFunction[47]=__GLeeLink_GL_SGIS_texture_filter4;
+    __GLeeGLLoadFunction[48]=__GLeeLink_GL_EXT_subtexture;
+    __GLeeGLLoadFunction[49]=__GLeeLink_GL_EXT_copy_texture;
+    __GLeeGLLoadFunction[50]=__GLeeLink_GL_EXT_histogram;
+    __GLeeGLLoadFunction[51]=__GLeeLink_GL_EXT_convolution;
+    __GLeeGLLoadFunction[52]=__GLeeLink_GL_SGI_color_matrix;
+    __GLeeGLLoadFunction[53]=__GLeeLink_GL_SGI_color_table;
+    __GLeeGLLoadFunction[54]=__GLeeLink_GL_SGIS_pixel_texture;
+    __GLeeGLLoadFunction[55]=__GLeeLink_GL_SGIX_pixel_texture;
+    __GLeeGLLoadFunction[56]=__GLeeLink_GL_SGIS_texture4D;
+    __GLeeGLLoadFunction[57]=__GLeeLink_GL_SGI_texture_color_table;
+    __GLeeGLLoadFunction[58]=__GLeeLink_GL_EXT_cmyka;
+    __GLeeGLLoadFunction[59]=__GLeeLink_GL_EXT_texture_object;
+    __GLeeGLLoadFunction[60]=__GLeeLink_GL_SGIS_detail_texture;
+    __GLeeGLLoadFunction[61]=__GLeeLink_GL_SGIS_sharpen_texture;
+    __GLeeGLLoadFunction[62]=__GLeeLink_GL_EXT_packed_pixels;
+    __GLeeGLLoadFunction[63]=__GLeeLink_GL_SGIS_texture_lod;
+    __GLeeGLLoadFunction[64]=__GLeeLink_GL_SGIS_multisample;
+    __GLeeGLLoadFunction[65]=__GLeeLink_GL_EXT_rescale_normal;
+    __GLeeGLLoadFunction[66]=__GLeeLink_GL_EXT_vertex_array;
+    __GLeeGLLoadFunction[67]=__GLeeLink_GL_EXT_misc_attribute;
+    __GLeeGLLoadFunction[68]=__GLeeLink_GL_SGIS_generate_mipmap;
+    __GLeeGLLoadFunction[69]=__GLeeLink_GL_SGIX_clipmap;
+    __GLeeGLLoadFunction[70]=__GLeeLink_GL_SGIX_shadow;
+    __GLeeGLLoadFunction[71]=__GLeeLink_GL_SGIS_texture_edge_clamp;
+    __GLeeGLLoadFunction[72]=__GLeeLink_GL_SGIS_texture_border_clamp;
+    __GLeeGLLoadFunction[73]=__GLeeLink_GL_EXT_blend_minmax;
+    __GLeeGLLoadFunction[74]=__GLeeLink_GL_EXT_blend_subtract;
+    __GLeeGLLoadFunction[75]=__GLeeLink_GL_EXT_blend_logic_op;
+    __GLeeGLLoadFunction[76]=__GLeeLink_GL_SGIX_interlace;
+    __GLeeGLLoadFunction[77]=__GLeeLink_GL_SGIX_pixel_tiles;
+    __GLeeGLLoadFunction[78]=__GLeeLink_GL_SGIS_texture_select;
+    __GLeeGLLoadFunction[79]=__GLeeLink_GL_SGIX_sprite;
+    __GLeeGLLoadFunction[80]=__GLeeLink_GL_SGIX_texture_multi_buffer;
+    __GLeeGLLoadFunction[81]=__GLeeLink_GL_EXT_point_parameters;
+    __GLeeGLLoadFunction[82]=__GLeeLink_GL_SGIS_point_parameters;
+    __GLeeGLLoadFunction[83]=__GLeeLink_GL_SGIX_instruments;
+    __GLeeGLLoadFunction[84]=__GLeeLink_GL_SGIX_texture_scale_bias;
+    __GLeeGLLoadFunction[85]=__GLeeLink_GL_SGIX_framezoom;
+    __GLeeGLLoadFunction[86]=__GLeeLink_GL_SGIX_tag_sample_buffer;
+    __GLeeGLLoadFunction[87]=__GLeeLink_GL_FfdMaskSGIX;
+    __GLeeGLLoadFunction[88]=__GLeeLink_GL_SGIX_polynomial_ffd;
+    __GLeeGLLoadFunction[89]=__GLeeLink_GL_SGIX_reference_plane;
+    __GLeeGLLoadFunction[90]=__GLeeLink_GL_SGIX_flush_raster;
+    __GLeeGLLoadFunction[91]=__GLeeLink_GL_SGIX_depth_texture;
+    __GLeeGLLoadFunction[92]=__GLeeLink_GL_SGIS_fog_function;
+    __GLeeGLLoadFunction[93]=__GLeeLink_GL_SGIX_fog_offset;
+    __GLeeGLLoadFunction[94]=__GLeeLink_GL_HP_image_transform;
+    __GLeeGLLoadFunction[95]=__GLeeLink_GL_HP_convolution_border_modes;
+    __GLeeGLLoadFunction[96]=__GLeeLink_GL_INGR_palette_buffer;
+    __GLeeGLLoadFunction[97]=__GLeeLink_GL_SGIX_texture_add_env;
+    __GLeeGLLoadFunction[98]=__GLeeLink_GL_EXT_color_subtable;
+    __GLeeGLLoadFunction[99]=__GLeeLink_GL_PGI_vertex_hints;
+    __GLeeGLLoadFunction[100]=__GLeeLink_GL_PGI_misc_hints;
+    __GLeeGLLoadFunction[101]=__GLeeLink_GL_EXT_paletted_texture;
+    __GLeeGLLoadFunction[102]=__GLeeLink_GL_EXT_clip_volume_hint;
+    __GLeeGLLoadFunction[103]=__GLeeLink_GL_SGIX_list_priority;
+    __GLeeGLLoadFunction[104]=__GLeeLink_GL_SGIX_ir_instrument1;
+    __GLeeGLLoadFunction[105]=__GLeeLink_GL_SGIX_calligraphic_fragment;
+    __GLeeGLLoadFunction[106]=__GLeeLink_GL_SGIX_texture_lod_bias;
+    __GLeeGLLoadFunction[107]=__GLeeLink_GL_SGIX_shadow_ambient;
+    __GLeeGLLoadFunction[108]=__GLeeLink_GL_EXT_index_texture;
+    __GLeeGLLoadFunction[109]=__GLeeLink_GL_EXT_index_material;
+    __GLeeGLLoadFunction[110]=__GLeeLink_GL_EXT_index_func;
+    __GLeeGLLoadFunction[111]=__GLeeLink_GL_EXT_index_array_formats;
+    __GLeeGLLoadFunction[112]=__GLeeLink_GL_EXT_compiled_vertex_array;
+    __GLeeGLLoadFunction[113]=__GLeeLink_GL_EXT_cull_vertex;
+    __GLeeGLLoadFunction[114]=__GLeeLink_GL_SGIX_ycrcb;
+    __GLeeGLLoadFunction[115]=__GLeeLink_GL_SGIX_fragment_lighting;
+    __GLeeGLLoadFunction[116]=__GLeeLink_GL_IBM_rasterpos_clip;
+    __GLeeGLLoadFunction[117]=__GLeeLink_GL_HP_texture_lighting;
+    __GLeeGLLoadFunction[118]=__GLeeLink_GL_EXT_draw_range_elements;
+    __GLeeGLLoadFunction[119]=__GLeeLink_GL_WIN_phong_shading;
+    __GLeeGLLoadFunction[120]=__GLeeLink_GL_WIN_specular_fog;
+    __GLeeGLLoadFunction[121]=__GLeeLink_GL_EXT_light_texture;
+    __GLeeGLLoadFunction[122]=__GLeeLink_GL_SGIX_blend_alpha_minmax;
+    __GLeeGLLoadFunction[123]=__GLeeLink_GL_SGIX_impact_pixel_texture;
+    __GLeeGLLoadFunction[124]=__GLeeLink_GL_EXT_bgra;
+    __GLeeGLLoadFunction[125]=__GLeeLink_GL_SGIX_async;
+    __GLeeGLLoadFunction[126]=__GLeeLink_GL_SGIX_async_pixel;
+    __GLeeGLLoadFunction[127]=__GLeeLink_GL_SGIX_async_histogram;
+    __GLeeGLLoadFunction[128]=__GLeeLink_GL_INTEL_texture_scissor;
+    __GLeeGLLoadFunction[129]=__GLeeLink_GL_INTEL_parallel_arrays;
+    __GLeeGLLoadFunction[130]=__GLeeLink_GL_HP_occlusion_test;
+    __GLeeGLLoadFunction[131]=__GLeeLink_GL_EXT_pixel_transform;
+    __GLeeGLLoadFunction[132]=__GLeeLink_GL_EXT_pixel_transform_color_table;
+    __GLeeGLLoadFunction[133]=__GLeeLink_GL_EXT_shared_texture_palette;
+    __GLeeGLLoadFunction[134]=__GLeeLink_GL_EXT_separate_specular_color;
+    __GLeeGLLoadFunction[135]=__GLeeLink_GL_EXT_secondary_color;
+    __GLeeGLLoadFunction[136]=__GLeeLink_GL_EXT_texture_perturb_normal;
+    __GLeeGLLoadFunction[137]=__GLeeLink_GL_EXT_multi_draw_arrays;
+    __GLeeGLLoadFunction[138]=__GLeeLink_GL_EXT_fog_coord;
+    __GLeeGLLoadFunction[139]=__GLeeLink_GL_REND_screen_coordinates;
+    __GLeeGLLoadFunction[140]=__GLeeLink_GL_EXT_coordinate_frame;
+    __GLeeGLLoadFunction[141]=__GLeeLink_GL_EXT_texture_env_combine;
+    __GLeeGLLoadFunction[142]=__GLeeLink_GL_APPLE_specular_vector;
+    __GLeeGLLoadFunction[143]=__GLeeLink_GL_APPLE_transform_hint;
+    __GLeeGLLoadFunction[144]=__GLeeLink_GL_SGIX_fog_scale;
+    __GLeeGLLoadFunction[145]=__GLeeLink_GL_SUNX_constant_data;
+    __GLeeGLLoadFunction[146]=__GLeeLink_GL_SUN_global_alpha;
+    __GLeeGLLoadFunction[147]=__GLeeLink_GL_SUN_triangle_list;
+    __GLeeGLLoadFunction[148]=__GLeeLink_GL_SUN_vertex;
+    __GLeeGLLoadFunction[149]=__GLeeLink_GL_EXT_blend_func_separate;
+    __GLeeGLLoadFunction[150]=__GLeeLink_GL_INGR_color_clamp;
+    __GLeeGLLoadFunction[151]=__GLeeLink_GL_INGR_interlace_read;
+    __GLeeGLLoadFunction[152]=__GLeeLink_GL_EXT_stencil_wrap;
+    __GLeeGLLoadFunction[153]=__GLeeLink_GL_EXT_422_pixels;
+    __GLeeGLLoadFunction[154]=__GLeeLink_GL_NV_texgen_reflection;
+    __GLeeGLLoadFunction[155]=__GLeeLink_GL_EXT_texture_cube_map;
+    __GLeeGLLoadFunction[156]=__GLeeLink_GL_SUN_convolution_border_modes;
+    __GLeeGLLoadFunction[157]=__GLeeLink_GL_EXT_texture_env_add;
+    __GLeeGLLoadFunction[158]=__GLeeLink_GL_EXT_texture_lod_bias;
+    __GLeeGLLoadFunction[159]=__GLeeLink_GL_EXT_texture_filter_anisotropic;
+    __GLeeGLLoadFunction[160]=__GLeeLink_GL_EXT_vertex_weighting;
+    __GLeeGLLoadFunction[161]=__GLeeLink_GL_NV_light_max_exponent;
+    __GLeeGLLoadFunction[162]=__GLeeLink_GL_NV_vertex_array_range;
+    __GLeeGLLoadFunction[163]=__GLeeLink_GL_NV_register_combiners;
+    __GLeeGLLoadFunction[164]=__GLeeLink_GL_NV_fog_distance;
+    __GLeeGLLoadFunction[165]=__GLeeLink_GL_NV_texgen_emboss;
+    __GLeeGLLoadFunction[166]=__GLeeLink_GL_NV_blend_square;
+    __GLeeGLLoadFunction[167]=__GLeeLink_GL_NV_texture_env_combine4;
+    __GLeeGLLoadFunction[168]=__GLeeLink_GL_MESA_resize_buffers;
+    __GLeeGLLoadFunction[169]=__GLeeLink_GL_MESA_window_pos;
+    __GLeeGLLoadFunction[170]=__GLeeLink_GL_EXT_texture_compression_s3tc;
+    __GLeeGLLoadFunction[171]=__GLeeLink_GL_IBM_cull_vertex;
+    __GLeeGLLoadFunction[172]=__GLeeLink_GL_IBM_multimode_draw_arrays;
+    __GLeeGLLoadFunction[173]=__GLeeLink_GL_IBM_vertex_array_lists;
+    __GLeeGLLoadFunction[174]=__GLeeLink_GL_SGIX_subsample;
+    __GLeeGLLoadFunction[175]=__GLeeLink_GL_SGIX_ycrcb_subsample;
+    __GLeeGLLoadFunction[176]=__GLeeLink_GL_SGIX_ycrcba;
+    __GLeeGLLoadFunction[177]=__GLeeLink_GL_SGI_depth_pass_instrument;
+    __GLeeGLLoadFunction[178]=__GLeeLink_GL_3DFX_texture_compression_FXT1;
+    __GLeeGLLoadFunction[179]=__GLeeLink_GL_3DFX_multisample;
+    __GLeeGLLoadFunction[180]=__GLeeLink_GL_3DFX_tbuffer;
+    __GLeeGLLoadFunction[181]=__GLeeLink_GL_EXT_multisample;
+    __GLeeGLLoadFunction[182]=__GLeeLink_GL_SGIX_vertex_preclip;
+    __GLeeGLLoadFunction[183]=__GLeeLink_GL_SGIX_convolution_accuracy;
+    __GLeeGLLoadFunction[184]=__GLeeLink_GL_SGIX_resample;
+    __GLeeGLLoadFunction[185]=__GLeeLink_GL_SGIS_point_line_texgen;
+    __GLeeGLLoadFunction[186]=__GLeeLink_GL_SGIS_texture_color_mask;
+    __GLeeGLLoadFunction[187]=__GLeeLink_GL_EXT_texture_env_dot3;
+    __GLeeGLLoadFunction[188]=__GLeeLink_GL_ATI_texture_mirror_once;
+    __GLeeGLLoadFunction[189]=__GLeeLink_GL_NV_fence;
+    __GLeeGLLoadFunction[190]=__GLeeLink_GL_IBM_texture_mirrored_repeat;
+    __GLeeGLLoadFunction[191]=__GLeeLink_GL_NV_evaluators;
+    __GLeeGLLoadFunction[192]=__GLeeLink_GL_NV_packed_depth_stencil;
+    __GLeeGLLoadFunction[193]=__GLeeLink_GL_NV_register_combiners2;
+    __GLeeGLLoadFunction[194]=__GLeeLink_GL_NV_texture_compression_vtc;
+    __GLeeGLLoadFunction[195]=__GLeeLink_GL_NV_texture_rectangle;
+    __GLeeGLLoadFunction[196]=__GLeeLink_GL_NV_texture_shader;
+    __GLeeGLLoadFunction[197]=__GLeeLink_GL_NV_texture_shader2;
+    __GLeeGLLoadFunction[198]=__GLeeLink_GL_NV_vertex_array_range2;
+    __GLeeGLLoadFunction[199]=__GLeeLink_GL_NV_vertex_program;
+    __GLeeGLLoadFunction[200]=__GLeeLink_GL_SGIX_texture_coordinate_clamp;
+    __GLeeGLLoadFunction[201]=__GLeeLink_GL_SGIX_scalebias_hint;
+    __GLeeGLLoadFunction[202]=__GLeeLink_GL_OML_interlace;
+    __GLeeGLLoadFunction[203]=__GLeeLink_GL_OML_subsample;
+    __GLeeGLLoadFunction[204]=__GLeeLink_GL_OML_resample;
+    __GLeeGLLoadFunction[205]=__GLeeLink_GL_NV_copy_depth_to_color;
+    __GLeeGLLoadFunction[206]=__GLeeLink_GL_ATI_envmap_bumpmap;
+    __GLeeGLLoadFunction[207]=__GLeeLink_GL_ATI_fragment_shader;
+    __GLeeGLLoadFunction[208]=__GLeeLink_GL_ATI_pn_triangles;
+    __GLeeGLLoadFunction[209]=__GLeeLink_GL_ATI_vertex_array_object;
+    __GLeeGLLoadFunction[210]=__GLeeLink_GL_EXT_vertex_shader;
+    __GLeeGLLoadFunction[211]=__GLeeLink_GL_ATI_vertex_streams;
+    __GLeeGLLoadFunction[212]=__GLeeLink_GL_ATI_element_array;
+    __GLeeGLLoadFunction[213]=__GLeeLink_GL_SUN_mesh_array;
+    __GLeeGLLoadFunction[214]=__GLeeLink_GL_SUN_slice_accum;
+    __GLeeGLLoadFunction[215]=__GLeeLink_GL_NV_multisample_filter_hint;
+    __GLeeGLLoadFunction[216]=__GLeeLink_GL_NV_depth_clamp;
+    __GLeeGLLoadFunction[217]=__GLeeLink_GL_NV_occlusion_query;
+    __GLeeGLLoadFunction[218]=__GLeeLink_GL_NV_point_sprite;
+    __GLeeGLLoadFunction[219]=__GLeeLink_GL_NV_texture_shader3;
+    __GLeeGLLoadFunction[220]=__GLeeLink_GL_NV_vertex_program1_1;
+    __GLeeGLLoadFunction[221]=__GLeeLink_GL_EXT_shadow_funcs;
+    __GLeeGLLoadFunction[222]=__GLeeLink_GL_EXT_stencil_two_side;
+    __GLeeGLLoadFunction[223]=__GLeeLink_GL_ATI_text_fragment_shader;
+    __GLeeGLLoadFunction[224]=__GLeeLink_GL_APPLE_client_storage;
+    __GLeeGLLoadFunction[225]=__GLeeLink_GL_APPLE_element_array;
+    __GLeeGLLoadFunction[226]=__GLeeLink_GL_APPLE_fence;
+    __GLeeGLLoadFunction[227]=__GLeeLink_GL_APPLE_vertex_array_object;
+    __GLeeGLLoadFunction[228]=__GLeeLink_GL_APPLE_vertex_array_range;
+    __GLeeGLLoadFunction[229]=__GLeeLink_GL_APPLE_ycbcr_422;
+    __GLeeGLLoadFunction[230]=__GLeeLink_GL_S3_s3tc;
+    __GLeeGLLoadFunction[231]=__GLeeLink_GL_ATI_draw_buffers;
+    __GLeeGLLoadFunction[232]=__GLeeLink_GL_ATI_pixel_format_float;
+    __GLeeGLLoadFunction[233]=__GLeeLink_GL_ATI_texture_env_combine3;
+    __GLeeGLLoadFunction[234]=__GLeeLink_GL_ATI_texture_float;
+    __GLeeGLLoadFunction[235]=__GLeeLink_GL_NV_float_buffer;
+    __GLeeGLLoadFunction[236]=__GLeeLink_GL_NV_fragment_program;
+    __GLeeGLLoadFunction[237]=__GLeeLink_GL_NV_half_float;
+    __GLeeGLLoadFunction[238]=__GLeeLink_GL_NV_pixel_data_range;
+    __GLeeGLLoadFunction[239]=__GLeeLink_GL_NV_primitive_restart;
+    __GLeeGLLoadFunction[240]=__GLeeLink_GL_NV_texture_expand_normal;
+    __GLeeGLLoadFunction[241]=__GLeeLink_GL_NV_vertex_program2;
+    __GLeeGLLoadFunction[242]=__GLeeLink_GL_ATI_map_object_buffer;
+    __GLeeGLLoadFunction[243]=__GLeeLink_GL_ATI_separate_stencil;
+    __GLeeGLLoadFunction[244]=__GLeeLink_GL_ATI_vertex_attrib_array_object;
+    __GLeeGLLoadFunction[245]=__GLeeLink_GL_OES_read_format;
+    __GLeeGLLoadFunction[246]=__GLeeLink_GL_EXT_depth_bounds_test;
+    __GLeeGLLoadFunction[247]=__GLeeLink_GL_EXT_texture_mirror_clamp;
+    __GLeeGLLoadFunction[248]=__GLeeLink_GL_EXT_blend_equation_separate;
+    __GLeeGLLoadFunction[249]=__GLeeLink_GL_MESA_pack_invert;
+    __GLeeGLLoadFunction[250]=__GLeeLink_GL_MESA_ycbcr_texture;
+    __GLeeGLLoadFunction[251]=__GLeeLink_GL_EXT_pixel_buffer_object;
+    __GLeeGLLoadFunction[252]=__GLeeLink_GL_NV_fragment_program_option;
+    __GLeeGLLoadFunction[253]=__GLeeLink_GL_NV_fragment_program2;
+    __GLeeGLLoadFunction[254]=__GLeeLink_GL_NV_vertex_program2_option;
+    __GLeeGLLoadFunction[255]=__GLeeLink_GL_NV_vertex_program3;
+    __GLeeGLLoadFunction[256]=__GLeeLink_GL_EXT_framebuffer_object;
+    __GLeeGLLoadFunction[257]=__GLeeLink_GL_GREMEDY_string_marker;
+    __GLeeGLLoadFunction[258]=__GLeeLink_GL_EXT_Cg_shader;
+    __GLeeGLLoadFunction[259]=__GLeeLink_GL_EXT_timer_query;
+    __GLeeGLLoadFunction[260]=__GLeeLink_GL_EXT_texture_buffer_object;
+    __GLeeGLLoadFunction[261]=__GLeeLink_GL_EXT_gpu_shader4;
+    __GLeeGLLoadFunction[262]=__GLeeLink_GL_EXT_geometry_shader4;
+    __GLeeGLLoadFunction[263]=__GLeeLink_GL_EXT_bindable_uniform;
+    __GLeeGLLoadFunction[264]=__GLeeLink_GL_EXT_framebuffer_sRGB;
+    __GLeeGLLoadFunction[265]=__GLeeLink_GL_EXT_texture_shared_exponent;
+    __GLeeGLLoadFunction[266]=__GLeeLink_GL_EXT_packed_float;
+    __GLeeGLLoadFunction[267]=__GLeeLink_GL_EXT_texture_array;
+    __GLeeGLLoadFunction[268]=__GLeeLink_GL_EXT_texture_integer;
+    __GLeeGLLoadFunction[269]=__GLeeLink_GL_NV_depth_buffer_float;
+    __GLeeGLLoadFunction[270]=__GLeeLink_GL_EXT_texture_compression_latc;
+    __GLeeGLLoadFunction[271]=__GLeeLink_GL_NV_transform_feedback;
+    __GLeeGLLoadFunction[272]=__GLeeLink_GL_NV_geometry_program4;
+    __GLeeGLLoadFunction[273]=__GLeeLink_GL_NV_gpu_program4;
+    __GLeeGLLoadFunction[274]=__GLeeLink_GL_NV_framebuffer_multisample_coverage;
+    __GLeeGLLoadFunction[275]=__GLeeLink_GL_EXT_framebuffer_multisample;
+    __GLeeGLLoadFunction[276]=__GLeeLink_GL_EXT_framebuffer_blit;
+    __GLeeGLLoadFunction[277]=__GLeeLink_GL_EXT_texture_compression_rgtc;
+    __GLeeGLLoadFunction[278]=__GLeeLink_GL_EXT_color_matrix;
+    __GLeeGLLoadFunction[279]=__GLeeLink_GL_SGIX_texture_select;
+    __GLeeGLLoadFunction[280]=__GLeeLink_GL_INGR_blend_func_separate;
+    __GLeeGLLoadFunction[281]=__GLeeLink_GL_SGIX_depth_pass_instrument;
+    __GLeeGLLoadFunction[282]=__GLeeLink_GL_SGIX_igloo_interface;
+    __GLeeGLLoadFunction[283]=__GLeeLink_GL_EXT_draw_buffers2;
+    __GLeeGLLoadFunction[284]=__GLeeLink_GL_NV_parameter_buffer_object;
+    __GLeeGLLoadFunction[285]=__GLeeLink_GL_EXT_draw_instanced;
+    __GLeeGLLoadFunction[286]=__GLeeLink_GL_EXT_fragment_lighting;
+    __GLeeGLLoadFunction[287]=__GLeeLink_GL_EXT_packed_depth_stencil;
+    __GLeeGLLoadFunction[288]=__GLeeLink_GL_EXT_scene_marker;
+    __GLeeGLLoadFunction[289]=__GLeeLink_GL_EXT_stencil_clear_tag;
+    __GLeeGLLoadFunction[290]=__GLeeLink_GL_EXT_texture_compression_dxt1;
+    __GLeeGLLoadFunction[291]=__GLeeLink_GL_EXT_texture_env;
+    __GLeeGLLoadFunction[292]=__GLeeLink_GL_EXT_texture_sRGB;
+    __GLeeGLLoadFunction[293]=__GLeeLink_GL_IBM_static_data;
+    __GLeeGLLoadFunction[294]=__GLeeLink_GL_MESAX_texture_stack;
+    __GLeeGLLoadFunction[295]=__GLeeLink_GL_OES_byte_coordinates;
+    __GLeeGLLoadFunction[296]=__GLeeLink_GL_OES_compressed_paletted_texture;
+    __GLeeGLLoadFunction[297]=__GLeeLink_GL_OES_single_precision;
+    __GLeeGLLoadFunction[298]=__GLeeLink_GL_SGIX_pixel_texture_bits;
+    __GLeeGLLoadFunction[299]=__GLeeLink_GL_SGIX_texture_range;
+}
+
+#ifdef WIN32
+GLuint __GLeeLink_WGL_ARB_buffer_region(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_buffer_region
+    if ((pwglCreateBufferRegionARB = (PFNWGLCREATEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglCreateBufferRegionARB"))!=0) nLinked++;
+    if ((pwglDeleteBufferRegionARB = (PFNWGLDELETEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglDeleteBufferRegionARB"))!=0) nLinked++;
+    if ((pwglSaveBufferRegionARB = (PFNWGLSAVEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglSaveBufferRegionARB"))!=0) nLinked++;
+    if ((pwglRestoreBufferRegionARB = (PFNWGLRESTOREBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglRestoreBufferRegionARB"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_ARB_extensions_string(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_extensions_string
+    if ((pwglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) __GLeeGetProcAddress("wglGetExtensionsStringARB"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_pixel_format(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_pixel_format
+    if ((pwglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribivARB"))!=0) nLinked++;
+    if ((pwglGetPixelFormatAttribfvARB = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribfvARB"))!=0) nLinked++;
+    if ((pwglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC) __GLeeGetProcAddress("wglChoosePixelFormatARB"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_make_current_read(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_make_current_read
+    if ((pwglMakeContextCurrentARB = (PFNWGLMAKECONTEXTCURRENTARBPROC) __GLeeGetProcAddress("wglMakeContextCurrentARB"))!=0) nLinked++;
+    if ((pwglGetCurrentReadDCARB = (PFNWGLGETCURRENTREADDCARBPROC) __GLeeGetProcAddress("wglGetCurrentReadDCARB"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_pbuffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_pbuffer
+    if ((pwglCreatePbufferARB = (PFNWGLCREATEPBUFFERARBPROC) __GLeeGetProcAddress("wglCreatePbufferARB"))!=0) nLinked++;
+    if ((pwglGetPbufferDCARB = (PFNWGLGETPBUFFERDCARBPROC) __GLeeGetProcAddress("wglGetPbufferDCARB"))!=0) nLinked++;
+    if ((pwglReleasePbufferDCARB = (PFNWGLRELEASEPBUFFERDCARBPROC) __GLeeGetProcAddress("wglReleasePbufferDCARB"))!=0) nLinked++;
+    if ((pwglDestroyPbufferARB = (PFNWGLDESTROYPBUFFERARBPROC) __GLeeGetProcAddress("wglDestroyPbufferARB"))!=0) nLinked++;
+    if ((pwglQueryPbufferARB = (PFNWGLQUERYPBUFFERARBPROC) __GLeeGetProcAddress("wglQueryPbufferARB"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_render_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_render_texture
+    if ((pwglBindTexImageARB = (PFNWGLBINDTEXIMAGEARBPROC) __GLeeGetProcAddress("wglBindTexImageARB"))!=0) nLinked++;
+    if ((pwglReleaseTexImageARB = (PFNWGLRELEASETEXIMAGEARBPROC) __GLeeGetProcAddress("wglReleaseTexImageARB"))!=0) nLinked++;
+    if ((pwglSetPbufferAttribARB = (PFNWGLSETPBUFFERATTRIBARBPROC) __GLeeGetProcAddress("wglSetPbufferAttribARB"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_pixel_format_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_EXT_make_current_read(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_make_current_read
+    if ((pwglMakeContextCurrentEXT = (PFNWGLMAKECONTEXTCURRENTEXTPROC) __GLeeGetProcAddress("wglMakeContextCurrentEXT"))!=0) nLinked++;
+    if ((pwglGetCurrentReadDCEXT = (PFNWGLGETCURRENTREADDCEXTPROC) __GLeeGetProcAddress("wglGetCurrentReadDCEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_pixel_format(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_pixel_format
+    if ((pwglGetPixelFormatAttribivEXT = (PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribivEXT"))!=0) nLinked++;
+    if ((pwglGetPixelFormatAttribfvEXT = (PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribfvEXT"))!=0) nLinked++;
+    if ((pwglChoosePixelFormatEXT = (PFNWGLCHOOSEPIXELFORMATEXTPROC) __GLeeGetProcAddress("wglChoosePixelFormatEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_pbuffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_pbuffer
+    if ((pwglCreatePbufferEXT = (PFNWGLCREATEPBUFFEREXTPROC) __GLeeGetProcAddress("wglCreatePbufferEXT"))!=0) nLinked++;
+    if ((pwglGetPbufferDCEXT = (PFNWGLGETPBUFFERDCEXTPROC) __GLeeGetProcAddress("wglGetPbufferDCEXT"))!=0) nLinked++;
+    if ((pwglReleasePbufferDCEXT = (PFNWGLRELEASEPBUFFERDCEXTPROC) __GLeeGetProcAddress("wglReleasePbufferDCEXT"))!=0) nLinked++;
+    if ((pwglDestroyPbufferEXT = (PFNWGLDESTROYPBUFFEREXTPROC) __GLeeGetProcAddress("wglDestroyPbufferEXT"))!=0) nLinked++;
+    if ((pwglQueryPbufferEXT = (PFNWGLQUERYPBUFFEREXTPROC) __GLeeGetProcAddress("wglQueryPbufferEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_depth_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_EXT_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_I3D_digital_video_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_digital_video_control
+    if ((pwglGetDigitalVideoParametersI3D = (PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) __GLeeGetProcAddress("wglGetDigitalVideoParametersI3D"))!=0) nLinked++;
+    if ((pwglSetDigitalVideoParametersI3D = (PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) __GLeeGetProcAddress("wglSetDigitalVideoParametersI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_gamma(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_gamma
+    if ((pwglGetGammaTableParametersI3D = (PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) __GLeeGetProcAddress("wglGetGammaTableParametersI3D"))!=0) nLinked++;
+    if ((pwglSetGammaTableParametersI3D = (PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) __GLeeGetProcAddress("wglSetGammaTableParametersI3D"))!=0) nLinked++;
+    if ((pwglGetGammaTableI3D = (PFNWGLGETGAMMATABLEI3DPROC) __GLeeGetProcAddress("wglGetGammaTableI3D"))!=0) nLinked++;
+    if ((pwglSetGammaTableI3D = (PFNWGLSETGAMMATABLEI3DPROC) __GLeeGetProcAddress("wglSetGammaTableI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_genlock(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_genlock
+    if ((pwglEnableGenlockI3D = (PFNWGLENABLEGENLOCKI3DPROC) __GLeeGetProcAddress("wglEnableGenlockI3D"))!=0) nLinked++;
+    if ((pwglDisableGenlockI3D = (PFNWGLDISABLEGENLOCKI3DPROC) __GLeeGetProcAddress("wglDisableGenlockI3D"))!=0) nLinked++;
+    if ((pwglIsEnabledGenlockI3D = (PFNWGLISENABLEDGENLOCKI3DPROC) __GLeeGetProcAddress("wglIsEnabledGenlockI3D"))!=0) nLinked++;
+    if ((pwglGenlockSourceI3D = (PFNWGLGENLOCKSOURCEI3DPROC) __GLeeGetProcAddress("wglGenlockSourceI3D"))!=0) nLinked++;
+    if ((pwglGetGenlockSourceI3D = (PFNWGLGETGENLOCKSOURCEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceI3D"))!=0) nLinked++;
+    if ((pwglGenlockSourceEdgeI3D = (PFNWGLGENLOCKSOURCEEDGEI3DPROC) __GLeeGetProcAddress("wglGenlockSourceEdgeI3D"))!=0) nLinked++;
+    if ((pwglGetGenlockSourceEdgeI3D = (PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceEdgeI3D"))!=0) nLinked++;
+    if ((pwglGenlockSampleRateI3D = (PFNWGLGENLOCKSAMPLERATEI3DPROC) __GLeeGetProcAddress("wglGenlockSampleRateI3D"))!=0) nLinked++;
+    if ((pwglGetGenlockSampleRateI3D = (PFNWGLGETGENLOCKSAMPLERATEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSampleRateI3D"))!=0) nLinked++;
+    if ((pwglGenlockSourceDelayI3D = (PFNWGLGENLOCKSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglGenlockSourceDelayI3D"))!=0) nLinked++;
+    if ((pwglGetGenlockSourceDelayI3D = (PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceDelayI3D"))!=0) nLinked++;
+    if ((pwglQueryGenlockMaxSourceDelayI3D = (PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglQueryGenlockMaxSourceDelayI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==12) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_image_buffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_image_buffer
+    if ((pwglCreateImageBufferI3D = (PFNWGLCREATEIMAGEBUFFERI3DPROC) __GLeeGetProcAddress("wglCreateImageBufferI3D"))!=0) nLinked++;
+    if ((pwglDestroyImageBufferI3D = (PFNWGLDESTROYIMAGEBUFFERI3DPROC) __GLeeGetProcAddress("wglDestroyImageBufferI3D"))!=0) nLinked++;
+    if ((pwglAssociateImageBufferEventsI3D = (PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) __GLeeGetProcAddress("wglAssociateImageBufferEventsI3D"))!=0) nLinked++;
+    if ((pwglReleaseImageBufferEventsI3D = (PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) __GLeeGetProcAddress("wglReleaseImageBufferEventsI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_swap_frame_lock(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_swap_frame_lock
+    if ((pwglEnableFrameLockI3D = (PFNWGLENABLEFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglEnableFrameLockI3D"))!=0) nLinked++;
+    if ((pwglDisableFrameLockI3D = (PFNWGLDISABLEFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglDisableFrameLockI3D"))!=0) nLinked++;
+    if ((pwglIsEnabledFrameLockI3D = (PFNWGLISENABLEDFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglIsEnabledFrameLockI3D"))!=0) nLinked++;
+    if ((pwglQueryFrameLockMasterI3D = (PFNWGLQUERYFRAMELOCKMASTERI3DPROC) __GLeeGetProcAddress("wglQueryFrameLockMasterI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_NV_render_depth_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_NV_render_texture_rectangle(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_ATI_pixel_format_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_EXT_display_color_table(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_display_color_table
+    if ((pwglCreateDisplayColorTableEXT = (PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglCreateDisplayColorTableEXT"))!=0) nLinked++;
+    if ((pwglLoadDisplayColorTableEXT = (PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglLoadDisplayColorTableEXT"))!=0) nLinked++;
+    if ((pwglBindDisplayColorTableEXT = (PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglBindDisplayColorTableEXT"))!=0) nLinked++;
+    if ((pwglDestroyDisplayColorTableEXT = (PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglDestroyDisplayColorTableEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_extensions_string(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_extensions_string
+    if ((pwglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC) __GLeeGetProcAddress("wglGetExtensionsStringEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_swap_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_swap_control
+    if ((pwglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) __GLeeGetProcAddress("wglSwapIntervalEXT"))!=0) nLinked++;
+    if ((pwglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC) __GLeeGetProcAddress("wglGetSwapIntervalEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_NV_vertex_array_range(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_NV_vertex_array_range
+    if ((pwglAllocateMemoryNV = (PFNWGLALLOCATEMEMORYNVPROC) __GLeeGetProcAddress("wglAllocateMemoryNV"))!=0) nLinked++;
+    if ((pwglFreeMemoryNV = (PFNWGLFREEMEMORYNVPROC) __GLeeGetProcAddress("wglFreeMemoryNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_OML_sync_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_OML_sync_control
+    if ((pwglGetSyncValuesOML = (PFNWGLGETSYNCVALUESOMLPROC) __GLeeGetProcAddress("wglGetSyncValuesOML"))!=0) nLinked++;
+    if ((pwglGetMscRateOML = (PFNWGLGETMSCRATEOMLPROC) __GLeeGetProcAddress("wglGetMscRateOML"))!=0) nLinked++;
+    if ((pwglSwapBuffersMscOML = (PFNWGLSWAPBUFFERSMSCOMLPROC) __GLeeGetProcAddress("wglSwapBuffersMscOML"))!=0) nLinked++;
+    if ((pwglSwapLayerBuffersMscOML = (PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) __GLeeGetProcAddress("wglSwapLayerBuffersMscOML"))!=0) nLinked++;
+    if ((pwglWaitForMscOML = (PFNWGLWAITFORMSCOMLPROC) __GLeeGetProcAddress("wglWaitForMscOML"))!=0) nLinked++;
+    if ((pwglWaitForSbcOML = (PFNWGLWAITFORSBCOMLPROC) __GLeeGetProcAddress("wglWaitForSbcOML"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_swap_frame_usage(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_swap_frame_usage
+    if ((pwglGetFrameUsageI3D = (PFNWGLGETFRAMEUSAGEI3DPROC) __GLeeGetProcAddress("wglGetFrameUsageI3D"))!=0) nLinked++;
+    if ((pwglBeginFrameTrackingI3D = (PFNWGLBEGINFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglBeginFrameTrackingI3D"))!=0) nLinked++;
+    if ((pwglEndFrameTrackingI3D = (PFNWGLENDFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglEndFrameTrackingI3D"))!=0) nLinked++;
+    if ((pwglQueryFrameTrackingI3D = (PFNWGLQUERYFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglQueryFrameTrackingI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_3DL_stereo_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_3DL_stereo_control
+    if ((pwglSetStereoEmitterState3DL = (PFNWGLSETSTEREOEMITTERSTATE3DLPROC) __GLeeGetProcAddress("wglSetStereoEmitterState3DL"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLEE_LINK_FUNCTION __GLeeWGLLoadFunction[30];
+
+void initWGLLoadFunctions(void)
+{
+    __GLeeWGLLoadFunction[0]=__GLeeLink_WGL_ARB_buffer_region;
+    __GLeeWGLLoadFunction[1]=__GLeeLink_WGL_ARB_multisample;
+    __GLeeWGLLoadFunction[2]=__GLeeLink_WGL_ARB_extensions_string;
+    __GLeeWGLLoadFunction[3]=__GLeeLink_WGL_ARB_pixel_format;
+    __GLeeWGLLoadFunction[4]=__GLeeLink_WGL_ARB_make_current_read;
+    __GLeeWGLLoadFunction[5]=__GLeeLink_WGL_ARB_pbuffer;
+    __GLeeWGLLoadFunction[6]=__GLeeLink_WGL_ARB_render_texture;
+    __GLeeWGLLoadFunction[7]=__GLeeLink_WGL_ARB_pixel_format_float;
+    __GLeeWGLLoadFunction[8]=__GLeeLink_WGL_EXT_make_current_read;
+    __GLeeWGLLoadFunction[9]=__GLeeLink_WGL_EXT_pixel_format;
+    __GLeeWGLLoadFunction[10]=__GLeeLink_WGL_EXT_pbuffer;
+    __GLeeWGLLoadFunction[11]=__GLeeLink_WGL_EXT_depth_float;
+    __GLeeWGLLoadFunction[12]=__GLeeLink_WGL_3DFX_multisample;
+    __GLeeWGLLoadFunction[13]=__GLeeLink_WGL_EXT_multisample;
+    __GLeeWGLLoadFunction[14]=__GLeeLink_WGL_I3D_digital_video_control;
+    __GLeeWGLLoadFunction[15]=__GLeeLink_WGL_I3D_gamma;
+    __GLeeWGLLoadFunction[16]=__GLeeLink_WGL_I3D_genlock;
+    __GLeeWGLLoadFunction[17]=__GLeeLink_WGL_I3D_image_buffer;
+    __GLeeWGLLoadFunction[18]=__GLeeLink_WGL_I3D_swap_frame_lock;
+    __GLeeWGLLoadFunction[19]=__GLeeLink_WGL_NV_render_depth_texture;
+    __GLeeWGLLoadFunction[20]=__GLeeLink_WGL_NV_render_texture_rectangle;
+    __GLeeWGLLoadFunction[21]=__GLeeLink_WGL_ATI_pixel_format_float;
+    __GLeeWGLLoadFunction[22]=__GLeeLink_WGL_NV_float_buffer;
+    __GLeeWGLLoadFunction[23]=__GLeeLink_WGL_EXT_display_color_table;
+    __GLeeWGLLoadFunction[24]=__GLeeLink_WGL_EXT_extensions_string;
+    __GLeeWGLLoadFunction[25]=__GLeeLink_WGL_EXT_swap_control;
+    __GLeeWGLLoadFunction[26]=__GLeeLink_WGL_NV_vertex_array_range;
+    __GLeeWGLLoadFunction[27]=__GLeeLink_WGL_OML_sync_control;
+    __GLeeWGLLoadFunction[28]=__GLeeLink_WGL_I3D_swap_frame_usage;
+    __GLeeWGLLoadFunction[29]=__GLeeLink_WGL_3DL_stereo_control;
+}
+
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else /* Linux */
+GLuint __GLeeLink_GLX_VERSION_1_3(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_VERSION_1_3
+    if ((pglXGetFBConfigs = (PFNGLXGETFBCONFIGSPROC) __GLeeGetProcAddress("glXGetFBConfigs"))!=0) nLinked++;
+    if ((pglXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC) __GLeeGetProcAddress("glXChooseFBConfig"))!=0) nLinked++;
+    if ((pglXGetFBConfigAttrib = (PFNGLXGETFBCONFIGATTRIBPROC) __GLeeGetProcAddress("glXGetFBConfigAttrib"))!=0) nLinked++;
+    if ((pglXGetVisualFromFBConfig = (PFNGLXGETVISUALFROMFBCONFIGPROC) __GLeeGetProcAddress("glXGetVisualFromFBConfig"))!=0) nLinked++;
+    if ((pglXCreateWindow = (PFNGLXCREATEWINDOWPROC) __GLeeGetProcAddress("glXCreateWindow"))!=0) nLinked++;
+    if ((pglXDestroyWindow = (PFNGLXDESTROYWINDOWPROC) __GLeeGetProcAddress("glXDestroyWindow"))!=0) nLinked++;
+    if ((pglXCreatePixmap = (PFNGLXCREATEPIXMAPPROC) __GLeeGetProcAddress("glXCreatePixmap"))!=0) nLinked++;
+    if ((pglXDestroyPixmap = (PFNGLXDESTROYPIXMAPPROC) __GLeeGetProcAddress("glXDestroyPixmap"))!=0) nLinked++;
+    if ((pglXCreatePbuffer = (PFNGLXCREATEPBUFFERPROC) __GLeeGetProcAddress("glXCreatePbuffer"))!=0) nLinked++;
+    if ((pglXDestroyPbuffer = (PFNGLXDESTROYPBUFFERPROC) __GLeeGetProcAddress("glXDestroyPbuffer"))!=0) nLinked++;
+    if ((pglXQueryDrawable = (PFNGLXQUERYDRAWABLEPROC) __GLeeGetProcAddress("glXQueryDrawable"))!=0) nLinked++;
+    if ((pglXCreateNewContext = (PFNGLXCREATENEWCONTEXTPROC) __GLeeGetProcAddress("glXCreateNewContext"))!=0) nLinked++;
+    if ((pglXMakeContextCurrent = (PFNGLXMAKECONTEXTCURRENTPROC) __GLeeGetProcAddress("glXMakeContextCurrent"))!=0) nLinked++;
+    if ((pglXGetCurrentReadDrawable = (PFNGLXGETCURRENTREADDRAWABLEPROC) __GLeeGetProcAddress("glXGetCurrentReadDrawable"))!=0) nLinked++;
+    if ((pglXGetCurrentDisplay = (PFNGLXGETCURRENTDISPLAYPROC) __GLeeGetProcAddress("glXGetCurrentDisplay"))!=0) nLinked++;
+    if ((pglXQueryContext = (PFNGLXQUERYCONTEXTPROC) __GLeeGetProcAddress("glXQueryContext"))!=0) nLinked++;
+    if ((pglXSelectEvent = (PFNGLXSELECTEVENTPROC) __GLeeGetProcAddress("glXSelectEvent"))!=0) nLinked++;
+    if ((pglXGetSelectedEvent = (PFNGLXGETSELECTEDEVENTPROC) __GLeeGetProcAddress("glXGetSelectedEvent"))!=0) nLinked++;
+#endif
+    if (nLinked==18) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_VERSION_1_4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_VERSION_1_4
+    if ((pglXGetProcAddress = (PFNGLXGETPROCADDRESSPROC) __GLeeGetProcAddress("glXGetProcAddress"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_ARB_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_ARB_fbconfig_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SGIS_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_EXT_visual_info(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SGI_swap_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGI_swap_control
+    if ((pglXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC) __GLeeGetProcAddress("glXSwapIntervalSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGI_video_sync(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGI_video_sync
+    if ((pglXGetVideoSyncSGI = (PFNGLXGETVIDEOSYNCSGIPROC) __GLeeGetProcAddress("glXGetVideoSyncSGI"))!=0) nLinked++;
+    if ((pglXWaitVideoSyncSGI = (PFNGLXWAITVIDEOSYNCSGIPROC) __GLeeGetProcAddress("glXWaitVideoSyncSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGI_make_current_read(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGI_make_current_read
+    if ((pglXMakeCurrentReadSGI = (PFNGLXMAKECURRENTREADSGIPROC) __GLeeGetProcAddress("glXMakeCurrentReadSGI"))!=0) nLinked++;
+    if ((pglXGetCurrentReadDrawableSGI = (PFNGLXGETCURRENTREADDRAWABLESGIPROC) __GLeeGetProcAddress("glXGetCurrentReadDrawableSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_EXT_visual_rating(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_EXT_import_context(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_EXT_import_context
+    if ((pglXGetCurrentDisplayEXT = (PFNGLXGETCURRENTDISPLAYEXTPROC) __GLeeGetProcAddress("glXGetCurrentDisplayEXT"))!=0) nLinked++;
+    if ((pglXQueryContextInfoEXT = (PFNGLXQUERYCONTEXTINFOEXTPROC) __GLeeGetProcAddress("glXQueryContextInfoEXT"))!=0) nLinked++;
+    if ((pglXGetContextIDEXT = (PFNGLXGETCONTEXTIDEXTPROC) __GLeeGetProcAddress("glXGetContextIDEXT"))!=0) nLinked++;
+    if ((pglXImportContextEXT = (PFNGLXIMPORTCONTEXTEXTPROC) __GLeeGetProcAddress("glXImportContextEXT"))!=0) nLinked++;
+    if ((pglXFreeContextEXT = (PFNGLXFREECONTEXTEXTPROC) __GLeeGetProcAddress("glXFreeContextEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_fbconfig(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_fbconfig
+    if ((pglXGetFBConfigAttribSGIX = (PFNGLXGETFBCONFIGATTRIBSGIXPROC) __GLeeGetProcAddress("glXGetFBConfigAttribSGIX"))!=0) nLinked++;
+    if ((pglXChooseFBConfigSGIX = (PFNGLXCHOOSEFBCONFIGSGIXPROC) __GLeeGetProcAddress("glXChooseFBConfigSGIX"))!=0) nLinked++;
+    if ((pglXCreateGLXPixmapWithConfigSGIX = (PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) __GLeeGetProcAddress("glXCreateGLXPixmapWithConfigSGIX"))!=0) nLinked++;
+    if ((pglXCreateContextWithConfigSGIX = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) __GLeeGetProcAddress("glXCreateContextWithConfigSGIX"))!=0) nLinked++;
+    if ((pglXGetVisualFromFBConfigSGIX = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) __GLeeGetProcAddress("glXGetVisualFromFBConfigSGIX"))!=0) nLinked++;
+    if ((pglXGetFBConfigFromVisualSGIX = (PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) __GLeeGetProcAddress("glXGetFBConfigFromVisualSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_pbuffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_pbuffer
+    if ((pglXCreateGLXPbufferSGIX = (PFNGLXCREATEGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXCreateGLXPbufferSGIX"))!=0) nLinked++;
+    if ((pglXDestroyGLXPbufferSGIX = (PFNGLXDESTROYGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXDestroyGLXPbufferSGIX"))!=0) nLinked++;
+    if ((pglXQueryGLXPbufferSGIX = (PFNGLXQUERYGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXQueryGLXPbufferSGIX"))!=0) nLinked++;
+    if ((pglXSelectEventSGIX = (PFNGLXSELECTEVENTSGIXPROC) __GLeeGetProcAddress("glXSelectEventSGIX"))!=0) nLinked++;
+    if ((pglXGetSelectedEventSGIX = (PFNGLXGETSELECTEDEVENTSGIXPROC) __GLeeGetProcAddress("glXGetSelectedEventSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGI_cushion(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGI_cushion
+    if ((pglXCushionSGI = (PFNGLXCUSHIONSGIPROC) __GLeeGetProcAddress("glXCushionSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_video_resize(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_video_resize
+    if ((pglXBindChannelToWindowSGIX = (PFNGLXBINDCHANNELTOWINDOWSGIXPROC) __GLeeGetProcAddress("glXBindChannelToWindowSGIX"))!=0) nLinked++;
+    if ((pglXChannelRectSGIX = (PFNGLXCHANNELRECTSGIXPROC) __GLeeGetProcAddress("glXChannelRectSGIX"))!=0) nLinked++;
+    if ((pglXQueryChannelRectSGIX = (PFNGLXQUERYCHANNELRECTSGIXPROC) __GLeeGetProcAddress("glXQueryChannelRectSGIX"))!=0) nLinked++;
+    if ((pglXQueryChannelDeltasSGIX = (PFNGLXQUERYCHANNELDELTASSGIXPROC) __GLeeGetProcAddress("glXQueryChannelDeltasSGIX"))!=0) nLinked++;
+    if ((pglXChannelRectSyncSGIX = (PFNGLXCHANNELRECTSYNCSGIXPROC) __GLeeGetProcAddress("glXChannelRectSyncSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_swap_group(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_swap_group
+    if ((pglXJoinSwapGroupSGIX = (PFNGLXJOINSWAPGROUPSGIXPROC) __GLeeGetProcAddress("glXJoinSwapGroupSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_swap_barrier(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_swap_barrier
+    if ((pglXBindSwapBarrierSGIX = (PFNGLXBINDSWAPBARRIERSGIXPROC) __GLeeGetProcAddress("glXBindSwapBarrierSGIX"))!=0) nLinked++;
+    if ((pglXQueryMaxSwapBarriersSGIX = (PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) __GLeeGetProcAddress("glXQueryMaxSwapBarriersSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIS_blended_overlay(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SGIS_shared_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SUN_get_transparent_index(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SUN_get_transparent_index
+    if ((pglXGetTransparentIndexSUN = (PFNGLXGETTRANSPARENTINDEXSUNPROC) __GLeeGetProcAddress("glXGetTransparentIndexSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_MESA_copy_sub_buffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_copy_sub_buffer
+    if ((pglXCopySubBufferMESA = (PFNGLXCOPYSUBBUFFERMESAPROC) __GLeeGetProcAddress("glXCopySubBufferMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_MESA_pixmap_colormap(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_pixmap_colormap
+    if ((pglXCreateGLXPixmapMESA = (PFNGLXCREATEGLXPIXMAPMESAPROC) __GLeeGetProcAddress("glXCreateGLXPixmapMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_MESA_release_buffers(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_release_buffers
+    if ((pglXReleaseBuffersMESA = (PFNGLXRELEASEBUFFERSMESAPROC) __GLeeGetProcAddress("glXReleaseBuffersMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_MESA_set_3dfx_mode(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_set_3dfx_mode
+    if ((pglXSet3DfxModeMESA = (PFNGLXSET3DFXMODEMESAPROC) __GLeeGetProcAddress("glXSet3DfxModeMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_visual_select_group(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_OML_swap_method(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_OML_sync_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_OML_sync_control
+    if ((pglXGetSyncValuesOML = (PFNGLXGETSYNCVALUESOMLPROC) __GLeeGetProcAddress("glXGetSyncValuesOML"))!=0) nLinked++;
+    if ((pglXGetMscRateOML = (PFNGLXGETMSCRATEOMLPROC) __GLeeGetProcAddress("glXGetMscRateOML"))!=0) nLinked++;
+    if ((pglXSwapBuffersMscOML = (PFNGLXSWAPBUFFERSMSCOMLPROC) __GLeeGetProcAddress("glXSwapBuffersMscOML"))!=0) nLinked++;
+    if ((pglXWaitForMscOML = (PFNGLXWAITFORMSCOMLPROC) __GLeeGetProcAddress("glXWaitForMscOML"))!=0) nLinked++;
+    if ((pglXWaitForSbcOML = (PFNGLXWAITFORSBCOMLPROC) __GLeeGetProcAddress("glXWaitForSbcOML"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SGIX_hyperpipe(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_hyperpipe
+    if ((pglXQueryHyperpipeNetworkSGIX = (PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeNetworkSGIX"))!=0) nLinked++;
+    if ((pglXHyperpipeConfigSGIX = (PFNGLXHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXHyperpipeConfigSGIX"))!=0) nLinked++;
+    if ((pglXQueryHyperpipeConfigSGIX = (PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeConfigSGIX"))!=0) nLinked++;
+    if ((pglXDestroyHyperpipeConfigSGIX = (PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXDestroyHyperpipeConfigSGIX"))!=0) nLinked++;
+    if ((pglXBindHyperpipeSGIX = (PFNGLXBINDHYPERPIPESGIXPROC) __GLeeGetProcAddress("glXBindHyperpipeSGIX"))!=0) nLinked++;
+    if ((pglXQueryHyperpipeBestAttribSGIX = (PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeBestAttribSGIX"))!=0) nLinked++;
+    if ((pglXHyperpipeAttribSGIX = (PFNGLXHYPERPIPEATTRIBSGIXPROC) __GLeeGetProcAddress("glXHyperpipeAttribSGIX"))!=0) nLinked++;
+    if ((pglXQueryHyperpipeAttribSGIX = (PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeAttribSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_MESA_agp_offset(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_agp_offset
+    if ((pglXGetAGPOffsetMESA = (PFNGLXGETAGPOFFSETMESAPROC) __GLeeGetProcAddress("glXGetAGPOffsetMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_EXT_scene_marker(void) {return GLEE_LINK_COMPLETE;}
+
+GLEE_LINK_FUNCTION __GLeeGLXLoadFunction[32];
+
+void initGLXLoadFunctions(void)
+{
+    __GLeeGLXLoadFunction[0]=__GLeeLink_GLX_VERSION_1_3;
+    __GLeeGLXLoadFunction[1]=__GLeeLink_GLX_VERSION_1_4;
+    __GLeeGLXLoadFunction[2]=__GLeeLink_GLX_ARB_multisample;
+    __GLeeGLXLoadFunction[3]=__GLeeLink_GLX_ARB_fbconfig_float;
+    __GLeeGLXLoadFunction[4]=__GLeeLink_GLX_SGIS_multisample;
+    __GLeeGLXLoadFunction[5]=__GLeeLink_GLX_EXT_visual_info;
+    __GLeeGLXLoadFunction[6]=__GLeeLink_GLX_SGI_swap_control;
+    __GLeeGLXLoadFunction[7]=__GLeeLink_GLX_SGI_video_sync;
+    __GLeeGLXLoadFunction[8]=__GLeeLink_GLX_SGI_make_current_read;
+    __GLeeGLXLoadFunction[9]=__GLeeLink_GLX_EXT_visual_rating;
+    __GLeeGLXLoadFunction[10]=__GLeeLink_GLX_EXT_import_context;
+    __GLeeGLXLoadFunction[11]=__GLeeLink_GLX_SGIX_fbconfig;
+    __GLeeGLXLoadFunction[12]=__GLeeLink_GLX_SGIX_pbuffer;
+    __GLeeGLXLoadFunction[13]=__GLeeLink_GLX_SGI_cushion;
+    __GLeeGLXLoadFunction[14]=__GLeeLink_GLX_SGIX_video_resize;
+    __GLeeGLXLoadFunction[15]=__GLeeLink_GLX_SGIX_swap_group;
+    __GLeeGLXLoadFunction[16]=__GLeeLink_GLX_SGIX_swap_barrier;
+    __GLeeGLXLoadFunction[17]=__GLeeLink_GLX_SGIS_blended_overlay;
+    __GLeeGLXLoadFunction[18]=__GLeeLink_GLX_SGIS_shared_multisample;
+    __GLeeGLXLoadFunction[19]=__GLeeLink_GLX_SUN_get_transparent_index;
+    __GLeeGLXLoadFunction[20]=__GLeeLink_GLX_3DFX_multisample;
+    __GLeeGLXLoadFunction[21]=__GLeeLink_GLX_MESA_copy_sub_buffer;
+    __GLeeGLXLoadFunction[22]=__GLeeLink_GLX_MESA_pixmap_colormap;
+    __GLeeGLXLoadFunction[23]=__GLeeLink_GLX_MESA_release_buffers;
+    __GLeeGLXLoadFunction[24]=__GLeeLink_GLX_MESA_set_3dfx_mode;
+    __GLeeGLXLoadFunction[25]=__GLeeLink_GLX_SGIX_visual_select_group;
+    __GLeeGLXLoadFunction[26]=__GLeeLink_GLX_OML_swap_method;
+    __GLeeGLXLoadFunction[27]=__GLeeLink_GLX_OML_sync_control;
+    __GLeeGLXLoadFunction[28]=__GLeeLink_GLX_NV_float_buffer;
+    __GLeeGLXLoadFunction[29]=__GLeeLink_GLX_SGIX_hyperpipe;
+    __GLeeGLXLoadFunction[30]=__GLeeLink_GLX_MESA_agp_offset;
+    __GLeeGLXLoadFunction[31]=__GLeeLink_GLX_EXT_scene_marker;
+}
+
+#endif /* end Linux */
+
+
+/*****************************************************************
+ * GLee internal types
+ *****************************************************************/
+typedef struct 
+{
+	char ** names;
+	int * lengths;
+	int numNames;
+}ExtensionList;
+
+
+/*****************************************************************
+ * GLee internal variables
+ *****************************************************************/
+char GLeeErrorString[256]="";
+
+
+/*****************************************************************
+ * GLee internal functions
+ *****************************************************************/
+
+void __GLeeExtList_init(ExtensionList *extList)
+{
+	extList->names=0;
+	extList->lengths=0;
+	extList->numNames=0;
+}
+
+void __GLeeExtList_clean(ExtensionList *extList)
+{
+	int a;
+	for (a=0;a<extList->numNames;a++)
+	{
+		if (extList->names[a]!=0) free((void *)extList->names[a]);
+	}
+	if (extList->names!=0) free((void *)extList->names);
+	if (extList->lengths!=0) free((void *)extList->lengths);
+	extList->names=0;
+	extList->lengths=0;
+	extList->numNames=0;
+}
+
+void __GLeeExtList_add(ExtensionList *extList, const char * extName)
+{
+	int length=strlen(extName)+1;
+	int i=extList->numNames;
+	int n=i+1;
+	if (i==0)
+	{
+		extList->lengths=(int *)malloc(sizeof(int));
+		extList->names=(char **)malloc(sizeof(char *));
+	}else
+	{
+		extList->lengths=(int *)realloc((void *)extList->lengths, n*sizeof(int));
+		extList->names=(char **)realloc((void *)extList->names, n*sizeof(char *));
+	}
+	extList->names[i]=(char *)malloc(length*sizeof(char));
+	strcpy(extList->names[i],extName);
+	extList->lengths[i]=length;
+	extList->numNames++;
+}
+
+const char *__GLeeGetExtStrPlat()
+{
+#ifdef WIN32
+	if (!_GLEE_WGL_ARB_extensions_string)
+		pwglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB");
+
+	if (pwglGetExtensionsStringARB)
+		return (const char *)pwglGetExtensionsStringARB(wglGetCurrentDC());
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else
+	Display *dpy=glXGetCurrentDisplay();
+	if(dpy)
+	{
+		int dpynr=DefaultScreen(dpy);
+		return (const char*)glXQueryExtensionsString(dpy,dpynr);
+	}
+#endif
+	return 0;
+}
+
+void __GLeeWriteError(const char * errorStr)
+{
+	int a=0;
+	for (a=0;a<256;a++)
+	{
+		GLeeErrorString[a]=errorStr[a];
+	}
+	GLeeErrorString[255]='\0';
+}
+
+int __GLeeGetVersionNumber(char *versionStr)
+{
+	int major=(int)versionStr[0]-(int)'0';
+	int minor=(int)versionStr[2]-(int)'0';
+	return major<<8 | minor;
+}
+
+GLboolean __GLeeGetExtensions(ExtensionList* extList)
+{
+	const char * platExtStr;
+	const char * glExtStr;
+	char * extStr;
+	char emptyString[1]="";
+	char extensionName[1024];
+	int a,b;
+	int numExtensions;
+	int eNum;
+	
+	/* read the platform specific extension string */
+	platExtStr=__GLeeGetExtStrPlat(); 
+	if (!platExtStr) platExtStr=emptyString;
+
+	glExtStr=(const char *)glGetString(GL_EXTENSIONS);
+	if (glExtStr==0) 
+	{
+		__GLeeWriteError("glGetString(GL_EXTENSIONS) failed.");
+		return GL_FALSE;
+	}
+
+	/* allocate the extension string */
+	extStr=(char *)malloc( (strlen(platExtStr)+strlen(glExtStr)+1) * sizeof(char) );
+
+	/* concatenate the two extension strings */
+	sprintf(extStr,"%s%s",platExtStr,glExtStr);
+
+	/* count the extensions */
+	numExtensions=0;
+	for (a=0;extStr[a]!='\0';++a)
+	{
+		if (extStr[a]==' ') ++numExtensions;
+	}
+
+	/* extract the extensions */
+	eNum=0;
+	a=0;
+	while (extStr[a]!='\0')
+	{
+		b=0;
+		while (extStr[a]!=' ' && extStr[a]!='\0' && b<1022)
+		{
+			extensionName[b]=extStr[a];
+			b++; a++;
+		}
+		if (b==1023)
+		{
+			__GLeeWriteError("Extension name exceeds 1023 characters.");
+			free((void *)extStr);
+			return GL_FALSE;
+		}
+
+		extensionName[b]='\0'; 
+
+		/* add the extension */
+		__GLeeExtList_add(extList,extensionName);
+
+		eNum++;	a++; 
+	}
+	free((void *)extStr);
+	return GL_TRUE;
+}
+
+GLboolean __GLeeCheckExtension(const char * name, ExtensionList *extensionNames)
+{
+	int n=extensionNames->numNames;
+	int a;
+    for (a=0;a<n;a++)
+	{
+		if (strcmp(extensionNames->names[a],name)==0)
+			return GL_TRUE;
+	}
+	return GL_FALSE;
+}
+
+GLEE_EXTERN GLint __GLeeGetExtensionNumber(const char *extensionName, int type)
+{
+	int a;
+	switch (type)
+	{
+	case 0:
+		for (a=0;a<__GLeeGLNumExtensions;a++)
+			if (strcmp(extensionName,__GLeeGLExtensionNames[a])==0)	return a;
+		return -1;
+#ifdef WIN32
+	case 1:
+		for (a=0;a<__GLeeWGLNumExtensions;a++)
+			if (strcmp(extensionName,__GLeeWGLExtensionNames[a])==0) return a;
+		return -1;
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else
+	case 2:
+		for (a=0;a<__GLeeGLXNumExtensions;a++)
+			if (strcmp(extensionName,__GLeeGLXExtensionNames[a])==0) return a;
+		return -1;
+#endif
+	}
+	return -1;
+}
+
+/*****************************************************************
+ * GLee external functions 
+ *****************************************************************/
+
+#ifdef WIN32
+GLEE_EXTERN const char * GLeeGetExtStrWGL()
+{
+	return __GLeeGetExtStrPlat();
+}
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else
+GLEE_EXTERN const char * GLeeGetExtStrGLX()	
+{
+	return __GLeeGetExtStrPlat();
+}
+#endif
+
+GLEE_EXTERN const char * GLeeGetExtStrGL()
+{
+	return (const char *)glGetString(GL_EXTENSIONS);
+}
+
+GLEE_EXTERN const char * GLeeGetErrorString()
+{
+	return GLeeErrorString;
+}
+
+GLboolean __GLeeInitedLoadFunctions=GL_FALSE;
+
+GLEE_EXTERN GLint GLeeForceLink(const char * extensionName)
+{
+	int type=0; 
+	int extNum;
+	int len=strlen(extensionName);
+	if (len<5) return GLEE_LINK_FAIL;
+	if (!__GLeeInitedLoadFunctions)
+	{
+		if (!__GLeeInited) GLeeInit();
+		initGLLoadFunctions();
+#ifdef WIN32
+		initWGLLoadFunctions();
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else
+		initGLXLoadFunctions();
+#endif
+		__GLeeInitedLoadFunctions=GL_TRUE;
+	}
+	if (extensionName[0]=='W') type=1;
+	else if (extensionName[2]=='X') type=2;	
+	extNum=__GLeeGetExtensionNumber(extensionName,type);
+	if (extNum==-1) return GLEE_LINK_FAIL;
+	if (type==0) return __GLeeGLLoadFunction[extNum]();
+#ifdef WIN32
+	if (type==1) return __GLeeWGLLoadFunction[extNum]();
+#elif defined(__APPLE__) || defined(__APPLE_CC__)	
+#else
+	if (type==2) return __GLeeGLXLoadFunction[extNum]();
+#endif
+	return GLEE_LINK_FAIL;
+}
+
+GLEE_EXTERN GLboolean GLeeEnabled(GLboolean * extensionQueryingVariable)
+{
+	if (!__GLeeInited) GLeeInit();
+	return *extensionQueryingVariable;	
+}
+
+GLEE_EXTERN GLboolean GLeeInit()
+{
+	int version;
+	ExtensionList extensionNames;
+	
+	if (__GLeeInited) 
+	{
+		return GL_FALSE;
+	}
+
+	__GLeeExtList_init(&extensionNames);
+	if (!__GLeeGetExtensions(&extensionNames)) 
+	{
+		__GLeeWriteError("GL extension querying failed.");
+		__GLeeExtList_clean(&extensionNames);
+		return GL_FALSE;
+	}
+
+	version=__GLeeGetVersionNumber((char *)glGetString(GL_VERSION));
+
+	__GLeeInited = GL_TRUE;
+
+
+/*****************************************************************
+ * Autogenerated linking functions
+ *****************************************************************/
+    if (version>=258)
+    {
+        _GLEE_VERSION_1_2 = GL_TRUE;
+        __GLeeLink_GL_VERSION_1_2();
+    }
+    if (__GLeeCheckExtension("GL_ARB_imaging", &extensionNames) )
+    {
+        _GLEE_ARB_imaging = GL_TRUE;
+        __GLeeLink_GL_ARB_imaging();
+    }
+    if (version>=259)
+    {
+        _GLEE_VERSION_1_3 = GL_TRUE;
+        __GLeeLink_GL_VERSION_1_3();
+    }
+    if (version>=260)
+    {
+        _GLEE_VERSION_1_4 = GL_TRUE;
+        __GLeeLink_GL_VERSION_1_4();
+    }
+    if (version>=261)
+    {
+        _GLEE_VERSION_1_5 = GL_TRUE;
+        __GLeeLink_GL_VERSION_1_5();
+    }
+    if (version>=512)
+    {
+        _GLEE_VERSION_2_0 = GL_TRUE;
+        __GLeeLink_GL_VERSION_2_0();
+    }
+    if (version>=513)
+    {
+        _GLEE_VERSION_2_1 = GL_TRUE;
+        __GLeeLink_GL_VERSION_2_1();
+    }
+    if (__GLeeCheckExtension("GL_ARB_multitexture", &extensionNames) )
+    {
+        _GLEE_ARB_multitexture = GL_TRUE;
+        __GLeeLink_GL_ARB_multitexture();
+    }
+    if (__GLeeCheckExtension("GL_ARB_transpose_matrix", &extensionNames) )
+    {
+        _GLEE_ARB_transpose_matrix = GL_TRUE;
+        __GLeeLink_GL_ARB_transpose_matrix();
+    }
+    if (__GLeeCheckExtension("GL_ARB_multisample", &extensionNames) )
+    {
+        _GLEE_ARB_multisample = GL_TRUE;
+        __GLeeLink_GL_ARB_multisample();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_env_add", &extensionNames) )
+    {
+        _GLEE_ARB_texture_env_add = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_env_add();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_cube_map", &extensionNames) )
+    {
+        _GLEE_ARB_texture_cube_map = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_cube_map();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_compression", &extensionNames) )
+    {
+        _GLEE_ARB_texture_compression = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_compression();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_border_clamp", &extensionNames) )
+    {
+        _GLEE_ARB_texture_border_clamp = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_border_clamp();
+    }
+    if (__GLeeCheckExtension("GL_ARB_point_parameters", &extensionNames) )
+    {
+        _GLEE_ARB_point_parameters = GL_TRUE;
+        __GLeeLink_GL_ARB_point_parameters();
+    }
+    if (__GLeeCheckExtension("GL_ARB_vertex_blend", &extensionNames) )
+    {
+        _GLEE_ARB_vertex_blend = GL_TRUE;
+        __GLeeLink_GL_ARB_vertex_blend();
+    }
+    if (__GLeeCheckExtension("GL_ARB_matrix_palette", &extensionNames) )
+    {
+        _GLEE_ARB_matrix_palette = GL_TRUE;
+        __GLeeLink_GL_ARB_matrix_palette();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_env_combine", &extensionNames) )
+    {
+        _GLEE_ARB_texture_env_combine = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_env_combine();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_env_crossbar", &extensionNames) )
+    {
+        _GLEE_ARB_texture_env_crossbar = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_env_crossbar();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_env_dot3", &extensionNames) )
+    {
+        _GLEE_ARB_texture_env_dot3 = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_env_dot3();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_mirrored_repeat", &extensionNames) )
+    {
+        _GLEE_ARB_texture_mirrored_repeat = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_mirrored_repeat();
+    }
+    if (__GLeeCheckExtension("GL_ARB_depth_texture", &extensionNames) )
+    {
+        _GLEE_ARB_depth_texture = GL_TRUE;
+        __GLeeLink_GL_ARB_depth_texture();
+    }
+    if (__GLeeCheckExtension("GL_ARB_shadow", &extensionNames) )
+    {
+        _GLEE_ARB_shadow = GL_TRUE;
+        __GLeeLink_GL_ARB_shadow();
+    }
+    if (__GLeeCheckExtension("GL_ARB_shadow_ambient", &extensionNames) )
+    {
+        _GLEE_ARB_shadow_ambient = GL_TRUE;
+        __GLeeLink_GL_ARB_shadow_ambient();
+    }
+    if (__GLeeCheckExtension("GL_ARB_window_pos", &extensionNames) )
+    {
+        _GLEE_ARB_window_pos = GL_TRUE;
+        __GLeeLink_GL_ARB_window_pos();
+    }
+    if (__GLeeCheckExtension("GL_ARB_vertex_program", &extensionNames) )
+    {
+        _GLEE_ARB_vertex_program = GL_TRUE;
+        __GLeeLink_GL_ARB_vertex_program();
+    }
+    if (__GLeeCheckExtension("GL_ARB_fragment_program", &extensionNames) )
+    {
+        _GLEE_ARB_fragment_program = GL_TRUE;
+        __GLeeLink_GL_ARB_fragment_program();
+    }
+    if (__GLeeCheckExtension("GL_ARB_vertex_buffer_object", &extensionNames) )
+    {
+        _GLEE_ARB_vertex_buffer_object = GL_TRUE;
+        __GLeeLink_GL_ARB_vertex_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_ARB_occlusion_query", &extensionNames) )
+    {
+        _GLEE_ARB_occlusion_query = GL_TRUE;
+        __GLeeLink_GL_ARB_occlusion_query();
+    }
+    if (__GLeeCheckExtension("GL_ARB_shader_objects", &extensionNames) )
+    {
+        _GLEE_ARB_shader_objects = GL_TRUE;
+        __GLeeLink_GL_ARB_shader_objects();
+    }
+    if (__GLeeCheckExtension("GL_ARB_vertex_shader", &extensionNames) )
+    {
+        _GLEE_ARB_vertex_shader = GL_TRUE;
+        __GLeeLink_GL_ARB_vertex_shader();
+    }
+    if (__GLeeCheckExtension("GL_ARB_fragment_shader", &extensionNames) )
+    {
+        _GLEE_ARB_fragment_shader = GL_TRUE;
+        __GLeeLink_GL_ARB_fragment_shader();
+    }
+    if (__GLeeCheckExtension("GL_ARB_shading_language_100", &extensionNames) )
+    {
+        _GLEE_ARB_shading_language_100 = GL_TRUE;
+        __GLeeLink_GL_ARB_shading_language_100();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_non_power_of_two", &extensionNames) )
+    {
+        _GLEE_ARB_texture_non_power_of_two = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_non_power_of_two();
+    }
+    if (__GLeeCheckExtension("GL_ARB_point_sprite", &extensionNames) )
+    {
+        _GLEE_ARB_point_sprite = GL_TRUE;
+        __GLeeLink_GL_ARB_point_sprite();
+    }
+    if (__GLeeCheckExtension("GL_ARB_fragment_program_shadow", &extensionNames) )
+    {
+        _GLEE_ARB_fragment_program_shadow = GL_TRUE;
+        __GLeeLink_GL_ARB_fragment_program_shadow();
+    }
+    if (__GLeeCheckExtension("GL_ARB_draw_buffers", &extensionNames) )
+    {
+        _GLEE_ARB_draw_buffers = GL_TRUE;
+        __GLeeLink_GL_ARB_draw_buffers();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_rectangle", &extensionNames) )
+    {
+        _GLEE_ARB_texture_rectangle = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_rectangle();
+    }
+    if (__GLeeCheckExtension("GL_ARB_color_buffer_float", &extensionNames) )
+    {
+        _GLEE_ARB_color_buffer_float = GL_TRUE;
+        __GLeeLink_GL_ARB_color_buffer_float();
+    }
+    if (__GLeeCheckExtension("GL_ARB_half_float_pixel", &extensionNames) )
+    {
+        _GLEE_ARB_half_float_pixel = GL_TRUE;
+        __GLeeLink_GL_ARB_half_float_pixel();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_float", &extensionNames) )
+    {
+        _GLEE_ARB_texture_float = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_float();
+    }
+    if (__GLeeCheckExtension("GL_ARB_pixel_buffer_object", &extensionNames) )
+    {
+        _GLEE_ARB_pixel_buffer_object = GL_TRUE;
+        __GLeeLink_GL_ARB_pixel_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_EXT_abgr", &extensionNames) )
+    {
+        _GLEE_EXT_abgr = GL_TRUE;
+        __GLeeLink_GL_EXT_abgr();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_color", &extensionNames) )
+    {
+        _GLEE_EXT_blend_color = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_color();
+    }
+    if (__GLeeCheckExtension("GL_EXT_polygon_offset", &extensionNames) )
+    {
+        _GLEE_EXT_polygon_offset = GL_TRUE;
+        __GLeeLink_GL_EXT_polygon_offset();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture", &extensionNames) )
+    {
+        _GLEE_EXT_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture3D", &extensionNames) )
+    {
+        _GLEE_EXT_texture3D = GL_TRUE;
+        __GLeeLink_GL_EXT_texture3D();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_filter4", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_filter4 = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_filter4();
+    }
+    if (__GLeeCheckExtension("GL_EXT_subtexture", &extensionNames) )
+    {
+        _GLEE_EXT_subtexture = GL_TRUE;
+        __GLeeLink_GL_EXT_subtexture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_copy_texture", &extensionNames) )
+    {
+        _GLEE_EXT_copy_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_copy_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_histogram", &extensionNames) )
+    {
+        _GLEE_EXT_histogram = GL_TRUE;
+        __GLeeLink_GL_EXT_histogram();
+    }
+    if (__GLeeCheckExtension("GL_EXT_convolution", &extensionNames) )
+    {
+        _GLEE_EXT_convolution = GL_TRUE;
+        __GLeeLink_GL_EXT_convolution();
+    }
+    if (__GLeeCheckExtension("GL_SGI_color_matrix", &extensionNames) )
+    {
+        _GLEE_SGI_color_matrix = GL_TRUE;
+        __GLeeLink_GL_SGI_color_matrix();
+    }
+    if (__GLeeCheckExtension("GL_SGI_color_table", &extensionNames) )
+    {
+        _GLEE_SGI_color_table = GL_TRUE;
+        __GLeeLink_GL_SGI_color_table();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_pixel_texture", &extensionNames) )
+    {
+        _GLEE_SGIS_pixel_texture = GL_TRUE;
+        __GLeeLink_GL_SGIS_pixel_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_pixel_texture", &extensionNames) )
+    {
+        _GLEE_SGIX_pixel_texture = GL_TRUE;
+        __GLeeLink_GL_SGIX_pixel_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture4D", &extensionNames) )
+    {
+        _GLEE_SGIS_texture4D = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture4D();
+    }
+    if (__GLeeCheckExtension("GL_SGI_texture_color_table", &extensionNames) )
+    {
+        _GLEE_SGI_texture_color_table = GL_TRUE;
+        __GLeeLink_GL_SGI_texture_color_table();
+    }
+    if (__GLeeCheckExtension("GL_EXT_cmyka", &extensionNames) )
+    {
+        _GLEE_EXT_cmyka = GL_TRUE;
+        __GLeeLink_GL_EXT_cmyka();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_object", &extensionNames) )
+    {
+        _GLEE_EXT_texture_object = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_object();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_detail_texture", &extensionNames) )
+    {
+        _GLEE_SGIS_detail_texture = GL_TRUE;
+        __GLeeLink_GL_SGIS_detail_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_sharpen_texture", &extensionNames) )
+    {
+        _GLEE_SGIS_sharpen_texture = GL_TRUE;
+        __GLeeLink_GL_SGIS_sharpen_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_packed_pixels", &extensionNames) )
+    {
+        _GLEE_EXT_packed_pixels = GL_TRUE;
+        __GLeeLink_GL_EXT_packed_pixels();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_lod", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_lod = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_lod();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_multisample", &extensionNames) )
+    {
+        _GLEE_SGIS_multisample = GL_TRUE;
+        __GLeeLink_GL_SGIS_multisample();
+    }
+    if (__GLeeCheckExtension("GL_EXT_rescale_normal", &extensionNames) )
+    {
+        _GLEE_EXT_rescale_normal = GL_TRUE;
+        __GLeeLink_GL_EXT_rescale_normal();
+    }
+    if (__GLeeCheckExtension("GL_EXT_vertex_array", &extensionNames) )
+    {
+        _GLEE_EXT_vertex_array = GL_TRUE;
+        __GLeeLink_GL_EXT_vertex_array();
+    }
+    if (__GLeeCheckExtension("GL_EXT_misc_attribute", &extensionNames) )
+    {
+        _GLEE_EXT_misc_attribute = GL_TRUE;
+        __GLeeLink_GL_EXT_misc_attribute();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_generate_mipmap", &extensionNames) )
+    {
+        _GLEE_SGIS_generate_mipmap = GL_TRUE;
+        __GLeeLink_GL_SGIS_generate_mipmap();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_clipmap", &extensionNames) )
+    {
+        _GLEE_SGIX_clipmap = GL_TRUE;
+        __GLeeLink_GL_SGIX_clipmap();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_shadow", &extensionNames) )
+    {
+        _GLEE_SGIX_shadow = GL_TRUE;
+        __GLeeLink_GL_SGIX_shadow();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_edge_clamp", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_edge_clamp = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_edge_clamp();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_border_clamp", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_border_clamp = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_border_clamp();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_minmax", &extensionNames) )
+    {
+        _GLEE_EXT_blend_minmax = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_minmax();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_subtract", &extensionNames) )
+    {
+        _GLEE_EXT_blend_subtract = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_subtract();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_logic_op", &extensionNames) )
+    {
+        _GLEE_EXT_blend_logic_op = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_logic_op();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_interlace", &extensionNames) )
+    {
+        _GLEE_SGIX_interlace = GL_TRUE;
+        __GLeeLink_GL_SGIX_interlace();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_pixel_tiles", &extensionNames) )
+    {
+        _GLEE_SGIX_pixel_tiles = GL_TRUE;
+        __GLeeLink_GL_SGIX_pixel_tiles();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_select", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_select = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_select();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_sprite", &extensionNames) )
+    {
+        _GLEE_SGIX_sprite = GL_TRUE;
+        __GLeeLink_GL_SGIX_sprite();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_multi_buffer", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_multi_buffer = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_multi_buffer();
+    }
+    if (__GLeeCheckExtension("GL_EXT_point_parameters", &extensionNames) )
+    {
+        _GLEE_EXT_point_parameters = GL_TRUE;
+        __GLeeLink_GL_EXT_point_parameters();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_point_parameters", &extensionNames) )
+    {
+        _GLEE_SGIS_point_parameters = GL_TRUE;
+        __GLeeLink_GL_SGIS_point_parameters();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_instruments", &extensionNames) )
+    {
+        _GLEE_SGIX_instruments = GL_TRUE;
+        __GLeeLink_GL_SGIX_instruments();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_scale_bias", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_scale_bias = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_scale_bias();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_framezoom", &extensionNames) )
+    {
+        _GLEE_SGIX_framezoom = GL_TRUE;
+        __GLeeLink_GL_SGIX_framezoom();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_tag_sample_buffer", &extensionNames) )
+    {
+        _GLEE_SGIX_tag_sample_buffer = GL_TRUE;
+        __GLeeLink_GL_SGIX_tag_sample_buffer();
+    }
+    if (__GLeeCheckExtension("GL_FfdMaskSGIX", &extensionNames) )
+    {
+        _GLEE_FfdMaskSGIX = GL_TRUE;
+        __GLeeLink_GL_FfdMaskSGIX();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_polynomial_ffd", &extensionNames) )
+    {
+        _GLEE_SGIX_polynomial_ffd = GL_TRUE;
+        __GLeeLink_GL_SGIX_polynomial_ffd();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_reference_plane", &extensionNames) )
+    {
+        _GLEE_SGIX_reference_plane = GL_TRUE;
+        __GLeeLink_GL_SGIX_reference_plane();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_flush_raster", &extensionNames) )
+    {
+        _GLEE_SGIX_flush_raster = GL_TRUE;
+        __GLeeLink_GL_SGIX_flush_raster();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_depth_texture", &extensionNames) )
+    {
+        _GLEE_SGIX_depth_texture = GL_TRUE;
+        __GLeeLink_GL_SGIX_depth_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_fog_function", &extensionNames) )
+    {
+        _GLEE_SGIS_fog_function = GL_TRUE;
+        __GLeeLink_GL_SGIS_fog_function();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_fog_offset", &extensionNames) )
+    {
+        _GLEE_SGIX_fog_offset = GL_TRUE;
+        __GLeeLink_GL_SGIX_fog_offset();
+    }
+    if (__GLeeCheckExtension("GL_HP_image_transform", &extensionNames) )
+    {
+        _GLEE_HP_image_transform = GL_TRUE;
+        __GLeeLink_GL_HP_image_transform();
+    }
+    if (__GLeeCheckExtension("GL_HP_convolution_border_modes", &extensionNames) )
+    {
+        _GLEE_HP_convolution_border_modes = GL_TRUE;
+        __GLeeLink_GL_HP_convolution_border_modes();
+    }
+    if (__GLeeCheckExtension("GL_INGR_palette_buffer", &extensionNames) )
+    {
+        _GLEE_INGR_palette_buffer = GL_TRUE;
+        __GLeeLink_GL_INGR_palette_buffer();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_add_env", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_add_env = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_add_env();
+    }
+    if (__GLeeCheckExtension("GL_EXT_color_subtable", &extensionNames) )
+    {
+        _GLEE_EXT_color_subtable = GL_TRUE;
+        __GLeeLink_GL_EXT_color_subtable();
+    }
+    if (__GLeeCheckExtension("GL_PGI_vertex_hints", &extensionNames) )
+    {
+        _GLEE_PGI_vertex_hints = GL_TRUE;
+        __GLeeLink_GL_PGI_vertex_hints();
+    }
+    if (__GLeeCheckExtension("GL_PGI_misc_hints", &extensionNames) )
+    {
+        _GLEE_PGI_misc_hints = GL_TRUE;
+        __GLeeLink_GL_PGI_misc_hints();
+    }
+    if (__GLeeCheckExtension("GL_EXT_paletted_texture", &extensionNames) )
+    {
+        _GLEE_EXT_paletted_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_paletted_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_clip_volume_hint", &extensionNames) )
+    {
+        _GLEE_EXT_clip_volume_hint = GL_TRUE;
+        __GLeeLink_GL_EXT_clip_volume_hint();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_list_priority", &extensionNames) )
+    {
+        _GLEE_SGIX_list_priority = GL_TRUE;
+        __GLeeLink_GL_SGIX_list_priority();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_ir_instrument1", &extensionNames) )
+    {
+        _GLEE_SGIX_ir_instrument1 = GL_TRUE;
+        __GLeeLink_GL_SGIX_ir_instrument1();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_calligraphic_fragment", &extensionNames) )
+    {
+        _GLEE_SGIX_calligraphic_fragment = GL_TRUE;
+        __GLeeLink_GL_SGIX_calligraphic_fragment();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_lod_bias", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_lod_bias = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_lod_bias();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_shadow_ambient", &extensionNames) )
+    {
+        _GLEE_SGIX_shadow_ambient = GL_TRUE;
+        __GLeeLink_GL_SGIX_shadow_ambient();
+    }
+    if (__GLeeCheckExtension("GL_EXT_index_texture", &extensionNames) )
+    {
+        _GLEE_EXT_index_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_index_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_index_material", &extensionNames) )
+    {
+        _GLEE_EXT_index_material = GL_TRUE;
+        __GLeeLink_GL_EXT_index_material();
+    }
+    if (__GLeeCheckExtension("GL_EXT_index_func", &extensionNames) )
+    {
+        _GLEE_EXT_index_func = GL_TRUE;
+        __GLeeLink_GL_EXT_index_func();
+    }
+    if (__GLeeCheckExtension("GL_EXT_index_array_formats", &extensionNames) )
+    {
+        _GLEE_EXT_index_array_formats = GL_TRUE;
+        __GLeeLink_GL_EXT_index_array_formats();
+    }
+    if (__GLeeCheckExtension("GL_EXT_compiled_vertex_array", &extensionNames) )
+    {
+        _GLEE_EXT_compiled_vertex_array = GL_TRUE;
+        __GLeeLink_GL_EXT_compiled_vertex_array();
+    }
+    if (__GLeeCheckExtension("GL_EXT_cull_vertex", &extensionNames) )
+    {
+        _GLEE_EXT_cull_vertex = GL_TRUE;
+        __GLeeLink_GL_EXT_cull_vertex();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_ycrcb", &extensionNames) )
+    {
+        _GLEE_SGIX_ycrcb = GL_TRUE;
+        __GLeeLink_GL_SGIX_ycrcb();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_fragment_lighting", &extensionNames) )
+    {
+        _GLEE_SGIX_fragment_lighting = GL_TRUE;
+        __GLeeLink_GL_SGIX_fragment_lighting();
+    }
+    if (__GLeeCheckExtension("GL_IBM_rasterpos_clip", &extensionNames) )
+    {
+        _GLEE_IBM_rasterpos_clip = GL_TRUE;
+        __GLeeLink_GL_IBM_rasterpos_clip();
+    }
+    if (__GLeeCheckExtension("GL_HP_texture_lighting", &extensionNames) )
+    {
+        _GLEE_HP_texture_lighting = GL_TRUE;
+        __GLeeLink_GL_HP_texture_lighting();
+    }
+    if (__GLeeCheckExtension("GL_EXT_draw_range_elements", &extensionNames) )
+    {
+        _GLEE_EXT_draw_range_elements = GL_TRUE;
+        __GLeeLink_GL_EXT_draw_range_elements();
+    }
+    if (__GLeeCheckExtension("GL_WIN_phong_shading", &extensionNames) )
+    {
+        _GLEE_WIN_phong_shading = GL_TRUE;
+        __GLeeLink_GL_WIN_phong_shading();
+    }
+    if (__GLeeCheckExtension("GL_WIN_specular_fog", &extensionNames) )
+    {
+        _GLEE_WIN_specular_fog = GL_TRUE;
+        __GLeeLink_GL_WIN_specular_fog();
+    }
+    if (__GLeeCheckExtension("GL_EXT_light_texture", &extensionNames) )
+    {
+        _GLEE_EXT_light_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_light_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_blend_alpha_minmax", &extensionNames) )
+    {
+        _GLEE_SGIX_blend_alpha_minmax = GL_TRUE;
+        __GLeeLink_GL_SGIX_blend_alpha_minmax();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_impact_pixel_texture", &extensionNames) )
+    {
+        _GLEE_SGIX_impact_pixel_texture = GL_TRUE;
+        __GLeeLink_GL_SGIX_impact_pixel_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_bgra", &extensionNames) )
+    {
+        _GLEE_EXT_bgra = GL_TRUE;
+        __GLeeLink_GL_EXT_bgra();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_async", &extensionNames) )
+    {
+        _GLEE_SGIX_async = GL_TRUE;
+        __GLeeLink_GL_SGIX_async();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_async_pixel", &extensionNames) )
+    {
+        _GLEE_SGIX_async_pixel = GL_TRUE;
+        __GLeeLink_GL_SGIX_async_pixel();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_async_histogram", &extensionNames) )
+    {
+        _GLEE_SGIX_async_histogram = GL_TRUE;
+        __GLeeLink_GL_SGIX_async_histogram();
+    }
+    if (__GLeeCheckExtension("GL_INTEL_texture_scissor", &extensionNames) )
+    {
+        _GLEE_INTEL_texture_scissor = GL_TRUE;
+        __GLeeLink_GL_INTEL_texture_scissor();
+    }
+    if (__GLeeCheckExtension("GL_INTEL_parallel_arrays", &extensionNames) )
+    {
+        _GLEE_INTEL_parallel_arrays = GL_TRUE;
+        __GLeeLink_GL_INTEL_parallel_arrays();
+    }
+    if (__GLeeCheckExtension("GL_HP_occlusion_test", &extensionNames) )
+    {
+        _GLEE_HP_occlusion_test = GL_TRUE;
+        __GLeeLink_GL_HP_occlusion_test();
+    }
+    if (__GLeeCheckExtension("GL_EXT_pixel_transform", &extensionNames) )
+    {
+        _GLEE_EXT_pixel_transform = GL_TRUE;
+        __GLeeLink_GL_EXT_pixel_transform();
+    }
+    if (__GLeeCheckExtension("GL_EXT_pixel_transform_color_table", &extensionNames) )
+    {
+        _GLEE_EXT_pixel_transform_color_table = GL_TRUE;
+        __GLeeLink_GL_EXT_pixel_transform_color_table();
+    }
+    if (__GLeeCheckExtension("GL_EXT_shared_texture_palette", &extensionNames) )
+    {
+        _GLEE_EXT_shared_texture_palette = GL_TRUE;
+        __GLeeLink_GL_EXT_shared_texture_palette();
+    }
+    if (__GLeeCheckExtension("GL_EXT_separate_specular_color", &extensionNames) )
+    {
+        _GLEE_EXT_separate_specular_color = GL_TRUE;
+        __GLeeLink_GL_EXT_separate_specular_color();
+    }
+    if (__GLeeCheckExtension("GL_EXT_secondary_color", &extensionNames) )
+    {
+        _GLEE_EXT_secondary_color = GL_TRUE;
+        __GLeeLink_GL_EXT_secondary_color();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_perturb_normal", &extensionNames) )
+    {
+        _GLEE_EXT_texture_perturb_normal = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_perturb_normal();
+    }
+    if (__GLeeCheckExtension("GL_EXT_multi_draw_arrays", &extensionNames) )
+    {
+        _GLEE_EXT_multi_draw_arrays = GL_TRUE;
+        __GLeeLink_GL_EXT_multi_draw_arrays();
+    }
+    if (__GLeeCheckExtension("GL_EXT_fog_coord", &extensionNames) )
+    {
+        _GLEE_EXT_fog_coord = GL_TRUE;
+        __GLeeLink_GL_EXT_fog_coord();
+    }
+    if (__GLeeCheckExtension("GL_REND_screen_coordinates", &extensionNames) )
+    {
+        _GLEE_REND_screen_coordinates = GL_TRUE;
+        __GLeeLink_GL_REND_screen_coordinates();
+    }
+    if (__GLeeCheckExtension("GL_EXT_coordinate_frame", &extensionNames) )
+    {
+        _GLEE_EXT_coordinate_frame = GL_TRUE;
+        __GLeeLink_GL_EXT_coordinate_frame();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_env_combine", &extensionNames) )
+    {
+        _GLEE_EXT_texture_env_combine = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_env_combine();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_specular_vector", &extensionNames) )
+    {
+        _GLEE_APPLE_specular_vector = GL_TRUE;
+        __GLeeLink_GL_APPLE_specular_vector();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_transform_hint", &extensionNames) )
+    {
+        _GLEE_APPLE_transform_hint = GL_TRUE;
+        __GLeeLink_GL_APPLE_transform_hint();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_fog_scale", &extensionNames) )
+    {
+        _GLEE_SGIX_fog_scale = GL_TRUE;
+        __GLeeLink_GL_SGIX_fog_scale();
+    }
+    if (__GLeeCheckExtension("GL_SUNX_constant_data", &extensionNames) )
+    {
+        _GLEE_SUNX_constant_data = GL_TRUE;
+        __GLeeLink_GL_SUNX_constant_data();
+    }
+    if (__GLeeCheckExtension("GL_SUN_global_alpha", &extensionNames) )
+    {
+        _GLEE_SUN_global_alpha = GL_TRUE;
+        __GLeeLink_GL_SUN_global_alpha();
+    }
+    if (__GLeeCheckExtension("GL_SUN_triangle_list", &extensionNames) )
+    {
+        _GLEE_SUN_triangle_list = GL_TRUE;
+        __GLeeLink_GL_SUN_triangle_list();
+    }
+    if (__GLeeCheckExtension("GL_SUN_vertex", &extensionNames) )
+    {
+        _GLEE_SUN_vertex = GL_TRUE;
+        __GLeeLink_GL_SUN_vertex();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_func_separate", &extensionNames) )
+    {
+        _GLEE_EXT_blend_func_separate = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_func_separate();
+    }
+    if (__GLeeCheckExtension("GL_INGR_color_clamp", &extensionNames) )
+    {
+        _GLEE_INGR_color_clamp = GL_TRUE;
+        __GLeeLink_GL_INGR_color_clamp();
+    }
+    if (__GLeeCheckExtension("GL_INGR_interlace_read", &extensionNames) )
+    {
+        _GLEE_INGR_interlace_read = GL_TRUE;
+        __GLeeLink_GL_INGR_interlace_read();
+    }
+    if (__GLeeCheckExtension("GL_EXT_stencil_wrap", &extensionNames) )
+    {
+        _GLEE_EXT_stencil_wrap = GL_TRUE;
+        __GLeeLink_GL_EXT_stencil_wrap();
+    }
+    if (__GLeeCheckExtension("GL_EXT_422_pixels", &extensionNames) )
+    {
+        _GLEE_EXT_422_pixels = GL_TRUE;
+        __GLeeLink_GL_EXT_422_pixels();
+    }
+    if (__GLeeCheckExtension("GL_NV_texgen_reflection", &extensionNames) )
+    {
+        _GLEE_NV_texgen_reflection = GL_TRUE;
+        __GLeeLink_GL_NV_texgen_reflection();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_cube_map", &extensionNames) )
+    {
+        _GLEE_EXT_texture_cube_map = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_cube_map();
+    }
+    if (__GLeeCheckExtension("GL_SUN_convolution_border_modes", &extensionNames) )
+    {
+        _GLEE_SUN_convolution_border_modes = GL_TRUE;
+        __GLeeLink_GL_SUN_convolution_border_modes();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_env_add", &extensionNames) )
+    {
+        _GLEE_EXT_texture_env_add = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_env_add();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_lod_bias", &extensionNames) )
+    {
+        _GLEE_EXT_texture_lod_bias = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_lod_bias();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_filter_anisotropic", &extensionNames) )
+    {
+        _GLEE_EXT_texture_filter_anisotropic = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_filter_anisotropic();
+    }
+    if (__GLeeCheckExtension("GL_EXT_vertex_weighting", &extensionNames) )
+    {
+        _GLEE_EXT_vertex_weighting = GL_TRUE;
+        __GLeeLink_GL_EXT_vertex_weighting();
+    }
+    if (__GLeeCheckExtension("GL_NV_light_max_exponent", &extensionNames) )
+    {
+        _GLEE_NV_light_max_exponent = GL_TRUE;
+        __GLeeLink_GL_NV_light_max_exponent();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_array_range", &extensionNames) )
+    {
+        _GLEE_NV_vertex_array_range = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_array_range();
+    }
+    if (__GLeeCheckExtension("GL_NV_register_combiners", &extensionNames) )
+    {
+        _GLEE_NV_register_combiners = GL_TRUE;
+        __GLeeLink_GL_NV_register_combiners();
+    }
+    if (__GLeeCheckExtension("GL_NV_fog_distance", &extensionNames) )
+    {
+        _GLEE_NV_fog_distance = GL_TRUE;
+        __GLeeLink_GL_NV_fog_distance();
+    }
+    if (__GLeeCheckExtension("GL_NV_texgen_emboss", &extensionNames) )
+    {
+        _GLEE_NV_texgen_emboss = GL_TRUE;
+        __GLeeLink_GL_NV_texgen_emboss();
+    }
+    if (__GLeeCheckExtension("GL_NV_blend_square", &extensionNames) )
+    {
+        _GLEE_NV_blend_square = GL_TRUE;
+        __GLeeLink_GL_NV_blend_square();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_env_combine4", &extensionNames) )
+    {
+        _GLEE_NV_texture_env_combine4 = GL_TRUE;
+        __GLeeLink_GL_NV_texture_env_combine4();
+    }
+    if (__GLeeCheckExtension("GL_MESA_resize_buffers", &extensionNames) )
+    {
+        _GLEE_MESA_resize_buffers = GL_TRUE;
+        __GLeeLink_GL_MESA_resize_buffers();
+    }
+    if (__GLeeCheckExtension("GL_MESA_window_pos", &extensionNames) )
+    {
+        _GLEE_MESA_window_pos = GL_TRUE;
+        __GLeeLink_GL_MESA_window_pos();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_compression_s3tc", &extensionNames) )
+    {
+        _GLEE_EXT_texture_compression_s3tc = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_compression_s3tc();
+    }
+    if (__GLeeCheckExtension("GL_IBM_cull_vertex", &extensionNames) )
+    {
+        _GLEE_IBM_cull_vertex = GL_TRUE;
+        __GLeeLink_GL_IBM_cull_vertex();
+    }
+    if (__GLeeCheckExtension("GL_IBM_multimode_draw_arrays", &extensionNames) )
+    {
+        _GLEE_IBM_multimode_draw_arrays = GL_TRUE;
+        __GLeeLink_GL_IBM_multimode_draw_arrays();
+    }
+    if (__GLeeCheckExtension("GL_IBM_vertex_array_lists", &extensionNames) )
+    {
+        _GLEE_IBM_vertex_array_lists = GL_TRUE;
+        __GLeeLink_GL_IBM_vertex_array_lists();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_subsample", &extensionNames) )
+    {
+        _GLEE_SGIX_subsample = GL_TRUE;
+        __GLeeLink_GL_SGIX_subsample();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_ycrcb_subsample", &extensionNames) )
+    {
+        _GLEE_SGIX_ycrcb_subsample = GL_TRUE;
+        __GLeeLink_GL_SGIX_ycrcb_subsample();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_ycrcba", &extensionNames) )
+    {
+        _GLEE_SGIX_ycrcba = GL_TRUE;
+        __GLeeLink_GL_SGIX_ycrcba();
+    }
+    if (__GLeeCheckExtension("GL_SGI_depth_pass_instrument", &extensionNames) )
+    {
+        _GLEE_SGI_depth_pass_instrument = GL_TRUE;
+        __GLeeLink_GL_SGI_depth_pass_instrument();
+    }
+    if (__GLeeCheckExtension("GL_3DFX_texture_compression_FXT1", &extensionNames) )
+    {
+        _GLEE_3DFX_texture_compression_FXT1 = GL_TRUE;
+        __GLeeLink_GL_3DFX_texture_compression_FXT1();
+    }
+    if (__GLeeCheckExtension("GL_3DFX_multisample", &extensionNames) )
+    {
+        _GLEE_3DFX_multisample = GL_TRUE;
+        __GLeeLink_GL_3DFX_multisample();
+    }
+    if (__GLeeCheckExtension("GL_3DFX_tbuffer", &extensionNames) )
+    {
+        _GLEE_3DFX_tbuffer = GL_TRUE;
+        __GLeeLink_GL_3DFX_tbuffer();
+    }
+    if (__GLeeCheckExtension("GL_EXT_multisample", &extensionNames) )
+    {
+        _GLEE_EXT_multisample = GL_TRUE;
+        __GLeeLink_GL_EXT_multisample();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_vertex_preclip", &extensionNames) )
+    {
+        _GLEE_SGIX_vertex_preclip = GL_TRUE;
+        __GLeeLink_GL_SGIX_vertex_preclip();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_convolution_accuracy", &extensionNames) )
+    {
+        _GLEE_SGIX_convolution_accuracy = GL_TRUE;
+        __GLeeLink_GL_SGIX_convolution_accuracy();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_resample", &extensionNames) )
+    {
+        _GLEE_SGIX_resample = GL_TRUE;
+        __GLeeLink_GL_SGIX_resample();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_point_line_texgen", &extensionNames) )
+    {
+        _GLEE_SGIS_point_line_texgen = GL_TRUE;
+        __GLeeLink_GL_SGIS_point_line_texgen();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_color_mask", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_color_mask = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_color_mask();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_env_dot3", &extensionNames) )
+    {
+        _GLEE_EXT_texture_env_dot3 = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_env_dot3();
+    }
+    if (__GLeeCheckExtension("GL_ATI_texture_mirror_once", &extensionNames) )
+    {
+        _GLEE_ATI_texture_mirror_once = GL_TRUE;
+        __GLeeLink_GL_ATI_texture_mirror_once();
+    }
+    if (__GLeeCheckExtension("GL_NV_fence", &extensionNames) )
+    {
+        _GLEE_NV_fence = GL_TRUE;
+        __GLeeLink_GL_NV_fence();
+    }
+    if (__GLeeCheckExtension("GL_IBM_texture_mirrored_repeat", &extensionNames) )
+    {
+        _GLEE_IBM_texture_mirrored_repeat = GL_TRUE;
+        __GLeeLink_GL_IBM_texture_mirrored_repeat();
+    }
+    if (__GLeeCheckExtension("GL_NV_evaluators", &extensionNames) )
+    {
+        _GLEE_NV_evaluators = GL_TRUE;
+        __GLeeLink_GL_NV_evaluators();
+    }
+    if (__GLeeCheckExtension("GL_NV_packed_depth_stencil", &extensionNames) )
+    {
+        _GLEE_NV_packed_depth_stencil = GL_TRUE;
+        __GLeeLink_GL_NV_packed_depth_stencil();
+    }
+    if (__GLeeCheckExtension("GL_NV_register_combiners2", &extensionNames) )
+    {
+        _GLEE_NV_register_combiners2 = GL_TRUE;
+        __GLeeLink_GL_NV_register_combiners2();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_compression_vtc", &extensionNames) )
+    {
+        _GLEE_NV_texture_compression_vtc = GL_TRUE;
+        __GLeeLink_GL_NV_texture_compression_vtc();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_rectangle", &extensionNames) )
+    {
+        _GLEE_NV_texture_rectangle = GL_TRUE;
+        __GLeeLink_GL_NV_texture_rectangle();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_shader", &extensionNames) )
+    {
+        _GLEE_NV_texture_shader = GL_TRUE;
+        __GLeeLink_GL_NV_texture_shader();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_shader2", &extensionNames) )
+    {
+        _GLEE_NV_texture_shader2 = GL_TRUE;
+        __GLeeLink_GL_NV_texture_shader2();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_array_range2", &extensionNames) )
+    {
+        _GLEE_NV_vertex_array_range2 = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_array_range2();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_coordinate_clamp", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_coordinate_clamp = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_coordinate_clamp();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_scalebias_hint", &extensionNames) )
+    {
+        _GLEE_SGIX_scalebias_hint = GL_TRUE;
+        __GLeeLink_GL_SGIX_scalebias_hint();
+    }
+    if (__GLeeCheckExtension("GL_OML_interlace", &extensionNames) )
+    {
+        _GLEE_OML_interlace = GL_TRUE;
+        __GLeeLink_GL_OML_interlace();
+    }
+    if (__GLeeCheckExtension("GL_OML_subsample", &extensionNames) )
+    {
+        _GLEE_OML_subsample = GL_TRUE;
+        __GLeeLink_GL_OML_subsample();
+    }
+    if (__GLeeCheckExtension("GL_OML_resample", &extensionNames) )
+    {
+        _GLEE_OML_resample = GL_TRUE;
+        __GLeeLink_GL_OML_resample();
+    }
+    if (__GLeeCheckExtension("GL_NV_copy_depth_to_color", &extensionNames) )
+    {
+        _GLEE_NV_copy_depth_to_color = GL_TRUE;
+        __GLeeLink_GL_NV_copy_depth_to_color();
+    }
+    if (__GLeeCheckExtension("GL_ATI_envmap_bumpmap", &extensionNames) )
+    {
+        _GLEE_ATI_envmap_bumpmap = GL_TRUE;
+        __GLeeLink_GL_ATI_envmap_bumpmap();
+    }
+    if (__GLeeCheckExtension("GL_ATI_fragment_shader", &extensionNames) )
+    {
+        _GLEE_ATI_fragment_shader = GL_TRUE;
+        __GLeeLink_GL_ATI_fragment_shader();
+    }
+    if (__GLeeCheckExtension("GL_ATI_pn_triangles", &extensionNames) )
+    {
+        _GLEE_ATI_pn_triangles = GL_TRUE;
+        __GLeeLink_GL_ATI_pn_triangles();
+    }
+    if (__GLeeCheckExtension("GL_ATI_vertex_array_object", &extensionNames) )
+    {
+        _GLEE_ATI_vertex_array_object = GL_TRUE;
+        __GLeeLink_GL_ATI_vertex_array_object();
+    }
+    if (__GLeeCheckExtension("GL_EXT_vertex_shader", &extensionNames) )
+    {
+        _GLEE_EXT_vertex_shader = GL_TRUE;
+        __GLeeLink_GL_EXT_vertex_shader();
+    }
+    if (__GLeeCheckExtension("GL_ATI_vertex_streams", &extensionNames) )
+    {
+        _GLEE_ATI_vertex_streams = GL_TRUE;
+        __GLeeLink_GL_ATI_vertex_streams();
+    }
+    if (__GLeeCheckExtension("GL_ATI_element_array", &extensionNames) )
+    {
+        _GLEE_ATI_element_array = GL_TRUE;
+        __GLeeLink_GL_ATI_element_array();
+    }
+    if (__GLeeCheckExtension("GL_SUN_mesh_array", &extensionNames) )
+    {
+        _GLEE_SUN_mesh_array = GL_TRUE;
+        __GLeeLink_GL_SUN_mesh_array();
+    }
+    if (__GLeeCheckExtension("GL_SUN_slice_accum", &extensionNames) )
+    {
+        _GLEE_SUN_slice_accum = GL_TRUE;
+        __GLeeLink_GL_SUN_slice_accum();
+    }
+    if (__GLeeCheckExtension("GL_NV_multisample_filter_hint", &extensionNames) )
+    {
+        _GLEE_NV_multisample_filter_hint = GL_TRUE;
+        __GLeeLink_GL_NV_multisample_filter_hint();
+    }
+    if (__GLeeCheckExtension("GL_NV_depth_clamp", &extensionNames) )
+    {
+        _GLEE_NV_depth_clamp = GL_TRUE;
+        __GLeeLink_GL_NV_depth_clamp();
+    }
+    if (__GLeeCheckExtension("GL_NV_occlusion_query", &extensionNames) )
+    {
+        _GLEE_NV_occlusion_query = GL_TRUE;
+        __GLeeLink_GL_NV_occlusion_query();
+    }
+    if (__GLeeCheckExtension("GL_NV_point_sprite", &extensionNames) )
+    {
+        _GLEE_NV_point_sprite = GL_TRUE;
+        __GLeeLink_GL_NV_point_sprite();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_shader3", &extensionNames) )
+    {
+        _GLEE_NV_texture_shader3 = GL_TRUE;
+        __GLeeLink_GL_NV_texture_shader3();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program1_1", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program1_1 = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program1_1();
+    }
+    if (__GLeeCheckExtension("GL_EXT_shadow_funcs", &extensionNames) )
+    {
+        _GLEE_EXT_shadow_funcs = GL_TRUE;
+        __GLeeLink_GL_EXT_shadow_funcs();
+    }
+    if (__GLeeCheckExtension("GL_EXT_stencil_two_side", &extensionNames) )
+    {
+        _GLEE_EXT_stencil_two_side = GL_TRUE;
+        __GLeeLink_GL_EXT_stencil_two_side();
+    }
+    if (__GLeeCheckExtension("GL_ATI_text_fragment_shader", &extensionNames) )
+    {
+        _GLEE_ATI_text_fragment_shader = GL_TRUE;
+        __GLeeLink_GL_ATI_text_fragment_shader();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_client_storage", &extensionNames) )
+    {
+        _GLEE_APPLE_client_storage = GL_TRUE;
+        __GLeeLink_GL_APPLE_client_storage();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_element_array", &extensionNames) )
+    {
+        _GLEE_APPLE_element_array = GL_TRUE;
+        __GLeeLink_GL_APPLE_element_array();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_fence", &extensionNames) )
+    {
+        _GLEE_APPLE_fence = GL_TRUE;
+        __GLeeLink_GL_APPLE_fence();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_vertex_array_object", &extensionNames) )
+    {
+        _GLEE_APPLE_vertex_array_object = GL_TRUE;
+        __GLeeLink_GL_APPLE_vertex_array_object();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_vertex_array_range", &extensionNames) )
+    {
+        _GLEE_APPLE_vertex_array_range = GL_TRUE;
+        __GLeeLink_GL_APPLE_vertex_array_range();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_ycbcr_422", &extensionNames) )
+    {
+        _GLEE_APPLE_ycbcr_422 = GL_TRUE;
+        __GLeeLink_GL_APPLE_ycbcr_422();
+    }
+    if (__GLeeCheckExtension("GL_S3_s3tc", &extensionNames) )
+    {
+        _GLEE_S3_s3tc = GL_TRUE;
+        __GLeeLink_GL_S3_s3tc();
+    }
+    if (__GLeeCheckExtension("GL_ATI_draw_buffers", &extensionNames) )
+    {
+        _GLEE_ATI_draw_buffers = GL_TRUE;
+        __GLeeLink_GL_ATI_draw_buffers();
+    }
+    if (__GLeeCheckExtension("GL_ATI_pixel_format_float", &extensionNames) )
+    {
+        _GLEE_ATI_pixel_format_float = GL_TRUE;
+        __GLeeLink_GL_ATI_pixel_format_float();
+    }
+    if (__GLeeCheckExtension("GL_ATI_texture_env_combine3", &extensionNames) )
+    {
+        _GLEE_ATI_texture_env_combine3 = GL_TRUE;
+        __GLeeLink_GL_ATI_texture_env_combine3();
+    }
+    if (__GLeeCheckExtension("GL_ATI_texture_float", &extensionNames) )
+    {
+        _GLEE_ATI_texture_float = GL_TRUE;
+        __GLeeLink_GL_ATI_texture_float();
+    }
+    if (__GLeeCheckExtension("GL_NV_float_buffer", &extensionNames) )
+    {
+        _GLEE_NV_float_buffer = GL_TRUE;
+        __GLeeLink_GL_NV_float_buffer();
+    }
+    if (__GLeeCheckExtension("GL_NV_fragment_program", &extensionNames) )
+    {
+        _GLEE_NV_fragment_program = GL_TRUE;
+        __GLeeLink_GL_NV_fragment_program();
+    }
+    if (__GLeeCheckExtension("GL_NV_half_float", &extensionNames) )
+    {
+        _GLEE_NV_half_float = GL_TRUE;
+        __GLeeLink_GL_NV_half_float();
+    }
+    if (__GLeeCheckExtension("GL_NV_pixel_data_range", &extensionNames) )
+    {
+        _GLEE_NV_pixel_data_range = GL_TRUE;
+        __GLeeLink_GL_NV_pixel_data_range();
+    }
+    if (__GLeeCheckExtension("GL_NV_primitive_restart", &extensionNames) )
+    {
+        _GLEE_NV_primitive_restart = GL_TRUE;
+        __GLeeLink_GL_NV_primitive_restart();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_expand_normal", &extensionNames) )
+    {
+        _GLEE_NV_texture_expand_normal = GL_TRUE;
+        __GLeeLink_GL_NV_texture_expand_normal();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program2", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program2 = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program2();
+    }
+    if (__GLeeCheckExtension("GL_ATI_map_object_buffer", &extensionNames) )
+    {
+        _GLEE_ATI_map_object_buffer = GL_TRUE;
+        __GLeeLink_GL_ATI_map_object_buffer();
+    }
+    if (__GLeeCheckExtension("GL_ATI_separate_stencil", &extensionNames) )
+    {
+        _GLEE_ATI_separate_stencil = GL_TRUE;
+        __GLeeLink_GL_ATI_separate_stencil();
+    }
+    if (__GLeeCheckExtension("GL_ATI_vertex_attrib_array_object", &extensionNames) )
+    {
+        _GLEE_ATI_vertex_attrib_array_object = GL_TRUE;
+        __GLeeLink_GL_ATI_vertex_attrib_array_object();
+    }
+    if (__GLeeCheckExtension("GL_OES_read_format", &extensionNames) )
+    {
+        _GLEE_OES_read_format = GL_TRUE;
+        __GLeeLink_GL_OES_read_format();
+    }
+    if (__GLeeCheckExtension("GL_EXT_depth_bounds_test", &extensionNames) )
+    {
+        _GLEE_EXT_depth_bounds_test = GL_TRUE;
+        __GLeeLink_GL_EXT_depth_bounds_test();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_mirror_clamp", &extensionNames) )
+    {
+        _GLEE_EXT_texture_mirror_clamp = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_mirror_clamp();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_equation_separate", &extensionNames) )
+    {
+        _GLEE_EXT_blend_equation_separate = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_equation_separate();
+    }
+    if (__GLeeCheckExtension("GL_MESA_pack_invert", &extensionNames) )
+    {
+        _GLEE_MESA_pack_invert = GL_TRUE;
+        __GLeeLink_GL_MESA_pack_invert();
+    }
+    if (__GLeeCheckExtension("GL_MESA_ycbcr_texture", &extensionNames) )
+    {
+        _GLEE_MESA_ycbcr_texture = GL_TRUE;
+        __GLeeLink_GL_MESA_ycbcr_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_pixel_buffer_object", &extensionNames) )
+    {
+        _GLEE_EXT_pixel_buffer_object = GL_TRUE;
+        __GLeeLink_GL_EXT_pixel_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_NV_fragment_program_option", &extensionNames) )
+    {
+        _GLEE_NV_fragment_program_option = GL_TRUE;
+        __GLeeLink_GL_NV_fragment_program_option();
+    }
+    if (__GLeeCheckExtension("GL_NV_fragment_program2", &extensionNames) )
+    {
+        _GLEE_NV_fragment_program2 = GL_TRUE;
+        __GLeeLink_GL_NV_fragment_program2();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program2_option", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program2_option = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program2_option();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program3", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program3 = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program3();
+    }
+    if (__GLeeCheckExtension("GL_EXT_framebuffer_object", &extensionNames) )
+    {
+        _GLEE_EXT_framebuffer_object = GL_TRUE;
+        __GLeeLink_GL_EXT_framebuffer_object();
+    }
+    if (__GLeeCheckExtension("GL_GREMEDY_string_marker", &extensionNames) )
+    {
+        _GLEE_GREMEDY_string_marker = GL_TRUE;
+        __GLeeLink_GL_GREMEDY_string_marker();
+    }
+    if (__GLeeCheckExtension("GL_EXT_Cg_shader", &extensionNames) )
+    {
+        _GLEE_EXT_Cg_shader = GL_TRUE;
+        __GLeeLink_GL_EXT_Cg_shader();
+    }
+    if (__GLeeCheckExtension("GL_EXT_timer_query", &extensionNames) )
+    {
+        _GLEE_EXT_timer_query = GL_TRUE;
+        __GLeeLink_GL_EXT_timer_query();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_buffer_object", &extensionNames) )
+    {
+        _GLEE_EXT_texture_buffer_object = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_EXT_gpu_shader4", &extensionNames) )
+    {
+        _GLEE_EXT_gpu_shader4 = GL_TRUE;
+        __GLeeLink_GL_EXT_gpu_shader4();
+    }
+    if (__GLeeCheckExtension("GL_EXT_geometry_shader4", &extensionNames) )
+    {
+        _GLEE_EXT_geometry_shader4 = GL_TRUE;
+        __GLeeLink_GL_EXT_geometry_shader4();
+    }
+    if (__GLeeCheckExtension("GL_EXT_bindable_uniform", &extensionNames) )
+    {
+        _GLEE_EXT_bindable_uniform = GL_TRUE;
+        __GLeeLink_GL_EXT_bindable_uniform();
+    }
+    if (__GLeeCheckExtension("GL_EXT_framebuffer_sRGB", &extensionNames) )
+    {
+        _GLEE_EXT_framebuffer_sRGB = GL_TRUE;
+        __GLeeLink_GL_EXT_framebuffer_sRGB();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_shared_exponent", &extensionNames) )
+    {
+        _GLEE_EXT_texture_shared_exponent = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_shared_exponent();
+    }
+    if (__GLeeCheckExtension("GL_EXT_packed_float", &extensionNames) )
+    {
+        _GLEE_EXT_packed_float = GL_TRUE;
+        __GLeeLink_GL_EXT_packed_float();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_array", &extensionNames) )
+    {
+        _GLEE_EXT_texture_array = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_array();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_integer", &extensionNames) )
+    {
+        _GLEE_EXT_texture_integer = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_integer();
+    }
+    if (__GLeeCheckExtension("GL_NV_depth_buffer_float", &extensionNames) )
+    {
+        _GLEE_NV_depth_buffer_float = GL_TRUE;
+        __GLeeLink_GL_NV_depth_buffer_float();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_compression_latc", &extensionNames) )
+    {
+        _GLEE_EXT_texture_compression_latc = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_compression_latc();
+    }
+    if (__GLeeCheckExtension("GL_NV_transform_feedback", &extensionNames) )
+    {
+        _GLEE_NV_transform_feedback = GL_TRUE;
+        __GLeeLink_GL_NV_transform_feedback();
+    }
+    if (__GLeeCheckExtension("GL_NV_geometry_program4", &extensionNames) )
+    {
+        _GLEE_NV_geometry_program4 = GL_TRUE;
+        __GLeeLink_GL_NV_geometry_program4();
+    }
+    if (__GLeeCheckExtension("GL_NV_gpu_program4", &extensionNames) )
+    {
+        _GLEE_NV_gpu_program4 = GL_TRUE;
+        __GLeeLink_GL_NV_gpu_program4();
+    }
+    if (__GLeeCheckExtension("GL_NV_framebuffer_multisample_coverage", &extensionNames) )
+    {
+        _GLEE_NV_framebuffer_multisample_coverage = GL_TRUE;
+        __GLeeLink_GL_NV_framebuffer_multisample_coverage();
+    }
+    if (__GLeeCheckExtension("GL_EXT_framebuffer_multisample", &extensionNames) )
+    {
+        _GLEE_EXT_framebuffer_multisample = GL_TRUE;
+        __GLeeLink_GL_EXT_framebuffer_multisample();
+    }
+    if (__GLeeCheckExtension("GL_EXT_framebuffer_blit", &extensionNames) )
+    {
+        _GLEE_EXT_framebuffer_blit = GL_TRUE;
+        __GLeeLink_GL_EXT_framebuffer_blit();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_compression_rgtc", &extensionNames) )
+    {
+        _GLEE_EXT_texture_compression_rgtc = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_compression_rgtc();
+    }
+    if (__GLeeCheckExtension("GL_EXT_color_matrix", &extensionNames) )
+    {
+        _GLEE_EXT_color_matrix = GL_TRUE;
+        __GLeeLink_GL_EXT_color_matrix();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_select", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_select = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_select();
+    }
+    if (__GLeeCheckExtension("GL_INGR_blend_func_separate", &extensionNames) )
+    {
+        _GLEE_INGR_blend_func_separate = GL_TRUE;
+        __GLeeLink_GL_INGR_blend_func_separate();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_depth_pass_instrument", &extensionNames) )
+    {
+        _GLEE_SGIX_depth_pass_instrument = GL_TRUE;
+        __GLeeLink_GL_SGIX_depth_pass_instrument();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_igloo_interface", &extensionNames) )
+    {
+        _GLEE_SGIX_igloo_interface = GL_TRUE;
+        __GLeeLink_GL_SGIX_igloo_interface();
+    }
+    if (__GLeeCheckExtension("GL_EXT_draw_buffers2", &extensionNames) )
+    {
+        _GLEE_EXT_draw_buffers2 = GL_TRUE;
+        __GLeeLink_GL_EXT_draw_buffers2();
+    }
+    if (__GLeeCheckExtension("GL_NV_parameter_buffer_object", &extensionNames) )
+    {
+        _GLEE_NV_parameter_buffer_object = GL_TRUE;
+        __GLeeLink_GL_NV_parameter_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_EXT_draw_instanced", &extensionNames) )
+    {
+        _GLEE_EXT_draw_instanced = GL_TRUE;
+        __GLeeLink_GL_EXT_draw_instanced();
+    }
+    if (__GLeeCheckExtension("GL_EXT_fragment_lighting", &extensionNames) )
+    {
+        _GLEE_EXT_fragment_lighting = GL_TRUE;
+        __GLeeLink_GL_EXT_fragment_lighting();
+    }
+    if (__GLeeCheckExtension("GL_EXT_packed_depth_stencil", &extensionNames) )
+    {
+        _GLEE_EXT_packed_depth_stencil = GL_TRUE;
+        __GLeeLink_GL_EXT_packed_depth_stencil();
+    }
+    if (__GLeeCheckExtension("GL_EXT_scene_marker", &extensionNames) )
+    {
+        _GLEE_EXT_scene_marker = GL_TRUE;
+        __GLeeLink_GL_EXT_scene_marker();
+    }
+    if (__GLeeCheckExtension("GL_EXT_stencil_clear_tag", &extensionNames) )
+    {
+        _GLEE_EXT_stencil_clear_tag = GL_TRUE;
+        __GLeeLink_GL_EXT_stencil_clear_tag();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_compression_dxt1", &extensionNames) )
+    {
+        _GLEE_EXT_texture_compression_dxt1 = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_compression_dxt1();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_env", &extensionNames) )
+    {
+        _GLEE_EXT_texture_env = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_env();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_sRGB", &extensionNames) )
+    {
+        _GLEE_EXT_texture_sRGB = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_sRGB();
+    }
+    if (__GLeeCheckExtension("GL_IBM_static_data", &extensionNames) )
+    {
+        _GLEE_IBM_static_data = GL_TRUE;
+        __GLeeLink_GL_IBM_static_data();
+    }
+    if (__GLeeCheckExtension("GL_MESAX_texture_stack", &extensionNames) )
+    {
+        _GLEE_MESAX_texture_stack = GL_TRUE;
+        __GLeeLink_GL_MESAX_texture_stack();
+    }
+    if (__GLeeCheckExtension("GL_OES_byte_coordinates", &extensionNames) )
+    {
+        _GLEE_OES_byte_coordinates = GL_TRUE;
+        __GLeeLink_GL_OES_byte_coordinates();
+    }
+    if (__GLeeCheckExtension("GL_OES_compressed_paletted_texture", &extensionNames) )
+    {
+        _GLEE_OES_compressed_paletted_texture = GL_TRUE;
+        __GLeeLink_GL_OES_compressed_paletted_texture();
+    }
+    if (__GLeeCheckExtension("GL_OES_single_precision", &extensionNames) )
+    {
+        _GLEE_OES_single_precision = GL_TRUE;
+        __GLeeLink_GL_OES_single_precision();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_pixel_texture_bits", &extensionNames) )
+    {
+        _GLEE_SGIX_pixel_texture_bits = GL_TRUE;
+        __GLeeLink_GL_SGIX_pixel_texture_bits();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_range", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_range = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_range();
+    }
+#ifdef WIN32
+    if (__GLeeCheckExtension("WGL_ARB_buffer_region", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_buffer_region = GL_TRUE;
+        __GLeeLink_WGL_ARB_buffer_region();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_multisample", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_multisample = GL_TRUE;
+        __GLeeLink_WGL_ARB_multisample();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_extensions_string", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_extensions_string = GL_TRUE;
+        __GLeeLink_WGL_ARB_extensions_string();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_pixel_format", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_pixel_format = GL_TRUE;
+        __GLeeLink_WGL_ARB_pixel_format();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_make_current_read", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_make_current_read = GL_TRUE;
+        __GLeeLink_WGL_ARB_make_current_read();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_pbuffer", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_pbuffer = GL_TRUE;
+        __GLeeLink_WGL_ARB_pbuffer();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_render_texture", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_render_texture = GL_TRUE;
+        __GLeeLink_WGL_ARB_render_texture();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_pixel_format_float", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_pixel_format_float = GL_TRUE;
+        __GLeeLink_WGL_ARB_pixel_format_float();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_make_current_read", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_make_current_read = GL_TRUE;
+        __GLeeLink_WGL_EXT_make_current_read();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_pixel_format", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_pixel_format = GL_TRUE;
+        __GLeeLink_WGL_EXT_pixel_format();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_pbuffer", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_pbuffer = GL_TRUE;
+        __GLeeLink_WGL_EXT_pbuffer();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_depth_float", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_depth_float = GL_TRUE;
+        __GLeeLink_WGL_EXT_depth_float();
+    }
+    if (__GLeeCheckExtension("WGL_3DFX_multisample", &extensionNames) )
+    {
+        _GLEE_WGL_3DFX_multisample = GL_TRUE;
+        __GLeeLink_WGL_3DFX_multisample();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_multisample", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_multisample = GL_TRUE;
+        __GLeeLink_WGL_EXT_multisample();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_digital_video_control", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_digital_video_control = GL_TRUE;
+        __GLeeLink_WGL_I3D_digital_video_control();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_gamma", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_gamma = GL_TRUE;
+        __GLeeLink_WGL_I3D_gamma();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_genlock", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_genlock = GL_TRUE;
+        __GLeeLink_WGL_I3D_genlock();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_image_buffer", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_image_buffer = GL_TRUE;
+        __GLeeLink_WGL_I3D_image_buffer();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_swap_frame_lock", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_swap_frame_lock = GL_TRUE;
+        __GLeeLink_WGL_I3D_swap_frame_lock();
+    }
+    if (__GLeeCheckExtension("WGL_NV_render_depth_texture", &extensionNames) )
+    {
+        _GLEE_WGL_NV_render_depth_texture = GL_TRUE;
+        __GLeeLink_WGL_NV_render_depth_texture();
+    }
+    if (__GLeeCheckExtension("WGL_NV_render_texture_rectangle", &extensionNames) )
+    {
+        _GLEE_WGL_NV_render_texture_rectangle = GL_TRUE;
+        __GLeeLink_WGL_NV_render_texture_rectangle();
+    }
+    if (__GLeeCheckExtension("WGL_ATI_pixel_format_float", &extensionNames) )
+    {
+        _GLEE_WGL_ATI_pixel_format_float = GL_TRUE;
+        __GLeeLink_WGL_ATI_pixel_format_float();
+    }
+    if (__GLeeCheckExtension("WGL_NV_float_buffer", &extensionNames) )
+    {
+        _GLEE_WGL_NV_float_buffer = GL_TRUE;
+        __GLeeLink_WGL_NV_float_buffer();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_display_color_table", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_display_color_table = GL_TRUE;
+        __GLeeLink_WGL_EXT_display_color_table();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_extensions_string", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_extensions_string = GL_TRUE;
+        __GLeeLink_WGL_EXT_extensions_string();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_swap_control", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_swap_control = GL_TRUE;
+        __GLeeLink_WGL_EXT_swap_control();
+    }
+    if (__GLeeCheckExtension("WGL_NV_vertex_array_range", &extensionNames) )
+    {
+        _GLEE_WGL_NV_vertex_array_range = GL_TRUE;
+        __GLeeLink_WGL_NV_vertex_array_range();
+    }
+    if (__GLeeCheckExtension("WGL_OML_sync_control", &extensionNames) )
+    {
+        _GLEE_WGL_OML_sync_control = GL_TRUE;
+        __GLeeLink_WGL_OML_sync_control();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_swap_frame_usage", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_swap_frame_usage = GL_TRUE;
+        __GLeeLink_WGL_I3D_swap_frame_usage();
+    }
+    if (__GLeeCheckExtension("WGL_3DL_stereo_control", &extensionNames) )
+    {
+        _GLEE_WGL_3DL_stereo_control = GL_TRUE;
+        __GLeeLink_WGL_3DL_stereo_control();
+    }
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else /* GLX */
+    if (__GLeeCheckExtension("GLX_VERSION_1_3", &extensionNames) )
+    {
+        _GLEE_GLX_VERSION_1_3 = GL_TRUE;
+        __GLeeLink_GLX_VERSION_1_3();
+    }
+    if (__GLeeCheckExtension("GLX_VERSION_1_4", &extensionNames) )
+    {
+        _GLEE_GLX_VERSION_1_4 = GL_TRUE;
+        __GLeeLink_GLX_VERSION_1_4();
+    }
+    if (__GLeeCheckExtension("GLX_ARB_multisample", &extensionNames) )
+    {
+        _GLEE_GLX_ARB_multisample = GL_TRUE;
+        __GLeeLink_GLX_ARB_multisample();
+    }
+    if (__GLeeCheckExtension("GLX_ARB_fbconfig_float", &extensionNames) )
+    {
+        _GLEE_GLX_ARB_fbconfig_float = GL_TRUE;
+        __GLeeLink_GLX_ARB_fbconfig_float();
+    }
+    if (__GLeeCheckExtension("GLX_SGIS_multisample", &extensionNames) )
+    {
+        _GLEE_GLX_SGIS_multisample = GL_TRUE;
+        __GLeeLink_GLX_SGIS_multisample();
+    }
+    if (__GLeeCheckExtension("GLX_EXT_visual_info", &extensionNames) )
+    {
+        _GLEE_GLX_EXT_visual_info = GL_TRUE;
+        __GLeeLink_GLX_EXT_visual_info();
+    }
+    if (__GLeeCheckExtension("GLX_SGI_swap_control", &extensionNames) )
+    {
+        _GLEE_GLX_SGI_swap_control = GL_TRUE;
+        __GLeeLink_GLX_SGI_swap_control();
+    }
+    if (__GLeeCheckExtension("GLX_SGI_video_sync", &extensionNames) )
+    {
+        _GLEE_GLX_SGI_video_sync = GL_TRUE;
+        __GLeeLink_GLX_SGI_video_sync();
+    }
+    if (__GLeeCheckExtension("GLX_SGI_make_current_read", &extensionNames) )
+    {
+        _GLEE_GLX_SGI_make_current_read = GL_TRUE;
+        __GLeeLink_GLX_SGI_make_current_read();
+    }
+    if (__GLeeCheckExtension("GLX_EXT_visual_rating", &extensionNames) )
+    {
+        _GLEE_GLX_EXT_visual_rating = GL_TRUE;
+        __GLeeLink_GLX_EXT_visual_rating();
+    }
+    if (__GLeeCheckExtension("GLX_EXT_import_context", &extensionNames) )
+    {
+        _GLEE_GLX_EXT_import_context = GL_TRUE;
+        __GLeeLink_GLX_EXT_import_context();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_fbconfig", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_fbconfig = GL_TRUE;
+        __GLeeLink_GLX_SGIX_fbconfig();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_pbuffer", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_pbuffer = GL_TRUE;
+        __GLeeLink_GLX_SGIX_pbuffer();
+    }
+    if (__GLeeCheckExtension("GLX_SGI_cushion", &extensionNames) )
+    {
+        _GLEE_GLX_SGI_cushion = GL_TRUE;
+        __GLeeLink_GLX_SGI_cushion();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_video_resize", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_video_resize = GL_TRUE;
+        __GLeeLink_GLX_SGIX_video_resize();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_swap_group", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_swap_group = GL_TRUE;
+        __GLeeLink_GLX_SGIX_swap_group();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_swap_barrier", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_swap_barrier = GL_TRUE;
+        __GLeeLink_GLX_SGIX_swap_barrier();
+    }
+    if (__GLeeCheckExtension("GLX_SGIS_blended_overlay", &extensionNames) )
+    {
+        _GLEE_GLX_SGIS_blended_overlay = GL_TRUE;
+        __GLeeLink_GLX_SGIS_blended_overlay();
+    }
+    if (__GLeeCheckExtension("GLX_SGIS_shared_multisample", &extensionNames) )
+    {
+        _GLEE_GLX_SGIS_shared_multisample = GL_TRUE;
+        __GLeeLink_GLX_SGIS_shared_multisample();
+    }
+    if (__GLeeCheckExtension("GLX_SUN_get_transparent_index", &extensionNames) )
+    {
+        _GLEE_GLX_SUN_get_transparent_index = GL_TRUE;
+        __GLeeLink_GLX_SUN_get_transparent_index();
+    }
+    if (__GLeeCheckExtension("GLX_3DFX_multisample", &extensionNames) )
+    {
+        _GLEE_GLX_3DFX_multisample = GL_TRUE;
+        __GLeeLink_GLX_3DFX_multisample();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_copy_sub_buffer", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_copy_sub_buffer = GL_TRUE;
+        __GLeeLink_GLX_MESA_copy_sub_buffer();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_pixmap_colormap", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_pixmap_colormap = GL_TRUE;
+        __GLeeLink_GLX_MESA_pixmap_colormap();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_release_buffers", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_release_buffers = GL_TRUE;
+        __GLeeLink_GLX_MESA_release_buffers();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_set_3dfx_mode", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_set_3dfx_mode = GL_TRUE;
+        __GLeeLink_GLX_MESA_set_3dfx_mode();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_visual_select_group", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_visual_select_group = GL_TRUE;
+        __GLeeLink_GLX_SGIX_visual_select_group();
+    }
+    if (__GLeeCheckExtension("GLX_OML_swap_method", &extensionNames) )
+    {
+        _GLEE_GLX_OML_swap_method = GL_TRUE;
+        __GLeeLink_GLX_OML_swap_method();
+    }
+    if (__GLeeCheckExtension("GLX_OML_sync_control", &extensionNames) )
+    {
+        _GLEE_GLX_OML_sync_control = GL_TRUE;
+        __GLeeLink_GLX_OML_sync_control();
+    }
+    if (__GLeeCheckExtension("GLX_NV_float_buffer", &extensionNames) )
+    {
+        _GLEE_GLX_NV_float_buffer = GL_TRUE;
+        __GLeeLink_GLX_NV_float_buffer();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_hyperpipe", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_hyperpipe = GL_TRUE;
+        __GLeeLink_GLX_SGIX_hyperpipe();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_agp_offset", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_agp_offset = GL_TRUE;
+        __GLeeLink_GLX_MESA_agp_offset();
+    }
+    if (__GLeeCheckExtension("GLX_EXT_scene_marker", &extensionNames) )
+    {
+        _GLEE_GLX_EXT_scene_marker = GL_TRUE;
+        __GLeeLink_GLX_EXT_scene_marker();
+    }
+#endif /* end GLX */
+
+    __GLeeExtList_clean(&extensionNames);
+    return GL_TRUE;
+}
diff --git a/.svn/pristine/91/917925877ba6c5114a2ff8e69cc26e5848bb812d.svn-base b/.svn/pristine/91/917925877ba6c5114a2ff8e69cc26e5848bb812d.svn-base
new file mode 100644
index 0000000..96d10bc
--- /dev/null
+++ b/.svn/pristine/91/917925877ba6c5114a2ff8e69cc26e5848bb812d.svn-base
@@ -0,0 +1,11359 @@
+/***************************************************************************
+*
+* GLee.c
+* GLee (OpenGL Easy Extension library)        
+* Version : 5.21
+*
+* Copyright (c)2006  Ben Woodhouse  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are 
+* met:
+* 1. Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer as
+* the first lines of this file unmodified.
+* 2. Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY BEN WOODHOUSE ``AS IS'' AND ANY EXPRESS OR
+* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL BEN WOODHOUSE BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Web: http://elf-stone.com/glee.php
+*
+* [This file was automatically generated by GLeeGen 5.21
+*
+***************************************************************************/
+
+#ifdef _MSC_VER
+	#pragma optimize( "g", off )
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "GLee.h"
+
+#if defined(__APPLE__) || defined(__APPLE_CC__)
+	#include <Carbon/Carbon.h>
+#endif
+
+typedef GLuint(*GLEE_LINK_FUNCTION)(void);
+
+GLboolean __GLeeInited=GL_FALSE;
+
+#ifndef _WIN32
+	#define __stdcall  /* nothing */
+#endif 
+
+void * __GLeeGetProcAddress(const char *extname)
+{
+#ifdef WIN32
+	return (void*)wglGetProcAddress(extname);
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+    CFBundleRef bundle;
+    CFURLRef bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, CFSTR("/System/Library/Frameworks/OpenGL.framework"), kCFURLPOSIXPathStyle, true);
+
+    CFStringRef functionName = CFStringCreateWithCString(kCFAllocatorDefault, extname, kCFStringEncodingASCII);
+
+    void *function;
+
+    bundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
+    assert(bundle != NULL);
+
+    function = CFBundleGetFunctionPointerForName(bundle, functionName);
+
+    CFRelease(bundleURL);
+    CFRelease(functionName);
+    CFRelease(bundle);
+
+    return function;
+#else
+	return (void*)glXGetProcAddressARB((const GLubyte *)extname);
+#endif
+}
+
+
+
+
+/* Extension querying variables */
+
+GLboolean _GLEE_VERSION_1_2 = GL_FALSE;
+GLboolean _GLEE_ARB_imaging = GL_FALSE;
+GLboolean _GLEE_VERSION_1_3 = GL_FALSE;
+GLboolean _GLEE_VERSION_1_4 = GL_FALSE;
+GLboolean _GLEE_VERSION_1_5 = GL_FALSE;
+GLboolean _GLEE_VERSION_2_0 = GL_FALSE;
+GLboolean _GLEE_VERSION_2_1 = GL_FALSE;
+GLboolean _GLEE_ARB_multitexture = GL_FALSE;
+GLboolean _GLEE_ARB_transpose_matrix = GL_FALSE;
+GLboolean _GLEE_ARB_multisample = GL_FALSE;
+GLboolean _GLEE_ARB_texture_env_add = GL_FALSE;
+GLboolean _GLEE_ARB_texture_cube_map = GL_FALSE;
+GLboolean _GLEE_ARB_texture_compression = GL_FALSE;
+GLboolean _GLEE_ARB_texture_border_clamp = GL_FALSE;
+GLboolean _GLEE_ARB_point_parameters = GL_FALSE;
+GLboolean _GLEE_ARB_vertex_blend = GL_FALSE;
+GLboolean _GLEE_ARB_matrix_palette = GL_FALSE;
+GLboolean _GLEE_ARB_texture_env_combine = GL_FALSE;
+GLboolean _GLEE_ARB_texture_env_crossbar = GL_FALSE;
+GLboolean _GLEE_ARB_texture_env_dot3 = GL_FALSE;
+GLboolean _GLEE_ARB_texture_mirrored_repeat = GL_FALSE;
+GLboolean _GLEE_ARB_depth_texture = GL_FALSE;
+GLboolean _GLEE_ARB_shadow = GL_FALSE;
+GLboolean _GLEE_ARB_shadow_ambient = GL_FALSE;
+GLboolean _GLEE_ARB_window_pos = GL_FALSE;
+GLboolean _GLEE_ARB_vertex_program = GL_FALSE;
+GLboolean _GLEE_ARB_fragment_program = GL_FALSE;
+GLboolean _GLEE_ARB_vertex_buffer_object = GL_FALSE;
+GLboolean _GLEE_ARB_occlusion_query = GL_FALSE;
+GLboolean _GLEE_ARB_shader_objects = GL_FALSE;
+GLboolean _GLEE_ARB_vertex_shader = GL_FALSE;
+GLboolean _GLEE_ARB_fragment_shader = GL_FALSE;
+GLboolean _GLEE_ARB_shading_language_100 = GL_FALSE;
+GLboolean _GLEE_ARB_texture_non_power_of_two = GL_FALSE;
+GLboolean _GLEE_ARB_point_sprite = GL_FALSE;
+GLboolean _GLEE_ARB_fragment_program_shadow = GL_FALSE;
+GLboolean _GLEE_ARB_draw_buffers = GL_FALSE;
+GLboolean _GLEE_ARB_texture_rectangle = GL_FALSE;
+GLboolean _GLEE_ARB_color_buffer_float = GL_FALSE;
+GLboolean _GLEE_ARB_half_float_pixel = GL_FALSE;
+GLboolean _GLEE_ARB_texture_float = GL_FALSE;
+GLboolean _GLEE_ARB_pixel_buffer_object = GL_FALSE;
+GLboolean _GLEE_EXT_abgr = GL_FALSE;
+GLboolean _GLEE_EXT_blend_color = GL_FALSE;
+GLboolean _GLEE_EXT_polygon_offset = GL_FALSE;
+GLboolean _GLEE_EXT_texture = GL_FALSE;
+GLboolean _GLEE_EXT_texture3D = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_filter4 = GL_FALSE;
+GLboolean _GLEE_EXT_subtexture = GL_FALSE;
+GLboolean _GLEE_EXT_copy_texture = GL_FALSE;
+GLboolean _GLEE_EXT_histogram = GL_FALSE;
+GLboolean _GLEE_EXT_convolution = GL_FALSE;
+GLboolean _GLEE_SGI_color_matrix = GL_FALSE;
+GLboolean _GLEE_SGI_color_table = GL_FALSE;
+GLboolean _GLEE_SGIS_pixel_texture = GL_FALSE;
+GLboolean _GLEE_SGIX_pixel_texture = GL_FALSE;
+GLboolean _GLEE_SGIS_texture4D = GL_FALSE;
+GLboolean _GLEE_SGI_texture_color_table = GL_FALSE;
+GLboolean _GLEE_EXT_cmyka = GL_FALSE;
+GLboolean _GLEE_EXT_texture_object = GL_FALSE;
+GLboolean _GLEE_SGIS_detail_texture = GL_FALSE;
+GLboolean _GLEE_SGIS_sharpen_texture = GL_FALSE;
+GLboolean _GLEE_EXT_packed_pixels = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_lod = GL_FALSE;
+GLboolean _GLEE_SGIS_multisample = GL_FALSE;
+GLboolean _GLEE_EXT_rescale_normal = GL_FALSE;
+GLboolean _GLEE_EXT_vertex_array = GL_FALSE;
+GLboolean _GLEE_EXT_misc_attribute = GL_FALSE;
+GLboolean _GLEE_SGIS_generate_mipmap = GL_FALSE;
+GLboolean _GLEE_SGIX_clipmap = GL_FALSE;
+GLboolean _GLEE_SGIX_shadow = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_edge_clamp = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_border_clamp = GL_FALSE;
+GLboolean _GLEE_EXT_blend_minmax = GL_FALSE;
+GLboolean _GLEE_EXT_blend_subtract = GL_FALSE;
+GLboolean _GLEE_EXT_blend_logic_op = GL_FALSE;
+GLboolean _GLEE_SGIX_interlace = GL_FALSE;
+GLboolean _GLEE_SGIX_pixel_tiles = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_select = GL_FALSE;
+GLboolean _GLEE_SGIX_sprite = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_multi_buffer = GL_FALSE;
+GLboolean _GLEE_EXT_point_parameters = GL_FALSE;
+GLboolean _GLEE_SGIS_point_parameters = GL_FALSE;
+GLboolean _GLEE_SGIX_instruments = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_scale_bias = GL_FALSE;
+GLboolean _GLEE_SGIX_framezoom = GL_FALSE;
+GLboolean _GLEE_SGIX_tag_sample_buffer = GL_FALSE;
+GLboolean _GLEE_FfdMaskSGIX = GL_FALSE;
+GLboolean _GLEE_SGIX_polynomial_ffd = GL_FALSE;
+GLboolean _GLEE_SGIX_reference_plane = GL_FALSE;
+GLboolean _GLEE_SGIX_flush_raster = GL_FALSE;
+GLboolean _GLEE_SGIX_depth_texture = GL_FALSE;
+GLboolean _GLEE_SGIS_fog_function = GL_FALSE;
+GLboolean _GLEE_SGIX_fog_offset = GL_FALSE;
+GLboolean _GLEE_HP_image_transform = GL_FALSE;
+GLboolean _GLEE_HP_convolution_border_modes = GL_FALSE;
+GLboolean _GLEE_INGR_palette_buffer = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_add_env = GL_FALSE;
+GLboolean _GLEE_EXT_color_subtable = GL_FALSE;
+GLboolean _GLEE_PGI_vertex_hints = GL_FALSE;
+GLboolean _GLEE_PGI_misc_hints = GL_FALSE;
+GLboolean _GLEE_EXT_paletted_texture = GL_FALSE;
+GLboolean _GLEE_EXT_clip_volume_hint = GL_FALSE;
+GLboolean _GLEE_SGIX_list_priority = GL_FALSE;
+GLboolean _GLEE_SGIX_ir_instrument1 = GL_FALSE;
+GLboolean _GLEE_SGIX_calligraphic_fragment = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_lod_bias = GL_FALSE;
+GLboolean _GLEE_SGIX_shadow_ambient = GL_FALSE;
+GLboolean _GLEE_EXT_index_texture = GL_FALSE;
+GLboolean _GLEE_EXT_index_material = GL_FALSE;
+GLboolean _GLEE_EXT_index_func = GL_FALSE;
+GLboolean _GLEE_EXT_index_array_formats = GL_FALSE;
+GLboolean _GLEE_EXT_compiled_vertex_array = GL_FALSE;
+GLboolean _GLEE_EXT_cull_vertex = GL_FALSE;
+GLboolean _GLEE_SGIX_ycrcb = GL_FALSE;
+GLboolean _GLEE_SGIX_fragment_lighting = GL_FALSE;
+GLboolean _GLEE_IBM_rasterpos_clip = GL_FALSE;
+GLboolean _GLEE_HP_texture_lighting = GL_FALSE;
+GLboolean _GLEE_EXT_draw_range_elements = GL_FALSE;
+GLboolean _GLEE_WIN_phong_shading = GL_FALSE;
+GLboolean _GLEE_WIN_specular_fog = GL_FALSE;
+GLboolean _GLEE_EXT_light_texture = GL_FALSE;
+GLboolean _GLEE_SGIX_blend_alpha_minmax = GL_FALSE;
+GLboolean _GLEE_SGIX_impact_pixel_texture = GL_FALSE;
+GLboolean _GLEE_EXT_bgra = GL_FALSE;
+GLboolean _GLEE_SGIX_async = GL_FALSE;
+GLboolean _GLEE_SGIX_async_pixel = GL_FALSE;
+GLboolean _GLEE_SGIX_async_histogram = GL_FALSE;
+GLboolean _GLEE_INTEL_texture_scissor = GL_FALSE;
+GLboolean _GLEE_INTEL_parallel_arrays = GL_FALSE;
+GLboolean _GLEE_HP_occlusion_test = GL_FALSE;
+GLboolean _GLEE_EXT_pixel_transform = GL_FALSE;
+GLboolean _GLEE_EXT_pixel_transform_color_table = GL_FALSE;
+GLboolean _GLEE_EXT_shared_texture_palette = GL_FALSE;
+GLboolean _GLEE_EXT_separate_specular_color = GL_FALSE;
+GLboolean _GLEE_EXT_secondary_color = GL_FALSE;
+GLboolean _GLEE_EXT_texture_perturb_normal = GL_FALSE;
+GLboolean _GLEE_EXT_multi_draw_arrays = GL_FALSE;
+GLboolean _GLEE_EXT_fog_coord = GL_FALSE;
+GLboolean _GLEE_REND_screen_coordinates = GL_FALSE;
+GLboolean _GLEE_EXT_coordinate_frame = GL_FALSE;
+GLboolean _GLEE_EXT_texture_env_combine = GL_FALSE;
+GLboolean _GLEE_APPLE_specular_vector = GL_FALSE;
+GLboolean _GLEE_APPLE_transform_hint = GL_FALSE;
+GLboolean _GLEE_SGIX_fog_scale = GL_FALSE;
+GLboolean _GLEE_SUNX_constant_data = GL_FALSE;
+GLboolean _GLEE_SUN_global_alpha = GL_FALSE;
+GLboolean _GLEE_SUN_triangle_list = GL_FALSE;
+GLboolean _GLEE_SUN_vertex = GL_FALSE;
+GLboolean _GLEE_EXT_blend_func_separate = GL_FALSE;
+GLboolean _GLEE_INGR_color_clamp = GL_FALSE;
+GLboolean _GLEE_INGR_interlace_read = GL_FALSE;
+GLboolean _GLEE_EXT_stencil_wrap = GL_FALSE;
+GLboolean _GLEE_EXT_422_pixels = GL_FALSE;
+GLboolean _GLEE_NV_texgen_reflection = GL_FALSE;
+GLboolean _GLEE_EXT_texture_cube_map = GL_FALSE;
+GLboolean _GLEE_SUN_convolution_border_modes = GL_FALSE;
+GLboolean _GLEE_EXT_texture_env_add = GL_FALSE;
+GLboolean _GLEE_EXT_texture_lod_bias = GL_FALSE;
+GLboolean _GLEE_EXT_texture_filter_anisotropic = GL_FALSE;
+GLboolean _GLEE_EXT_vertex_weighting = GL_FALSE;
+GLboolean _GLEE_NV_light_max_exponent = GL_FALSE;
+GLboolean _GLEE_NV_vertex_array_range = GL_FALSE;
+GLboolean _GLEE_NV_register_combiners = GL_FALSE;
+GLboolean _GLEE_NV_fog_distance = GL_FALSE;
+GLboolean _GLEE_NV_texgen_emboss = GL_FALSE;
+GLboolean _GLEE_NV_blend_square = GL_FALSE;
+GLboolean _GLEE_NV_texture_env_combine4 = GL_FALSE;
+GLboolean _GLEE_MESA_resize_buffers = GL_FALSE;
+GLboolean _GLEE_MESA_window_pos = GL_FALSE;
+GLboolean _GLEE_EXT_texture_compression_s3tc = GL_FALSE;
+GLboolean _GLEE_IBM_cull_vertex = GL_FALSE;
+GLboolean _GLEE_IBM_multimode_draw_arrays = GL_FALSE;
+GLboolean _GLEE_IBM_vertex_array_lists = GL_FALSE;
+GLboolean _GLEE_SGIX_subsample = GL_FALSE;
+GLboolean _GLEE_SGIX_ycrcb_subsample = GL_FALSE;
+GLboolean _GLEE_SGIX_ycrcba = GL_FALSE;
+GLboolean _GLEE_SGI_depth_pass_instrument = GL_FALSE;
+GLboolean _GLEE_3DFX_texture_compression_FXT1 = GL_FALSE;
+GLboolean _GLEE_3DFX_multisample = GL_FALSE;
+GLboolean _GLEE_3DFX_tbuffer = GL_FALSE;
+GLboolean _GLEE_EXT_multisample = GL_FALSE;
+GLboolean _GLEE_SGIX_vertex_preclip = GL_FALSE;
+GLboolean _GLEE_SGIX_convolution_accuracy = GL_FALSE;
+GLboolean _GLEE_SGIX_resample = GL_FALSE;
+GLboolean _GLEE_SGIS_point_line_texgen = GL_FALSE;
+GLboolean _GLEE_SGIS_texture_color_mask = GL_FALSE;
+GLboolean _GLEE_EXT_texture_env_dot3 = GL_FALSE;
+GLboolean _GLEE_ATI_texture_mirror_once = GL_FALSE;
+GLboolean _GLEE_NV_fence = GL_FALSE;
+GLboolean _GLEE_IBM_texture_mirrored_repeat = GL_FALSE;
+GLboolean _GLEE_NV_evaluators = GL_FALSE;
+GLboolean _GLEE_NV_packed_depth_stencil = GL_FALSE;
+GLboolean _GLEE_NV_register_combiners2 = GL_FALSE;
+GLboolean _GLEE_NV_texture_compression_vtc = GL_FALSE;
+GLboolean _GLEE_NV_texture_rectangle = GL_FALSE;
+GLboolean _GLEE_NV_texture_shader = GL_FALSE;
+GLboolean _GLEE_NV_texture_shader2 = GL_FALSE;
+GLboolean _GLEE_NV_vertex_array_range2 = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_coordinate_clamp = GL_FALSE;
+GLboolean _GLEE_SGIX_scalebias_hint = GL_FALSE;
+GLboolean _GLEE_OML_interlace = GL_FALSE;
+GLboolean _GLEE_OML_subsample = GL_FALSE;
+GLboolean _GLEE_OML_resample = GL_FALSE;
+GLboolean _GLEE_NV_copy_depth_to_color = GL_FALSE;
+GLboolean _GLEE_ATI_envmap_bumpmap = GL_FALSE;
+GLboolean _GLEE_ATI_fragment_shader = GL_FALSE;
+GLboolean _GLEE_ATI_pn_triangles = GL_FALSE;
+GLboolean _GLEE_ATI_vertex_array_object = GL_FALSE;
+GLboolean _GLEE_EXT_vertex_shader = GL_FALSE;
+GLboolean _GLEE_ATI_vertex_streams = GL_FALSE;
+GLboolean _GLEE_ATI_element_array = GL_FALSE;
+GLboolean _GLEE_SUN_mesh_array = GL_FALSE;
+GLboolean _GLEE_SUN_slice_accum = GL_FALSE;
+GLboolean _GLEE_NV_multisample_filter_hint = GL_FALSE;
+GLboolean _GLEE_NV_depth_clamp = GL_FALSE;
+GLboolean _GLEE_NV_occlusion_query = GL_FALSE;
+GLboolean _GLEE_NV_point_sprite = GL_FALSE;
+GLboolean _GLEE_NV_texture_shader3 = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program1_1 = GL_FALSE;
+GLboolean _GLEE_EXT_shadow_funcs = GL_FALSE;
+GLboolean _GLEE_EXT_stencil_two_side = GL_FALSE;
+GLboolean _GLEE_ATI_text_fragment_shader = GL_FALSE;
+GLboolean _GLEE_APPLE_client_storage = GL_FALSE;
+GLboolean _GLEE_APPLE_element_array = GL_FALSE;
+GLboolean _GLEE_APPLE_fence = GL_FALSE;
+GLboolean _GLEE_APPLE_vertex_array_object = GL_FALSE;
+GLboolean _GLEE_APPLE_vertex_array_range = GL_FALSE;
+GLboolean _GLEE_APPLE_ycbcr_422 = GL_FALSE;
+GLboolean _GLEE_S3_s3tc = GL_FALSE;
+GLboolean _GLEE_ATI_draw_buffers = GL_FALSE;
+GLboolean _GLEE_ATI_pixel_format_float = GL_FALSE;
+GLboolean _GLEE_ATI_texture_env_combine3 = GL_FALSE;
+GLboolean _GLEE_ATI_texture_float = GL_FALSE;
+GLboolean _GLEE_NV_float_buffer = GL_FALSE;
+GLboolean _GLEE_NV_fragment_program = GL_FALSE;
+GLboolean _GLEE_NV_half_float = GL_FALSE;
+GLboolean _GLEE_NV_pixel_data_range = GL_FALSE;
+GLboolean _GLEE_NV_primitive_restart = GL_FALSE;
+GLboolean _GLEE_NV_texture_expand_normal = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program2 = GL_FALSE;
+GLboolean _GLEE_ATI_map_object_buffer = GL_FALSE;
+GLboolean _GLEE_ATI_separate_stencil = GL_FALSE;
+GLboolean _GLEE_ATI_vertex_attrib_array_object = GL_FALSE;
+GLboolean _GLEE_OES_read_format = GL_FALSE;
+GLboolean _GLEE_EXT_depth_bounds_test = GL_FALSE;
+GLboolean _GLEE_EXT_texture_mirror_clamp = GL_FALSE;
+GLboolean _GLEE_EXT_blend_equation_separate = GL_FALSE;
+GLboolean _GLEE_MESA_pack_invert = GL_FALSE;
+GLboolean _GLEE_MESA_ycbcr_texture = GL_FALSE;
+GLboolean _GLEE_EXT_pixel_buffer_object = GL_FALSE;
+GLboolean _GLEE_NV_fragment_program_option = GL_FALSE;
+GLboolean _GLEE_NV_fragment_program2 = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program2_option = GL_FALSE;
+GLboolean _GLEE_NV_vertex_program3 = GL_FALSE;
+GLboolean _GLEE_EXT_framebuffer_object = GL_FALSE;
+GLboolean _GLEE_GREMEDY_string_marker = GL_FALSE;
+GLboolean _GLEE_EXT_Cg_shader = GL_FALSE;
+GLboolean _GLEE_EXT_timer_query = GL_FALSE;
+GLboolean _GLEE_EXT_texture_buffer_object = GL_FALSE;
+GLboolean _GLEE_EXT_gpu_shader4 = GL_FALSE;
+GLboolean _GLEE_EXT_geometry_shader4 = GL_FALSE;
+GLboolean _GLEE_EXT_bindable_uniform = GL_FALSE;
+GLboolean _GLEE_EXT_framebuffer_sRGB = GL_FALSE;
+GLboolean _GLEE_EXT_texture_shared_exponent = GL_FALSE;
+GLboolean _GLEE_EXT_packed_float = GL_FALSE;
+GLboolean _GLEE_EXT_texture_array = GL_FALSE;
+GLboolean _GLEE_EXT_texture_integer = GL_FALSE;
+GLboolean _GLEE_NV_depth_buffer_float = GL_FALSE;
+GLboolean _GLEE_EXT_texture_compression_latc = GL_FALSE;
+GLboolean _GLEE_NV_transform_feedback = GL_FALSE;
+GLboolean _GLEE_NV_geometry_program4 = GL_FALSE;
+GLboolean _GLEE_NV_gpu_program4 = GL_FALSE;
+GLboolean _GLEE_NV_framebuffer_multisample_coverage = GL_FALSE;
+GLboolean _GLEE_EXT_framebuffer_multisample = GL_FALSE;
+GLboolean _GLEE_EXT_framebuffer_blit = GL_FALSE;
+GLboolean _GLEE_EXT_texture_compression_rgtc = GL_FALSE;
+GLboolean _GLEE_EXT_color_matrix = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_select = GL_FALSE;
+GLboolean _GLEE_INGR_blend_func_separate = GL_FALSE;
+GLboolean _GLEE_SGIX_depth_pass_instrument = GL_FALSE;
+GLboolean _GLEE_SGIX_igloo_interface = GL_FALSE;
+GLboolean _GLEE_EXT_draw_buffers2 = GL_FALSE;
+GLboolean _GLEE_NV_parameter_buffer_object = GL_FALSE;
+GLboolean _GLEE_EXT_draw_instanced = GL_FALSE;
+GLboolean _GLEE_EXT_fragment_lighting = GL_FALSE;
+GLboolean _GLEE_EXT_packed_depth_stencil = GL_FALSE;
+GLboolean _GLEE_EXT_scene_marker = GL_FALSE;
+GLboolean _GLEE_EXT_stencil_clear_tag = GL_FALSE;
+GLboolean _GLEE_EXT_texture_compression_dxt1 = GL_FALSE;
+GLboolean _GLEE_EXT_texture_env = GL_FALSE;
+GLboolean _GLEE_EXT_texture_sRGB = GL_FALSE;
+GLboolean _GLEE_IBM_static_data = GL_FALSE;
+GLboolean _GLEE_MESAX_texture_stack = GL_FALSE;
+GLboolean _GLEE_OES_byte_coordinates = GL_FALSE;
+GLboolean _GLEE_OES_compressed_paletted_texture = GL_FALSE;
+GLboolean _GLEE_OES_single_precision = GL_FALSE;
+GLboolean _GLEE_SGIX_pixel_texture_bits = GL_FALSE;
+GLboolean _GLEE_SGIX_texture_range = GL_FALSE;
+
+/*  GL Extension names */
+
+char __GLeeGLExtensionNames[300][39]={
+    "GL_VERSION_1_2",
+    "GL_ARB_imaging",
+    "GL_VERSION_1_3",
+    "GL_VERSION_1_4",
+    "GL_VERSION_1_5",
+    "GL_VERSION_2_0",
+    "GL_VERSION_2_1",
+    "GL_ARB_multitexture",
+    "GL_ARB_transpose_matrix",
+    "GL_ARB_multisample",
+    "GL_ARB_texture_env_add",
+    "GL_ARB_texture_cube_map",
+    "GL_ARB_texture_compression",
+    "GL_ARB_texture_border_clamp",
+    "GL_ARB_point_parameters",
+    "GL_ARB_vertex_blend",
+    "GL_ARB_matrix_palette",
+    "GL_ARB_texture_env_combine",
+    "GL_ARB_texture_env_crossbar",
+    "GL_ARB_texture_env_dot3",
+    "GL_ARB_texture_mirrored_repeat",
+    "GL_ARB_depth_texture",
+    "GL_ARB_shadow",
+    "GL_ARB_shadow_ambient",
+    "GL_ARB_window_pos",
+    "GL_ARB_vertex_program",
+    "GL_ARB_fragment_program",
+    "GL_ARB_vertex_buffer_object",
+    "GL_ARB_occlusion_query",
+    "GL_ARB_shader_objects",
+    "GL_ARB_vertex_shader",
+    "GL_ARB_fragment_shader",
+    "GL_ARB_shading_language_100",
+    "GL_ARB_texture_non_power_of_two",
+    "GL_ARB_point_sprite",
+    "GL_ARB_fragment_program_shadow",
+    "GL_ARB_draw_buffers",
+    "GL_ARB_texture_rectangle",
+    "GL_ARB_color_buffer_float",
+    "GL_ARB_half_float_pixel",
+    "GL_ARB_texture_float",
+    "GL_ARB_pixel_buffer_object",
+    "GL_EXT_abgr",
+    "GL_EXT_blend_color",
+    "GL_EXT_polygon_offset",
+    "GL_EXT_texture",
+    "GL_EXT_texture3D",
+    "GL_SGIS_texture_filter4",
+    "GL_EXT_subtexture",
+    "GL_EXT_copy_texture",
+    "GL_EXT_histogram",
+    "GL_EXT_convolution",
+    "GL_SGI_color_matrix",
+    "GL_SGI_color_table",
+    "GL_SGIS_pixel_texture",
+    "GL_SGIX_pixel_texture",
+    "GL_SGIS_texture4D",
+    "GL_SGI_texture_color_table",
+    "GL_EXT_cmyka",
+    "GL_EXT_texture_object",
+    "GL_SGIS_detail_texture",
+    "GL_SGIS_sharpen_texture",
+    "GL_EXT_packed_pixels",
+    "GL_SGIS_texture_lod",
+    "GL_SGIS_multisample",
+    "GL_EXT_rescale_normal",
+    "GL_EXT_vertex_array",
+    "GL_EXT_misc_attribute",
+    "GL_SGIS_generate_mipmap",
+    "GL_SGIX_clipmap",
+    "GL_SGIX_shadow",
+    "GL_SGIS_texture_edge_clamp",
+    "GL_SGIS_texture_border_clamp",
+    "GL_EXT_blend_minmax",
+    "GL_EXT_blend_subtract",
+    "GL_EXT_blend_logic_op",
+    "GL_SGIX_interlace",
+    "GL_SGIX_pixel_tiles",
+    "GL_SGIS_texture_select",
+    "GL_SGIX_sprite",
+    "GL_SGIX_texture_multi_buffer",
+    "GL_EXT_point_parameters",
+    "GL_SGIS_point_parameters",
+    "GL_SGIX_instruments",
+    "GL_SGIX_texture_scale_bias",
+    "GL_SGIX_framezoom",
+    "GL_SGIX_tag_sample_buffer",
+    "GL_FfdMaskSGIX",
+    "GL_SGIX_polynomial_ffd",
+    "GL_SGIX_reference_plane",
+    "GL_SGIX_flush_raster",
+    "GL_SGIX_depth_texture",
+    "GL_SGIS_fog_function",
+    "GL_SGIX_fog_offset",
+    "GL_HP_image_transform",
+    "GL_HP_convolution_border_modes",
+    "GL_INGR_palette_buffer",
+    "GL_SGIX_texture_add_env",
+    "GL_EXT_color_subtable",
+    "GL_PGI_vertex_hints",
+    "GL_PGI_misc_hints",
+    "GL_EXT_paletted_texture",
+    "GL_EXT_clip_volume_hint",
+    "GL_SGIX_list_priority",
+    "GL_SGIX_ir_instrument1",
+    "GL_SGIX_calligraphic_fragment",
+    "GL_SGIX_texture_lod_bias",
+    "GL_SGIX_shadow_ambient",
+    "GL_EXT_index_texture",
+    "GL_EXT_index_material",
+    "GL_EXT_index_func",
+    "GL_EXT_index_array_formats",
+    "GL_EXT_compiled_vertex_array",
+    "GL_EXT_cull_vertex",
+    "GL_SGIX_ycrcb",
+    "GL_SGIX_fragment_lighting",
+    "GL_IBM_rasterpos_clip",
+    "GL_HP_texture_lighting",
+    "GL_EXT_draw_range_elements",
+    "GL_WIN_phong_shading",
+    "GL_WIN_specular_fog",
+    "GL_EXT_light_texture",
+    "GL_SGIX_blend_alpha_minmax",
+    "GL_SGIX_impact_pixel_texture",
+    "GL_EXT_bgra",
+    "GL_SGIX_async",
+    "GL_SGIX_async_pixel",
+    "GL_SGIX_async_histogram",
+    "GL_INTEL_texture_scissor",
+    "GL_INTEL_parallel_arrays",
+    "GL_HP_occlusion_test",
+    "GL_EXT_pixel_transform",
+    "GL_EXT_pixel_transform_color_table",
+    "GL_EXT_shared_texture_palette",
+    "GL_EXT_separate_specular_color",
+    "GL_EXT_secondary_color",
+    "GL_EXT_texture_perturb_normal",
+    "GL_EXT_multi_draw_arrays",
+    "GL_EXT_fog_coord",
+    "GL_REND_screen_coordinates",
+    "GL_EXT_coordinate_frame",
+    "GL_EXT_texture_env_combine",
+    "GL_APPLE_specular_vector",
+    "GL_APPLE_transform_hint",
+    "GL_SGIX_fog_scale",
+    "GL_SUNX_constant_data",
+    "GL_SUN_global_alpha",
+    "GL_SUN_triangle_list",
+    "GL_SUN_vertex",
+    "GL_EXT_blend_func_separate",
+    "GL_INGR_color_clamp",
+    "GL_INGR_interlace_read",
+    "GL_EXT_stencil_wrap",
+    "GL_EXT_422_pixels",
+    "GL_NV_texgen_reflection",
+    "GL_EXT_texture_cube_map",
+    "GL_SUN_convolution_border_modes",
+    "GL_EXT_texture_env_add",
+    "GL_EXT_texture_lod_bias",
+    "GL_EXT_texture_filter_anisotropic",
+    "GL_EXT_vertex_weighting",
+    "GL_NV_light_max_exponent",
+    "GL_NV_vertex_array_range",
+    "GL_NV_register_combiners",
+    "GL_NV_fog_distance",
+    "GL_NV_texgen_emboss",
+    "GL_NV_blend_square",
+    "GL_NV_texture_env_combine4",
+    "GL_MESA_resize_buffers",
+    "GL_MESA_window_pos",
+    "GL_EXT_texture_compression_s3tc",
+    "GL_IBM_cull_vertex",
+    "GL_IBM_multimode_draw_arrays",
+    "GL_IBM_vertex_array_lists",
+    "GL_SGIX_subsample",
+    "GL_SGIX_ycrcb_subsample",
+    "GL_SGIX_ycrcba",
+    "GL_SGI_depth_pass_instrument",
+    "GL_3DFX_texture_compression_FXT1",
+    "GL_3DFX_multisample",
+    "GL_3DFX_tbuffer",
+    "GL_EXT_multisample",
+    "GL_SGIX_vertex_preclip",
+    "GL_SGIX_convolution_accuracy",
+    "GL_SGIX_resample",
+    "GL_SGIS_point_line_texgen",
+    "GL_SGIS_texture_color_mask",
+    "GL_EXT_texture_env_dot3",
+    "GL_ATI_texture_mirror_once",
+    "GL_NV_fence",
+    "GL_IBM_texture_mirrored_repeat",
+    "GL_NV_evaluators",
+    "GL_NV_packed_depth_stencil",
+    "GL_NV_register_combiners2",
+    "GL_NV_texture_compression_vtc",
+    "GL_NV_texture_rectangle",
+    "GL_NV_texture_shader",
+    "GL_NV_texture_shader2",
+    "GL_NV_vertex_array_range2",
+    "GL_NV_vertex_program",
+    "GL_SGIX_texture_coordinate_clamp",
+    "GL_SGIX_scalebias_hint",
+    "GL_OML_interlace",
+    "GL_OML_subsample",
+    "GL_OML_resample",
+    "GL_NV_copy_depth_to_color",
+    "GL_ATI_envmap_bumpmap",
+    "GL_ATI_fragment_shader",
+    "GL_ATI_pn_triangles",
+    "GL_ATI_vertex_array_object",
+    "GL_EXT_vertex_shader",
+    "GL_ATI_vertex_streams",
+    "GL_ATI_element_array",
+    "GL_SUN_mesh_array",
+    "GL_SUN_slice_accum",
+    "GL_NV_multisample_filter_hint",
+    "GL_NV_depth_clamp",
+    "GL_NV_occlusion_query",
+    "GL_NV_point_sprite",
+    "GL_NV_texture_shader3",
+    "GL_NV_vertex_program1_1",
+    "GL_EXT_shadow_funcs",
+    "GL_EXT_stencil_two_side",
+    "GL_ATI_text_fragment_shader",
+    "GL_APPLE_client_storage",
+    "GL_APPLE_element_array",
+    "GL_APPLE_fence",
+    "GL_APPLE_vertex_array_object",
+    "GL_APPLE_vertex_array_range",
+    "GL_APPLE_ycbcr_422",
+    "GL_S3_s3tc",
+    "GL_ATI_draw_buffers",
+    "GL_ATI_pixel_format_float",
+    "GL_ATI_texture_env_combine3",
+    "GL_ATI_texture_float",
+    "GL_NV_float_buffer",
+    "GL_NV_fragment_program",
+    "GL_NV_half_float",
+    "GL_NV_pixel_data_range",
+    "GL_NV_primitive_restart",
+    "GL_NV_texture_expand_normal",
+    "GL_NV_vertex_program2",
+    "GL_ATI_map_object_buffer",
+    "GL_ATI_separate_stencil",
+    "GL_ATI_vertex_attrib_array_object",
+    "GL_OES_read_format",
+    "GL_EXT_depth_bounds_test",
+    "GL_EXT_texture_mirror_clamp",
+    "GL_EXT_blend_equation_separate",
+    "GL_MESA_pack_invert",
+    "GL_MESA_ycbcr_texture",
+    "GL_EXT_pixel_buffer_object",
+    "GL_NV_fragment_program_option",
+    "GL_NV_fragment_program2",
+    "GL_NV_vertex_program2_option",
+    "GL_NV_vertex_program3",
+    "GL_EXT_framebuffer_object",
+    "GL_GREMEDY_string_marker",
+    "GL_EXT_Cg_shader",
+    "GL_EXT_timer_query",
+    "GL_EXT_texture_buffer_object",
+    "GL_EXT_gpu_shader4",
+    "GL_EXT_geometry_shader4",
+    "GL_EXT_bindable_uniform",
+    "GL_EXT_framebuffer_sRGB",
+    "GL_EXT_texture_shared_exponent",
+    "GL_EXT_packed_float",
+    "GL_EXT_texture_array",
+    "GL_EXT_texture_integer",
+    "GL_NV_depth_buffer_float",
+    "GL_EXT_texture_compression_latc",
+    "GL_NV_transform_feedback",
+    "GL_NV_geometry_program4",
+    "GL_NV_gpu_program4",
+    "GL_NV_framebuffer_multisample_coverage",
+    "GL_EXT_framebuffer_multisample",
+    "GL_EXT_framebuffer_blit",
+    "GL_EXT_texture_compression_rgtc",
+    "GL_EXT_color_matrix",
+    "GL_SGIX_texture_select",
+    "GL_INGR_blend_func_separate",
+    "GL_SGIX_depth_pass_instrument",
+    "GL_SGIX_igloo_interface",
+    "GL_EXT_draw_buffers2",
+    "GL_NV_parameter_buffer_object",
+    "GL_EXT_draw_instanced",
+    "GL_EXT_fragment_lighting",
+    "GL_EXT_packed_depth_stencil",
+    "GL_EXT_scene_marker",
+    "GL_EXT_stencil_clear_tag",
+    "GL_EXT_texture_compression_dxt1",
+    "GL_EXT_texture_env",
+    "GL_EXT_texture_sRGB",
+    "GL_IBM_static_data",
+    "GL_MESAX_texture_stack",
+    "GL_OES_byte_coordinates",
+    "GL_OES_compressed_paletted_texture",
+    "GL_OES_single_precision",
+    "GL_SGIX_pixel_texture_bits",
+    "GL_SGIX_texture_range"
+};
+int __GLeeGLNumExtensions=300;
+
+/* GL_VERSION_1_2 */
+
+#ifdef __GLEE_GL_VERSION_1_2
+void __stdcall _Lazy_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)  {if (GLeeInit()) glBlendColor(red, green, blue, alpha);}
+void __stdcall _Lazy_glBlendEquation(GLenum mode)                                         {if (GLeeInit()) glBlendEquation(mode);}
+void __stdcall _Lazy_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)  {if (GLeeInit()) glDrawRangeElements(mode, start, end, count, type, indices);}
+void __stdcall _Lazy_glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)  {if (GLeeInit()) glColorTable(target, internalformat, width, format, type, table);}
+void __stdcall _Lazy_glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glColorTableParameterfv(target, pname, params);}
+void __stdcall _Lazy_glColorTableParameteriv(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glColorTableParameteriv(target, pname, params);}
+void __stdcall _Lazy_glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyColorTable(target, internalformat, x, y, width);}
+void __stdcall _Lazy_glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid * table)  {if (GLeeInit()) glGetColorTable(target, format, type, table);}
+void __stdcall _Lazy_glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetColorTableParameterfv(target, pname, params);}
+void __stdcall _Lazy_glGetColorTableParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetColorTableParameteriv(target, pname, params);}
+void __stdcall _Lazy_glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)  {if (GLeeInit()) glColorSubTable(target, start, count, format, type, data);}
+void __stdcall _Lazy_glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyColorSubTable(target, start, x, y, width);}
+void __stdcall _Lazy_glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)  {if (GLeeInit()) glConvolutionFilter1D(target, internalformat, width, format, type, image);}
+void __stdcall _Lazy_glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)  {if (GLeeInit()) glConvolutionFilter2D(target, internalformat, width, height, format, type, image);}
+void __stdcall _Lazy_glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params)  {if (GLeeInit()) glConvolutionParameterf(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glConvolutionParameterfv(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameteri(GLenum target, GLenum pname, GLint params)   {if (GLeeInit()) glConvolutionParameteri(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameteriv(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glConvolutionParameteriv(target, pname, params);}
+void __stdcall _Lazy_glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyConvolutionFilter1D(target, internalformat, x, y, width);}
+void __stdcall _Lazy_glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyConvolutionFilter2D(target, internalformat, x, y, width, height);}
+void __stdcall _Lazy_glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid * image)  {if (GLeeInit()) glGetConvolutionFilter(target, format, type, image);}
+void __stdcall _Lazy_glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetConvolutionParameterfv(target, pname, params);}
+void __stdcall _Lazy_glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetConvolutionParameteriv(target, pname, params);}
+void __stdcall _Lazy_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)  {if (GLeeInit()) glGetSeparableFilter(target, format, type, row, column, span);}
+void __stdcall _Lazy_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)  {if (GLeeInit()) glSeparableFilter2D(target, internalformat, width, height, format, type, row, column);}
+void __stdcall _Lazy_glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)  {if (GLeeInit()) glGetHistogram(target, reset, format, type, values);}
+void __stdcall _Lazy_glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetHistogramParameterfv(target, pname, params);}
+void __stdcall _Lazy_glGetHistogramParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetHistogramParameteriv(target, pname, params);}
+void __stdcall _Lazy_glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)  {if (GLeeInit()) glGetMinmax(target, reset, format, type, values);}
+void __stdcall _Lazy_glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetMinmaxParameterfv(target, pname, params);}
+void __stdcall _Lazy_glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetMinmaxParameteriv(target, pname, params);}
+void __stdcall _Lazy_glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)  {if (GLeeInit()) glHistogram(target, width, internalformat, sink);}
+void __stdcall _Lazy_glMinmax(GLenum target, GLenum internalformat, GLboolean sink)       {if (GLeeInit()) glMinmax(target, internalformat, sink);}
+void __stdcall _Lazy_glResetHistogram(GLenum target)                                      {if (GLeeInit()) glResetHistogram(target);}
+void __stdcall _Lazy_glResetMinmax(GLenum target)                                         {if (GLeeInit()) glResetMinmax(target);}
+void __stdcall _Lazy_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);}
+void __stdcall _Lazy_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);}
+void __stdcall _Lazy_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);}
+PFNGLBLENDCOLORPROC pglBlendColor=_Lazy_glBlendColor;
+PFNGLBLENDEQUATIONPROC pglBlendEquation=_Lazy_glBlendEquation;
+PFNGLDRAWRANGEELEMENTSPROC pglDrawRangeElements=_Lazy_glDrawRangeElements;
+PFNGLCOLORTABLEPROC pglColorTable=_Lazy_glColorTable;
+PFNGLCOLORTABLEPARAMETERFVPROC pglColorTableParameterfv=_Lazy_glColorTableParameterfv;
+PFNGLCOLORTABLEPARAMETERIVPROC pglColorTableParameteriv=_Lazy_glColorTableParameteriv;
+PFNGLCOPYCOLORTABLEPROC pglCopyColorTable=_Lazy_glCopyColorTable;
+PFNGLGETCOLORTABLEPROC pglGetColorTable=_Lazy_glGetColorTable;
+PFNGLGETCOLORTABLEPARAMETERFVPROC pglGetColorTableParameterfv=_Lazy_glGetColorTableParameterfv;
+PFNGLGETCOLORTABLEPARAMETERIVPROC pglGetColorTableParameteriv=_Lazy_glGetColorTableParameteriv;
+PFNGLCOLORSUBTABLEPROC pglColorSubTable=_Lazy_glColorSubTable;
+PFNGLCOPYCOLORSUBTABLEPROC pglCopyColorSubTable=_Lazy_glCopyColorSubTable;
+PFNGLCONVOLUTIONFILTER1DPROC pglConvolutionFilter1D=_Lazy_glConvolutionFilter1D;
+PFNGLCONVOLUTIONFILTER2DPROC pglConvolutionFilter2D=_Lazy_glConvolutionFilter2D;
+PFNGLCONVOLUTIONPARAMETERFPROC pglConvolutionParameterf=_Lazy_glConvolutionParameterf;
+PFNGLCONVOLUTIONPARAMETERFVPROC pglConvolutionParameterfv=_Lazy_glConvolutionParameterfv;
+PFNGLCONVOLUTIONPARAMETERIPROC pglConvolutionParameteri=_Lazy_glConvolutionParameteri;
+PFNGLCONVOLUTIONPARAMETERIVPROC pglConvolutionParameteriv=_Lazy_glConvolutionParameteriv;
+PFNGLCOPYCONVOLUTIONFILTER1DPROC pglCopyConvolutionFilter1D=_Lazy_glCopyConvolutionFilter1D;
+PFNGLCOPYCONVOLUTIONFILTER2DPROC pglCopyConvolutionFilter2D=_Lazy_glCopyConvolutionFilter2D;
+PFNGLGETCONVOLUTIONFILTERPROC pglGetConvolutionFilter=_Lazy_glGetConvolutionFilter;
+PFNGLGETCONVOLUTIONPARAMETERFVPROC pglGetConvolutionParameterfv=_Lazy_glGetConvolutionParameterfv;
+PFNGLGETCONVOLUTIONPARAMETERIVPROC pglGetConvolutionParameteriv=_Lazy_glGetConvolutionParameteriv;
+PFNGLGETSEPARABLEFILTERPROC pglGetSeparableFilter=_Lazy_glGetSeparableFilter;
+PFNGLSEPARABLEFILTER2DPROC pglSeparableFilter2D=_Lazy_glSeparableFilter2D;
+PFNGLGETHISTOGRAMPROC pglGetHistogram=_Lazy_glGetHistogram;
+PFNGLGETHISTOGRAMPARAMETERFVPROC pglGetHistogramParameterfv=_Lazy_glGetHistogramParameterfv;
+PFNGLGETHISTOGRAMPARAMETERIVPROC pglGetHistogramParameteriv=_Lazy_glGetHistogramParameteriv;
+PFNGLGETMINMAXPROC pglGetMinmax=_Lazy_glGetMinmax;
+PFNGLGETMINMAXPARAMETERFVPROC pglGetMinmaxParameterfv=_Lazy_glGetMinmaxParameterfv;
+PFNGLGETMINMAXPARAMETERIVPROC pglGetMinmaxParameteriv=_Lazy_glGetMinmaxParameteriv;
+PFNGLHISTOGRAMPROC pglHistogram=_Lazy_glHistogram;
+PFNGLMINMAXPROC pglMinmax=_Lazy_glMinmax;
+PFNGLRESETHISTOGRAMPROC pglResetHistogram=_Lazy_glResetHistogram;
+PFNGLRESETMINMAXPROC pglResetMinmax=_Lazy_glResetMinmax;
+PFNGLTEXIMAGE3DPROC pglTexImage3D=_Lazy_glTexImage3D;
+PFNGLTEXSUBIMAGE3DPROC pglTexSubImage3D=_Lazy_glTexSubImage3D;
+PFNGLCOPYTEXSUBIMAGE3DPROC pglCopyTexSubImage3D=_Lazy_glCopyTexSubImage3D;
+#endif 
+
+/* GL_ARB_imaging */
+
+#ifdef __GLEE_GL_ARB_imaging
+#endif 
+
+/* GL_VERSION_1_3 */
+
+#ifdef __GLEE_GL_VERSION_1_3
+void __stdcall _Lazy_glActiveTexture(GLenum texture)                                      {if (GLeeInit()) glActiveTexture(texture);}
+void __stdcall _Lazy_glClientActiveTexture(GLenum texture)                                {if (GLeeInit()) glClientActiveTexture(texture);}
+void __stdcall _Lazy_glMultiTexCoord1d(GLenum target, GLdouble s)                         {if (GLeeInit()) glMultiTexCoord1d(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1dv(GLenum target, const GLdouble * v)                {if (GLeeInit()) glMultiTexCoord1dv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1f(GLenum target, GLfloat s)                          {if (GLeeInit()) glMultiTexCoord1f(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1fv(GLenum target, const GLfloat * v)                 {if (GLeeInit()) glMultiTexCoord1fv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1i(GLenum target, GLint s)                            {if (GLeeInit()) glMultiTexCoord1i(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1iv(GLenum target, const GLint * v)                   {if (GLeeInit()) glMultiTexCoord1iv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1s(GLenum target, GLshort s)                          {if (GLeeInit()) glMultiTexCoord1s(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1sv(GLenum target, const GLshort * v)                 {if (GLeeInit()) glMultiTexCoord1sv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t)             {if (GLeeInit()) glMultiTexCoord2d(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2dv(GLenum target, const GLdouble * v)                {if (GLeeInit()) glMultiTexCoord2dv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t)               {if (GLeeInit()) glMultiTexCoord2f(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2fv(GLenum target, const GLfloat * v)                 {if (GLeeInit()) glMultiTexCoord2fv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2i(GLenum target, GLint s, GLint t)                   {if (GLeeInit()) glMultiTexCoord2i(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2iv(GLenum target, const GLint * v)                   {if (GLeeInit()) glMultiTexCoord2iv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2s(GLenum target, GLshort s, GLshort t)               {if (GLeeInit()) glMultiTexCoord2s(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2sv(GLenum target, const GLshort * v)                 {if (GLeeInit()) glMultiTexCoord2sv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r)  {if (GLeeInit()) glMultiTexCoord3d(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3dv(GLenum target, const GLdouble * v)                {if (GLeeInit()) glMultiTexCoord3dv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r)    {if (GLeeInit()) glMultiTexCoord3f(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3fv(GLenum target, const GLfloat * v)                 {if (GLeeInit()) glMultiTexCoord3fv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r)          {if (GLeeInit()) glMultiTexCoord3i(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3iv(GLenum target, const GLint * v)                   {if (GLeeInit()) glMultiTexCoord3iv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r)    {if (GLeeInit()) glMultiTexCoord3s(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3sv(GLenum target, const GLshort * v)                 {if (GLeeInit()) glMultiTexCoord3sv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)  {if (GLeeInit()) glMultiTexCoord4d(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4dv(GLenum target, const GLdouble * v)                {if (GLeeInit()) glMultiTexCoord4dv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)  {if (GLeeInit()) glMultiTexCoord4f(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4fv(GLenum target, const GLfloat * v)                 {if (GLeeInit()) glMultiTexCoord4fv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q)  {if (GLeeInit()) glMultiTexCoord4i(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4iv(GLenum target, const GLint * v)                   {if (GLeeInit()) glMultiTexCoord4iv(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)  {if (GLeeInit()) glMultiTexCoord4s(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4sv(GLenum target, const GLshort * v)                 {if (GLeeInit()) glMultiTexCoord4sv(target, v);}
+void __stdcall _Lazy_glLoadTransposeMatrixf(const GLfloat * m)                            {if (GLeeInit()) glLoadTransposeMatrixf(m);}
+void __stdcall _Lazy_glLoadTransposeMatrixd(const GLdouble * m)                           {if (GLeeInit()) glLoadTransposeMatrixd(m);}
+void __stdcall _Lazy_glMultTransposeMatrixf(const GLfloat * m)                            {if (GLeeInit()) glMultTransposeMatrixf(m);}
+void __stdcall _Lazy_glMultTransposeMatrixd(const GLdouble * m)                           {if (GLeeInit()) glMultTransposeMatrixd(m);}
+void __stdcall _Lazy_glSampleCoverage(GLclampf value, GLboolean invert)                   {if (GLeeInit()) glSampleCoverage(value, invert);}
+void __stdcall _Lazy_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data);}
+void __stdcall _Lazy_glGetCompressedTexImage(GLenum target, GLint level, GLvoid * img)    {if (GLeeInit()) glGetCompressedTexImage(target, level, img);}
+PFNGLACTIVETEXTUREPROC pglActiveTexture=_Lazy_glActiveTexture;
+PFNGLCLIENTACTIVETEXTUREPROC pglClientActiveTexture=_Lazy_glClientActiveTexture;
+PFNGLMULTITEXCOORD1DPROC pglMultiTexCoord1d=_Lazy_glMultiTexCoord1d;
+PFNGLMULTITEXCOORD1DVPROC pglMultiTexCoord1dv=_Lazy_glMultiTexCoord1dv;
+PFNGLMULTITEXCOORD1FPROC pglMultiTexCoord1f=_Lazy_glMultiTexCoord1f;
+PFNGLMULTITEXCOORD1FVPROC pglMultiTexCoord1fv=_Lazy_glMultiTexCoord1fv;
+PFNGLMULTITEXCOORD1IPROC pglMultiTexCoord1i=_Lazy_glMultiTexCoord1i;
+PFNGLMULTITEXCOORD1IVPROC pglMultiTexCoord1iv=_Lazy_glMultiTexCoord1iv;
+PFNGLMULTITEXCOORD1SPROC pglMultiTexCoord1s=_Lazy_glMultiTexCoord1s;
+PFNGLMULTITEXCOORD1SVPROC pglMultiTexCoord1sv=_Lazy_glMultiTexCoord1sv;
+PFNGLMULTITEXCOORD2DPROC pglMultiTexCoord2d=_Lazy_glMultiTexCoord2d;
+PFNGLMULTITEXCOORD2DVPROC pglMultiTexCoord2dv=_Lazy_glMultiTexCoord2dv;
+PFNGLMULTITEXCOORD2FPROC pglMultiTexCoord2f=_Lazy_glMultiTexCoord2f;
+PFNGLMULTITEXCOORD2FVPROC pglMultiTexCoord2fv=_Lazy_glMultiTexCoord2fv;
+PFNGLMULTITEXCOORD2IPROC pglMultiTexCoord2i=_Lazy_glMultiTexCoord2i;
+PFNGLMULTITEXCOORD2IVPROC pglMultiTexCoord2iv=_Lazy_glMultiTexCoord2iv;
+PFNGLMULTITEXCOORD2SPROC pglMultiTexCoord2s=_Lazy_glMultiTexCoord2s;
+PFNGLMULTITEXCOORD2SVPROC pglMultiTexCoord2sv=_Lazy_glMultiTexCoord2sv;
+PFNGLMULTITEXCOORD3DPROC pglMultiTexCoord3d=_Lazy_glMultiTexCoord3d;
+PFNGLMULTITEXCOORD3DVPROC pglMultiTexCoord3dv=_Lazy_glMultiTexCoord3dv;
+PFNGLMULTITEXCOORD3FPROC pglMultiTexCoord3f=_Lazy_glMultiTexCoord3f;
+PFNGLMULTITEXCOORD3FVPROC pglMultiTexCoord3fv=_Lazy_glMultiTexCoord3fv;
+PFNGLMULTITEXCOORD3IPROC pglMultiTexCoord3i=_Lazy_glMultiTexCoord3i;
+PFNGLMULTITEXCOORD3IVPROC pglMultiTexCoord3iv=_Lazy_glMultiTexCoord3iv;
+PFNGLMULTITEXCOORD3SPROC pglMultiTexCoord3s=_Lazy_glMultiTexCoord3s;
+PFNGLMULTITEXCOORD3SVPROC pglMultiTexCoord3sv=_Lazy_glMultiTexCoord3sv;
+PFNGLMULTITEXCOORD4DPROC pglMultiTexCoord4d=_Lazy_glMultiTexCoord4d;
+PFNGLMULTITEXCOORD4DVPROC pglMultiTexCoord4dv=_Lazy_glMultiTexCoord4dv;
+PFNGLMULTITEXCOORD4FPROC pglMultiTexCoord4f=_Lazy_glMultiTexCoord4f;
+PFNGLMULTITEXCOORD4FVPROC pglMultiTexCoord4fv=_Lazy_glMultiTexCoord4fv;
+PFNGLMULTITEXCOORD4IPROC pglMultiTexCoord4i=_Lazy_glMultiTexCoord4i;
+PFNGLMULTITEXCOORD4IVPROC pglMultiTexCoord4iv=_Lazy_glMultiTexCoord4iv;
+PFNGLMULTITEXCOORD4SPROC pglMultiTexCoord4s=_Lazy_glMultiTexCoord4s;
+PFNGLMULTITEXCOORD4SVPROC pglMultiTexCoord4sv=_Lazy_glMultiTexCoord4sv;
+PFNGLLOADTRANSPOSEMATRIXFPROC pglLoadTransposeMatrixf=_Lazy_glLoadTransposeMatrixf;
+PFNGLLOADTRANSPOSEMATRIXDPROC pglLoadTransposeMatrixd=_Lazy_glLoadTransposeMatrixd;
+PFNGLMULTTRANSPOSEMATRIXFPROC pglMultTransposeMatrixf=_Lazy_glMultTransposeMatrixf;
+PFNGLMULTTRANSPOSEMATRIXDPROC pglMultTransposeMatrixd=_Lazy_glMultTransposeMatrixd;
+PFNGLSAMPLECOVERAGEPROC pglSampleCoverage=_Lazy_glSampleCoverage;
+PFNGLCOMPRESSEDTEXIMAGE3DPROC pglCompressedTexImage3D=_Lazy_glCompressedTexImage3D;
+PFNGLCOMPRESSEDTEXIMAGE2DPROC pglCompressedTexImage2D=_Lazy_glCompressedTexImage2D;
+PFNGLCOMPRESSEDTEXIMAGE1DPROC pglCompressedTexImage1D=_Lazy_glCompressedTexImage1D;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC pglCompressedTexSubImage3D=_Lazy_glCompressedTexSubImage3D;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC pglCompressedTexSubImage2D=_Lazy_glCompressedTexSubImage2D;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC pglCompressedTexSubImage1D=_Lazy_glCompressedTexSubImage1D;
+PFNGLGETCOMPRESSEDTEXIMAGEPROC pglGetCompressedTexImage=_Lazy_glGetCompressedTexImage;
+#endif 
+
+/* GL_VERSION_1_4 */
+
+#ifdef __GLEE_GL_VERSION_1_4
+void __stdcall _Lazy_glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)  {if (GLeeInit()) glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);}
+void __stdcall _Lazy_glFogCoordf(GLfloat coord)                                           {if (GLeeInit()) glFogCoordf(coord);}
+void __stdcall _Lazy_glFogCoordfv(const GLfloat * coord)                                  {if (GLeeInit()) glFogCoordfv(coord);}
+void __stdcall _Lazy_glFogCoordd(GLdouble coord)                                          {if (GLeeInit()) glFogCoordd(coord);}
+void __stdcall _Lazy_glFogCoorddv(const GLdouble * coord)                                 {if (GLeeInit()) glFogCoorddv(coord);}
+void __stdcall _Lazy_glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glFogCoordPointer(type, stride, pointer);}
+void __stdcall _Lazy_glMultiDrawArrays(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)  {if (GLeeInit()) glMultiDrawArrays(mode, first, count, primcount);}
+void __stdcall _Lazy_glMultiDrawElements(GLenum mode, const GLsizei * count, GLenum type, const GLvoid* * indices, GLsizei primcount)  {if (GLeeInit()) glMultiDrawElements(mode, count, type, indices, primcount);}
+void __stdcall _Lazy_glPointParameterf(GLenum pname, GLfloat param)                       {if (GLeeInit()) glPointParameterf(pname, param);}
+void __stdcall _Lazy_glPointParameterfv(GLenum pname, const GLfloat * params)             {if (GLeeInit()) glPointParameterfv(pname, params);}
+void __stdcall _Lazy_glPointParameteri(GLenum pname, GLint param)                         {if (GLeeInit()) glPointParameteri(pname, param);}
+void __stdcall _Lazy_glPointParameteriv(GLenum pname, const GLint * params)               {if (GLeeInit()) glPointParameteriv(pname, params);}
+void __stdcall _Lazy_glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue)            {if (GLeeInit()) glSecondaryColor3b(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3bv(const GLbyte * v)                                {if (GLeeInit()) glSecondaryColor3bv(v);}
+void __stdcall _Lazy_glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue)      {if (GLeeInit()) glSecondaryColor3d(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3dv(const GLdouble * v)                              {if (GLeeInit()) glSecondaryColor3dv(v);}
+void __stdcall _Lazy_glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue)         {if (GLeeInit()) glSecondaryColor3f(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3fv(const GLfloat * v)                               {if (GLeeInit()) glSecondaryColor3fv(v);}
+void __stdcall _Lazy_glSecondaryColor3i(GLint red, GLint green, GLint blue)               {if (GLeeInit()) glSecondaryColor3i(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3iv(const GLint * v)                                 {if (GLeeInit()) glSecondaryColor3iv(v);}
+void __stdcall _Lazy_glSecondaryColor3s(GLshort red, GLshort green, GLshort blue)         {if (GLeeInit()) glSecondaryColor3s(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3sv(const GLshort * v)                               {if (GLeeInit()) glSecondaryColor3sv(v);}
+void __stdcall _Lazy_glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue)        {if (GLeeInit()) glSecondaryColor3ub(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3ubv(const GLubyte * v)                              {if (GLeeInit()) glSecondaryColor3ubv(v);}
+void __stdcall _Lazy_glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue)           {if (GLeeInit()) glSecondaryColor3ui(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3uiv(const GLuint * v)                               {if (GLeeInit()) glSecondaryColor3uiv(v);}
+void __stdcall _Lazy_glSecondaryColor3us(GLushort red, GLushort green, GLushort blue)     {if (GLeeInit()) glSecondaryColor3us(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3usv(const GLushort * v)                             {if (GLeeInit()) glSecondaryColor3usv(v);}
+void __stdcall _Lazy_glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glSecondaryColorPointer(size, type, stride, pointer);}
+void __stdcall _Lazy_glWindowPos2d(GLdouble x, GLdouble y)                                {if (GLeeInit()) glWindowPos2d(x, y);}
+void __stdcall _Lazy_glWindowPos2dv(const GLdouble * v)                                   {if (GLeeInit()) glWindowPos2dv(v);}
+void __stdcall _Lazy_glWindowPos2f(GLfloat x, GLfloat y)                                  {if (GLeeInit()) glWindowPos2f(x, y);}
+void __stdcall _Lazy_glWindowPos2fv(const GLfloat * v)                                    {if (GLeeInit()) glWindowPos2fv(v);}
+void __stdcall _Lazy_glWindowPos2i(GLint x, GLint y)                                      {if (GLeeInit()) glWindowPos2i(x, y);}
+void __stdcall _Lazy_glWindowPos2iv(const GLint * v)                                      {if (GLeeInit()) glWindowPos2iv(v);}
+void __stdcall _Lazy_glWindowPos2s(GLshort x, GLshort y)                                  {if (GLeeInit()) glWindowPos2s(x, y);}
+void __stdcall _Lazy_glWindowPos2sv(const GLshort * v)                                    {if (GLeeInit()) glWindowPos2sv(v);}
+void __stdcall _Lazy_glWindowPos3d(GLdouble x, GLdouble y, GLdouble z)                    {if (GLeeInit()) glWindowPos3d(x, y, z);}
+void __stdcall _Lazy_glWindowPos3dv(const GLdouble * v)                                   {if (GLeeInit()) glWindowPos3dv(v);}
+void __stdcall _Lazy_glWindowPos3f(GLfloat x, GLfloat y, GLfloat z)                       {if (GLeeInit()) glWindowPos3f(x, y, z);}
+void __stdcall _Lazy_glWindowPos3fv(const GLfloat * v)                                    {if (GLeeInit()) glWindowPos3fv(v);}
+void __stdcall _Lazy_glWindowPos3i(GLint x, GLint y, GLint z)                             {if (GLeeInit()) glWindowPos3i(x, y, z);}
+void __stdcall _Lazy_glWindowPos3iv(const GLint * v)                                      {if (GLeeInit()) glWindowPos3iv(v);}
+void __stdcall _Lazy_glWindowPos3s(GLshort x, GLshort y, GLshort z)                       {if (GLeeInit()) glWindowPos3s(x, y, z);}
+void __stdcall _Lazy_glWindowPos3sv(const GLshort * v)                                    {if (GLeeInit()) glWindowPos3sv(v);}
+PFNGLBLENDFUNCSEPARATEPROC pglBlendFuncSeparate=_Lazy_glBlendFuncSeparate;
+PFNGLFOGCOORDFPROC pglFogCoordf=_Lazy_glFogCoordf;
+PFNGLFOGCOORDFVPROC pglFogCoordfv=_Lazy_glFogCoordfv;
+PFNGLFOGCOORDDPROC pglFogCoordd=_Lazy_glFogCoordd;
+PFNGLFOGCOORDDVPROC pglFogCoorddv=_Lazy_glFogCoorddv;
+PFNGLFOGCOORDPOINTERPROC pglFogCoordPointer=_Lazy_glFogCoordPointer;
+PFNGLMULTIDRAWARRAYSPROC pglMultiDrawArrays=_Lazy_glMultiDrawArrays;
+PFNGLMULTIDRAWELEMENTSPROC pglMultiDrawElements=_Lazy_glMultiDrawElements;
+PFNGLPOINTPARAMETERFPROC pglPointParameterf=_Lazy_glPointParameterf;
+PFNGLPOINTPARAMETERFVPROC pglPointParameterfv=_Lazy_glPointParameterfv;
+PFNGLPOINTPARAMETERIPROC pglPointParameteri=_Lazy_glPointParameteri;
+PFNGLPOINTPARAMETERIVPROC pglPointParameteriv=_Lazy_glPointParameteriv;
+PFNGLSECONDARYCOLOR3BPROC pglSecondaryColor3b=_Lazy_glSecondaryColor3b;
+PFNGLSECONDARYCOLOR3BVPROC pglSecondaryColor3bv=_Lazy_glSecondaryColor3bv;
+PFNGLSECONDARYCOLOR3DPROC pglSecondaryColor3d=_Lazy_glSecondaryColor3d;
+PFNGLSECONDARYCOLOR3DVPROC pglSecondaryColor3dv=_Lazy_glSecondaryColor3dv;
+PFNGLSECONDARYCOLOR3FPROC pglSecondaryColor3f=_Lazy_glSecondaryColor3f;
+PFNGLSECONDARYCOLOR3FVPROC pglSecondaryColor3fv=_Lazy_glSecondaryColor3fv;
+PFNGLSECONDARYCOLOR3IPROC pglSecondaryColor3i=_Lazy_glSecondaryColor3i;
+PFNGLSECONDARYCOLOR3IVPROC pglSecondaryColor3iv=_Lazy_glSecondaryColor3iv;
+PFNGLSECONDARYCOLOR3SPROC pglSecondaryColor3s=_Lazy_glSecondaryColor3s;
+PFNGLSECONDARYCOLOR3SVPROC pglSecondaryColor3sv=_Lazy_glSecondaryColor3sv;
+PFNGLSECONDARYCOLOR3UBPROC pglSecondaryColor3ub=_Lazy_glSecondaryColor3ub;
+PFNGLSECONDARYCOLOR3UBVPROC pglSecondaryColor3ubv=_Lazy_glSecondaryColor3ubv;
+PFNGLSECONDARYCOLOR3UIPROC pglSecondaryColor3ui=_Lazy_glSecondaryColor3ui;
+PFNGLSECONDARYCOLOR3UIVPROC pglSecondaryColor3uiv=_Lazy_glSecondaryColor3uiv;
+PFNGLSECONDARYCOLOR3USPROC pglSecondaryColor3us=_Lazy_glSecondaryColor3us;
+PFNGLSECONDARYCOLOR3USVPROC pglSecondaryColor3usv=_Lazy_glSecondaryColor3usv;
+PFNGLSECONDARYCOLORPOINTERPROC pglSecondaryColorPointer=_Lazy_glSecondaryColorPointer;
+PFNGLWINDOWPOS2DPROC pglWindowPos2d=_Lazy_glWindowPos2d;
+PFNGLWINDOWPOS2DVPROC pglWindowPos2dv=_Lazy_glWindowPos2dv;
+PFNGLWINDOWPOS2FPROC pglWindowPos2f=_Lazy_glWindowPos2f;
+PFNGLWINDOWPOS2FVPROC pglWindowPos2fv=_Lazy_glWindowPos2fv;
+PFNGLWINDOWPOS2IPROC pglWindowPos2i=_Lazy_glWindowPos2i;
+PFNGLWINDOWPOS2IVPROC pglWindowPos2iv=_Lazy_glWindowPos2iv;
+PFNGLWINDOWPOS2SPROC pglWindowPos2s=_Lazy_glWindowPos2s;
+PFNGLWINDOWPOS2SVPROC pglWindowPos2sv=_Lazy_glWindowPos2sv;
+PFNGLWINDOWPOS3DPROC pglWindowPos3d=_Lazy_glWindowPos3d;
+PFNGLWINDOWPOS3DVPROC pglWindowPos3dv=_Lazy_glWindowPos3dv;
+PFNGLWINDOWPOS3FPROC pglWindowPos3f=_Lazy_glWindowPos3f;
+PFNGLWINDOWPOS3FVPROC pglWindowPos3fv=_Lazy_glWindowPos3fv;
+PFNGLWINDOWPOS3IPROC pglWindowPos3i=_Lazy_glWindowPos3i;
+PFNGLWINDOWPOS3IVPROC pglWindowPos3iv=_Lazy_glWindowPos3iv;
+PFNGLWINDOWPOS3SPROC pglWindowPos3s=_Lazy_glWindowPos3s;
+PFNGLWINDOWPOS3SVPROC pglWindowPos3sv=_Lazy_glWindowPos3sv;
+#endif 
+
+/* GL_VERSION_1_5 */
+
+#ifdef __GLEE_GL_VERSION_1_5
+void __stdcall _Lazy_glGenQueries(GLsizei n, GLuint * ids)                                {if (GLeeInit()) glGenQueries(n, ids);}
+void __stdcall _Lazy_glDeleteQueries(GLsizei n, const GLuint * ids)                       {if (GLeeInit()) glDeleteQueries(n, ids);}
+GLboolean __stdcall _Lazy_glIsQuery(GLuint id)                                            {if (GLeeInit()) return glIsQuery(id); return (GLboolean)0;}
+void __stdcall _Lazy_glBeginQuery(GLenum target, GLuint id)                               {if (GLeeInit()) glBeginQuery(target, id);}
+void __stdcall _Lazy_glEndQuery(GLenum target)                                            {if (GLeeInit()) glEndQuery(target);}
+void __stdcall _Lazy_glGetQueryiv(GLenum target, GLenum pname, GLint * params)            {if (GLeeInit()) glGetQueryiv(target, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectiv(GLuint id, GLenum pname, GLint * params)          {if (GLeeInit()) glGetQueryObjectiv(id, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint * params)        {if (GLeeInit()) glGetQueryObjectuiv(id, pname, params);}
+void __stdcall _Lazy_glBindBuffer(GLenum target, GLuint buffer)                           {if (GLeeInit()) glBindBuffer(target, buffer);}
+void __stdcall _Lazy_glDeleteBuffers(GLsizei n, const GLuint * buffers)                   {if (GLeeInit()) glDeleteBuffers(n, buffers);}
+void __stdcall _Lazy_glGenBuffers(GLsizei n, GLuint * buffers)                            {if (GLeeInit()) glGenBuffers(n, buffers);}
+GLboolean __stdcall _Lazy_glIsBuffer(GLuint buffer)                                       {if (GLeeInit()) return glIsBuffer(buffer); return (GLboolean)0;}
+void __stdcall _Lazy_glBufferData(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage)  {if (GLeeInit()) glBufferData(target, size, data, usage);}
+void __stdcall _Lazy_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data)  {if (GLeeInit()) glBufferSubData(target, offset, size, data);}
+void __stdcall _Lazy_glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data)  {if (GLeeInit()) glGetBufferSubData(target, offset, size, data);}
+GLvoid* __stdcall _Lazy_glMapBuffer(GLenum target, GLenum access)                         {if (GLeeInit()) return glMapBuffer(target, access); return (GLvoid*)0;}
+GLboolean __stdcall _Lazy_glUnmapBuffer(GLenum target)                                    {if (GLeeInit()) return glUnmapBuffer(target); return (GLboolean)0;}
+void __stdcall _Lazy_glGetBufferParameteriv(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetBufferParameteriv(target, pname, params);}
+void __stdcall _Lazy_glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* * params)   {if (GLeeInit()) glGetBufferPointerv(target, pname, params);}
+PFNGLGENQUERIESPROC pglGenQueries=_Lazy_glGenQueries;
+PFNGLDELETEQUERIESPROC pglDeleteQueries=_Lazy_glDeleteQueries;
+PFNGLISQUERYPROC pglIsQuery=_Lazy_glIsQuery;
+PFNGLBEGINQUERYPROC pglBeginQuery=_Lazy_glBeginQuery;
+PFNGLENDQUERYPROC pglEndQuery=_Lazy_glEndQuery;
+PFNGLGETQUERYIVPROC pglGetQueryiv=_Lazy_glGetQueryiv;
+PFNGLGETQUERYOBJECTIVPROC pglGetQueryObjectiv=_Lazy_glGetQueryObjectiv;
+PFNGLGETQUERYOBJECTUIVPROC pglGetQueryObjectuiv=_Lazy_glGetQueryObjectuiv;
+PFNGLBINDBUFFERPROC pglBindBuffer=_Lazy_glBindBuffer;
+PFNGLDELETEBUFFERSPROC pglDeleteBuffers=_Lazy_glDeleteBuffers;
+PFNGLGENBUFFERSPROC pglGenBuffers=_Lazy_glGenBuffers;
+PFNGLISBUFFERPROC pglIsBuffer=_Lazy_glIsBuffer;
+PFNGLBUFFERDATAPROC pglBufferData=_Lazy_glBufferData;
+PFNGLBUFFERSUBDATAPROC pglBufferSubData=_Lazy_glBufferSubData;
+PFNGLGETBUFFERSUBDATAPROC pglGetBufferSubData=_Lazy_glGetBufferSubData;
+PFNGLMAPBUFFERPROC pglMapBuffer=_Lazy_glMapBuffer;
+PFNGLUNMAPBUFFERPROC pglUnmapBuffer=_Lazy_glUnmapBuffer;
+PFNGLGETBUFFERPARAMETERIVPROC pglGetBufferParameteriv=_Lazy_glGetBufferParameteriv;
+PFNGLGETBUFFERPOINTERVPROC pglGetBufferPointerv=_Lazy_glGetBufferPointerv;
+#endif 
+
+/* GL_VERSION_2_0 */
+
+#ifdef __GLEE_GL_VERSION_2_0
+void __stdcall _Lazy_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)            {if (GLeeInit()) glBlendEquationSeparate(modeRGB, modeAlpha);}
+void __stdcall _Lazy_glDrawBuffers(GLsizei n, const GLenum * bufs)                        {if (GLeeInit()) glDrawBuffers(n, bufs);}
+void __stdcall _Lazy_glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)  {if (GLeeInit()) glStencilOpSeparate(face, sfail, dpfail, dppass);}
+void __stdcall _Lazy_glStencilFuncSeparate(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)  {if (GLeeInit()) glStencilFuncSeparate(frontfunc, backfunc, ref, mask);}
+void __stdcall _Lazy_glStencilMaskSeparate(GLenum face, GLuint mask)                      {if (GLeeInit()) glStencilMaskSeparate(face, mask);}
+void __stdcall _Lazy_glAttachShader(GLuint program, GLuint shader)                        {if (GLeeInit()) glAttachShader(program, shader);}
+void __stdcall _Lazy_glBindAttribLocation(GLuint program, GLuint index, const GLchar * name)  {if (GLeeInit()) glBindAttribLocation(program, index, name);}
+void __stdcall _Lazy_glCompileShader(GLuint shader)                                       {if (GLeeInit()) glCompileShader(shader);}
+GLuint __stdcall _Lazy_glCreateProgram(void)                                              {if (GLeeInit()) return glCreateProgram(); return (GLuint)0;}
+GLuint __stdcall _Lazy_glCreateShader(GLenum type)                                        {if (GLeeInit()) return glCreateShader(type); return (GLuint)0;}
+void __stdcall _Lazy_glDeleteProgram(GLuint program)                                      {if (GLeeInit()) glDeleteProgram(program);}
+void __stdcall _Lazy_glDeleteShader(GLuint shader)                                        {if (GLeeInit()) glDeleteShader(shader);}
+void __stdcall _Lazy_glDetachShader(GLuint program, GLuint shader)                        {if (GLeeInit()) glDetachShader(program, shader);}
+void __stdcall _Lazy_glDisableVertexAttribArray(GLuint index)                             {if (GLeeInit()) glDisableVertexAttribArray(index);}
+void __stdcall _Lazy_glEnableVertexAttribArray(GLuint index)                              {if (GLeeInit()) glEnableVertexAttribArray(index);}
+void __stdcall _Lazy_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)  {if (GLeeInit()) glGetActiveAttrib(program, index, bufSize, length, size, type, name);}
+void __stdcall _Lazy_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)  {if (GLeeInit()) glGetActiveUniform(program, index, bufSize, length, size, type, name);}
+void __stdcall _Lazy_glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj)  {if (GLeeInit()) glGetAttachedShaders(program, maxCount, count, obj);}
+GLint __stdcall _Lazy_glGetAttribLocation(GLuint program, const GLchar * name)            {if (GLeeInit()) return glGetAttribLocation(program, name); return (GLint)0;}
+void __stdcall _Lazy_glGetProgramiv(GLuint program, GLenum pname, GLint * params)         {if (GLeeInit()) glGetProgramiv(program, pname, params);}
+void __stdcall _Lazy_glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog)  {if (GLeeInit()) glGetProgramInfoLog(program, bufSize, length, infoLog);}
+void __stdcall _Lazy_glGetShaderiv(GLuint shader, GLenum pname, GLint * params)           {if (GLeeInit()) glGetShaderiv(shader, pname, params);}
+void __stdcall _Lazy_glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog)  {if (GLeeInit()) glGetShaderInfoLog(shader, bufSize, length, infoLog);}
+void __stdcall _Lazy_glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source)  {if (GLeeInit()) glGetShaderSource(shader, bufSize, length, source);}
+GLint __stdcall _Lazy_glGetUniformLocation(GLuint program, const GLchar * name)           {if (GLeeInit()) return glGetUniformLocation(program, name); return (GLint)0;}
+void __stdcall _Lazy_glGetUniformfv(GLuint program, GLint location, GLfloat * params)     {if (GLeeInit()) glGetUniformfv(program, location, params);}
+void __stdcall _Lazy_glGetUniformiv(GLuint program, GLint location, GLint * params)       {if (GLeeInit()) glGetUniformiv(program, location, params);}
+void __stdcall _Lazy_glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble * params)   {if (GLeeInit()) glGetVertexAttribdv(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat * params)    {if (GLeeInit()) glGetVertexAttribfv(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribiv(GLuint index, GLenum pname, GLint * params)      {if (GLeeInit()) glGetVertexAttribiv(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* * pointer)  {if (GLeeInit()) glGetVertexAttribPointerv(index, pname, pointer);}
+GLboolean __stdcall _Lazy_glIsProgram(GLuint program)                                     {if (GLeeInit()) return glIsProgram(program); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_glIsShader(GLuint shader)                                       {if (GLeeInit()) return glIsShader(shader); return (GLboolean)0;}
+void __stdcall _Lazy_glLinkProgram(GLuint program)                                        {if (GLeeInit()) glLinkProgram(program);}
+void __stdcall _Lazy_glShaderSource(GLuint shader, GLsizei count, const GLchar* * string, const GLint * length)  {if (GLeeInit()) glShaderSource(shader, count, string, length);}
+void __stdcall _Lazy_glUseProgram(GLuint program)                                         {if (GLeeInit()) glUseProgram(program);}
+void __stdcall _Lazy_glUniform1f(GLint location, GLfloat v0)                              {if (GLeeInit()) glUniform1f(location, v0);}
+void __stdcall _Lazy_glUniform2f(GLint location, GLfloat v0, GLfloat v1)                  {if (GLeeInit()) glUniform2f(location, v0, v1);}
+void __stdcall _Lazy_glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)      {if (GLeeInit()) glUniform3f(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)  {if (GLeeInit()) glUniform4f(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1i(GLint location, GLint v0)                                {if (GLeeInit()) glUniform1i(location, v0);}
+void __stdcall _Lazy_glUniform2i(GLint location, GLint v0, GLint v1)                      {if (GLeeInit()) glUniform2i(location, v0, v1);}
+void __stdcall _Lazy_glUniform3i(GLint location, GLint v0, GLint v1, GLint v2)            {if (GLeeInit()) glUniform3i(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)  {if (GLeeInit()) glUniform4i(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1fv(GLint location, GLsizei count, const GLfloat * value)   {if (GLeeInit()) glUniform1fv(location, count, value);}
+void __stdcall _Lazy_glUniform2fv(GLint location, GLsizei count, const GLfloat * value)   {if (GLeeInit()) glUniform2fv(location, count, value);}
+void __stdcall _Lazy_glUniform3fv(GLint location, GLsizei count, const GLfloat * value)   {if (GLeeInit()) glUniform3fv(location, count, value);}
+void __stdcall _Lazy_glUniform4fv(GLint location, GLsizei count, const GLfloat * value)   {if (GLeeInit()) glUniform4fv(location, count, value);}
+void __stdcall _Lazy_glUniform1iv(GLint location, GLsizei count, const GLint * value)     {if (GLeeInit()) glUniform1iv(location, count, value);}
+void __stdcall _Lazy_glUniform2iv(GLint location, GLsizei count, const GLint * value)     {if (GLeeInit()) glUniform2iv(location, count, value);}
+void __stdcall _Lazy_glUniform3iv(GLint location, GLsizei count, const GLint * value)     {if (GLeeInit()) glUniform3iv(location, count, value);}
+void __stdcall _Lazy_glUniform4iv(GLint location, GLsizei count, const GLint * value)     {if (GLeeInit()) glUniform4iv(location, count, value);}
+void __stdcall _Lazy_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix2fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix3fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix4fv(location, count, transpose, value);}
+void __stdcall _Lazy_glValidateProgram(GLuint program)                                    {if (GLeeInit()) glValidateProgram(program);}
+void __stdcall _Lazy_glVertexAttrib1d(GLuint index, GLdouble x)                           {if (GLeeInit()) glVertexAttrib1d(index, x);}
+void __stdcall _Lazy_glVertexAttrib1dv(GLuint index, const GLdouble * v)                  {if (GLeeInit()) glVertexAttrib1dv(index, v);}
+void __stdcall _Lazy_glVertexAttrib1f(GLuint index, GLfloat x)                            {if (GLeeInit()) glVertexAttrib1f(index, x);}
+void __stdcall _Lazy_glVertexAttrib1fv(GLuint index, const GLfloat * v)                   {if (GLeeInit()) glVertexAttrib1fv(index, v);}
+void __stdcall _Lazy_glVertexAttrib1s(GLuint index, GLshort x)                            {if (GLeeInit()) glVertexAttrib1s(index, x);}
+void __stdcall _Lazy_glVertexAttrib1sv(GLuint index, const GLshort * v)                   {if (GLeeInit()) glVertexAttrib1sv(index, v);}
+void __stdcall _Lazy_glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y)               {if (GLeeInit()) glVertexAttrib2d(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2dv(GLuint index, const GLdouble * v)                  {if (GLeeInit()) glVertexAttrib2dv(index, v);}
+void __stdcall _Lazy_glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y)                 {if (GLeeInit()) glVertexAttrib2f(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2fv(GLuint index, const GLfloat * v)                   {if (GLeeInit()) glVertexAttrib2fv(index, v);}
+void __stdcall _Lazy_glVertexAttrib2s(GLuint index, GLshort x, GLshort y)                 {if (GLeeInit()) glVertexAttrib2s(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2sv(GLuint index, const GLshort * v)                   {if (GLeeInit()) glVertexAttrib2sv(index, v);}
+void __stdcall _Lazy_glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z)   {if (GLeeInit()) glVertexAttrib3d(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3dv(GLuint index, const GLdouble * v)                  {if (GLeeInit()) glVertexAttrib3dv(index, v);}
+void __stdcall _Lazy_glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z)      {if (GLeeInit()) glVertexAttrib3f(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3fv(GLuint index, const GLfloat * v)                   {if (GLeeInit()) glVertexAttrib3fv(index, v);}
+void __stdcall _Lazy_glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z)      {if (GLeeInit()) glVertexAttrib3s(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3sv(GLuint index, const GLshort * v)                   {if (GLeeInit()) glVertexAttrib3sv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nbv(GLuint index, const GLbyte * v)                   {if (GLeeInit()) glVertexAttrib4Nbv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Niv(GLuint index, const GLint * v)                    {if (GLeeInit()) glVertexAttrib4Niv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nsv(GLuint index, const GLshort * v)                  {if (GLeeInit()) glVertexAttrib4Nsv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)  {if (GLeeInit()) glVertexAttrib4Nub(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4Nubv(GLuint index, const GLubyte * v)                 {if (GLeeInit()) glVertexAttrib4Nubv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nuiv(GLuint index, const GLuint * v)                  {if (GLeeInit()) glVertexAttrib4Nuiv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4Nusv(GLuint index, const GLushort * v)                {if (GLeeInit()) glVertexAttrib4Nusv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4bv(GLuint index, const GLbyte * v)                    {if (GLeeInit()) glVertexAttrib4bv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glVertexAttrib4d(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4dv(GLuint index, const GLdouble * v)                  {if (GLeeInit()) glVertexAttrib4dv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glVertexAttrib4f(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4fv(GLuint index, const GLfloat * v)                   {if (GLeeInit()) glVertexAttrib4fv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4iv(GLuint index, const GLint * v)                     {if (GLeeInit()) glVertexAttrib4iv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)  {if (GLeeInit()) glVertexAttrib4s(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4sv(GLuint index, const GLshort * v)                   {if (GLeeInit()) glVertexAttrib4sv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4ubv(GLuint index, const GLubyte * v)                  {if (GLeeInit()) glVertexAttrib4ubv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4uiv(GLuint index, const GLuint * v)                   {if (GLeeInit()) glVertexAttrib4uiv(index, v);}
+void __stdcall _Lazy_glVertexAttrib4usv(GLuint index, const GLushort * v)                 {if (GLeeInit()) glVertexAttrib4usv(index, v);}
+void __stdcall _Lazy_glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexAttribPointer(index, size, type, normalized, stride, pointer);}
+PFNGLBLENDEQUATIONSEPARATEPROC pglBlendEquationSeparate=_Lazy_glBlendEquationSeparate;
+PFNGLDRAWBUFFERSPROC pglDrawBuffers=_Lazy_glDrawBuffers;
+PFNGLSTENCILOPSEPARATEPROC pglStencilOpSeparate=_Lazy_glStencilOpSeparate;
+PFNGLSTENCILFUNCSEPARATEPROC pglStencilFuncSeparate=_Lazy_glStencilFuncSeparate;
+PFNGLSTENCILMASKSEPARATEPROC pglStencilMaskSeparate=_Lazy_glStencilMaskSeparate;
+PFNGLATTACHSHADERPROC pglAttachShader=_Lazy_glAttachShader;
+PFNGLBINDATTRIBLOCATIONPROC pglBindAttribLocation=_Lazy_glBindAttribLocation;
+PFNGLCOMPILESHADERPROC pglCompileShader=_Lazy_glCompileShader;
+PFNGLCREATEPROGRAMPROC pglCreateProgram=_Lazy_glCreateProgram;
+PFNGLCREATESHADERPROC pglCreateShader=_Lazy_glCreateShader;
+PFNGLDELETEPROGRAMPROC pglDeleteProgram=_Lazy_glDeleteProgram;
+PFNGLDELETESHADERPROC pglDeleteShader=_Lazy_glDeleteShader;
+PFNGLDETACHSHADERPROC pglDetachShader=_Lazy_glDetachShader;
+PFNGLDISABLEVERTEXATTRIBARRAYPROC pglDisableVertexAttribArray=_Lazy_glDisableVertexAttribArray;
+PFNGLENABLEVERTEXATTRIBARRAYPROC pglEnableVertexAttribArray=_Lazy_glEnableVertexAttribArray;
+PFNGLGETACTIVEATTRIBPROC pglGetActiveAttrib=_Lazy_glGetActiveAttrib;
+PFNGLGETACTIVEUNIFORMPROC pglGetActiveUniform=_Lazy_glGetActiveUniform;
+PFNGLGETATTACHEDSHADERSPROC pglGetAttachedShaders=_Lazy_glGetAttachedShaders;
+PFNGLGETATTRIBLOCATIONPROC pglGetAttribLocation=_Lazy_glGetAttribLocation;
+PFNGLGETPROGRAMIVPROC pglGetProgramiv=_Lazy_glGetProgramiv;
+PFNGLGETPROGRAMINFOLOGPROC pglGetProgramInfoLog=_Lazy_glGetProgramInfoLog;
+PFNGLGETSHADERIVPROC pglGetShaderiv=_Lazy_glGetShaderiv;
+PFNGLGETSHADERINFOLOGPROC pglGetShaderInfoLog=_Lazy_glGetShaderInfoLog;
+PFNGLGETSHADERSOURCEPROC pglGetShaderSource=_Lazy_glGetShaderSource;
+PFNGLGETUNIFORMLOCATIONPROC pglGetUniformLocation=_Lazy_glGetUniformLocation;
+PFNGLGETUNIFORMFVPROC pglGetUniformfv=_Lazy_glGetUniformfv;
+PFNGLGETUNIFORMIVPROC pglGetUniformiv=_Lazy_glGetUniformiv;
+PFNGLGETVERTEXATTRIBDVPROC pglGetVertexAttribdv=_Lazy_glGetVertexAttribdv;
+PFNGLGETVERTEXATTRIBFVPROC pglGetVertexAttribfv=_Lazy_glGetVertexAttribfv;
+PFNGLGETVERTEXATTRIBIVPROC pglGetVertexAttribiv=_Lazy_glGetVertexAttribiv;
+PFNGLGETVERTEXATTRIBPOINTERVPROC pglGetVertexAttribPointerv=_Lazy_glGetVertexAttribPointerv;
+PFNGLISPROGRAMPROC pglIsProgram=_Lazy_glIsProgram;
+PFNGLISSHADERPROC pglIsShader=_Lazy_glIsShader;
+PFNGLLINKPROGRAMPROC pglLinkProgram=_Lazy_glLinkProgram;
+PFNGLSHADERSOURCEPROC pglShaderSource=_Lazy_glShaderSource;
+PFNGLUSEPROGRAMPROC pglUseProgram=_Lazy_glUseProgram;
+PFNGLUNIFORM1FPROC pglUniform1f=_Lazy_glUniform1f;
+PFNGLUNIFORM2FPROC pglUniform2f=_Lazy_glUniform2f;
+PFNGLUNIFORM3FPROC pglUniform3f=_Lazy_glUniform3f;
+PFNGLUNIFORM4FPROC pglUniform4f=_Lazy_glUniform4f;
+PFNGLUNIFORM1IPROC pglUniform1i=_Lazy_glUniform1i;
+PFNGLUNIFORM2IPROC pglUniform2i=_Lazy_glUniform2i;
+PFNGLUNIFORM3IPROC pglUniform3i=_Lazy_glUniform3i;
+PFNGLUNIFORM4IPROC pglUniform4i=_Lazy_glUniform4i;
+PFNGLUNIFORM1FVPROC pglUniform1fv=_Lazy_glUniform1fv;
+PFNGLUNIFORM2FVPROC pglUniform2fv=_Lazy_glUniform2fv;
+PFNGLUNIFORM3FVPROC pglUniform3fv=_Lazy_glUniform3fv;
+PFNGLUNIFORM4FVPROC pglUniform4fv=_Lazy_glUniform4fv;
+PFNGLUNIFORM1IVPROC pglUniform1iv=_Lazy_glUniform1iv;
+PFNGLUNIFORM2IVPROC pglUniform2iv=_Lazy_glUniform2iv;
+PFNGLUNIFORM3IVPROC pglUniform3iv=_Lazy_glUniform3iv;
+PFNGLUNIFORM4IVPROC pglUniform4iv=_Lazy_glUniform4iv;
+PFNGLUNIFORMMATRIX2FVPROC pglUniformMatrix2fv=_Lazy_glUniformMatrix2fv;
+PFNGLUNIFORMMATRIX3FVPROC pglUniformMatrix3fv=_Lazy_glUniformMatrix3fv;
+PFNGLUNIFORMMATRIX4FVPROC pglUniformMatrix4fv=_Lazy_glUniformMatrix4fv;
+PFNGLVALIDATEPROGRAMPROC pglValidateProgram=_Lazy_glValidateProgram;
+PFNGLVERTEXATTRIB1DPROC pglVertexAttrib1d=_Lazy_glVertexAttrib1d;
+PFNGLVERTEXATTRIB1DVPROC pglVertexAttrib1dv=_Lazy_glVertexAttrib1dv;
+PFNGLVERTEXATTRIB1FPROC pglVertexAttrib1f=_Lazy_glVertexAttrib1f;
+PFNGLVERTEXATTRIB1FVPROC pglVertexAttrib1fv=_Lazy_glVertexAttrib1fv;
+PFNGLVERTEXATTRIB1SPROC pglVertexAttrib1s=_Lazy_glVertexAttrib1s;
+PFNGLVERTEXATTRIB1SVPROC pglVertexAttrib1sv=_Lazy_glVertexAttrib1sv;
+PFNGLVERTEXATTRIB2DPROC pglVertexAttrib2d=_Lazy_glVertexAttrib2d;
+PFNGLVERTEXATTRIB2DVPROC pglVertexAttrib2dv=_Lazy_glVertexAttrib2dv;
+PFNGLVERTEXATTRIB2FPROC pglVertexAttrib2f=_Lazy_glVertexAttrib2f;
+PFNGLVERTEXATTRIB2FVPROC pglVertexAttrib2fv=_Lazy_glVertexAttrib2fv;
+PFNGLVERTEXATTRIB2SPROC pglVertexAttrib2s=_Lazy_glVertexAttrib2s;
+PFNGLVERTEXATTRIB2SVPROC pglVertexAttrib2sv=_Lazy_glVertexAttrib2sv;
+PFNGLVERTEXATTRIB3DPROC pglVertexAttrib3d=_Lazy_glVertexAttrib3d;
+PFNGLVERTEXATTRIB3DVPROC pglVertexAttrib3dv=_Lazy_glVertexAttrib3dv;
+PFNGLVERTEXATTRIB3FPROC pglVertexAttrib3f=_Lazy_glVertexAttrib3f;
+PFNGLVERTEXATTRIB3FVPROC pglVertexAttrib3fv=_Lazy_glVertexAttrib3fv;
+PFNGLVERTEXATTRIB3SPROC pglVertexAttrib3s=_Lazy_glVertexAttrib3s;
+PFNGLVERTEXATTRIB3SVPROC pglVertexAttrib3sv=_Lazy_glVertexAttrib3sv;
+PFNGLVERTEXATTRIB4NBVPROC pglVertexAttrib4Nbv=_Lazy_glVertexAttrib4Nbv;
+PFNGLVERTEXATTRIB4NIVPROC pglVertexAttrib4Niv=_Lazy_glVertexAttrib4Niv;
+PFNGLVERTEXATTRIB4NSVPROC pglVertexAttrib4Nsv=_Lazy_glVertexAttrib4Nsv;
+PFNGLVERTEXATTRIB4NUBPROC pglVertexAttrib4Nub=_Lazy_glVertexAttrib4Nub;
+PFNGLVERTEXATTRIB4NUBVPROC pglVertexAttrib4Nubv=_Lazy_glVertexAttrib4Nubv;
+PFNGLVERTEXATTRIB4NUIVPROC pglVertexAttrib4Nuiv=_Lazy_glVertexAttrib4Nuiv;
+PFNGLVERTEXATTRIB4NUSVPROC pglVertexAttrib4Nusv=_Lazy_glVertexAttrib4Nusv;
+PFNGLVERTEXATTRIB4BVPROC pglVertexAttrib4bv=_Lazy_glVertexAttrib4bv;
+PFNGLVERTEXATTRIB4DPROC pglVertexAttrib4d=_Lazy_glVertexAttrib4d;
+PFNGLVERTEXATTRIB4DVPROC pglVertexAttrib4dv=_Lazy_glVertexAttrib4dv;
+PFNGLVERTEXATTRIB4FPROC pglVertexAttrib4f=_Lazy_glVertexAttrib4f;
+PFNGLVERTEXATTRIB4FVPROC pglVertexAttrib4fv=_Lazy_glVertexAttrib4fv;
+PFNGLVERTEXATTRIB4IVPROC pglVertexAttrib4iv=_Lazy_glVertexAttrib4iv;
+PFNGLVERTEXATTRIB4SPROC pglVertexAttrib4s=_Lazy_glVertexAttrib4s;
+PFNGLVERTEXATTRIB4SVPROC pglVertexAttrib4sv=_Lazy_glVertexAttrib4sv;
+PFNGLVERTEXATTRIB4UBVPROC pglVertexAttrib4ubv=_Lazy_glVertexAttrib4ubv;
+PFNGLVERTEXATTRIB4UIVPROC pglVertexAttrib4uiv=_Lazy_glVertexAttrib4uiv;
+PFNGLVERTEXATTRIB4USVPROC pglVertexAttrib4usv=_Lazy_glVertexAttrib4usv;
+PFNGLVERTEXATTRIBPOINTERPROC pglVertexAttribPointer=_Lazy_glVertexAttribPointer;
+#endif 
+
+/* GL_VERSION_2_1 */
+
+#ifdef __GLEE_GL_VERSION_2_1
+void __stdcall _Lazy_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix2x3fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix3x2fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix2x4fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix4x2fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix3x4fv(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix4x3fv(location, count, transpose, value);}
+PFNGLUNIFORMMATRIX2X3FVPROC pglUniformMatrix2x3fv=_Lazy_glUniformMatrix2x3fv;
+PFNGLUNIFORMMATRIX3X2FVPROC pglUniformMatrix3x2fv=_Lazy_glUniformMatrix3x2fv;
+PFNGLUNIFORMMATRIX2X4FVPROC pglUniformMatrix2x4fv=_Lazy_glUniformMatrix2x4fv;
+PFNGLUNIFORMMATRIX4X2FVPROC pglUniformMatrix4x2fv=_Lazy_glUniformMatrix4x2fv;
+PFNGLUNIFORMMATRIX3X4FVPROC pglUniformMatrix3x4fv=_Lazy_glUniformMatrix3x4fv;
+PFNGLUNIFORMMATRIX4X3FVPROC pglUniformMatrix4x3fv=_Lazy_glUniformMatrix4x3fv;
+#endif 
+
+/* GL_ARB_multitexture */
+
+#ifdef __GLEE_GL_ARB_multitexture
+void __stdcall _Lazy_glActiveTextureARB(GLenum texture)                                   {if (GLeeInit()) glActiveTextureARB(texture);}
+void __stdcall _Lazy_glClientActiveTextureARB(GLenum texture)                             {if (GLeeInit()) glClientActiveTextureARB(texture);}
+void __stdcall _Lazy_glMultiTexCoord1dARB(GLenum target, GLdouble s)                      {if (GLeeInit()) glMultiTexCoord1dARB(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1dvARB(GLenum target, const GLdouble * v)             {if (GLeeInit()) glMultiTexCoord1dvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1fARB(GLenum target, GLfloat s)                       {if (GLeeInit()) glMultiTexCoord1fARB(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1fvARB(GLenum target, const GLfloat * v)              {if (GLeeInit()) glMultiTexCoord1fvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1iARB(GLenum target, GLint s)                         {if (GLeeInit()) glMultiTexCoord1iARB(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1ivARB(GLenum target, const GLint * v)                {if (GLeeInit()) glMultiTexCoord1ivARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord1sARB(GLenum target, GLshort s)                       {if (GLeeInit()) glMultiTexCoord1sARB(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1svARB(GLenum target, const GLshort * v)              {if (GLeeInit()) glMultiTexCoord1svARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)          {if (GLeeInit()) glMultiTexCoord2dARB(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2dvARB(GLenum target, const GLdouble * v)             {if (GLeeInit()) glMultiTexCoord2dvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t)            {if (GLeeInit()) glMultiTexCoord2fARB(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2fvARB(GLenum target, const GLfloat * v)              {if (GLeeInit()) glMultiTexCoord2fvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2iARB(GLenum target, GLint s, GLint t)                {if (GLeeInit()) glMultiTexCoord2iARB(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2ivARB(GLenum target, const GLint * v)                {if (GLeeInit()) glMultiTexCoord2ivARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)            {if (GLeeInit()) glMultiTexCoord2sARB(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2svARB(GLenum target, const GLshort * v)              {if (GLeeInit()) glMultiTexCoord2svARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)  {if (GLeeInit()) glMultiTexCoord3dARB(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3dvARB(GLenum target, const GLdouble * v)             {if (GLeeInit()) glMultiTexCoord3dvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r)  {if (GLeeInit()) glMultiTexCoord3fARB(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3fvARB(GLenum target, const GLfloat * v)              {if (GLeeInit()) glMultiTexCoord3fvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)       {if (GLeeInit()) glMultiTexCoord3iARB(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3ivARB(GLenum target, const GLint * v)                {if (GLeeInit()) glMultiTexCoord3ivARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)  {if (GLeeInit()) glMultiTexCoord3sARB(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3svARB(GLenum target, const GLshort * v)              {if (GLeeInit()) glMultiTexCoord3svARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)  {if (GLeeInit()) glMultiTexCoord4dARB(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4dvARB(GLenum target, const GLdouble * v)             {if (GLeeInit()) glMultiTexCoord4dvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)  {if (GLeeInit()) glMultiTexCoord4fARB(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4fvARB(GLenum target, const GLfloat * v)              {if (GLeeInit()) glMultiTexCoord4fvARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)  {if (GLeeInit()) glMultiTexCoord4iARB(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4ivARB(GLenum target, const GLint * v)                {if (GLeeInit()) glMultiTexCoord4ivARB(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)  {if (GLeeInit()) glMultiTexCoord4sARB(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4svARB(GLenum target, const GLshort * v)              {if (GLeeInit()) glMultiTexCoord4svARB(target, v);}
+PFNGLACTIVETEXTUREARBPROC pglActiveTextureARB=_Lazy_glActiveTextureARB;
+PFNGLCLIENTACTIVETEXTUREARBPROC pglClientActiveTextureARB=_Lazy_glClientActiveTextureARB;
+PFNGLMULTITEXCOORD1DARBPROC pglMultiTexCoord1dARB=_Lazy_glMultiTexCoord1dARB;
+PFNGLMULTITEXCOORD1DVARBPROC pglMultiTexCoord1dvARB=_Lazy_glMultiTexCoord1dvARB;
+PFNGLMULTITEXCOORD1FARBPROC pglMultiTexCoord1fARB=_Lazy_glMultiTexCoord1fARB;
+PFNGLMULTITEXCOORD1FVARBPROC pglMultiTexCoord1fvARB=_Lazy_glMultiTexCoord1fvARB;
+PFNGLMULTITEXCOORD1IARBPROC pglMultiTexCoord1iARB=_Lazy_glMultiTexCoord1iARB;
+PFNGLMULTITEXCOORD1IVARBPROC pglMultiTexCoord1ivARB=_Lazy_glMultiTexCoord1ivARB;
+PFNGLMULTITEXCOORD1SARBPROC pglMultiTexCoord1sARB=_Lazy_glMultiTexCoord1sARB;
+PFNGLMULTITEXCOORD1SVARBPROC pglMultiTexCoord1svARB=_Lazy_glMultiTexCoord1svARB;
+PFNGLMULTITEXCOORD2DARBPROC pglMultiTexCoord2dARB=_Lazy_glMultiTexCoord2dARB;
+PFNGLMULTITEXCOORD2DVARBPROC pglMultiTexCoord2dvARB=_Lazy_glMultiTexCoord2dvARB;
+PFNGLMULTITEXCOORD2FARBPROC pglMultiTexCoord2fARB=_Lazy_glMultiTexCoord2fARB;
+PFNGLMULTITEXCOORD2FVARBPROC pglMultiTexCoord2fvARB=_Lazy_glMultiTexCoord2fvARB;
+PFNGLMULTITEXCOORD2IARBPROC pglMultiTexCoord2iARB=_Lazy_glMultiTexCoord2iARB;
+PFNGLMULTITEXCOORD2IVARBPROC pglMultiTexCoord2ivARB=_Lazy_glMultiTexCoord2ivARB;
+PFNGLMULTITEXCOORD2SARBPROC pglMultiTexCoord2sARB=_Lazy_glMultiTexCoord2sARB;
+PFNGLMULTITEXCOORD2SVARBPROC pglMultiTexCoord2svARB=_Lazy_glMultiTexCoord2svARB;
+PFNGLMULTITEXCOORD3DARBPROC pglMultiTexCoord3dARB=_Lazy_glMultiTexCoord3dARB;
+PFNGLMULTITEXCOORD3DVARBPROC pglMultiTexCoord3dvARB=_Lazy_glMultiTexCoord3dvARB;
+PFNGLMULTITEXCOORD3FARBPROC pglMultiTexCoord3fARB=_Lazy_glMultiTexCoord3fARB;
+PFNGLMULTITEXCOORD3FVARBPROC pglMultiTexCoord3fvARB=_Lazy_glMultiTexCoord3fvARB;
+PFNGLMULTITEXCOORD3IARBPROC pglMultiTexCoord3iARB=_Lazy_glMultiTexCoord3iARB;
+PFNGLMULTITEXCOORD3IVARBPROC pglMultiTexCoord3ivARB=_Lazy_glMultiTexCoord3ivARB;
+PFNGLMULTITEXCOORD3SARBPROC pglMultiTexCoord3sARB=_Lazy_glMultiTexCoord3sARB;
+PFNGLMULTITEXCOORD3SVARBPROC pglMultiTexCoord3svARB=_Lazy_glMultiTexCoord3svARB;
+PFNGLMULTITEXCOORD4DARBPROC pglMultiTexCoord4dARB=_Lazy_glMultiTexCoord4dARB;
+PFNGLMULTITEXCOORD4DVARBPROC pglMultiTexCoord4dvARB=_Lazy_glMultiTexCoord4dvARB;
+PFNGLMULTITEXCOORD4FARBPROC pglMultiTexCoord4fARB=_Lazy_glMultiTexCoord4fARB;
+PFNGLMULTITEXCOORD4FVARBPROC pglMultiTexCoord4fvARB=_Lazy_glMultiTexCoord4fvARB;
+PFNGLMULTITEXCOORD4IARBPROC pglMultiTexCoord4iARB=_Lazy_glMultiTexCoord4iARB;
+PFNGLMULTITEXCOORD4IVARBPROC pglMultiTexCoord4ivARB=_Lazy_glMultiTexCoord4ivARB;
+PFNGLMULTITEXCOORD4SARBPROC pglMultiTexCoord4sARB=_Lazy_glMultiTexCoord4sARB;
+PFNGLMULTITEXCOORD4SVARBPROC pglMultiTexCoord4svARB=_Lazy_glMultiTexCoord4svARB;
+#endif 
+
+/* GL_ARB_transpose_matrix */
+
+#ifdef __GLEE_GL_ARB_transpose_matrix
+void __stdcall _Lazy_glLoadTransposeMatrixfARB(const GLfloat * m)                         {if (GLeeInit()) glLoadTransposeMatrixfARB(m);}
+void __stdcall _Lazy_glLoadTransposeMatrixdARB(const GLdouble * m)                        {if (GLeeInit()) glLoadTransposeMatrixdARB(m);}
+void __stdcall _Lazy_glMultTransposeMatrixfARB(const GLfloat * m)                         {if (GLeeInit()) glMultTransposeMatrixfARB(m);}
+void __stdcall _Lazy_glMultTransposeMatrixdARB(const GLdouble * m)                        {if (GLeeInit()) glMultTransposeMatrixdARB(m);}
+PFNGLLOADTRANSPOSEMATRIXFARBPROC pglLoadTransposeMatrixfARB=_Lazy_glLoadTransposeMatrixfARB;
+PFNGLLOADTRANSPOSEMATRIXDARBPROC pglLoadTransposeMatrixdARB=_Lazy_glLoadTransposeMatrixdARB;
+PFNGLMULTTRANSPOSEMATRIXFARBPROC pglMultTransposeMatrixfARB=_Lazy_glMultTransposeMatrixfARB;
+PFNGLMULTTRANSPOSEMATRIXDARBPROC pglMultTransposeMatrixdARB=_Lazy_glMultTransposeMatrixdARB;
+#endif 
+
+/* GL_ARB_multisample */
+
+#ifdef __GLEE_GL_ARB_multisample
+void __stdcall _Lazy_glSampleCoverageARB(GLclampf value, GLboolean invert)                {if (GLeeInit()) glSampleCoverageARB(value, invert);}
+PFNGLSAMPLECOVERAGEARBPROC pglSampleCoverageARB=_Lazy_glSampleCoverageARB;
+#endif 
+
+/* GL_ARB_texture_env_add */
+
+#ifdef __GLEE_GL_ARB_texture_env_add
+#endif 
+
+/* GL_ARB_texture_cube_map */
+
+#ifdef __GLEE_GL_ARB_texture_cube_map
+#endif 
+
+/* GL_ARB_texture_compression */
+
+#ifdef __GLEE_GL_ARB_texture_compression
+void __stdcall _Lazy_glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data);}
+void __stdcall _Lazy_glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)  {if (GLeeInit()) glCompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, data);}
+void __stdcall _Lazy_glGetCompressedTexImageARB(GLenum target, GLint level, GLvoid * img)  {if (GLeeInit()) glGetCompressedTexImageARB(target, level, img);}
+PFNGLCOMPRESSEDTEXIMAGE3DARBPROC pglCompressedTexImage3DARB=_Lazy_glCompressedTexImage3DARB;
+PFNGLCOMPRESSEDTEXIMAGE2DARBPROC pglCompressedTexImage2DARB=_Lazy_glCompressedTexImage2DARB;
+PFNGLCOMPRESSEDTEXIMAGE1DARBPROC pglCompressedTexImage1DARB=_Lazy_glCompressedTexImage1DARB;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC pglCompressedTexSubImage3DARB=_Lazy_glCompressedTexSubImage3DARB;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC pglCompressedTexSubImage2DARB=_Lazy_glCompressedTexSubImage2DARB;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC pglCompressedTexSubImage1DARB=_Lazy_glCompressedTexSubImage1DARB;
+PFNGLGETCOMPRESSEDTEXIMAGEARBPROC pglGetCompressedTexImageARB=_Lazy_glGetCompressedTexImageARB;
+#endif 
+
+/* GL_ARB_texture_border_clamp */
+
+#ifdef __GLEE_GL_ARB_texture_border_clamp
+#endif 
+
+/* GL_ARB_point_parameters */
+
+#ifdef __GLEE_GL_ARB_point_parameters
+void __stdcall _Lazy_glPointParameterfARB(GLenum pname, GLfloat param)                    {if (GLeeInit()) glPointParameterfARB(pname, param);}
+void __stdcall _Lazy_glPointParameterfvARB(GLenum pname, const GLfloat * params)          {if (GLeeInit()) glPointParameterfvARB(pname, params);}
+PFNGLPOINTPARAMETERFARBPROC pglPointParameterfARB=_Lazy_glPointParameterfARB;
+PFNGLPOINTPARAMETERFVARBPROC pglPointParameterfvARB=_Lazy_glPointParameterfvARB;
+#endif 
+
+/* GL_ARB_vertex_blend */
+
+#ifdef __GLEE_GL_ARB_vertex_blend
+void __stdcall _Lazy_glWeightbvARB(GLint size, const GLbyte * weights)                    {if (GLeeInit()) glWeightbvARB(size, weights);}
+void __stdcall _Lazy_glWeightsvARB(GLint size, const GLshort * weights)                   {if (GLeeInit()) glWeightsvARB(size, weights);}
+void __stdcall _Lazy_glWeightivARB(GLint size, const GLint * weights)                     {if (GLeeInit()) glWeightivARB(size, weights);}
+void __stdcall _Lazy_glWeightfvARB(GLint size, const GLfloat * weights)                   {if (GLeeInit()) glWeightfvARB(size, weights);}
+void __stdcall _Lazy_glWeightdvARB(GLint size, const GLdouble * weights)                  {if (GLeeInit()) glWeightdvARB(size, weights);}
+void __stdcall _Lazy_glWeightubvARB(GLint size, const GLubyte * weights)                  {if (GLeeInit()) glWeightubvARB(size, weights);}
+void __stdcall _Lazy_glWeightusvARB(GLint size, const GLushort * weights)                 {if (GLeeInit()) glWeightusvARB(size, weights);}
+void __stdcall _Lazy_glWeightuivARB(GLint size, const GLuint * weights)                   {if (GLeeInit()) glWeightuivARB(size, weights);}
+void __stdcall _Lazy_glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glWeightPointerARB(size, type, stride, pointer);}
+void __stdcall _Lazy_glVertexBlendARB(GLint count)                                        {if (GLeeInit()) glVertexBlendARB(count);}
+PFNGLWEIGHTBVARBPROC pglWeightbvARB=_Lazy_glWeightbvARB;
+PFNGLWEIGHTSVARBPROC pglWeightsvARB=_Lazy_glWeightsvARB;
+PFNGLWEIGHTIVARBPROC pglWeightivARB=_Lazy_glWeightivARB;
+PFNGLWEIGHTFVARBPROC pglWeightfvARB=_Lazy_glWeightfvARB;
+PFNGLWEIGHTDVARBPROC pglWeightdvARB=_Lazy_glWeightdvARB;
+PFNGLWEIGHTUBVARBPROC pglWeightubvARB=_Lazy_glWeightubvARB;
+PFNGLWEIGHTUSVARBPROC pglWeightusvARB=_Lazy_glWeightusvARB;
+PFNGLWEIGHTUIVARBPROC pglWeightuivARB=_Lazy_glWeightuivARB;
+PFNGLWEIGHTPOINTERARBPROC pglWeightPointerARB=_Lazy_glWeightPointerARB;
+PFNGLVERTEXBLENDARBPROC pglVertexBlendARB=_Lazy_glVertexBlendARB;
+#endif 
+
+/* GL_ARB_matrix_palette */
+
+#ifdef __GLEE_GL_ARB_matrix_palette
+void __stdcall _Lazy_glCurrentPaletteMatrixARB(GLint index)                               {if (GLeeInit()) glCurrentPaletteMatrixARB(index);}
+void __stdcall _Lazy_glMatrixIndexubvARB(GLint size, const GLubyte * indices)             {if (GLeeInit()) glMatrixIndexubvARB(size, indices);}
+void __stdcall _Lazy_glMatrixIndexusvARB(GLint size, const GLushort * indices)            {if (GLeeInit()) glMatrixIndexusvARB(size, indices);}
+void __stdcall _Lazy_glMatrixIndexuivARB(GLint size, const GLuint * indices)              {if (GLeeInit()) glMatrixIndexuivARB(size, indices);}
+void __stdcall _Lazy_glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glMatrixIndexPointerARB(size, type, stride, pointer);}
+PFNGLCURRENTPALETTEMATRIXARBPROC pglCurrentPaletteMatrixARB=_Lazy_glCurrentPaletteMatrixARB;
+PFNGLMATRIXINDEXUBVARBPROC pglMatrixIndexubvARB=_Lazy_glMatrixIndexubvARB;
+PFNGLMATRIXINDEXUSVARBPROC pglMatrixIndexusvARB=_Lazy_glMatrixIndexusvARB;
+PFNGLMATRIXINDEXUIVARBPROC pglMatrixIndexuivARB=_Lazy_glMatrixIndexuivARB;
+PFNGLMATRIXINDEXPOINTERARBPROC pglMatrixIndexPointerARB=_Lazy_glMatrixIndexPointerARB;
+#endif 
+
+/* GL_ARB_texture_env_combine */
+
+#ifdef __GLEE_GL_ARB_texture_env_combine
+#endif 
+
+/* GL_ARB_texture_env_crossbar */
+
+#ifdef __GLEE_GL_ARB_texture_env_crossbar
+#endif 
+
+/* GL_ARB_texture_env_dot3 */
+
+#ifdef __GLEE_GL_ARB_texture_env_dot3
+#endif 
+
+/* GL_ARB_texture_mirrored_repeat */
+
+#ifdef __GLEE_GL_ARB_texture_mirrored_repeat
+#endif 
+
+/* GL_ARB_depth_texture */
+
+#ifdef __GLEE_GL_ARB_depth_texture
+#endif 
+
+/* GL_ARB_shadow */
+
+#ifdef __GLEE_GL_ARB_shadow
+#endif 
+
+/* GL_ARB_shadow_ambient */
+
+#ifdef __GLEE_GL_ARB_shadow_ambient
+#endif 
+
+/* GL_ARB_window_pos */
+
+#ifdef __GLEE_GL_ARB_window_pos
+void __stdcall _Lazy_glWindowPos2dARB(GLdouble x, GLdouble y)                             {if (GLeeInit()) glWindowPos2dARB(x, y);}
+void __stdcall _Lazy_glWindowPos2dvARB(const GLdouble * v)                                {if (GLeeInit()) glWindowPos2dvARB(v);}
+void __stdcall _Lazy_glWindowPos2fARB(GLfloat x, GLfloat y)                               {if (GLeeInit()) glWindowPos2fARB(x, y);}
+void __stdcall _Lazy_glWindowPos2fvARB(const GLfloat * v)                                 {if (GLeeInit()) glWindowPos2fvARB(v);}
+void __stdcall _Lazy_glWindowPos2iARB(GLint x, GLint y)                                   {if (GLeeInit()) glWindowPos2iARB(x, y);}
+void __stdcall _Lazy_glWindowPos2ivARB(const GLint * v)                                   {if (GLeeInit()) glWindowPos2ivARB(v);}
+void __stdcall _Lazy_glWindowPos2sARB(GLshort x, GLshort y)                               {if (GLeeInit()) glWindowPos2sARB(x, y);}
+void __stdcall _Lazy_glWindowPos2svARB(const GLshort * v)                                 {if (GLeeInit()) glWindowPos2svARB(v);}
+void __stdcall _Lazy_glWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z)                 {if (GLeeInit()) glWindowPos3dARB(x, y, z);}
+void __stdcall _Lazy_glWindowPos3dvARB(const GLdouble * v)                                {if (GLeeInit()) glWindowPos3dvARB(v);}
+void __stdcall _Lazy_glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z)                    {if (GLeeInit()) glWindowPos3fARB(x, y, z);}
+void __stdcall _Lazy_glWindowPos3fvARB(const GLfloat * v)                                 {if (GLeeInit()) glWindowPos3fvARB(v);}
+void __stdcall _Lazy_glWindowPos3iARB(GLint x, GLint y, GLint z)                          {if (GLeeInit()) glWindowPos3iARB(x, y, z);}
+void __stdcall _Lazy_glWindowPos3ivARB(const GLint * v)                                   {if (GLeeInit()) glWindowPos3ivARB(v);}
+void __stdcall _Lazy_glWindowPos3sARB(GLshort x, GLshort y, GLshort z)                    {if (GLeeInit()) glWindowPos3sARB(x, y, z);}
+void __stdcall _Lazy_glWindowPos3svARB(const GLshort * v)                                 {if (GLeeInit()) glWindowPos3svARB(v);}
+PFNGLWINDOWPOS2DARBPROC pglWindowPos2dARB=_Lazy_glWindowPos2dARB;
+PFNGLWINDOWPOS2DVARBPROC pglWindowPos2dvARB=_Lazy_glWindowPos2dvARB;
+PFNGLWINDOWPOS2FARBPROC pglWindowPos2fARB=_Lazy_glWindowPos2fARB;
+PFNGLWINDOWPOS2FVARBPROC pglWindowPos2fvARB=_Lazy_glWindowPos2fvARB;
+PFNGLWINDOWPOS2IARBPROC pglWindowPos2iARB=_Lazy_glWindowPos2iARB;
+PFNGLWINDOWPOS2IVARBPROC pglWindowPos2ivARB=_Lazy_glWindowPos2ivARB;
+PFNGLWINDOWPOS2SARBPROC pglWindowPos2sARB=_Lazy_glWindowPos2sARB;
+PFNGLWINDOWPOS2SVARBPROC pglWindowPos2svARB=_Lazy_glWindowPos2svARB;
+PFNGLWINDOWPOS3DARBPROC pglWindowPos3dARB=_Lazy_glWindowPos3dARB;
+PFNGLWINDOWPOS3DVARBPROC pglWindowPos3dvARB=_Lazy_glWindowPos3dvARB;
+PFNGLWINDOWPOS3FARBPROC pglWindowPos3fARB=_Lazy_glWindowPos3fARB;
+PFNGLWINDOWPOS3FVARBPROC pglWindowPos3fvARB=_Lazy_glWindowPos3fvARB;
+PFNGLWINDOWPOS3IARBPROC pglWindowPos3iARB=_Lazy_glWindowPos3iARB;
+PFNGLWINDOWPOS3IVARBPROC pglWindowPos3ivARB=_Lazy_glWindowPos3ivARB;
+PFNGLWINDOWPOS3SARBPROC pglWindowPos3sARB=_Lazy_glWindowPos3sARB;
+PFNGLWINDOWPOS3SVARBPROC pglWindowPos3svARB=_Lazy_glWindowPos3svARB;
+#endif 
+
+/* GL_ARB_vertex_program */
+
+#ifdef __GLEE_GL_ARB_vertex_program
+void __stdcall _Lazy_glVertexAttrib1dARB(GLuint index, GLdouble x)                        {if (GLeeInit()) glVertexAttrib1dARB(index, x);}
+void __stdcall _Lazy_glVertexAttrib1dvARB(GLuint index, const GLdouble * v)               {if (GLeeInit()) glVertexAttrib1dvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib1fARB(GLuint index, GLfloat x)                         {if (GLeeInit()) glVertexAttrib1fARB(index, x);}
+void __stdcall _Lazy_glVertexAttrib1fvARB(GLuint index, const GLfloat * v)                {if (GLeeInit()) glVertexAttrib1fvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib1sARB(GLuint index, GLshort x)                         {if (GLeeInit()) glVertexAttrib1sARB(index, x);}
+void __stdcall _Lazy_glVertexAttrib1svARB(GLuint index, const GLshort * v)                {if (GLeeInit()) glVertexAttrib1svARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y)            {if (GLeeInit()) glVertexAttrib2dARB(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2dvARB(GLuint index, const GLdouble * v)               {if (GLeeInit()) glVertexAttrib2dvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y)              {if (GLeeInit()) glVertexAttrib2fARB(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2fvARB(GLuint index, const GLfloat * v)                {if (GLeeInit()) glVertexAttrib2fvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y)              {if (GLeeInit()) glVertexAttrib2sARB(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2svARB(GLuint index, const GLshort * v)                {if (GLeeInit()) glVertexAttrib2svARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z)  {if (GLeeInit()) glVertexAttrib3dARB(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3dvARB(GLuint index, const GLdouble * v)               {if (GLeeInit()) glVertexAttrib3dvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z)   {if (GLeeInit()) glVertexAttrib3fARB(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3fvARB(GLuint index, const GLfloat * v)                {if (GLeeInit()) glVertexAttrib3fvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z)   {if (GLeeInit()) glVertexAttrib3sARB(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3svARB(GLuint index, const GLshort * v)                {if (GLeeInit()) glVertexAttrib3svARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NbvARB(GLuint index, const GLbyte * v)                {if (GLeeInit()) glVertexAttrib4NbvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NivARB(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttrib4NivARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NsvARB(GLuint index, const GLshort * v)               {if (GLeeInit()) glVertexAttrib4NsvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)  {if (GLeeInit()) glVertexAttrib4NubARB(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4NubvARB(GLuint index, const GLubyte * v)              {if (GLeeInit()) glVertexAttrib4NubvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NuivARB(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttrib4NuivARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4NusvARB(GLuint index, const GLushort * v)             {if (GLeeInit()) glVertexAttrib4NusvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4bvARB(GLuint index, const GLbyte * v)                 {if (GLeeInit()) glVertexAttrib4bvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glVertexAttrib4dARB(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4dvARB(GLuint index, const GLdouble * v)               {if (GLeeInit()) glVertexAttrib4dvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glVertexAttrib4fARB(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4fvARB(GLuint index, const GLfloat * v)                {if (GLeeInit()) glVertexAttrib4fvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4ivARB(GLuint index, const GLint * v)                  {if (GLeeInit()) glVertexAttrib4ivARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)  {if (GLeeInit()) glVertexAttrib4sARB(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4svARB(GLuint index, const GLshort * v)                {if (GLeeInit()) glVertexAttrib4svARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4ubvARB(GLuint index, const GLubyte * v)               {if (GLeeInit()) glVertexAttrib4ubvARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4uivARB(GLuint index, const GLuint * v)                {if (GLeeInit()) glVertexAttrib4uivARB(index, v);}
+void __stdcall _Lazy_glVertexAttrib4usvARB(GLuint index, const GLushort * v)              {if (GLeeInit()) glVertexAttrib4usvARB(index, v);}
+void __stdcall _Lazy_glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexAttribPointerARB(index, size, type, normalized, stride, pointer);}
+void __stdcall _Lazy_glEnableVertexAttribArrayARB(GLuint index)                           {if (GLeeInit()) glEnableVertexAttribArrayARB(index);}
+void __stdcall _Lazy_glDisableVertexAttribArrayARB(GLuint index)                          {if (GLeeInit()) glDisableVertexAttribArrayARB(index);}
+void __stdcall _Lazy_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid * string)  {if (GLeeInit()) glProgramStringARB(target, format, len, string);}
+void __stdcall _Lazy_glBindProgramARB(GLenum target, GLuint program)                      {if (GLeeInit()) glBindProgramARB(target, program);}
+void __stdcall _Lazy_glDeleteProgramsARB(GLsizei n, const GLuint * programs)              {if (GLeeInit()) glDeleteProgramsARB(n, programs);}
+void __stdcall _Lazy_glGenProgramsARB(GLsizei n, GLuint * programs)                       {if (GLeeInit()) glGenProgramsARB(n, programs);}
+void __stdcall _Lazy_glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glProgramEnvParameter4dARB(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble * params)  {if (GLeeInit()) glProgramEnvParameter4dvARB(target, index, params);}
+void __stdcall _Lazy_glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glProgramEnvParameter4fARB(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat * params)  {if (GLeeInit()) glProgramEnvParameter4fvARB(target, index, params);}
+void __stdcall _Lazy_glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glProgramLocalParameter4dARB(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble * params)  {if (GLeeInit()) glProgramLocalParameter4dvARB(target, index, params);}
+void __stdcall _Lazy_glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glProgramLocalParameter4fARB(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat * params)  {if (GLeeInit()) glProgramLocalParameter4fvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble * params)  {if (GLeeInit()) glGetProgramEnvParameterdvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat * params)  {if (GLeeInit()) glGetProgramEnvParameterfvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble * params)  {if (GLeeInit()) glGetProgramLocalParameterdvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat * params)  {if (GLeeInit()) glGetProgramLocalParameterfvARB(target, index, params);}
+void __stdcall _Lazy_glGetProgramivARB(GLenum target, GLenum pname, GLint * params)       {if (GLeeInit()) glGetProgramivARB(target, pname, params);}
+void __stdcall _Lazy_glGetProgramStringARB(GLenum target, GLenum pname, GLvoid * string)  {if (GLeeInit()) glGetProgramStringARB(target, pname, string);}
+void __stdcall _Lazy_glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble * params)  {if (GLeeInit()) glGetVertexAttribdvARB(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetVertexAttribfvARB(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint * params)   {if (GLeeInit()) glGetVertexAttribivARB(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribPointervARB(GLuint index, GLenum pname, GLvoid* * pointer)  {if (GLeeInit()) glGetVertexAttribPointervARB(index, pname, pointer);}
+GLboolean __stdcall _Lazy_glIsProgramARB(GLuint program)                                  {if (GLeeInit()) return glIsProgramARB(program); return (GLboolean)0;}
+PFNGLVERTEXATTRIB1DARBPROC pglVertexAttrib1dARB=_Lazy_glVertexAttrib1dARB;
+PFNGLVERTEXATTRIB1DVARBPROC pglVertexAttrib1dvARB=_Lazy_glVertexAttrib1dvARB;
+PFNGLVERTEXATTRIB1FARBPROC pglVertexAttrib1fARB=_Lazy_glVertexAttrib1fARB;
+PFNGLVERTEXATTRIB1FVARBPROC pglVertexAttrib1fvARB=_Lazy_glVertexAttrib1fvARB;
+PFNGLVERTEXATTRIB1SARBPROC pglVertexAttrib1sARB=_Lazy_glVertexAttrib1sARB;
+PFNGLVERTEXATTRIB1SVARBPROC pglVertexAttrib1svARB=_Lazy_glVertexAttrib1svARB;
+PFNGLVERTEXATTRIB2DARBPROC pglVertexAttrib2dARB=_Lazy_glVertexAttrib2dARB;
+PFNGLVERTEXATTRIB2DVARBPROC pglVertexAttrib2dvARB=_Lazy_glVertexAttrib2dvARB;
+PFNGLVERTEXATTRIB2FARBPROC pglVertexAttrib2fARB=_Lazy_glVertexAttrib2fARB;
+PFNGLVERTEXATTRIB2FVARBPROC pglVertexAttrib2fvARB=_Lazy_glVertexAttrib2fvARB;
+PFNGLVERTEXATTRIB2SARBPROC pglVertexAttrib2sARB=_Lazy_glVertexAttrib2sARB;
+PFNGLVERTEXATTRIB2SVARBPROC pglVertexAttrib2svARB=_Lazy_glVertexAttrib2svARB;
+PFNGLVERTEXATTRIB3DARBPROC pglVertexAttrib3dARB=_Lazy_glVertexAttrib3dARB;
+PFNGLVERTEXATTRIB3DVARBPROC pglVertexAttrib3dvARB=_Lazy_glVertexAttrib3dvARB;
+PFNGLVERTEXATTRIB3FARBPROC pglVertexAttrib3fARB=_Lazy_glVertexAttrib3fARB;
+PFNGLVERTEXATTRIB3FVARBPROC pglVertexAttrib3fvARB=_Lazy_glVertexAttrib3fvARB;
+PFNGLVERTEXATTRIB3SARBPROC pglVertexAttrib3sARB=_Lazy_glVertexAttrib3sARB;
+PFNGLVERTEXATTRIB3SVARBPROC pglVertexAttrib3svARB=_Lazy_glVertexAttrib3svARB;
+PFNGLVERTEXATTRIB4NBVARBPROC pglVertexAttrib4NbvARB=_Lazy_glVertexAttrib4NbvARB;
+PFNGLVERTEXATTRIB4NIVARBPROC pglVertexAttrib4NivARB=_Lazy_glVertexAttrib4NivARB;
+PFNGLVERTEXATTRIB4NSVARBPROC pglVertexAttrib4NsvARB=_Lazy_glVertexAttrib4NsvARB;
+PFNGLVERTEXATTRIB4NUBARBPROC pglVertexAttrib4NubARB=_Lazy_glVertexAttrib4NubARB;
+PFNGLVERTEXATTRIB4NUBVARBPROC pglVertexAttrib4NubvARB=_Lazy_glVertexAttrib4NubvARB;
+PFNGLVERTEXATTRIB4NUIVARBPROC pglVertexAttrib4NuivARB=_Lazy_glVertexAttrib4NuivARB;
+PFNGLVERTEXATTRIB4NUSVARBPROC pglVertexAttrib4NusvARB=_Lazy_glVertexAttrib4NusvARB;
+PFNGLVERTEXATTRIB4BVARBPROC pglVertexAttrib4bvARB=_Lazy_glVertexAttrib4bvARB;
+PFNGLVERTEXATTRIB4DARBPROC pglVertexAttrib4dARB=_Lazy_glVertexAttrib4dARB;
+PFNGLVERTEXATTRIB4DVARBPROC pglVertexAttrib4dvARB=_Lazy_glVertexAttrib4dvARB;
+PFNGLVERTEXATTRIB4FARBPROC pglVertexAttrib4fARB=_Lazy_glVertexAttrib4fARB;
+PFNGLVERTEXATTRIB4FVARBPROC pglVertexAttrib4fvARB=_Lazy_glVertexAttrib4fvARB;
+PFNGLVERTEXATTRIB4IVARBPROC pglVertexAttrib4ivARB=_Lazy_glVertexAttrib4ivARB;
+PFNGLVERTEXATTRIB4SARBPROC pglVertexAttrib4sARB=_Lazy_glVertexAttrib4sARB;
+PFNGLVERTEXATTRIB4SVARBPROC pglVertexAttrib4svARB=_Lazy_glVertexAttrib4svARB;
+PFNGLVERTEXATTRIB4UBVARBPROC pglVertexAttrib4ubvARB=_Lazy_glVertexAttrib4ubvARB;
+PFNGLVERTEXATTRIB4UIVARBPROC pglVertexAttrib4uivARB=_Lazy_glVertexAttrib4uivARB;
+PFNGLVERTEXATTRIB4USVARBPROC pglVertexAttrib4usvARB=_Lazy_glVertexAttrib4usvARB;
+PFNGLVERTEXATTRIBPOINTERARBPROC pglVertexAttribPointerARB=_Lazy_glVertexAttribPointerARB;
+PFNGLENABLEVERTEXATTRIBARRAYARBPROC pglEnableVertexAttribArrayARB=_Lazy_glEnableVertexAttribArrayARB;
+PFNGLDISABLEVERTEXATTRIBARRAYARBPROC pglDisableVertexAttribArrayARB=_Lazy_glDisableVertexAttribArrayARB;
+PFNGLPROGRAMSTRINGARBPROC pglProgramStringARB=_Lazy_glProgramStringARB;
+PFNGLBINDPROGRAMARBPROC pglBindProgramARB=_Lazy_glBindProgramARB;
+PFNGLDELETEPROGRAMSARBPROC pglDeleteProgramsARB=_Lazy_glDeleteProgramsARB;
+PFNGLGENPROGRAMSARBPROC pglGenProgramsARB=_Lazy_glGenProgramsARB;
+PFNGLPROGRAMENVPARAMETER4DARBPROC pglProgramEnvParameter4dARB=_Lazy_glProgramEnvParameter4dARB;
+PFNGLPROGRAMENVPARAMETER4DVARBPROC pglProgramEnvParameter4dvARB=_Lazy_glProgramEnvParameter4dvARB;
+PFNGLPROGRAMENVPARAMETER4FARBPROC pglProgramEnvParameter4fARB=_Lazy_glProgramEnvParameter4fARB;
+PFNGLPROGRAMENVPARAMETER4FVARBPROC pglProgramEnvParameter4fvARB=_Lazy_glProgramEnvParameter4fvARB;
+PFNGLPROGRAMLOCALPARAMETER4DARBPROC pglProgramLocalParameter4dARB=_Lazy_glProgramLocalParameter4dARB;
+PFNGLPROGRAMLOCALPARAMETER4DVARBPROC pglProgramLocalParameter4dvARB=_Lazy_glProgramLocalParameter4dvARB;
+PFNGLPROGRAMLOCALPARAMETER4FARBPROC pglProgramLocalParameter4fARB=_Lazy_glProgramLocalParameter4fARB;
+PFNGLPROGRAMLOCALPARAMETER4FVARBPROC pglProgramLocalParameter4fvARB=_Lazy_glProgramLocalParameter4fvARB;
+PFNGLGETPROGRAMENVPARAMETERDVARBPROC pglGetProgramEnvParameterdvARB=_Lazy_glGetProgramEnvParameterdvARB;
+PFNGLGETPROGRAMENVPARAMETERFVARBPROC pglGetProgramEnvParameterfvARB=_Lazy_glGetProgramEnvParameterfvARB;
+PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC pglGetProgramLocalParameterdvARB=_Lazy_glGetProgramLocalParameterdvARB;
+PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC pglGetProgramLocalParameterfvARB=_Lazy_glGetProgramLocalParameterfvARB;
+PFNGLGETPROGRAMIVARBPROC pglGetProgramivARB=_Lazy_glGetProgramivARB;
+PFNGLGETPROGRAMSTRINGARBPROC pglGetProgramStringARB=_Lazy_glGetProgramStringARB;
+PFNGLGETVERTEXATTRIBDVARBPROC pglGetVertexAttribdvARB=_Lazy_glGetVertexAttribdvARB;
+PFNGLGETVERTEXATTRIBFVARBPROC pglGetVertexAttribfvARB=_Lazy_glGetVertexAttribfvARB;
+PFNGLGETVERTEXATTRIBIVARBPROC pglGetVertexAttribivARB=_Lazy_glGetVertexAttribivARB;
+PFNGLGETVERTEXATTRIBPOINTERVARBPROC pglGetVertexAttribPointervARB=_Lazy_glGetVertexAttribPointervARB;
+PFNGLISPROGRAMARBPROC pglIsProgramARB=_Lazy_glIsProgramARB;
+#endif 
+
+/* GL_ARB_fragment_program */
+
+#ifdef __GLEE_GL_ARB_fragment_program
+#endif 
+
+/* GL_ARB_vertex_buffer_object */
+
+#ifdef __GLEE_GL_ARB_vertex_buffer_object
+void __stdcall _Lazy_glBindBufferARB(GLenum target, GLuint buffer)                        {if (GLeeInit()) glBindBufferARB(target, buffer);}
+void __stdcall _Lazy_glDeleteBuffersARB(GLsizei n, const GLuint * buffers)                {if (GLeeInit()) glDeleteBuffersARB(n, buffers);}
+void __stdcall _Lazy_glGenBuffersARB(GLsizei n, GLuint * buffers)                         {if (GLeeInit()) glGenBuffersARB(n, buffers);}
+GLboolean __stdcall _Lazy_glIsBufferARB(GLuint buffer)                                    {if (GLeeInit()) return glIsBufferARB(buffer); return (GLboolean)0;}
+void __stdcall _Lazy_glBufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage)  {if (GLeeInit()) glBufferDataARB(target, size, data, usage);}
+void __stdcall _Lazy_glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)  {if (GLeeInit()) glBufferSubDataARB(target, offset, size, data);}
+void __stdcall _Lazy_glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data)  {if (GLeeInit()) glGetBufferSubDataARB(target, offset, size, data);}
+GLvoid* __stdcall _Lazy_glMapBufferARB(GLenum target, GLenum access)                      {if (GLeeInit()) return glMapBufferARB(target, access); return (GLvoid*)0;}
+GLboolean __stdcall _Lazy_glUnmapBufferARB(GLenum target)                                 {if (GLeeInit()) return glUnmapBufferARB(target); return (GLboolean)0;}
+void __stdcall _Lazy_glGetBufferParameterivARB(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetBufferParameterivARB(target, pname, params);}
+void __stdcall _Lazy_glGetBufferPointervARB(GLenum target, GLenum pname, GLvoid* * params)  {if (GLeeInit()) glGetBufferPointervARB(target, pname, params);}
+PFNGLBINDBUFFERARBPROC pglBindBufferARB=_Lazy_glBindBufferARB;
+PFNGLDELETEBUFFERSARBPROC pglDeleteBuffersARB=_Lazy_glDeleteBuffersARB;
+PFNGLGENBUFFERSARBPROC pglGenBuffersARB=_Lazy_glGenBuffersARB;
+PFNGLISBUFFERARBPROC pglIsBufferARB=_Lazy_glIsBufferARB;
+PFNGLBUFFERDATAARBPROC pglBufferDataARB=_Lazy_glBufferDataARB;
+PFNGLBUFFERSUBDATAARBPROC pglBufferSubDataARB=_Lazy_glBufferSubDataARB;
+PFNGLGETBUFFERSUBDATAARBPROC pglGetBufferSubDataARB=_Lazy_glGetBufferSubDataARB;
+PFNGLMAPBUFFERARBPROC pglMapBufferARB=_Lazy_glMapBufferARB;
+PFNGLUNMAPBUFFERARBPROC pglUnmapBufferARB=_Lazy_glUnmapBufferARB;
+PFNGLGETBUFFERPARAMETERIVARBPROC pglGetBufferParameterivARB=_Lazy_glGetBufferParameterivARB;
+PFNGLGETBUFFERPOINTERVARBPROC pglGetBufferPointervARB=_Lazy_glGetBufferPointervARB;
+#endif 
+
+/* GL_ARB_occlusion_query */
+
+#ifdef __GLEE_GL_ARB_occlusion_query
+void __stdcall _Lazy_glGenQueriesARB(GLsizei n, GLuint * ids)                             {if (GLeeInit()) glGenQueriesARB(n, ids);}
+void __stdcall _Lazy_glDeleteQueriesARB(GLsizei n, const GLuint * ids)                    {if (GLeeInit()) glDeleteQueriesARB(n, ids);}
+GLboolean __stdcall _Lazy_glIsQueryARB(GLuint id)                                         {if (GLeeInit()) return glIsQueryARB(id); return (GLboolean)0;}
+void __stdcall _Lazy_glBeginQueryARB(GLenum target, GLuint id)                            {if (GLeeInit()) glBeginQueryARB(target, id);}
+void __stdcall _Lazy_glEndQueryARB(GLenum target)                                         {if (GLeeInit()) glEndQueryARB(target);}
+void __stdcall _Lazy_glGetQueryivARB(GLenum target, GLenum pname, GLint * params)         {if (GLeeInit()) glGetQueryivARB(target, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint * params)       {if (GLeeInit()) glGetQueryObjectivARB(id, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint * params)     {if (GLeeInit()) glGetQueryObjectuivARB(id, pname, params);}
+PFNGLGENQUERIESARBPROC pglGenQueriesARB=_Lazy_glGenQueriesARB;
+PFNGLDELETEQUERIESARBPROC pglDeleteQueriesARB=_Lazy_glDeleteQueriesARB;
+PFNGLISQUERYARBPROC pglIsQueryARB=_Lazy_glIsQueryARB;
+PFNGLBEGINQUERYARBPROC pglBeginQueryARB=_Lazy_glBeginQueryARB;
+PFNGLENDQUERYARBPROC pglEndQueryARB=_Lazy_glEndQueryARB;
+PFNGLGETQUERYIVARBPROC pglGetQueryivARB=_Lazy_glGetQueryivARB;
+PFNGLGETQUERYOBJECTIVARBPROC pglGetQueryObjectivARB=_Lazy_glGetQueryObjectivARB;
+PFNGLGETQUERYOBJECTUIVARBPROC pglGetQueryObjectuivARB=_Lazy_glGetQueryObjectuivARB;
+#endif 
+
+/* GL_ARB_shader_objects */
+
+#ifdef __GLEE_GL_ARB_shader_objects
+void __stdcall _Lazy_glDeleteObjectARB(GLhandleARB obj)                                   {if (GLeeInit()) glDeleteObjectARB(obj);}
+GLhandleARB __stdcall _Lazy_glGetHandleARB(GLenum pname)                                  {if (GLeeInit()) return glGetHandleARB(pname); return (GLhandleARB)0;}
+void __stdcall _Lazy_glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj)  {if (GLeeInit()) glDetachObjectARB(containerObj, attachedObj);}
+GLhandleARB __stdcall _Lazy_glCreateShaderObjectARB(GLenum shaderType)                    {if (GLeeInit()) return glCreateShaderObjectARB(shaderType); return (GLhandleARB)0;}
+void __stdcall _Lazy_glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB* * string, const GLint * length)  {if (GLeeInit()) glShaderSourceARB(shaderObj, count, string, length);}
+void __stdcall _Lazy_glCompileShaderARB(GLhandleARB shaderObj)                            {if (GLeeInit()) glCompileShaderARB(shaderObj);}
+GLhandleARB __stdcall _Lazy_glCreateProgramObjectARB(void)                                {if (GLeeInit()) return glCreateProgramObjectARB(); return (GLhandleARB)0;}
+void __stdcall _Lazy_glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj)         {if (GLeeInit()) glAttachObjectARB(containerObj, obj);}
+void __stdcall _Lazy_glLinkProgramARB(GLhandleARB programObj)                             {if (GLeeInit()) glLinkProgramARB(programObj);}
+void __stdcall _Lazy_glUseProgramObjectARB(GLhandleARB programObj)                        {if (GLeeInit()) glUseProgramObjectARB(programObj);}
+void __stdcall _Lazy_glValidateProgramARB(GLhandleARB programObj)                         {if (GLeeInit()) glValidateProgramARB(programObj);}
+void __stdcall _Lazy_glUniform1fARB(GLint location, GLfloat v0)                           {if (GLeeInit()) glUniform1fARB(location, v0);}
+void __stdcall _Lazy_glUniform2fARB(GLint location, GLfloat v0, GLfloat v1)               {if (GLeeInit()) glUniform2fARB(location, v0, v1);}
+void __stdcall _Lazy_glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)   {if (GLeeInit()) glUniform3fARB(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)  {if (GLeeInit()) glUniform4fARB(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1iARB(GLint location, GLint v0)                             {if (GLeeInit()) glUniform1iARB(location, v0);}
+void __stdcall _Lazy_glUniform2iARB(GLint location, GLint v0, GLint v1)                   {if (GLeeInit()) glUniform2iARB(location, v0, v1);}
+void __stdcall _Lazy_glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2)         {if (GLeeInit()) glUniform3iARB(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)  {if (GLeeInit()) glUniform4iARB(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1fvARB(GLint location, GLsizei count, const GLfloat * value)  {if (GLeeInit()) glUniform1fvARB(location, count, value);}
+void __stdcall _Lazy_glUniform2fvARB(GLint location, GLsizei count, const GLfloat * value)  {if (GLeeInit()) glUniform2fvARB(location, count, value);}
+void __stdcall _Lazy_glUniform3fvARB(GLint location, GLsizei count, const GLfloat * value)  {if (GLeeInit()) glUniform3fvARB(location, count, value);}
+void __stdcall _Lazy_glUniform4fvARB(GLint location, GLsizei count, const GLfloat * value)  {if (GLeeInit()) glUniform4fvARB(location, count, value);}
+void __stdcall _Lazy_glUniform1ivARB(GLint location, GLsizei count, const GLint * value)  {if (GLeeInit()) glUniform1ivARB(location, count, value);}
+void __stdcall _Lazy_glUniform2ivARB(GLint location, GLsizei count, const GLint * value)  {if (GLeeInit()) glUniform2ivARB(location, count, value);}
+void __stdcall _Lazy_glUniform3ivARB(GLint location, GLsizei count, const GLint * value)  {if (GLeeInit()) glUniform3ivARB(location, count, value);}
+void __stdcall _Lazy_glUniform4ivARB(GLint location, GLsizei count, const GLint * value)  {if (GLeeInit()) glUniform4ivARB(location, count, value);}
+void __stdcall _Lazy_glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix2fvARB(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix3fvARB(location, count, transpose, value);}
+void __stdcall _Lazy_glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)  {if (GLeeInit()) glUniformMatrix4fvARB(location, count, transpose, value);}
+void __stdcall _Lazy_glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetObjectParameterfvARB(obj, pname, params);}
+void __stdcall _Lazy_glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint * params)  {if (GLeeInit()) glGetObjectParameterivARB(obj, pname, params);}
+void __stdcall _Lazy_glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)  {if (GLeeInit()) glGetInfoLogARB(obj, maxLength, length, infoLog);}
+void __stdcall _Lazy_glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj)  {if (GLeeInit()) glGetAttachedObjectsARB(containerObj, maxCount, count, obj);}
+GLint __stdcall _Lazy_glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB * name)  {if (GLeeInit()) return glGetUniformLocationARB(programObj, name); return (GLint)0;}
+void __stdcall _Lazy_glGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)  {if (GLeeInit()) glGetActiveUniformARB(programObj, index, maxLength, length, size, type, name);}
+void __stdcall _Lazy_glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat * params)  {if (GLeeInit()) glGetUniformfvARB(programObj, location, params);}
+void __stdcall _Lazy_glGetUniformivARB(GLhandleARB programObj, GLint location, GLint * params)  {if (GLeeInit()) glGetUniformivARB(programObj, location, params);}
+void __stdcall _Lazy_glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source)  {if (GLeeInit()) glGetShaderSourceARB(obj, maxLength, length, source);}
+PFNGLDELETEOBJECTARBPROC pglDeleteObjectARB=_Lazy_glDeleteObjectARB;
+PFNGLGETHANDLEARBPROC pglGetHandleARB=_Lazy_glGetHandleARB;
+PFNGLDETACHOBJECTARBPROC pglDetachObjectARB=_Lazy_glDetachObjectARB;
+PFNGLCREATESHADEROBJECTARBPROC pglCreateShaderObjectARB=_Lazy_glCreateShaderObjectARB;
+PFNGLSHADERSOURCEARBPROC pglShaderSourceARB=_Lazy_glShaderSourceARB;
+PFNGLCOMPILESHADERARBPROC pglCompileShaderARB=_Lazy_glCompileShaderARB;
+PFNGLCREATEPROGRAMOBJECTARBPROC pglCreateProgramObjectARB=_Lazy_glCreateProgramObjectARB;
+PFNGLATTACHOBJECTARBPROC pglAttachObjectARB=_Lazy_glAttachObjectARB;
+PFNGLLINKPROGRAMARBPROC pglLinkProgramARB=_Lazy_glLinkProgramARB;
+PFNGLUSEPROGRAMOBJECTARBPROC pglUseProgramObjectARB=_Lazy_glUseProgramObjectARB;
+PFNGLVALIDATEPROGRAMARBPROC pglValidateProgramARB=_Lazy_glValidateProgramARB;
+PFNGLUNIFORM1FARBPROC pglUniform1fARB=_Lazy_glUniform1fARB;
+PFNGLUNIFORM2FARBPROC pglUniform2fARB=_Lazy_glUniform2fARB;
+PFNGLUNIFORM3FARBPROC pglUniform3fARB=_Lazy_glUniform3fARB;
+PFNGLUNIFORM4FARBPROC pglUniform4fARB=_Lazy_glUniform4fARB;
+PFNGLUNIFORM1IARBPROC pglUniform1iARB=_Lazy_glUniform1iARB;
+PFNGLUNIFORM2IARBPROC pglUniform2iARB=_Lazy_glUniform2iARB;
+PFNGLUNIFORM3IARBPROC pglUniform3iARB=_Lazy_glUniform3iARB;
+PFNGLUNIFORM4IARBPROC pglUniform4iARB=_Lazy_glUniform4iARB;
+PFNGLUNIFORM1FVARBPROC pglUniform1fvARB=_Lazy_glUniform1fvARB;
+PFNGLUNIFORM2FVARBPROC pglUniform2fvARB=_Lazy_glUniform2fvARB;
+PFNGLUNIFORM3FVARBPROC pglUniform3fvARB=_Lazy_glUniform3fvARB;
+PFNGLUNIFORM4FVARBPROC pglUniform4fvARB=_Lazy_glUniform4fvARB;
+PFNGLUNIFORM1IVARBPROC pglUniform1ivARB=_Lazy_glUniform1ivARB;
+PFNGLUNIFORM2IVARBPROC pglUniform2ivARB=_Lazy_glUniform2ivARB;
+PFNGLUNIFORM3IVARBPROC pglUniform3ivARB=_Lazy_glUniform3ivARB;
+PFNGLUNIFORM4IVARBPROC pglUniform4ivARB=_Lazy_glUniform4ivARB;
+PFNGLUNIFORMMATRIX2FVARBPROC pglUniformMatrix2fvARB=_Lazy_glUniformMatrix2fvARB;
+PFNGLUNIFORMMATRIX3FVARBPROC pglUniformMatrix3fvARB=_Lazy_glUniformMatrix3fvARB;
+PFNGLUNIFORMMATRIX4FVARBPROC pglUniformMatrix4fvARB=_Lazy_glUniformMatrix4fvARB;
+PFNGLGETOBJECTPARAMETERFVARBPROC pglGetObjectParameterfvARB=_Lazy_glGetObjectParameterfvARB;
+PFNGLGETOBJECTPARAMETERIVARBPROC pglGetObjectParameterivARB=_Lazy_glGetObjectParameterivARB;
+PFNGLGETINFOLOGARBPROC pglGetInfoLogARB=_Lazy_glGetInfoLogARB;
+PFNGLGETATTACHEDOBJECTSARBPROC pglGetAttachedObjectsARB=_Lazy_glGetAttachedObjectsARB;
+PFNGLGETUNIFORMLOCATIONARBPROC pglGetUniformLocationARB=_Lazy_glGetUniformLocationARB;
+PFNGLGETACTIVEUNIFORMARBPROC pglGetActiveUniformARB=_Lazy_glGetActiveUniformARB;
+PFNGLGETUNIFORMFVARBPROC pglGetUniformfvARB=_Lazy_glGetUniformfvARB;
+PFNGLGETUNIFORMIVARBPROC pglGetUniformivARB=_Lazy_glGetUniformivARB;
+PFNGLGETSHADERSOURCEARBPROC pglGetShaderSourceARB=_Lazy_glGetShaderSourceARB;
+#endif 
+
+/* GL_ARB_vertex_shader */
+
+#ifdef __GLEE_GL_ARB_vertex_shader
+void __stdcall _Lazy_glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB * name)  {if (GLeeInit()) glBindAttribLocationARB(programObj, index, name);}
+void __stdcall _Lazy_glGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)  {if (GLeeInit()) glGetActiveAttribARB(programObj, index, maxLength, length, size, type, name);}
+GLint __stdcall _Lazy_glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB * name)  {if (GLeeInit()) return glGetAttribLocationARB(programObj, name); return (GLint)0;}
+PFNGLBINDATTRIBLOCATIONARBPROC pglBindAttribLocationARB=_Lazy_glBindAttribLocationARB;
+PFNGLGETACTIVEATTRIBARBPROC pglGetActiveAttribARB=_Lazy_glGetActiveAttribARB;
+PFNGLGETATTRIBLOCATIONARBPROC pglGetAttribLocationARB=_Lazy_glGetAttribLocationARB;
+#endif 
+
+/* GL_ARB_fragment_shader */
+
+#ifdef __GLEE_GL_ARB_fragment_shader
+#endif 
+
+/* GL_ARB_shading_language_100 */
+
+#ifdef __GLEE_GL_ARB_shading_language_100
+#endif 
+
+/* GL_ARB_texture_non_power_of_two */
+
+#ifdef __GLEE_GL_ARB_texture_non_power_of_two
+#endif 
+
+/* GL_ARB_point_sprite */
+
+#ifdef __GLEE_GL_ARB_point_sprite
+#endif 
+
+/* GL_ARB_fragment_program_shadow */
+
+#ifdef __GLEE_GL_ARB_fragment_program_shadow
+#endif 
+
+/* GL_ARB_draw_buffers */
+
+#ifdef __GLEE_GL_ARB_draw_buffers
+void __stdcall _Lazy_glDrawBuffersARB(GLsizei n, const GLenum * bufs)                     {if (GLeeInit()) glDrawBuffersARB(n, bufs);}
+PFNGLDRAWBUFFERSARBPROC pglDrawBuffersARB=_Lazy_glDrawBuffersARB;
+#endif 
+
+/* GL_ARB_texture_rectangle */
+
+#ifdef __GLEE_GL_ARB_texture_rectangle
+#endif 
+
+/* GL_ARB_color_buffer_float */
+
+#ifdef __GLEE_GL_ARB_color_buffer_float
+void __stdcall _Lazy_glClampColorARB(GLenum target, GLenum clamp)                         {if (GLeeInit()) glClampColorARB(target, clamp);}
+PFNGLCLAMPCOLORARBPROC pglClampColorARB=_Lazy_glClampColorARB;
+#endif 
+
+/* GL_ARB_half_float_pixel */
+
+#ifdef __GLEE_GL_ARB_half_float_pixel
+#endif 
+
+/* GL_ARB_texture_float */
+
+#ifdef __GLEE_GL_ARB_texture_float
+#endif 
+
+/* GL_ARB_pixel_buffer_object */
+
+#ifdef __GLEE_GL_ARB_pixel_buffer_object
+#endif 
+
+/* GL_EXT_abgr */
+
+#ifdef __GLEE_GL_EXT_abgr
+#endif 
+
+/* GL_EXT_blend_color */
+
+#ifdef __GLEE_GL_EXT_blend_color
+void __stdcall _Lazy_glBlendColorEXT(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)  {if (GLeeInit()) glBlendColorEXT(red, green, blue, alpha);}
+PFNGLBLENDCOLOREXTPROC pglBlendColorEXT=_Lazy_glBlendColorEXT;
+#endif 
+
+/* GL_EXT_polygon_offset */
+
+#ifdef __GLEE_GL_EXT_polygon_offset
+void __stdcall _Lazy_glPolygonOffsetEXT(GLfloat factor, GLfloat bias)                     {if (GLeeInit()) glPolygonOffsetEXT(factor, bias);}
+PFNGLPOLYGONOFFSETEXTPROC pglPolygonOffsetEXT=_Lazy_glPolygonOffsetEXT;
+#endif 
+
+/* GL_EXT_texture */
+
+#ifdef __GLEE_GL_EXT_texture
+#endif 
+
+/* GL_EXT_texture3D */
+
+#ifdef __GLEE_GL_EXT_texture3D
+void __stdcall _Lazy_glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels);}
+void __stdcall _Lazy_glTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);}
+PFNGLTEXIMAGE3DEXTPROC pglTexImage3DEXT=_Lazy_glTexImage3DEXT;
+PFNGLTEXSUBIMAGE3DEXTPROC pglTexSubImage3DEXT=_Lazy_glTexSubImage3DEXT;
+#endif 
+
+/* GL_SGIS_texture_filter4 */
+
+#ifdef __GLEE_GL_SGIS_texture_filter4
+void __stdcall _Lazy_glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat * weights)  {if (GLeeInit()) glGetTexFilterFuncSGIS(target, filter, weights);}
+void __stdcall _Lazy_glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights)  {if (GLeeInit()) glTexFilterFuncSGIS(target, filter, n, weights);}
+PFNGLGETTEXFILTERFUNCSGISPROC pglGetTexFilterFuncSGIS=_Lazy_glGetTexFilterFuncSGIS;
+PFNGLTEXFILTERFUNCSGISPROC pglTexFilterFuncSGIS=_Lazy_glTexFilterFuncSGIS;
+#endif 
+
+/* GL_EXT_subtexture */
+
+#ifdef __GLEE_GL_EXT_subtexture
+void __stdcall _Lazy_glTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage1DEXT(target, level, xoffset, width, format, type, pixels);}
+void __stdcall _Lazy_glTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels);}
+PFNGLTEXSUBIMAGE1DEXTPROC pglTexSubImage1DEXT=_Lazy_glTexSubImage1DEXT;
+PFNGLTEXSUBIMAGE2DEXTPROC pglTexSubImage2DEXT=_Lazy_glTexSubImage2DEXT;
+#endif 
+
+/* GL_EXT_copy_texture */
+
+#ifdef __GLEE_GL_EXT_copy_texture
+void __stdcall _Lazy_glCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)  {if (GLeeInit()) glCopyTexImage1DEXT(target, level, internalformat, x, y, width, border);}
+void __stdcall _Lazy_glCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)  {if (GLeeInit()) glCopyTexImage2DEXT(target, level, internalformat, x, y, width, height, border);}
+void __stdcall _Lazy_glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyTexSubImage1DEXT(target, level, xoffset, x, y, width);}
+void __stdcall _Lazy_glCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyTexSubImage2DEXT(target, level, xoffset, yoffset, x, y, width, height);}
+void __stdcall _Lazy_glCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, x, y, width, height);}
+PFNGLCOPYTEXIMAGE1DEXTPROC pglCopyTexImage1DEXT=_Lazy_glCopyTexImage1DEXT;
+PFNGLCOPYTEXIMAGE2DEXTPROC pglCopyTexImage2DEXT=_Lazy_glCopyTexImage2DEXT;
+PFNGLCOPYTEXSUBIMAGE1DEXTPROC pglCopyTexSubImage1DEXT=_Lazy_glCopyTexSubImage1DEXT;
+PFNGLCOPYTEXSUBIMAGE2DEXTPROC pglCopyTexSubImage2DEXT=_Lazy_glCopyTexSubImage2DEXT;
+PFNGLCOPYTEXSUBIMAGE3DEXTPROC pglCopyTexSubImage3DEXT=_Lazy_glCopyTexSubImage3DEXT;
+#endif 
+
+/* GL_EXT_histogram */
+
+#ifdef __GLEE_GL_EXT_histogram
+void __stdcall _Lazy_glGetHistogramEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)  {if (GLeeInit()) glGetHistogramEXT(target, reset, format, type, values);}
+void __stdcall _Lazy_glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetHistogramParameterfvEXT(target, pname, params);}
+void __stdcall _Lazy_glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetHistogramParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetMinmaxEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)  {if (GLeeInit()) glGetMinmaxEXT(target, reset, format, type, values);}
+void __stdcall _Lazy_glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetMinmaxParameterfvEXT(target, pname, params);}
+void __stdcall _Lazy_glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetMinmaxParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)  {if (GLeeInit()) glHistogramEXT(target, width, internalformat, sink);}
+void __stdcall _Lazy_glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean sink)    {if (GLeeInit()) glMinmaxEXT(target, internalformat, sink);}
+void __stdcall _Lazy_glResetHistogramEXT(GLenum target)                                   {if (GLeeInit()) glResetHistogramEXT(target);}
+void __stdcall _Lazy_glResetMinmaxEXT(GLenum target)                                      {if (GLeeInit()) glResetMinmaxEXT(target);}
+PFNGLGETHISTOGRAMEXTPROC pglGetHistogramEXT=_Lazy_glGetHistogramEXT;
+PFNGLGETHISTOGRAMPARAMETERFVEXTPROC pglGetHistogramParameterfvEXT=_Lazy_glGetHistogramParameterfvEXT;
+PFNGLGETHISTOGRAMPARAMETERIVEXTPROC pglGetHistogramParameterivEXT=_Lazy_glGetHistogramParameterivEXT;
+PFNGLGETMINMAXEXTPROC pglGetMinmaxEXT=_Lazy_glGetMinmaxEXT;
+PFNGLGETMINMAXPARAMETERFVEXTPROC pglGetMinmaxParameterfvEXT=_Lazy_glGetMinmaxParameterfvEXT;
+PFNGLGETMINMAXPARAMETERIVEXTPROC pglGetMinmaxParameterivEXT=_Lazy_glGetMinmaxParameterivEXT;
+PFNGLHISTOGRAMEXTPROC pglHistogramEXT=_Lazy_glHistogramEXT;
+PFNGLMINMAXEXTPROC pglMinmaxEXT=_Lazy_glMinmaxEXT;
+PFNGLRESETHISTOGRAMEXTPROC pglResetHistogramEXT=_Lazy_glResetHistogramEXT;
+PFNGLRESETMINMAXEXTPROC pglResetMinmaxEXT=_Lazy_glResetMinmaxEXT;
+#endif 
+
+/* GL_EXT_convolution */
+
+#ifdef __GLEE_GL_EXT_convolution
+void __stdcall _Lazy_glConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)  {if (GLeeInit()) glConvolutionFilter1DEXT(target, internalformat, width, format, type, image);}
+void __stdcall _Lazy_glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)  {if (GLeeInit()) glConvolutionFilter2DEXT(target, internalformat, width, height, format, type, image);}
+void __stdcall _Lazy_glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params)  {if (GLeeInit()) glConvolutionParameterfEXT(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glConvolutionParameterfvEXT(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params)  {if (GLeeInit()) glConvolutionParameteriEXT(target, pname, params);}
+void __stdcall _Lazy_glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glConvolutionParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyConvolutionFilter1DEXT(target, internalformat, x, y, width);}
+void __stdcall _Lazy_glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)  {if (GLeeInit()) glCopyConvolutionFilter2DEXT(target, internalformat, x, y, width, height);}
+void __stdcall _Lazy_glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid * image)  {if (GLeeInit()) glGetConvolutionFilterEXT(target, format, type, image);}
+void __stdcall _Lazy_glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetConvolutionParameterfvEXT(target, pname, params);}
+void __stdcall _Lazy_glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetConvolutionParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)  {if (GLeeInit()) glGetSeparableFilterEXT(target, format, type, row, column, span);}
+void __stdcall _Lazy_glSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)  {if (GLeeInit()) glSeparableFilter2DEXT(target, internalformat, width, height, format, type, row, column);}
+PFNGLCONVOLUTIONFILTER1DEXTPROC pglConvolutionFilter1DEXT=_Lazy_glConvolutionFilter1DEXT;
+PFNGLCONVOLUTIONFILTER2DEXTPROC pglConvolutionFilter2DEXT=_Lazy_glConvolutionFilter2DEXT;
+PFNGLCONVOLUTIONPARAMETERFEXTPROC pglConvolutionParameterfEXT=_Lazy_glConvolutionParameterfEXT;
+PFNGLCONVOLUTIONPARAMETERFVEXTPROC pglConvolutionParameterfvEXT=_Lazy_glConvolutionParameterfvEXT;
+PFNGLCONVOLUTIONPARAMETERIEXTPROC pglConvolutionParameteriEXT=_Lazy_glConvolutionParameteriEXT;
+PFNGLCONVOLUTIONPARAMETERIVEXTPROC pglConvolutionParameterivEXT=_Lazy_glConvolutionParameterivEXT;
+PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC pglCopyConvolutionFilter1DEXT=_Lazy_glCopyConvolutionFilter1DEXT;
+PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC pglCopyConvolutionFilter2DEXT=_Lazy_glCopyConvolutionFilter2DEXT;
+PFNGLGETCONVOLUTIONFILTEREXTPROC pglGetConvolutionFilterEXT=_Lazy_glGetConvolutionFilterEXT;
+PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC pglGetConvolutionParameterfvEXT=_Lazy_glGetConvolutionParameterfvEXT;
+PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC pglGetConvolutionParameterivEXT=_Lazy_glGetConvolutionParameterivEXT;
+PFNGLGETSEPARABLEFILTEREXTPROC pglGetSeparableFilterEXT=_Lazy_glGetSeparableFilterEXT;
+PFNGLSEPARABLEFILTER2DEXTPROC pglSeparableFilter2DEXT=_Lazy_glSeparableFilter2DEXT;
+#endif 
+
+/* GL_SGI_color_matrix */
+
+#ifdef __GLEE_GL_SGI_color_matrix
+#endif 
+
+/* GL_SGI_color_table */
+
+#ifdef __GLEE_GL_SGI_color_table
+void __stdcall _Lazy_glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)  {if (GLeeInit()) glColorTableSGI(target, internalformat, width, format, type, table);}
+void __stdcall _Lazy_glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glColorTableParameterfvSGI(target, pname, params);}
+void __stdcall _Lazy_glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glColorTableParameterivSGI(target, pname, params);}
+void __stdcall _Lazy_glCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyColorTableSGI(target, internalformat, x, y, width);}
+void __stdcall _Lazy_glGetColorTableSGI(GLenum target, GLenum format, GLenum type, GLvoid * table)  {if (GLeeInit()) glGetColorTableSGI(target, format, type, table);}
+void __stdcall _Lazy_glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetColorTableParameterfvSGI(target, pname, params);}
+void __stdcall _Lazy_glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetColorTableParameterivSGI(target, pname, params);}
+PFNGLCOLORTABLESGIPROC pglColorTableSGI=_Lazy_glColorTableSGI;
+PFNGLCOLORTABLEPARAMETERFVSGIPROC pglColorTableParameterfvSGI=_Lazy_glColorTableParameterfvSGI;
+PFNGLCOLORTABLEPARAMETERIVSGIPROC pglColorTableParameterivSGI=_Lazy_glColorTableParameterivSGI;
+PFNGLCOPYCOLORTABLESGIPROC pglCopyColorTableSGI=_Lazy_glCopyColorTableSGI;
+PFNGLGETCOLORTABLESGIPROC pglGetColorTableSGI=_Lazy_glGetColorTableSGI;
+PFNGLGETCOLORTABLEPARAMETERFVSGIPROC pglGetColorTableParameterfvSGI=_Lazy_glGetColorTableParameterfvSGI;
+PFNGLGETCOLORTABLEPARAMETERIVSGIPROC pglGetColorTableParameterivSGI=_Lazy_glGetColorTableParameterivSGI;
+#endif 
+
+/* GL_SGIS_pixel_texture */
+
+#ifdef __GLEE_GL_SGIS_pixel_texture
+void __stdcall _Lazy_glPixelTexGenParameteriSGIS(GLenum pname, GLint param)               {if (GLeeInit()) glPixelTexGenParameteriSGIS(pname, param);}
+void __stdcall _Lazy_glPixelTexGenParameterivSGIS(GLenum pname, const GLint * params)     {if (GLeeInit()) glPixelTexGenParameterivSGIS(pname, params);}
+void __stdcall _Lazy_glPixelTexGenParameterfSGIS(GLenum pname, GLfloat param)             {if (GLeeInit()) glPixelTexGenParameterfSGIS(pname, param);}
+void __stdcall _Lazy_glPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat * params)   {if (GLeeInit()) glPixelTexGenParameterfvSGIS(pname, params);}
+void __stdcall _Lazy_glGetPixelTexGenParameterivSGIS(GLenum pname, GLint * params)        {if (GLeeInit()) glGetPixelTexGenParameterivSGIS(pname, params);}
+void __stdcall _Lazy_glGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat * params)      {if (GLeeInit()) glGetPixelTexGenParameterfvSGIS(pname, params);}
+PFNGLPIXELTEXGENPARAMETERISGISPROC pglPixelTexGenParameteriSGIS=_Lazy_glPixelTexGenParameteriSGIS;
+PFNGLPIXELTEXGENPARAMETERIVSGISPROC pglPixelTexGenParameterivSGIS=_Lazy_glPixelTexGenParameterivSGIS;
+PFNGLPIXELTEXGENPARAMETERFSGISPROC pglPixelTexGenParameterfSGIS=_Lazy_glPixelTexGenParameterfSGIS;
+PFNGLPIXELTEXGENPARAMETERFVSGISPROC pglPixelTexGenParameterfvSGIS=_Lazy_glPixelTexGenParameterfvSGIS;
+PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC pglGetPixelTexGenParameterivSGIS=_Lazy_glGetPixelTexGenParameterivSGIS;
+PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC pglGetPixelTexGenParameterfvSGIS=_Lazy_glGetPixelTexGenParameterfvSGIS;
+#endif 
+
+/* GL_SGIX_pixel_texture */
+
+#ifdef __GLEE_GL_SGIX_pixel_texture
+void __stdcall _Lazy_glPixelTexGenSGIX(GLenum mode)                                       {if (GLeeInit()) glPixelTexGenSGIX(mode);}
+PFNGLPIXELTEXGENSGIXPROC pglPixelTexGenSGIX=_Lazy_glPixelTexGenSGIX;
+#endif 
+
+/* GL_SGIS_texture4D */
+
+#ifdef __GLEE_GL_SGIS_texture4D
+void __stdcall _Lazy_glTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexImage4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels);}
+void __stdcall _Lazy_glTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid * pixels)  {if (GLeeInit()) glTexSubImage4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels);}
+PFNGLTEXIMAGE4DSGISPROC pglTexImage4DSGIS=_Lazy_glTexImage4DSGIS;
+PFNGLTEXSUBIMAGE4DSGISPROC pglTexSubImage4DSGIS=_Lazy_glTexSubImage4DSGIS;
+#endif 
+
+/* GL_SGI_texture_color_table */
+
+#ifdef __GLEE_GL_SGI_texture_color_table
+#endif 
+
+/* GL_EXT_cmyka */
+
+#ifdef __GLEE_GL_EXT_cmyka
+#endif 
+
+/* GL_EXT_texture_object */
+
+#ifdef __GLEE_GL_EXT_texture_object
+GLboolean __stdcall _Lazy_glAreTexturesResidentEXT(GLsizei n, const GLuint * textures, GLboolean * residences)  {if (GLeeInit()) return glAreTexturesResidentEXT(n, textures, residences); return (GLboolean)0;}
+void __stdcall _Lazy_glBindTextureEXT(GLenum target, GLuint texture)                      {if (GLeeInit()) glBindTextureEXT(target, texture);}
+void __stdcall _Lazy_glDeleteTexturesEXT(GLsizei n, const GLuint * textures)              {if (GLeeInit()) glDeleteTexturesEXT(n, textures);}
+void __stdcall _Lazy_glGenTexturesEXT(GLsizei n, GLuint * textures)                       {if (GLeeInit()) glGenTexturesEXT(n, textures);}
+GLboolean __stdcall _Lazy_glIsTextureEXT(GLuint texture)                                  {if (GLeeInit()) return glIsTextureEXT(texture); return (GLboolean)0;}
+void __stdcall _Lazy_glPrioritizeTexturesEXT(GLsizei n, const GLuint * textures, const GLclampf * priorities)  {if (GLeeInit()) glPrioritizeTexturesEXT(n, textures, priorities);}
+PFNGLARETEXTURESRESIDENTEXTPROC pglAreTexturesResidentEXT=_Lazy_glAreTexturesResidentEXT;
+PFNGLBINDTEXTUREEXTPROC pglBindTextureEXT=_Lazy_glBindTextureEXT;
+PFNGLDELETETEXTURESEXTPROC pglDeleteTexturesEXT=_Lazy_glDeleteTexturesEXT;
+PFNGLGENTEXTURESEXTPROC pglGenTexturesEXT=_Lazy_glGenTexturesEXT;
+PFNGLISTEXTUREEXTPROC pglIsTextureEXT=_Lazy_glIsTextureEXT;
+PFNGLPRIORITIZETEXTURESEXTPROC pglPrioritizeTexturesEXT=_Lazy_glPrioritizeTexturesEXT;
+#endif 
+
+/* GL_SGIS_detail_texture */
+
+#ifdef __GLEE_GL_SGIS_detail_texture
+void __stdcall _Lazy_glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat * points)  {if (GLeeInit()) glDetailTexFuncSGIS(target, n, points);}
+void __stdcall _Lazy_glGetDetailTexFuncSGIS(GLenum target, GLfloat * points)              {if (GLeeInit()) glGetDetailTexFuncSGIS(target, points);}
+PFNGLDETAILTEXFUNCSGISPROC pglDetailTexFuncSGIS=_Lazy_glDetailTexFuncSGIS;
+PFNGLGETDETAILTEXFUNCSGISPROC pglGetDetailTexFuncSGIS=_Lazy_glGetDetailTexFuncSGIS;
+#endif 
+
+/* GL_SGIS_sharpen_texture */
+
+#ifdef __GLEE_GL_SGIS_sharpen_texture
+void __stdcall _Lazy_glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat * points)  {if (GLeeInit()) glSharpenTexFuncSGIS(target, n, points);}
+void __stdcall _Lazy_glGetSharpenTexFuncSGIS(GLenum target, GLfloat * points)             {if (GLeeInit()) glGetSharpenTexFuncSGIS(target, points);}
+PFNGLSHARPENTEXFUNCSGISPROC pglSharpenTexFuncSGIS=_Lazy_glSharpenTexFuncSGIS;
+PFNGLGETSHARPENTEXFUNCSGISPROC pglGetSharpenTexFuncSGIS=_Lazy_glGetSharpenTexFuncSGIS;
+#endif 
+
+/* GL_EXT_packed_pixels */
+
+#ifdef __GLEE_GL_EXT_packed_pixels
+#endif 
+
+/* GL_SGIS_texture_lod */
+
+#ifdef __GLEE_GL_SGIS_texture_lod
+#endif 
+
+/* GL_SGIS_multisample */
+
+#ifdef __GLEE_GL_SGIS_multisample
+void __stdcall _Lazy_glSampleMaskSGIS(GLclampf value, GLboolean invert)                   {if (GLeeInit()) glSampleMaskSGIS(value, invert);}
+void __stdcall _Lazy_glSamplePatternSGIS(GLenum pattern)                                  {if (GLeeInit()) glSamplePatternSGIS(pattern);}
+PFNGLSAMPLEMASKSGISPROC pglSampleMaskSGIS=_Lazy_glSampleMaskSGIS;
+PFNGLSAMPLEPATTERNSGISPROC pglSamplePatternSGIS=_Lazy_glSamplePatternSGIS;
+#endif 
+
+/* GL_EXT_rescale_normal */
+
+#ifdef __GLEE_GL_EXT_rescale_normal
+#endif 
+
+/* GL_EXT_vertex_array */
+
+#ifdef __GLEE_GL_EXT_vertex_array
+void __stdcall _Lazy_glArrayElementEXT(GLint i)                                           {if (GLeeInit()) glArrayElementEXT(i);}
+void __stdcall _Lazy_glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glColorPointerEXT(size, type, stride, count, pointer);}
+void __stdcall _Lazy_glDrawArraysEXT(GLenum mode, GLint first, GLsizei count)             {if (GLeeInit()) glDrawArraysEXT(mode, first, count);}
+void __stdcall _Lazy_glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean * pointer)  {if (GLeeInit()) glEdgeFlagPointerEXT(stride, count, pointer);}
+void __stdcall _Lazy_glGetPointervEXT(GLenum pname, GLvoid* * params)                     {if (GLeeInit()) glGetPointervEXT(pname, params);}
+void __stdcall _Lazy_glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glIndexPointerEXT(type, stride, count, pointer);}
+void __stdcall _Lazy_glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glNormalPointerEXT(type, stride, count, pointer);}
+void __stdcall _Lazy_glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glTexCoordPointerEXT(size, type, stride, count, pointer);}
+void __stdcall _Lazy_glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)  {if (GLeeInit()) glVertexPointerEXT(size, type, stride, count, pointer);}
+PFNGLARRAYELEMENTEXTPROC pglArrayElementEXT=_Lazy_glArrayElementEXT;
+PFNGLCOLORPOINTEREXTPROC pglColorPointerEXT=_Lazy_glColorPointerEXT;
+PFNGLDRAWARRAYSEXTPROC pglDrawArraysEXT=_Lazy_glDrawArraysEXT;
+PFNGLEDGEFLAGPOINTEREXTPROC pglEdgeFlagPointerEXT=_Lazy_glEdgeFlagPointerEXT;
+PFNGLGETPOINTERVEXTPROC pglGetPointervEXT=_Lazy_glGetPointervEXT;
+PFNGLINDEXPOINTEREXTPROC pglIndexPointerEXT=_Lazy_glIndexPointerEXT;
+PFNGLNORMALPOINTEREXTPROC pglNormalPointerEXT=_Lazy_glNormalPointerEXT;
+PFNGLTEXCOORDPOINTEREXTPROC pglTexCoordPointerEXT=_Lazy_glTexCoordPointerEXT;
+PFNGLVERTEXPOINTEREXTPROC pglVertexPointerEXT=_Lazy_glVertexPointerEXT;
+#endif 
+
+/* GL_EXT_misc_attribute */
+
+#ifdef __GLEE_GL_EXT_misc_attribute
+#endif 
+
+/* GL_SGIS_generate_mipmap */
+
+#ifdef __GLEE_GL_SGIS_generate_mipmap
+#endif 
+
+/* GL_SGIX_clipmap */
+
+#ifdef __GLEE_GL_SGIX_clipmap
+#endif 
+
+/* GL_SGIX_shadow */
+
+#ifdef __GLEE_GL_SGIX_shadow
+#endif 
+
+/* GL_SGIS_texture_edge_clamp */
+
+#ifdef __GLEE_GL_SGIS_texture_edge_clamp
+#endif 
+
+/* GL_SGIS_texture_border_clamp */
+
+#ifdef __GLEE_GL_SGIS_texture_border_clamp
+#endif 
+
+/* GL_EXT_blend_minmax */
+
+#ifdef __GLEE_GL_EXT_blend_minmax
+void __stdcall _Lazy_glBlendEquationEXT(GLenum mode)                                      {if (GLeeInit()) glBlendEquationEXT(mode);}
+PFNGLBLENDEQUATIONEXTPROC pglBlendEquationEXT=_Lazy_glBlendEquationEXT;
+#endif 
+
+/* GL_EXT_blend_subtract */
+
+#ifdef __GLEE_GL_EXT_blend_subtract
+#endif 
+
+/* GL_EXT_blend_logic_op */
+
+#ifdef __GLEE_GL_EXT_blend_logic_op
+#endif 
+
+/* GL_SGIX_interlace */
+
+#ifdef __GLEE_GL_SGIX_interlace
+#endif 
+
+/* GL_SGIX_pixel_tiles */
+
+#ifdef __GLEE_GL_SGIX_pixel_tiles
+#endif 
+
+/* GL_SGIS_texture_select */
+
+#ifdef __GLEE_GL_SGIS_texture_select
+#endif 
+
+/* GL_SGIX_sprite */
+
+#ifdef __GLEE_GL_SGIX_sprite
+void __stdcall _Lazy_glSpriteParameterfSGIX(GLenum pname, GLfloat param)                  {if (GLeeInit()) glSpriteParameterfSGIX(pname, param);}
+void __stdcall _Lazy_glSpriteParameterfvSGIX(GLenum pname, const GLfloat * params)        {if (GLeeInit()) glSpriteParameterfvSGIX(pname, params);}
+void __stdcall _Lazy_glSpriteParameteriSGIX(GLenum pname, GLint param)                    {if (GLeeInit()) glSpriteParameteriSGIX(pname, param);}
+void __stdcall _Lazy_glSpriteParameterivSGIX(GLenum pname, const GLint * params)          {if (GLeeInit()) glSpriteParameterivSGIX(pname, params);}
+PFNGLSPRITEPARAMETERFSGIXPROC pglSpriteParameterfSGIX=_Lazy_glSpriteParameterfSGIX;
+PFNGLSPRITEPARAMETERFVSGIXPROC pglSpriteParameterfvSGIX=_Lazy_glSpriteParameterfvSGIX;
+PFNGLSPRITEPARAMETERISGIXPROC pglSpriteParameteriSGIX=_Lazy_glSpriteParameteriSGIX;
+PFNGLSPRITEPARAMETERIVSGIXPROC pglSpriteParameterivSGIX=_Lazy_glSpriteParameterivSGIX;
+#endif 
+
+/* GL_SGIX_texture_multi_buffer */
+
+#ifdef __GLEE_GL_SGIX_texture_multi_buffer
+#endif 
+
+/* GL_EXT_point_parameters */
+
+#ifdef __GLEE_GL_EXT_point_parameters
+void __stdcall _Lazy_glPointParameterfEXT(GLenum pname, GLfloat param)                    {if (GLeeInit()) glPointParameterfEXT(pname, param);}
+void __stdcall _Lazy_glPointParameterfvEXT(GLenum pname, const GLfloat * params)          {if (GLeeInit()) glPointParameterfvEXT(pname, params);}
+PFNGLPOINTPARAMETERFEXTPROC pglPointParameterfEXT=_Lazy_glPointParameterfEXT;
+PFNGLPOINTPARAMETERFVEXTPROC pglPointParameterfvEXT=_Lazy_glPointParameterfvEXT;
+#endif 
+
+/* GL_SGIS_point_parameters */
+
+#ifdef __GLEE_GL_SGIS_point_parameters
+void __stdcall _Lazy_glPointParameterfSGIS(GLenum pname, GLfloat param)                   {if (GLeeInit()) glPointParameterfSGIS(pname, param);}
+void __stdcall _Lazy_glPointParameterfvSGIS(GLenum pname, const GLfloat * params)         {if (GLeeInit()) glPointParameterfvSGIS(pname, params);}
+PFNGLPOINTPARAMETERFSGISPROC pglPointParameterfSGIS=_Lazy_glPointParameterfSGIS;
+PFNGLPOINTPARAMETERFVSGISPROC pglPointParameterfvSGIS=_Lazy_glPointParameterfvSGIS;
+#endif 
+
+/* GL_SGIX_instruments */
+
+#ifdef __GLEE_GL_SGIX_instruments
+GLint __stdcall _Lazy_glGetInstrumentsSGIX(void)                                          {if (GLeeInit()) return glGetInstrumentsSGIX(); return (GLint)0;}
+void __stdcall _Lazy_glInstrumentsBufferSGIX(GLsizei size, GLint * buffer)                {if (GLeeInit()) glInstrumentsBufferSGIX(size, buffer);}
+GLint __stdcall _Lazy_glPollInstrumentsSGIX(GLint * marker_p)                             {if (GLeeInit()) return glPollInstrumentsSGIX(marker_p); return (GLint)0;}
+void __stdcall _Lazy_glReadInstrumentsSGIX(GLint marker)                                  {if (GLeeInit()) glReadInstrumentsSGIX(marker);}
+void __stdcall _Lazy_glStartInstrumentsSGIX(void)                                         {if (GLeeInit()) glStartInstrumentsSGIX();}
+void __stdcall _Lazy_glStopInstrumentsSGIX(GLint marker)                                  {if (GLeeInit()) glStopInstrumentsSGIX(marker);}
+PFNGLGETINSTRUMENTSSGIXPROC pglGetInstrumentsSGIX=_Lazy_glGetInstrumentsSGIX;
+PFNGLINSTRUMENTSBUFFERSGIXPROC pglInstrumentsBufferSGIX=_Lazy_glInstrumentsBufferSGIX;
+PFNGLPOLLINSTRUMENTSSGIXPROC pglPollInstrumentsSGIX=_Lazy_glPollInstrumentsSGIX;
+PFNGLREADINSTRUMENTSSGIXPROC pglReadInstrumentsSGIX=_Lazy_glReadInstrumentsSGIX;
+PFNGLSTARTINSTRUMENTSSGIXPROC pglStartInstrumentsSGIX=_Lazy_glStartInstrumentsSGIX;
+PFNGLSTOPINSTRUMENTSSGIXPROC pglStopInstrumentsSGIX=_Lazy_glStopInstrumentsSGIX;
+#endif 
+
+/* GL_SGIX_texture_scale_bias */
+
+#ifdef __GLEE_GL_SGIX_texture_scale_bias
+#endif 
+
+/* GL_SGIX_framezoom */
+
+#ifdef __GLEE_GL_SGIX_framezoom
+void __stdcall _Lazy_glFrameZoomSGIX(GLint factor)                                        {if (GLeeInit()) glFrameZoomSGIX(factor);}
+PFNGLFRAMEZOOMSGIXPROC pglFrameZoomSGIX=_Lazy_glFrameZoomSGIX;
+#endif 
+
+/* GL_SGIX_tag_sample_buffer */
+
+#ifdef __GLEE_GL_SGIX_tag_sample_buffer
+void __stdcall _Lazy_glTagSampleBufferSGIX(void)                                          {if (GLeeInit()) glTagSampleBufferSGIX();}
+PFNGLTAGSAMPLEBUFFERSGIXPROC pglTagSampleBufferSGIX=_Lazy_glTagSampleBufferSGIX;
+#endif 
+
+/* GL_FfdMaskSGIX */
+
+#ifdef __GLEE_GL_FfdMaskSGIX
+#endif 
+
+/* GL_SGIX_polynomial_ffd */
+
+#ifdef __GLEE_GL_SGIX_polynomial_ffd
+void __stdcall _Lazy_glDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble * points)  {if (GLeeInit()) glDeformationMap3dSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points);}
+void __stdcall _Lazy_glDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat * points)  {if (GLeeInit()) glDeformationMap3fSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points);}
+void __stdcall _Lazy_glDeformSGIX(GLbitfield mask)                                        {if (GLeeInit()) glDeformSGIX(mask);}
+void __stdcall _Lazy_glLoadIdentityDeformationMapSGIX(GLbitfield mask)                    {if (GLeeInit()) glLoadIdentityDeformationMapSGIX(mask);}
+PFNGLDEFORMATIONMAP3DSGIXPROC pglDeformationMap3dSGIX=_Lazy_glDeformationMap3dSGIX;
+PFNGLDEFORMATIONMAP3FSGIXPROC pglDeformationMap3fSGIX=_Lazy_glDeformationMap3fSGIX;
+PFNGLDEFORMSGIXPROC pglDeformSGIX=_Lazy_glDeformSGIX;
+PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC pglLoadIdentityDeformationMapSGIX=_Lazy_glLoadIdentityDeformationMapSGIX;
+#endif 
+
+/* GL_SGIX_reference_plane */
+
+#ifdef __GLEE_GL_SGIX_reference_plane
+void __stdcall _Lazy_glReferencePlaneSGIX(const GLdouble * equation)                      {if (GLeeInit()) glReferencePlaneSGIX(equation);}
+PFNGLREFERENCEPLANESGIXPROC pglReferencePlaneSGIX=_Lazy_glReferencePlaneSGIX;
+#endif 
+
+/* GL_SGIX_flush_raster */
+
+#ifdef __GLEE_GL_SGIX_flush_raster
+void __stdcall _Lazy_glFlushRasterSGIX(void)                                              {if (GLeeInit()) glFlushRasterSGIX();}
+PFNGLFLUSHRASTERSGIXPROC pglFlushRasterSGIX=_Lazy_glFlushRasterSGIX;
+#endif 
+
+/* GL_SGIX_depth_texture */
+
+#ifdef __GLEE_GL_SGIX_depth_texture
+#endif 
+
+/* GL_SGIS_fog_function */
+
+#ifdef __GLEE_GL_SGIS_fog_function
+void __stdcall _Lazy_glFogFuncSGIS(GLsizei n, const GLfloat * points)                     {if (GLeeInit()) glFogFuncSGIS(n, points);}
+void __stdcall _Lazy_glGetFogFuncSGIS(GLfloat * points)                                   {if (GLeeInit()) glGetFogFuncSGIS(points);}
+PFNGLFOGFUNCSGISPROC pglFogFuncSGIS=_Lazy_glFogFuncSGIS;
+PFNGLGETFOGFUNCSGISPROC pglGetFogFuncSGIS=_Lazy_glGetFogFuncSGIS;
+#endif 
+
+/* GL_SGIX_fog_offset */
+
+#ifdef __GLEE_GL_SGIX_fog_offset
+#endif 
+
+/* GL_HP_image_transform */
+
+#ifdef __GLEE_GL_HP_image_transform
+void __stdcall _Lazy_glImageTransformParameteriHP(GLenum target, GLenum pname, GLint param)  {if (GLeeInit()) glImageTransformParameteriHP(target, pname, param);}
+void __stdcall _Lazy_glImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param)  {if (GLeeInit()) glImageTransformParameterfHP(target, pname, param);}
+void __stdcall _Lazy_glImageTransformParameterivHP(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glImageTransformParameterivHP(target, pname, params);}
+void __stdcall _Lazy_glImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glImageTransformParameterfvHP(target, pname, params);}
+void __stdcall _Lazy_glGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetImageTransformParameterivHP(target, pname, params);}
+void __stdcall _Lazy_glGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetImageTransformParameterfvHP(target, pname, params);}
+PFNGLIMAGETRANSFORMPARAMETERIHPPROC pglImageTransformParameteriHP=_Lazy_glImageTransformParameteriHP;
+PFNGLIMAGETRANSFORMPARAMETERFHPPROC pglImageTransformParameterfHP=_Lazy_glImageTransformParameterfHP;
+PFNGLIMAGETRANSFORMPARAMETERIVHPPROC pglImageTransformParameterivHP=_Lazy_glImageTransformParameterivHP;
+PFNGLIMAGETRANSFORMPARAMETERFVHPPROC pglImageTransformParameterfvHP=_Lazy_glImageTransformParameterfvHP;
+PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC pglGetImageTransformParameterivHP=_Lazy_glGetImageTransformParameterivHP;
+PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC pglGetImageTransformParameterfvHP=_Lazy_glGetImageTransformParameterfvHP;
+#endif 
+
+/* GL_HP_convolution_border_modes */
+
+#ifdef __GLEE_GL_HP_convolution_border_modes
+#endif 
+
+/* GL_INGR_palette_buffer */
+
+#ifdef __GLEE_GL_INGR_palette_buffer
+#endif 
+
+/* GL_SGIX_texture_add_env */
+
+#ifdef __GLEE_GL_SGIX_texture_add_env
+#endif 
+
+/* GL_EXT_color_subtable */
+
+#ifdef __GLEE_GL_EXT_color_subtable
+void __stdcall _Lazy_glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)  {if (GLeeInit()) glColorSubTableEXT(target, start, count, format, type, data);}
+void __stdcall _Lazy_glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)  {if (GLeeInit()) glCopyColorSubTableEXT(target, start, x, y, width);}
+PFNGLCOLORSUBTABLEEXTPROC pglColorSubTableEXT=_Lazy_glColorSubTableEXT;
+PFNGLCOPYCOLORSUBTABLEEXTPROC pglCopyColorSubTableEXT=_Lazy_glCopyColorSubTableEXT;
+#endif 
+
+/* GL_PGI_vertex_hints */
+
+#ifdef __GLEE_GL_PGI_vertex_hints
+#endif 
+
+/* GL_PGI_misc_hints */
+
+#ifdef __GLEE_GL_PGI_misc_hints
+void __stdcall _Lazy_glHintPGI(GLenum target, GLint mode)                                 {if (GLeeInit()) glHintPGI(target, mode);}
+PFNGLHINTPGIPROC pglHintPGI=_Lazy_glHintPGI;
+#endif 
+
+/* GL_EXT_paletted_texture */
+
+#ifdef __GLEE_GL_EXT_paletted_texture
+void __stdcall _Lazy_glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)  {if (GLeeInit()) glColorTableEXT(target, internalFormat, width, format, type, table);}
+void __stdcall _Lazy_glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * data)  {if (GLeeInit()) glGetColorTableEXT(target, format, type, data);}
+void __stdcall _Lazy_glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetColorTableParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetColorTableParameterfvEXT(target, pname, params);}
+PFNGLCOLORTABLEEXTPROC pglColorTableEXT=_Lazy_glColorTableEXT;
+PFNGLGETCOLORTABLEEXTPROC pglGetColorTableEXT=_Lazy_glGetColorTableEXT;
+PFNGLGETCOLORTABLEPARAMETERIVEXTPROC pglGetColorTableParameterivEXT=_Lazy_glGetColorTableParameterivEXT;
+PFNGLGETCOLORTABLEPARAMETERFVEXTPROC pglGetColorTableParameterfvEXT=_Lazy_glGetColorTableParameterfvEXT;
+#endif 
+
+/* GL_EXT_clip_volume_hint */
+
+#ifdef __GLEE_GL_EXT_clip_volume_hint
+#endif 
+
+/* GL_SGIX_list_priority */
+
+#ifdef __GLEE_GL_SGIX_list_priority
+void __stdcall _Lazy_glGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetListParameterfvSGIX(list, pname, params);}
+void __stdcall _Lazy_glGetListParameterivSGIX(GLuint list, GLenum pname, GLint * params)  {if (GLeeInit()) glGetListParameterivSGIX(list, pname, params);}
+void __stdcall _Lazy_glListParameterfSGIX(GLuint list, GLenum pname, GLfloat param)       {if (GLeeInit()) glListParameterfSGIX(list, pname, param);}
+void __stdcall _Lazy_glListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glListParameterfvSGIX(list, pname, params);}
+void __stdcall _Lazy_glListParameteriSGIX(GLuint list, GLenum pname, GLint param)         {if (GLeeInit()) glListParameteriSGIX(list, pname, param);}
+void __stdcall _Lazy_glListParameterivSGIX(GLuint list, GLenum pname, const GLint * params)  {if (GLeeInit()) glListParameterivSGIX(list, pname, params);}
+PFNGLGETLISTPARAMETERFVSGIXPROC pglGetListParameterfvSGIX=_Lazy_glGetListParameterfvSGIX;
+PFNGLGETLISTPARAMETERIVSGIXPROC pglGetListParameterivSGIX=_Lazy_glGetListParameterivSGIX;
+PFNGLLISTPARAMETERFSGIXPROC pglListParameterfSGIX=_Lazy_glListParameterfSGIX;
+PFNGLLISTPARAMETERFVSGIXPROC pglListParameterfvSGIX=_Lazy_glListParameterfvSGIX;
+PFNGLLISTPARAMETERISGIXPROC pglListParameteriSGIX=_Lazy_glListParameteriSGIX;
+PFNGLLISTPARAMETERIVSGIXPROC pglListParameterivSGIX=_Lazy_glListParameterivSGIX;
+#endif 
+
+/* GL_SGIX_ir_instrument1 */
+
+#ifdef __GLEE_GL_SGIX_ir_instrument1
+#endif 
+
+/* GL_SGIX_calligraphic_fragment */
+
+#ifdef __GLEE_GL_SGIX_calligraphic_fragment
+#endif 
+
+/* GL_SGIX_texture_lod_bias */
+
+#ifdef __GLEE_GL_SGIX_texture_lod_bias
+#endif 
+
+/* GL_SGIX_shadow_ambient */
+
+#ifdef __GLEE_GL_SGIX_shadow_ambient
+#endif 
+
+/* GL_EXT_index_texture */
+
+#ifdef __GLEE_GL_EXT_index_texture
+#endif 
+
+/* GL_EXT_index_material */
+
+#ifdef __GLEE_GL_EXT_index_material
+void __stdcall _Lazy_glIndexMaterialEXT(GLenum face, GLenum mode)                         {if (GLeeInit()) glIndexMaterialEXT(face, mode);}
+PFNGLINDEXMATERIALEXTPROC pglIndexMaterialEXT=_Lazy_glIndexMaterialEXT;
+#endif 
+
+/* GL_EXT_index_func */
+
+#ifdef __GLEE_GL_EXT_index_func
+void __stdcall _Lazy_glIndexFuncEXT(GLenum func, GLclampf ref)                            {if (GLeeInit()) glIndexFuncEXT(func, ref);}
+PFNGLINDEXFUNCEXTPROC pglIndexFuncEXT=_Lazy_glIndexFuncEXT;
+#endif 
+
+/* GL_EXT_index_array_formats */
+
+#ifdef __GLEE_GL_EXT_index_array_formats
+#endif 
+
+/* GL_EXT_compiled_vertex_array */
+
+#ifdef __GLEE_GL_EXT_compiled_vertex_array
+void __stdcall _Lazy_glLockArraysEXT(GLint first, GLsizei count)                          {if (GLeeInit()) glLockArraysEXT(first, count);}
+void __stdcall _Lazy_glUnlockArraysEXT(void)                                              {if (GLeeInit()) glUnlockArraysEXT();}
+PFNGLLOCKARRAYSEXTPROC pglLockArraysEXT=_Lazy_glLockArraysEXT;
+PFNGLUNLOCKARRAYSEXTPROC pglUnlockArraysEXT=_Lazy_glUnlockArraysEXT;
+#endif 
+
+/* GL_EXT_cull_vertex */
+
+#ifdef __GLEE_GL_EXT_cull_vertex
+void __stdcall _Lazy_glCullParameterdvEXT(GLenum pname, GLdouble * params)                {if (GLeeInit()) glCullParameterdvEXT(pname, params);}
+void __stdcall _Lazy_glCullParameterfvEXT(GLenum pname, GLfloat * params)                 {if (GLeeInit()) glCullParameterfvEXT(pname, params);}
+PFNGLCULLPARAMETERDVEXTPROC pglCullParameterdvEXT=_Lazy_glCullParameterdvEXT;
+PFNGLCULLPARAMETERFVEXTPROC pglCullParameterfvEXT=_Lazy_glCullParameterfvEXT;
+#endif 
+
+/* GL_SGIX_ycrcb */
+
+#ifdef __GLEE_GL_SGIX_ycrcb
+#endif 
+
+/* GL_SGIX_fragment_lighting */
+
+#ifdef __GLEE_GL_SGIX_fragment_lighting
+void __stdcall _Lazy_glFragmentColorMaterialSGIX(GLenum face, GLenum mode)                {if (GLeeInit()) glFragmentColorMaterialSGIX(face, mode);}
+void __stdcall _Lazy_glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param)      {if (GLeeInit()) glFragmentLightfSGIX(light, pname, param);}
+void __stdcall _Lazy_glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glFragmentLightfvSGIX(light, pname, params);}
+void __stdcall _Lazy_glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param)        {if (GLeeInit()) glFragmentLightiSGIX(light, pname, param);}
+void __stdcall _Lazy_glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint * params)  {if (GLeeInit()) glFragmentLightivSGIX(light, pname, params);}
+void __stdcall _Lazy_glFragmentLightModelfSGIX(GLenum pname, GLfloat param)               {if (GLeeInit()) glFragmentLightModelfSGIX(pname, param);}
+void __stdcall _Lazy_glFragmentLightModelfvSGIX(GLenum pname, const GLfloat * params)     {if (GLeeInit()) glFragmentLightModelfvSGIX(pname, params);}
+void __stdcall _Lazy_glFragmentLightModeliSGIX(GLenum pname, GLint param)                 {if (GLeeInit()) glFragmentLightModeliSGIX(pname, param);}
+void __stdcall _Lazy_glFragmentLightModelivSGIX(GLenum pname, const GLint * params)       {if (GLeeInit()) glFragmentLightModelivSGIX(pname, params);}
+void __stdcall _Lazy_glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param)    {if (GLeeInit()) glFragmentMaterialfSGIX(face, pname, param);}
+void __stdcall _Lazy_glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glFragmentMaterialfvSGIX(face, pname, params);}
+void __stdcall _Lazy_glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param)      {if (GLeeInit()) glFragmentMaterialiSGIX(face, pname, param);}
+void __stdcall _Lazy_glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint * params)  {if (GLeeInit()) glFragmentMaterialivSGIX(face, pname, params);}
+void __stdcall _Lazy_glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetFragmentLightfvSGIX(light, pname, params);}
+void __stdcall _Lazy_glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFragmentLightivSGIX(light, pname, params);}
+void __stdcall _Lazy_glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetFragmentMaterialfvSGIX(face, pname, params);}
+void __stdcall _Lazy_glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFragmentMaterialivSGIX(face, pname, params);}
+void __stdcall _Lazy_glLightEnviSGIX(GLenum pname, GLint param)                           {if (GLeeInit()) glLightEnviSGIX(pname, param);}
+PFNGLFRAGMENTCOLORMATERIALSGIXPROC pglFragmentColorMaterialSGIX=_Lazy_glFragmentColorMaterialSGIX;
+PFNGLFRAGMENTLIGHTFSGIXPROC pglFragmentLightfSGIX=_Lazy_glFragmentLightfSGIX;
+PFNGLFRAGMENTLIGHTFVSGIXPROC pglFragmentLightfvSGIX=_Lazy_glFragmentLightfvSGIX;
+PFNGLFRAGMENTLIGHTISGIXPROC pglFragmentLightiSGIX=_Lazy_glFragmentLightiSGIX;
+PFNGLFRAGMENTLIGHTIVSGIXPROC pglFragmentLightivSGIX=_Lazy_glFragmentLightivSGIX;
+PFNGLFRAGMENTLIGHTMODELFSGIXPROC pglFragmentLightModelfSGIX=_Lazy_glFragmentLightModelfSGIX;
+PFNGLFRAGMENTLIGHTMODELFVSGIXPROC pglFragmentLightModelfvSGIX=_Lazy_glFragmentLightModelfvSGIX;
+PFNGLFRAGMENTLIGHTMODELISGIXPROC pglFragmentLightModeliSGIX=_Lazy_glFragmentLightModeliSGIX;
+PFNGLFRAGMENTLIGHTMODELIVSGIXPROC pglFragmentLightModelivSGIX=_Lazy_glFragmentLightModelivSGIX;
+PFNGLFRAGMENTMATERIALFSGIXPROC pglFragmentMaterialfSGIX=_Lazy_glFragmentMaterialfSGIX;
+PFNGLFRAGMENTMATERIALFVSGIXPROC pglFragmentMaterialfvSGIX=_Lazy_glFragmentMaterialfvSGIX;
+PFNGLFRAGMENTMATERIALISGIXPROC pglFragmentMaterialiSGIX=_Lazy_glFragmentMaterialiSGIX;
+PFNGLFRAGMENTMATERIALIVSGIXPROC pglFragmentMaterialivSGIX=_Lazy_glFragmentMaterialivSGIX;
+PFNGLGETFRAGMENTLIGHTFVSGIXPROC pglGetFragmentLightfvSGIX=_Lazy_glGetFragmentLightfvSGIX;
+PFNGLGETFRAGMENTLIGHTIVSGIXPROC pglGetFragmentLightivSGIX=_Lazy_glGetFragmentLightivSGIX;
+PFNGLGETFRAGMENTMATERIALFVSGIXPROC pglGetFragmentMaterialfvSGIX=_Lazy_glGetFragmentMaterialfvSGIX;
+PFNGLGETFRAGMENTMATERIALIVSGIXPROC pglGetFragmentMaterialivSGIX=_Lazy_glGetFragmentMaterialivSGIX;
+PFNGLLIGHTENVISGIXPROC pglLightEnviSGIX=_Lazy_glLightEnviSGIX;
+#endif 
+
+/* GL_IBM_rasterpos_clip */
+
+#ifdef __GLEE_GL_IBM_rasterpos_clip
+#endif 
+
+/* GL_HP_texture_lighting */
+
+#ifdef __GLEE_GL_HP_texture_lighting
+#endif 
+
+/* GL_EXT_draw_range_elements */
+
+#ifdef __GLEE_GL_EXT_draw_range_elements
+void __stdcall _Lazy_glDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)  {if (GLeeInit()) glDrawRangeElementsEXT(mode, start, end, count, type, indices);}
+PFNGLDRAWRANGEELEMENTSEXTPROC pglDrawRangeElementsEXT=_Lazy_glDrawRangeElementsEXT;
+#endif 
+
+/* GL_WIN_phong_shading */
+
+#ifdef __GLEE_GL_WIN_phong_shading
+#endif 
+
+/* GL_WIN_specular_fog */
+
+#ifdef __GLEE_GL_WIN_specular_fog
+#endif 
+
+/* GL_EXT_light_texture */
+
+#ifdef __GLEE_GL_EXT_light_texture
+void __stdcall _Lazy_glApplyTextureEXT(GLenum mode)                                       {if (GLeeInit()) glApplyTextureEXT(mode);}
+void __stdcall _Lazy_glTextureLightEXT(GLenum pname)                                      {if (GLeeInit()) glTextureLightEXT(pname);}
+void __stdcall _Lazy_glTextureMaterialEXT(GLenum face, GLenum mode)                       {if (GLeeInit()) glTextureMaterialEXT(face, mode);}
+PFNGLAPPLYTEXTUREEXTPROC pglApplyTextureEXT=_Lazy_glApplyTextureEXT;
+PFNGLTEXTURELIGHTEXTPROC pglTextureLightEXT=_Lazy_glTextureLightEXT;
+PFNGLTEXTUREMATERIALEXTPROC pglTextureMaterialEXT=_Lazy_glTextureMaterialEXT;
+#endif 
+
+/* GL_SGIX_blend_alpha_minmax */
+
+#ifdef __GLEE_GL_SGIX_blend_alpha_minmax
+#endif 
+
+/* GL_SGIX_impact_pixel_texture */
+
+#ifdef __GLEE_GL_SGIX_impact_pixel_texture
+#endif 
+
+/* GL_EXT_bgra */
+
+#ifdef __GLEE_GL_EXT_bgra
+#endif 
+
+/* GL_SGIX_async */
+
+#ifdef __GLEE_GL_SGIX_async
+void __stdcall _Lazy_glAsyncMarkerSGIX(GLuint marker)                                     {if (GLeeInit()) glAsyncMarkerSGIX(marker);}
+GLint __stdcall _Lazy_glFinishAsyncSGIX(GLuint * markerp)                                 {if (GLeeInit()) return glFinishAsyncSGIX(markerp); return (GLint)0;}
+GLint __stdcall _Lazy_glPollAsyncSGIX(GLuint * markerp)                                   {if (GLeeInit()) return glPollAsyncSGIX(markerp); return (GLint)0;}
+GLuint __stdcall _Lazy_glGenAsyncMarkersSGIX(GLsizei range)                               {if (GLeeInit()) return glGenAsyncMarkersSGIX(range); return (GLuint)0;}
+void __stdcall _Lazy_glDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range)               {if (GLeeInit()) glDeleteAsyncMarkersSGIX(marker, range);}
+GLboolean __stdcall _Lazy_glIsAsyncMarkerSGIX(GLuint marker)                              {if (GLeeInit()) return glIsAsyncMarkerSGIX(marker); return (GLboolean)0;}
+PFNGLASYNCMARKERSGIXPROC pglAsyncMarkerSGIX=_Lazy_glAsyncMarkerSGIX;
+PFNGLFINISHASYNCSGIXPROC pglFinishAsyncSGIX=_Lazy_glFinishAsyncSGIX;
+PFNGLPOLLASYNCSGIXPROC pglPollAsyncSGIX=_Lazy_glPollAsyncSGIX;
+PFNGLGENASYNCMARKERSSGIXPROC pglGenAsyncMarkersSGIX=_Lazy_glGenAsyncMarkersSGIX;
+PFNGLDELETEASYNCMARKERSSGIXPROC pglDeleteAsyncMarkersSGIX=_Lazy_glDeleteAsyncMarkersSGIX;
+PFNGLISASYNCMARKERSGIXPROC pglIsAsyncMarkerSGIX=_Lazy_glIsAsyncMarkerSGIX;
+#endif 
+
+/* GL_SGIX_async_pixel */
+
+#ifdef __GLEE_GL_SGIX_async_pixel
+#endif 
+
+/* GL_SGIX_async_histogram */
+
+#ifdef __GLEE_GL_SGIX_async_histogram
+#endif 
+
+/* GL_INTEL_texture_scissor */
+
+#ifdef __GLEE_GL_INTEL_texture_scissor
+#endif 
+
+/* GL_INTEL_parallel_arrays */
+
+#ifdef __GLEE_GL_INTEL_parallel_arrays
+void __stdcall _Lazy_glVertexPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer)  {if (GLeeInit()) glVertexPointervINTEL(size, type, pointer);}
+void __stdcall _Lazy_glNormalPointervINTEL(GLenum type, const GLvoid* * pointer)          {if (GLeeInit()) glNormalPointervINTEL(type, pointer);}
+void __stdcall _Lazy_glColorPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer)  {if (GLeeInit()) glColorPointervINTEL(size, type, pointer);}
+void __stdcall _Lazy_glTexCoordPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer)  {if (GLeeInit()) glTexCoordPointervINTEL(size, type, pointer);}
+PFNGLVERTEXPOINTERVINTELPROC pglVertexPointervINTEL=_Lazy_glVertexPointervINTEL;
+PFNGLNORMALPOINTERVINTELPROC pglNormalPointervINTEL=_Lazy_glNormalPointervINTEL;
+PFNGLCOLORPOINTERVINTELPROC pglColorPointervINTEL=_Lazy_glColorPointervINTEL;
+PFNGLTEXCOORDPOINTERVINTELPROC pglTexCoordPointervINTEL=_Lazy_glTexCoordPointervINTEL;
+#endif 
+
+/* GL_HP_occlusion_test */
+
+#ifdef __GLEE_GL_HP_occlusion_test
+#endif 
+
+/* GL_EXT_pixel_transform */
+
+#ifdef __GLEE_GL_EXT_pixel_transform
+void __stdcall _Lazy_glPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param)  {if (GLeeInit()) glPixelTransformParameteriEXT(target, pname, param);}
+void __stdcall _Lazy_glPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param)  {if (GLeeInit()) glPixelTransformParameterfEXT(target, pname, param);}
+void __stdcall _Lazy_glPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glPixelTransformParameterivEXT(target, pname, params);}
+void __stdcall _Lazy_glPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glPixelTransformParameterfvEXT(target, pname, params);}
+PFNGLPIXELTRANSFORMPARAMETERIEXTPROC pglPixelTransformParameteriEXT=_Lazy_glPixelTransformParameteriEXT;
+PFNGLPIXELTRANSFORMPARAMETERFEXTPROC pglPixelTransformParameterfEXT=_Lazy_glPixelTransformParameterfEXT;
+PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC pglPixelTransformParameterivEXT=_Lazy_glPixelTransformParameterivEXT;
+PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC pglPixelTransformParameterfvEXT=_Lazy_glPixelTransformParameterfvEXT;
+#endif 
+
+/* GL_EXT_pixel_transform_color_table */
+
+#ifdef __GLEE_GL_EXT_pixel_transform_color_table
+#endif 
+
+/* GL_EXT_shared_texture_palette */
+
+#ifdef __GLEE_GL_EXT_shared_texture_palette
+#endif 
+
+/* GL_EXT_separate_specular_color */
+
+#ifdef __GLEE_GL_EXT_separate_specular_color
+#endif 
+
+/* GL_EXT_secondary_color */
+
+#ifdef __GLEE_GL_EXT_secondary_color
+void __stdcall _Lazy_glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue)         {if (GLeeInit()) glSecondaryColor3bEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3bvEXT(const GLbyte * v)                             {if (GLeeInit()) glSecondaryColor3bvEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue)   {if (GLeeInit()) glSecondaryColor3dEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3dvEXT(const GLdouble * v)                           {if (GLeeInit()) glSecondaryColor3dvEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue)      {if (GLeeInit()) glSecondaryColor3fEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3fvEXT(const GLfloat * v)                            {if (GLeeInit()) glSecondaryColor3fvEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3iEXT(GLint red, GLint green, GLint blue)            {if (GLeeInit()) glSecondaryColor3iEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3ivEXT(const GLint * v)                              {if (GLeeInit()) glSecondaryColor3ivEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue)      {if (GLeeInit()) glSecondaryColor3sEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3svEXT(const GLshort * v)                            {if (GLeeInit()) glSecondaryColor3svEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue)     {if (GLeeInit()) glSecondaryColor3ubEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3ubvEXT(const GLubyte * v)                           {if (GLeeInit()) glSecondaryColor3ubvEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue)        {if (GLeeInit()) glSecondaryColor3uiEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3uivEXT(const GLuint * v)                            {if (GLeeInit()) glSecondaryColor3uivEXT(v);}
+void __stdcall _Lazy_glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue)  {if (GLeeInit()) glSecondaryColor3usEXT(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3usvEXT(const GLushort * v)                          {if (GLeeInit()) glSecondaryColor3usvEXT(v);}
+void __stdcall _Lazy_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glSecondaryColorPointerEXT(size, type, stride, pointer);}
+PFNGLSECONDARYCOLOR3BEXTPROC pglSecondaryColor3bEXT=_Lazy_glSecondaryColor3bEXT;
+PFNGLSECONDARYCOLOR3BVEXTPROC pglSecondaryColor3bvEXT=_Lazy_glSecondaryColor3bvEXT;
+PFNGLSECONDARYCOLOR3DEXTPROC pglSecondaryColor3dEXT=_Lazy_glSecondaryColor3dEXT;
+PFNGLSECONDARYCOLOR3DVEXTPROC pglSecondaryColor3dvEXT=_Lazy_glSecondaryColor3dvEXT;
+PFNGLSECONDARYCOLOR3FEXTPROC pglSecondaryColor3fEXT=_Lazy_glSecondaryColor3fEXT;
+PFNGLSECONDARYCOLOR3FVEXTPROC pglSecondaryColor3fvEXT=_Lazy_glSecondaryColor3fvEXT;
+PFNGLSECONDARYCOLOR3IEXTPROC pglSecondaryColor3iEXT=_Lazy_glSecondaryColor3iEXT;
+PFNGLSECONDARYCOLOR3IVEXTPROC pglSecondaryColor3ivEXT=_Lazy_glSecondaryColor3ivEXT;
+PFNGLSECONDARYCOLOR3SEXTPROC pglSecondaryColor3sEXT=_Lazy_glSecondaryColor3sEXT;
+PFNGLSECONDARYCOLOR3SVEXTPROC pglSecondaryColor3svEXT=_Lazy_glSecondaryColor3svEXT;
+PFNGLSECONDARYCOLOR3UBEXTPROC pglSecondaryColor3ubEXT=_Lazy_glSecondaryColor3ubEXT;
+PFNGLSECONDARYCOLOR3UBVEXTPROC pglSecondaryColor3ubvEXT=_Lazy_glSecondaryColor3ubvEXT;
+PFNGLSECONDARYCOLOR3UIEXTPROC pglSecondaryColor3uiEXT=_Lazy_glSecondaryColor3uiEXT;
+PFNGLSECONDARYCOLOR3UIVEXTPROC pglSecondaryColor3uivEXT=_Lazy_glSecondaryColor3uivEXT;
+PFNGLSECONDARYCOLOR3USEXTPROC pglSecondaryColor3usEXT=_Lazy_glSecondaryColor3usEXT;
+PFNGLSECONDARYCOLOR3USVEXTPROC pglSecondaryColor3usvEXT=_Lazy_glSecondaryColor3usvEXT;
+PFNGLSECONDARYCOLORPOINTEREXTPROC pglSecondaryColorPointerEXT=_Lazy_glSecondaryColorPointerEXT;
+#endif 
+
+/* GL_EXT_texture_perturb_normal */
+
+#ifdef __GLEE_GL_EXT_texture_perturb_normal
+void __stdcall _Lazy_glTextureNormalEXT(GLenum mode)                                      {if (GLeeInit()) glTextureNormalEXT(mode);}
+PFNGLTEXTURENORMALEXTPROC pglTextureNormalEXT=_Lazy_glTextureNormalEXT;
+#endif 
+
+/* GL_EXT_multi_draw_arrays */
+
+#ifdef __GLEE_GL_EXT_multi_draw_arrays
+void __stdcall _Lazy_glMultiDrawArraysEXT(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)  {if (GLeeInit()) glMultiDrawArraysEXT(mode, first, count, primcount);}
+void __stdcall _Lazy_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const GLvoid* * indices, GLsizei primcount)  {if (GLeeInit()) glMultiDrawElementsEXT(mode, count, type, indices, primcount);}
+PFNGLMULTIDRAWARRAYSEXTPROC pglMultiDrawArraysEXT=_Lazy_glMultiDrawArraysEXT;
+PFNGLMULTIDRAWELEMENTSEXTPROC pglMultiDrawElementsEXT=_Lazy_glMultiDrawElementsEXT;
+#endif 
+
+/* GL_EXT_fog_coord */
+
+#ifdef __GLEE_GL_EXT_fog_coord
+void __stdcall _Lazy_glFogCoordfEXT(GLfloat coord)                                        {if (GLeeInit()) glFogCoordfEXT(coord);}
+void __stdcall _Lazy_glFogCoordfvEXT(const GLfloat * coord)                               {if (GLeeInit()) glFogCoordfvEXT(coord);}
+void __stdcall _Lazy_glFogCoorddEXT(GLdouble coord)                                       {if (GLeeInit()) glFogCoorddEXT(coord);}
+void __stdcall _Lazy_glFogCoorddvEXT(const GLdouble * coord)                              {if (GLeeInit()) glFogCoorddvEXT(coord);}
+void __stdcall _Lazy_glFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glFogCoordPointerEXT(type, stride, pointer);}
+PFNGLFOGCOORDFEXTPROC pglFogCoordfEXT=_Lazy_glFogCoordfEXT;
+PFNGLFOGCOORDFVEXTPROC pglFogCoordfvEXT=_Lazy_glFogCoordfvEXT;
+PFNGLFOGCOORDDEXTPROC pglFogCoorddEXT=_Lazy_glFogCoorddEXT;
+PFNGLFOGCOORDDVEXTPROC pglFogCoorddvEXT=_Lazy_glFogCoorddvEXT;
+PFNGLFOGCOORDPOINTEREXTPROC pglFogCoordPointerEXT=_Lazy_glFogCoordPointerEXT;
+#endif 
+
+/* GL_REND_screen_coordinates */
+
+#ifdef __GLEE_GL_REND_screen_coordinates
+#endif 
+
+/* GL_EXT_coordinate_frame */
+
+#ifdef __GLEE_GL_EXT_coordinate_frame
+void __stdcall _Lazy_glTangent3bEXT(GLbyte tx, GLbyte ty, GLbyte tz)                      {if (GLeeInit()) glTangent3bEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3bvEXT(const GLbyte * v)                                    {if (GLeeInit()) glTangent3bvEXT(v);}
+void __stdcall _Lazy_glTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz)                {if (GLeeInit()) glTangent3dEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3dvEXT(const GLdouble * v)                                  {if (GLeeInit()) glTangent3dvEXT(v);}
+void __stdcall _Lazy_glTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz)                   {if (GLeeInit()) glTangent3fEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3fvEXT(const GLfloat * v)                                   {if (GLeeInit()) glTangent3fvEXT(v);}
+void __stdcall _Lazy_glTangent3iEXT(GLint tx, GLint ty, GLint tz)                         {if (GLeeInit()) glTangent3iEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3ivEXT(const GLint * v)                                     {if (GLeeInit()) glTangent3ivEXT(v);}
+void __stdcall _Lazy_glTangent3sEXT(GLshort tx, GLshort ty, GLshort tz)                   {if (GLeeInit()) glTangent3sEXT(tx, ty, tz);}
+void __stdcall _Lazy_glTangent3svEXT(const GLshort * v)                                   {if (GLeeInit()) glTangent3svEXT(v);}
+void __stdcall _Lazy_glBinormal3bEXT(GLbyte bx, GLbyte by, GLbyte bz)                     {if (GLeeInit()) glBinormal3bEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3bvEXT(const GLbyte * v)                                   {if (GLeeInit()) glBinormal3bvEXT(v);}
+void __stdcall _Lazy_glBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz)               {if (GLeeInit()) glBinormal3dEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3dvEXT(const GLdouble * v)                                 {if (GLeeInit()) glBinormal3dvEXT(v);}
+void __stdcall _Lazy_glBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz)                  {if (GLeeInit()) glBinormal3fEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3fvEXT(const GLfloat * v)                                  {if (GLeeInit()) glBinormal3fvEXT(v);}
+void __stdcall _Lazy_glBinormal3iEXT(GLint bx, GLint by, GLint bz)                        {if (GLeeInit()) glBinormal3iEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3ivEXT(const GLint * v)                                    {if (GLeeInit()) glBinormal3ivEXT(v);}
+void __stdcall _Lazy_glBinormal3sEXT(GLshort bx, GLshort by, GLshort bz)                  {if (GLeeInit()) glBinormal3sEXT(bx, by, bz);}
+void __stdcall _Lazy_glBinormal3svEXT(const GLshort * v)                                  {if (GLeeInit()) glBinormal3svEXT(v);}
+void __stdcall _Lazy_glTangentPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glTangentPointerEXT(type, stride, pointer);}
+void __stdcall _Lazy_glBinormalPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glBinormalPointerEXT(type, stride, pointer);}
+PFNGLTANGENT3BEXTPROC pglTangent3bEXT=_Lazy_glTangent3bEXT;
+PFNGLTANGENT3BVEXTPROC pglTangent3bvEXT=_Lazy_glTangent3bvEXT;
+PFNGLTANGENT3DEXTPROC pglTangent3dEXT=_Lazy_glTangent3dEXT;
+PFNGLTANGENT3DVEXTPROC pglTangent3dvEXT=_Lazy_glTangent3dvEXT;
+PFNGLTANGENT3FEXTPROC pglTangent3fEXT=_Lazy_glTangent3fEXT;
+PFNGLTANGENT3FVEXTPROC pglTangent3fvEXT=_Lazy_glTangent3fvEXT;
+PFNGLTANGENT3IEXTPROC pglTangent3iEXT=_Lazy_glTangent3iEXT;
+PFNGLTANGENT3IVEXTPROC pglTangent3ivEXT=_Lazy_glTangent3ivEXT;
+PFNGLTANGENT3SEXTPROC pglTangent3sEXT=_Lazy_glTangent3sEXT;
+PFNGLTANGENT3SVEXTPROC pglTangent3svEXT=_Lazy_glTangent3svEXT;
+PFNGLBINORMAL3BEXTPROC pglBinormal3bEXT=_Lazy_glBinormal3bEXT;
+PFNGLBINORMAL3BVEXTPROC pglBinormal3bvEXT=_Lazy_glBinormal3bvEXT;
+PFNGLBINORMAL3DEXTPROC pglBinormal3dEXT=_Lazy_glBinormal3dEXT;
+PFNGLBINORMAL3DVEXTPROC pglBinormal3dvEXT=_Lazy_glBinormal3dvEXT;
+PFNGLBINORMAL3FEXTPROC pglBinormal3fEXT=_Lazy_glBinormal3fEXT;
+PFNGLBINORMAL3FVEXTPROC pglBinormal3fvEXT=_Lazy_glBinormal3fvEXT;
+PFNGLBINORMAL3IEXTPROC pglBinormal3iEXT=_Lazy_glBinormal3iEXT;
+PFNGLBINORMAL3IVEXTPROC pglBinormal3ivEXT=_Lazy_glBinormal3ivEXT;
+PFNGLBINORMAL3SEXTPROC pglBinormal3sEXT=_Lazy_glBinormal3sEXT;
+PFNGLBINORMAL3SVEXTPROC pglBinormal3svEXT=_Lazy_glBinormal3svEXT;
+PFNGLTANGENTPOINTEREXTPROC pglTangentPointerEXT=_Lazy_glTangentPointerEXT;
+PFNGLBINORMALPOINTEREXTPROC pglBinormalPointerEXT=_Lazy_glBinormalPointerEXT;
+#endif 
+
+/* GL_EXT_texture_env_combine */
+
+#ifdef __GLEE_GL_EXT_texture_env_combine
+#endif 
+
+/* GL_APPLE_specular_vector */
+
+#ifdef __GLEE_GL_APPLE_specular_vector
+#endif 
+
+/* GL_APPLE_transform_hint */
+
+#ifdef __GLEE_GL_APPLE_transform_hint
+#endif 
+
+/* GL_SGIX_fog_scale */
+
+#ifdef __GLEE_GL_SGIX_fog_scale
+#endif 
+
+/* GL_SUNX_constant_data */
+
+#ifdef __GLEE_GL_SUNX_constant_data
+void __stdcall _Lazy_glFinishTextureSUNX(void)                                            {if (GLeeInit()) glFinishTextureSUNX();}
+PFNGLFINISHTEXTURESUNXPROC pglFinishTextureSUNX=_Lazy_glFinishTextureSUNX;
+#endif 
+
+/* GL_SUN_global_alpha */
+
+#ifdef __GLEE_GL_SUN_global_alpha
+void __stdcall _Lazy_glGlobalAlphaFactorbSUN(GLbyte factor)                               {if (GLeeInit()) glGlobalAlphaFactorbSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactorsSUN(GLshort factor)                              {if (GLeeInit()) glGlobalAlphaFactorsSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactoriSUN(GLint factor)                                {if (GLeeInit()) glGlobalAlphaFactoriSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactorfSUN(GLfloat factor)                              {if (GLeeInit()) glGlobalAlphaFactorfSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactordSUN(GLdouble factor)                             {if (GLeeInit()) glGlobalAlphaFactordSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactorubSUN(GLubyte factor)                             {if (GLeeInit()) glGlobalAlphaFactorubSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactorusSUN(GLushort factor)                            {if (GLeeInit()) glGlobalAlphaFactorusSUN(factor);}
+void __stdcall _Lazy_glGlobalAlphaFactoruiSUN(GLuint factor)                              {if (GLeeInit()) glGlobalAlphaFactoruiSUN(factor);}
+PFNGLGLOBALALPHAFACTORBSUNPROC pglGlobalAlphaFactorbSUN=_Lazy_glGlobalAlphaFactorbSUN;
+PFNGLGLOBALALPHAFACTORSSUNPROC pglGlobalAlphaFactorsSUN=_Lazy_glGlobalAlphaFactorsSUN;
+PFNGLGLOBALALPHAFACTORISUNPROC pglGlobalAlphaFactoriSUN=_Lazy_glGlobalAlphaFactoriSUN;
+PFNGLGLOBALALPHAFACTORFSUNPROC pglGlobalAlphaFactorfSUN=_Lazy_glGlobalAlphaFactorfSUN;
+PFNGLGLOBALALPHAFACTORDSUNPROC pglGlobalAlphaFactordSUN=_Lazy_glGlobalAlphaFactordSUN;
+PFNGLGLOBALALPHAFACTORUBSUNPROC pglGlobalAlphaFactorubSUN=_Lazy_glGlobalAlphaFactorubSUN;
+PFNGLGLOBALALPHAFACTORUSSUNPROC pglGlobalAlphaFactorusSUN=_Lazy_glGlobalAlphaFactorusSUN;
+PFNGLGLOBALALPHAFACTORUISUNPROC pglGlobalAlphaFactoruiSUN=_Lazy_glGlobalAlphaFactoruiSUN;
+#endif 
+
+/* GL_SUN_triangle_list */
+
+#ifdef __GLEE_GL_SUN_triangle_list
+void __stdcall _Lazy_glReplacementCodeuiSUN(GLuint code)                                  {if (GLeeInit()) glReplacementCodeuiSUN(code);}
+void __stdcall _Lazy_glReplacementCodeusSUN(GLushort code)                                {if (GLeeInit()) glReplacementCodeusSUN(code);}
+void __stdcall _Lazy_glReplacementCodeubSUN(GLubyte code)                                 {if (GLeeInit()) glReplacementCodeubSUN(code);}
+void __stdcall _Lazy_glReplacementCodeuivSUN(const GLuint * code)                         {if (GLeeInit()) glReplacementCodeuivSUN(code);}
+void __stdcall _Lazy_glReplacementCodeusvSUN(const GLushort * code)                       {if (GLeeInit()) glReplacementCodeusvSUN(code);}
+void __stdcall _Lazy_glReplacementCodeubvSUN(const GLubyte * code)                        {if (GLeeInit()) glReplacementCodeubvSUN(code);}
+void __stdcall _Lazy_glReplacementCodePointerSUN(GLenum type, GLsizei stride, const GLvoid* * pointer)  {if (GLeeInit()) glReplacementCodePointerSUN(type, stride, pointer);}
+PFNGLREPLACEMENTCODEUISUNPROC pglReplacementCodeuiSUN=_Lazy_glReplacementCodeuiSUN;
+PFNGLREPLACEMENTCODEUSSUNPROC pglReplacementCodeusSUN=_Lazy_glReplacementCodeusSUN;
+PFNGLREPLACEMENTCODEUBSUNPROC pglReplacementCodeubSUN=_Lazy_glReplacementCodeubSUN;
+PFNGLREPLACEMENTCODEUIVSUNPROC pglReplacementCodeuivSUN=_Lazy_glReplacementCodeuivSUN;
+PFNGLREPLACEMENTCODEUSVSUNPROC pglReplacementCodeusvSUN=_Lazy_glReplacementCodeusvSUN;
+PFNGLREPLACEMENTCODEUBVSUNPROC pglReplacementCodeubvSUN=_Lazy_glReplacementCodeubvSUN;
+PFNGLREPLACEMENTCODEPOINTERSUNPROC pglReplacementCodePointerSUN=_Lazy_glReplacementCodePointerSUN;
+#endif 
+
+/* GL_SUN_vertex */
+
+#ifdef __GLEE_GL_SUN_vertex
+void __stdcall _Lazy_glColor4ubVertex2fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y)  {if (GLeeInit()) glColor4ubVertex2fSUN(r, g, b, a, x, y);}
+void __stdcall _Lazy_glColor4ubVertex2fvSUN(const GLubyte * c, const GLfloat * v)         {if (GLeeInit()) glColor4ubVertex2fvSUN(c, v);}
+void __stdcall _Lazy_glColor4ubVertex3fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glColor4ubVertex3fSUN(r, g, b, a, x, y, z);}
+void __stdcall _Lazy_glColor4ubVertex3fvSUN(const GLubyte * c, const GLfloat * v)         {if (GLeeInit()) glColor4ubVertex3fvSUN(c, v);}
+void __stdcall _Lazy_glColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glColor3fVertex3fSUN(r, g, b, x, y, z);}
+void __stdcall _Lazy_glColor3fVertex3fvSUN(const GLfloat * c, const GLfloat * v)          {if (GLeeInit()) glColor3fVertex3fvSUN(c, v);}
+void __stdcall _Lazy_glNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glNormal3fVertex3fSUN(nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glNormal3fVertex3fvSUN(const GLfloat * n, const GLfloat * v)         {if (GLeeInit()) glNormal3fVertex3fvSUN(n, v);}
+void __stdcall _Lazy_glColor4fNormal3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glColor4fNormal3fVertex3fSUN(r, g, b, a, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glColor4fNormal3fVertex3fvSUN(const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glColor4fNormal3fVertex3fvSUN(c, n, v);}
+void __stdcall _Lazy_glTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fVertex3fSUN(s, t, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fVertex3fvSUN(const GLfloat * tc, const GLfloat * v)      {if (GLeeInit()) glTexCoord2fVertex3fvSUN(tc, v);}
+void __stdcall _Lazy_glTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glTexCoord4fVertex4fSUN(s, t, p, q, x, y, z, w);}
+void __stdcall _Lazy_glTexCoord4fVertex4fvSUN(const GLfloat * tc, const GLfloat * v)      {if (GLeeInit()) glTexCoord4fVertex4fvSUN(tc, v);}
+void __stdcall _Lazy_glTexCoord2fColor4ubVertex3fSUN(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fColor4ubVertex3fSUN(s, t, r, g, b, a, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fColor4ubVertex3fvSUN(const GLfloat * tc, const GLubyte * c, const GLfloat * v)  {if (GLeeInit()) glTexCoord2fColor4ubVertex3fvSUN(tc, c, v);}
+void __stdcall _Lazy_glTexCoord2fColor3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fColor3fVertex3fSUN(s, t, r, g, b, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fColor3fVertex3fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * v)  {if (GLeeInit()) glTexCoord2fColor3fVertex3fvSUN(tc, c, v);}
+void __stdcall _Lazy_glTexCoord2fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fNormal3fVertex3fSUN(s, t, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fNormal3fVertex3fvSUN(const GLfloat * tc, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glTexCoord2fNormal3fVertex3fvSUN(tc, n, v);}
+void __stdcall _Lazy_glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glTexCoord2fColor4fNormal3fVertex3fSUN(s, t, r, g, b, a, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glTexCoord2fColor4fNormal3fVertex3fvSUN(tc, c, n, v);}
+void __stdcall _Lazy_glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glTexCoord4fColor4fNormal3fVertex4fSUN(s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w);}
+void __stdcall _Lazy_glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glTexCoord4fColor4fNormal3fVertex4fvSUN(tc, c, n, v);}
+void __stdcall _Lazy_glReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiVertex3fSUN(rc, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiVertex3fvSUN(const GLuint * rc, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiVertex3fvSUN(rc, v);}
+void __stdcall _Lazy_glReplacementCodeuiColor4ubVertex3fSUN(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiColor4ubVertex3fSUN(rc, r, g, b, a, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint * rc, const GLubyte * c, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiColor4ubVertex3fvSUN(rc, c, v);}
+void __stdcall _Lazy_glReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiColor3fVertex3fSUN(rc, r, g, b, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiColor3fVertex3fvSUN(const GLuint * rc, const GLfloat * c, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiColor3fVertex3fvSUN(rc, c, v);}
+void __stdcall _Lazy_glReplacementCodeuiNormal3fVertex3fSUN(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiNormal3fVertex3fSUN(rc, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiNormal3fVertex3fvSUN(rc, n, v);}
+void __stdcall _Lazy_glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiColor4fNormal3fVertex3fSUN(rc, r, g, b, a, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiColor4fNormal3fVertex3fvSUN(rc, c, n, v);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fVertex3fSUN(rc, s, t, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fVertex3fvSUN(rc, tc, v);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(rc, s, t, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(rc, tc, n, v);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(rc, s, t, r, g, b, a, nx, ny, nz, x, y, z);}
+void __stdcall _Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v)  {if (GLeeInit()) glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(rc, tc, c, n, v);}
+PFNGLCOLOR4UBVERTEX2FSUNPROC pglColor4ubVertex2fSUN=_Lazy_glColor4ubVertex2fSUN;
+PFNGLCOLOR4UBVERTEX2FVSUNPROC pglColor4ubVertex2fvSUN=_Lazy_glColor4ubVertex2fvSUN;
+PFNGLCOLOR4UBVERTEX3FSUNPROC pglColor4ubVertex3fSUN=_Lazy_glColor4ubVertex3fSUN;
+PFNGLCOLOR4UBVERTEX3FVSUNPROC pglColor4ubVertex3fvSUN=_Lazy_glColor4ubVertex3fvSUN;
+PFNGLCOLOR3FVERTEX3FSUNPROC pglColor3fVertex3fSUN=_Lazy_glColor3fVertex3fSUN;
+PFNGLCOLOR3FVERTEX3FVSUNPROC pglColor3fVertex3fvSUN=_Lazy_glColor3fVertex3fvSUN;
+PFNGLNORMAL3FVERTEX3FSUNPROC pglNormal3fVertex3fSUN=_Lazy_glNormal3fVertex3fSUN;
+PFNGLNORMAL3FVERTEX3FVSUNPROC pglNormal3fVertex3fvSUN=_Lazy_glNormal3fVertex3fvSUN;
+PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC pglColor4fNormal3fVertex3fSUN=_Lazy_glColor4fNormal3fVertex3fSUN;
+PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglColor4fNormal3fVertex3fvSUN=_Lazy_glColor4fNormal3fVertex3fvSUN;
+PFNGLTEXCOORD2FVERTEX3FSUNPROC pglTexCoord2fVertex3fSUN=_Lazy_glTexCoord2fVertex3fSUN;
+PFNGLTEXCOORD2FVERTEX3FVSUNPROC pglTexCoord2fVertex3fvSUN=_Lazy_glTexCoord2fVertex3fvSUN;
+PFNGLTEXCOORD4FVERTEX4FSUNPROC pglTexCoord4fVertex4fSUN=_Lazy_glTexCoord4fVertex4fSUN;
+PFNGLTEXCOORD4FVERTEX4FVSUNPROC pglTexCoord4fVertex4fvSUN=_Lazy_glTexCoord4fVertex4fvSUN;
+PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC pglTexCoord2fColor4ubVertex3fSUN=_Lazy_glTexCoord2fColor4ubVertex3fSUN;
+PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC pglTexCoord2fColor4ubVertex3fvSUN=_Lazy_glTexCoord2fColor4ubVertex3fvSUN;
+PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC pglTexCoord2fColor3fVertex3fSUN=_Lazy_glTexCoord2fColor3fVertex3fSUN;
+PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC pglTexCoord2fColor3fVertex3fvSUN=_Lazy_glTexCoord2fColor3fVertex3fvSUN;
+PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC pglTexCoord2fNormal3fVertex3fSUN=_Lazy_glTexCoord2fNormal3fVertex3fSUN;
+PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC pglTexCoord2fNormal3fVertex3fvSUN=_Lazy_glTexCoord2fNormal3fVertex3fvSUN;
+PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC pglTexCoord2fColor4fNormal3fVertex3fSUN=_Lazy_glTexCoord2fColor4fNormal3fVertex3fSUN;
+PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglTexCoord2fColor4fNormal3fVertex3fvSUN=_Lazy_glTexCoord2fColor4fNormal3fVertex3fvSUN;
+PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC pglTexCoord4fColor4fNormal3fVertex4fSUN=_Lazy_glTexCoord4fColor4fNormal3fVertex4fSUN;
+PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC pglTexCoord4fColor4fNormal3fVertex4fvSUN=_Lazy_glTexCoord4fColor4fNormal3fVertex4fvSUN;
+PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC pglReplacementCodeuiVertex3fSUN=_Lazy_glReplacementCodeuiVertex3fSUN;
+PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC pglReplacementCodeuiVertex3fvSUN=_Lazy_glReplacementCodeuiVertex3fvSUN;
+PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC pglReplacementCodeuiColor4ubVertex3fSUN=_Lazy_glReplacementCodeuiColor4ubVertex3fSUN;
+PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC pglReplacementCodeuiColor4ubVertex3fvSUN=_Lazy_glReplacementCodeuiColor4ubVertex3fvSUN;
+PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC pglReplacementCodeuiColor3fVertex3fSUN=_Lazy_glReplacementCodeuiColor3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC pglReplacementCodeuiColor3fVertex3fvSUN=_Lazy_glReplacementCodeuiColor3fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiNormal3fVertex3fSUN=_Lazy_glReplacementCodeuiNormal3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiNormal3fVertex3fvSUN=_Lazy_glReplacementCodeuiNormal3fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiColor4fNormal3fVertex3fSUN=_Lazy_glReplacementCodeuiColor4fNormal3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiColor4fNormal3fVertex3fvSUN=_Lazy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fVertex3fSUN=_Lazy_glReplacementCodeuiTexCoord2fVertex3fSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fVertex3fvSUN=_Lazy_glReplacementCodeuiTexCoord2fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fNormal3fVertex3fSUN=_Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN=_Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN=_Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN;
+PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN=_Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN;
+#endif 
+
+/* GL_EXT_blend_func_separate */
+
+#ifdef __GLEE_GL_EXT_blend_func_separate
+void __stdcall _Lazy_glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)  {if (GLeeInit()) glBlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);}
+PFNGLBLENDFUNCSEPARATEEXTPROC pglBlendFuncSeparateEXT=_Lazy_glBlendFuncSeparateEXT;
+#endif 
+
+/* GL_INGR_color_clamp */
+
+#ifdef __GLEE_GL_INGR_color_clamp
+#endif 
+
+/* GL_INGR_interlace_read */
+
+#ifdef __GLEE_GL_INGR_interlace_read
+#endif 
+
+/* GL_EXT_stencil_wrap */
+
+#ifdef __GLEE_GL_EXT_stencil_wrap
+#endif 
+
+/* GL_EXT_422_pixels */
+
+#ifdef __GLEE_GL_EXT_422_pixels
+#endif 
+
+/* GL_NV_texgen_reflection */
+
+#ifdef __GLEE_GL_NV_texgen_reflection
+#endif 
+
+/* GL_EXT_texture_cube_map */
+
+#ifdef __GLEE_GL_EXT_texture_cube_map
+#endif 
+
+/* GL_SUN_convolution_border_modes */
+
+#ifdef __GLEE_GL_SUN_convolution_border_modes
+#endif 
+
+/* GL_EXT_texture_env_add */
+
+#ifdef __GLEE_GL_EXT_texture_env_add
+#endif 
+
+/* GL_EXT_texture_lod_bias */
+
+#ifdef __GLEE_GL_EXT_texture_lod_bias
+#endif 
+
+/* GL_EXT_texture_filter_anisotropic */
+
+#ifdef __GLEE_GL_EXT_texture_filter_anisotropic
+#endif 
+
+/* GL_EXT_vertex_weighting */
+
+#ifdef __GLEE_GL_EXT_vertex_weighting
+void __stdcall _Lazy_glVertexWeightfEXT(GLfloat weight)                                   {if (GLeeInit()) glVertexWeightfEXT(weight);}
+void __stdcall _Lazy_glVertexWeightfvEXT(const GLfloat * weight)                          {if (GLeeInit()) glVertexWeightfvEXT(weight);}
+void __stdcall _Lazy_glVertexWeightPointerEXT(GLsizei size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexWeightPointerEXT(size, type, stride, pointer);}
+PFNGLVERTEXWEIGHTFEXTPROC pglVertexWeightfEXT=_Lazy_glVertexWeightfEXT;
+PFNGLVERTEXWEIGHTFVEXTPROC pglVertexWeightfvEXT=_Lazy_glVertexWeightfvEXT;
+PFNGLVERTEXWEIGHTPOINTEREXTPROC pglVertexWeightPointerEXT=_Lazy_glVertexWeightPointerEXT;
+#endif 
+
+/* GL_NV_light_max_exponent */
+
+#ifdef __GLEE_GL_NV_light_max_exponent
+#endif 
+
+/* GL_NV_vertex_array_range */
+
+#ifdef __GLEE_GL_NV_vertex_array_range
+void __stdcall _Lazy_glFlushVertexArrayRangeNV(void)                                      {if (GLeeInit()) glFlushVertexArrayRangeNV();}
+void __stdcall _Lazy_glVertexArrayRangeNV(GLsizei length, const GLvoid * pointer)         {if (GLeeInit()) glVertexArrayRangeNV(length, pointer);}
+PFNGLFLUSHVERTEXARRAYRANGENVPROC pglFlushVertexArrayRangeNV=_Lazy_glFlushVertexArrayRangeNV;
+PFNGLVERTEXARRAYRANGENVPROC pglVertexArrayRangeNV=_Lazy_glVertexArrayRangeNV;
+#endif 
+
+/* GL_NV_register_combiners */
+
+#ifdef __GLEE_GL_NV_register_combiners
+void __stdcall _Lazy_glCombinerParameterfvNV(GLenum pname, const GLfloat * params)        {if (GLeeInit()) glCombinerParameterfvNV(pname, params);}
+void __stdcall _Lazy_glCombinerParameterfNV(GLenum pname, GLfloat param)                  {if (GLeeInit()) glCombinerParameterfNV(pname, param);}
+void __stdcall _Lazy_glCombinerParameterivNV(GLenum pname, const GLint * params)          {if (GLeeInit()) glCombinerParameterivNV(pname, params);}
+void __stdcall _Lazy_glCombinerParameteriNV(GLenum pname, GLint param)                    {if (GLeeInit()) glCombinerParameteriNV(pname, param);}
+void __stdcall _Lazy_glCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)  {if (GLeeInit()) glCombinerInputNV(stage, portion, variable, input, mapping, componentUsage);}
+void __stdcall _Lazy_glCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)  {if (GLeeInit()) glCombinerOutputNV(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum);}
+void __stdcall _Lazy_glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)  {if (GLeeInit()) glFinalCombinerInputNV(variable, input, mapping, componentUsage);}
+void __stdcall _Lazy_glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetCombinerInputParameterfvNV(stage, portion, variable, pname, params);}
+void __stdcall _Lazy_glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params)  {if (GLeeInit()) glGetCombinerInputParameterivNV(stage, portion, variable, pname, params);}
+void __stdcall _Lazy_glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetCombinerOutputParameterfvNV(stage, portion, pname, params);}
+void __stdcall _Lazy_glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint * params)  {if (GLeeInit()) glGetCombinerOutputParameterivNV(stage, portion, pname, params);}
+void __stdcall _Lazy_glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetFinalCombinerInputParameterfvNV(variable, pname, params);}
+void __stdcall _Lazy_glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFinalCombinerInputParameterivNV(variable, pname, params);}
+PFNGLCOMBINERPARAMETERFVNVPROC pglCombinerParameterfvNV=_Lazy_glCombinerParameterfvNV;
+PFNGLCOMBINERPARAMETERFNVPROC pglCombinerParameterfNV=_Lazy_glCombinerParameterfNV;
+PFNGLCOMBINERPARAMETERIVNVPROC pglCombinerParameterivNV=_Lazy_glCombinerParameterivNV;
+PFNGLCOMBINERPARAMETERINVPROC pglCombinerParameteriNV=_Lazy_glCombinerParameteriNV;
+PFNGLCOMBINERINPUTNVPROC pglCombinerInputNV=_Lazy_glCombinerInputNV;
+PFNGLCOMBINEROUTPUTNVPROC pglCombinerOutputNV=_Lazy_glCombinerOutputNV;
+PFNGLFINALCOMBINERINPUTNVPROC pglFinalCombinerInputNV=_Lazy_glFinalCombinerInputNV;
+PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC pglGetCombinerInputParameterfvNV=_Lazy_glGetCombinerInputParameterfvNV;
+PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC pglGetCombinerInputParameterivNV=_Lazy_glGetCombinerInputParameterivNV;
+PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC pglGetCombinerOutputParameterfvNV=_Lazy_glGetCombinerOutputParameterfvNV;
+PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC pglGetCombinerOutputParameterivNV=_Lazy_glGetCombinerOutputParameterivNV;
+PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC pglGetFinalCombinerInputParameterfvNV=_Lazy_glGetFinalCombinerInputParameterfvNV;
+PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC pglGetFinalCombinerInputParameterivNV=_Lazy_glGetFinalCombinerInputParameterivNV;
+#endif 
+
+/* GL_NV_fog_distance */
+
+#ifdef __GLEE_GL_NV_fog_distance
+#endif 
+
+/* GL_NV_texgen_emboss */
+
+#ifdef __GLEE_GL_NV_texgen_emboss
+#endif 
+
+/* GL_NV_blend_square */
+
+#ifdef __GLEE_GL_NV_blend_square
+#endif 
+
+/* GL_NV_texture_env_combine4 */
+
+#ifdef __GLEE_GL_NV_texture_env_combine4
+#endif 
+
+/* GL_MESA_resize_buffers */
+
+#ifdef __GLEE_GL_MESA_resize_buffers
+void __stdcall _Lazy_glResizeBuffersMESA(void)                                            {if (GLeeInit()) glResizeBuffersMESA();}
+PFNGLRESIZEBUFFERSMESAPROC pglResizeBuffersMESA=_Lazy_glResizeBuffersMESA;
+#endif 
+
+/* GL_MESA_window_pos */
+
+#ifdef __GLEE_GL_MESA_window_pos
+void __stdcall _Lazy_glWindowPos2dMESA(GLdouble x, GLdouble y)                            {if (GLeeInit()) glWindowPos2dMESA(x, y);}
+void __stdcall _Lazy_glWindowPos2dvMESA(const GLdouble * v)                               {if (GLeeInit()) glWindowPos2dvMESA(v);}
+void __stdcall _Lazy_glWindowPos2fMESA(GLfloat x, GLfloat y)                              {if (GLeeInit()) glWindowPos2fMESA(x, y);}
+void __stdcall _Lazy_glWindowPos2fvMESA(const GLfloat * v)                                {if (GLeeInit()) glWindowPos2fvMESA(v);}
+void __stdcall _Lazy_glWindowPos2iMESA(GLint x, GLint y)                                  {if (GLeeInit()) glWindowPos2iMESA(x, y);}
+void __stdcall _Lazy_glWindowPos2ivMESA(const GLint * v)                                  {if (GLeeInit()) glWindowPos2ivMESA(v);}
+void __stdcall _Lazy_glWindowPos2sMESA(GLshort x, GLshort y)                              {if (GLeeInit()) glWindowPos2sMESA(x, y);}
+void __stdcall _Lazy_glWindowPos2svMESA(const GLshort * v)                                {if (GLeeInit()) glWindowPos2svMESA(v);}
+void __stdcall _Lazy_glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z)                {if (GLeeInit()) glWindowPos3dMESA(x, y, z);}
+void __stdcall _Lazy_glWindowPos3dvMESA(const GLdouble * v)                               {if (GLeeInit()) glWindowPos3dvMESA(v);}
+void __stdcall _Lazy_glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z)                   {if (GLeeInit()) glWindowPos3fMESA(x, y, z);}
+void __stdcall _Lazy_glWindowPos3fvMESA(const GLfloat * v)                                {if (GLeeInit()) glWindowPos3fvMESA(v);}
+void __stdcall _Lazy_glWindowPos3iMESA(GLint x, GLint y, GLint z)                         {if (GLeeInit()) glWindowPos3iMESA(x, y, z);}
+void __stdcall _Lazy_glWindowPos3ivMESA(const GLint * v)                                  {if (GLeeInit()) glWindowPos3ivMESA(v);}
+void __stdcall _Lazy_glWindowPos3sMESA(GLshort x, GLshort y, GLshort z)                   {if (GLeeInit()) glWindowPos3sMESA(x, y, z);}
+void __stdcall _Lazy_glWindowPos3svMESA(const GLshort * v)                                {if (GLeeInit()) glWindowPos3svMESA(v);}
+void __stdcall _Lazy_glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w)    {if (GLeeInit()) glWindowPos4dMESA(x, y, z, w);}
+void __stdcall _Lazy_glWindowPos4dvMESA(const GLdouble * v)                               {if (GLeeInit()) glWindowPos4dvMESA(v);}
+void __stdcall _Lazy_glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w)        {if (GLeeInit()) glWindowPos4fMESA(x, y, z, w);}
+void __stdcall _Lazy_glWindowPos4fvMESA(const GLfloat * v)                                {if (GLeeInit()) glWindowPos4fvMESA(v);}
+void __stdcall _Lazy_glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w)                {if (GLeeInit()) glWindowPos4iMESA(x, y, z, w);}
+void __stdcall _Lazy_glWindowPos4ivMESA(const GLint * v)                                  {if (GLeeInit()) glWindowPos4ivMESA(v);}
+void __stdcall _Lazy_glWindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w)        {if (GLeeInit()) glWindowPos4sMESA(x, y, z, w);}
+void __stdcall _Lazy_glWindowPos4svMESA(const GLshort * v)                                {if (GLeeInit()) glWindowPos4svMESA(v);}
+PFNGLWINDOWPOS2DMESAPROC pglWindowPos2dMESA=_Lazy_glWindowPos2dMESA;
+PFNGLWINDOWPOS2DVMESAPROC pglWindowPos2dvMESA=_Lazy_glWindowPos2dvMESA;
+PFNGLWINDOWPOS2FMESAPROC pglWindowPos2fMESA=_Lazy_glWindowPos2fMESA;
+PFNGLWINDOWPOS2FVMESAPROC pglWindowPos2fvMESA=_Lazy_glWindowPos2fvMESA;
+PFNGLWINDOWPOS2IMESAPROC pglWindowPos2iMESA=_Lazy_glWindowPos2iMESA;
+PFNGLWINDOWPOS2IVMESAPROC pglWindowPos2ivMESA=_Lazy_glWindowPos2ivMESA;
+PFNGLWINDOWPOS2SMESAPROC pglWindowPos2sMESA=_Lazy_glWindowPos2sMESA;
+PFNGLWINDOWPOS2SVMESAPROC pglWindowPos2svMESA=_Lazy_glWindowPos2svMESA;
+PFNGLWINDOWPOS3DMESAPROC pglWindowPos3dMESA=_Lazy_glWindowPos3dMESA;
+PFNGLWINDOWPOS3DVMESAPROC pglWindowPos3dvMESA=_Lazy_glWindowPos3dvMESA;
+PFNGLWINDOWPOS3FMESAPROC pglWindowPos3fMESA=_Lazy_glWindowPos3fMESA;
+PFNGLWINDOWPOS3FVMESAPROC pglWindowPos3fvMESA=_Lazy_glWindowPos3fvMESA;
+PFNGLWINDOWPOS3IMESAPROC pglWindowPos3iMESA=_Lazy_glWindowPos3iMESA;
+PFNGLWINDOWPOS3IVMESAPROC pglWindowPos3ivMESA=_Lazy_glWindowPos3ivMESA;
+PFNGLWINDOWPOS3SMESAPROC pglWindowPos3sMESA=_Lazy_glWindowPos3sMESA;
+PFNGLWINDOWPOS3SVMESAPROC pglWindowPos3svMESA=_Lazy_glWindowPos3svMESA;
+PFNGLWINDOWPOS4DMESAPROC pglWindowPos4dMESA=_Lazy_glWindowPos4dMESA;
+PFNGLWINDOWPOS4DVMESAPROC pglWindowPos4dvMESA=_Lazy_glWindowPos4dvMESA;
+PFNGLWINDOWPOS4FMESAPROC pglWindowPos4fMESA=_Lazy_glWindowPos4fMESA;
+PFNGLWINDOWPOS4FVMESAPROC pglWindowPos4fvMESA=_Lazy_glWindowPos4fvMESA;
+PFNGLWINDOWPOS4IMESAPROC pglWindowPos4iMESA=_Lazy_glWindowPos4iMESA;
+PFNGLWINDOWPOS4IVMESAPROC pglWindowPos4ivMESA=_Lazy_glWindowPos4ivMESA;
+PFNGLWINDOWPOS4SMESAPROC pglWindowPos4sMESA=_Lazy_glWindowPos4sMESA;
+PFNGLWINDOWPOS4SVMESAPROC pglWindowPos4svMESA=_Lazy_glWindowPos4svMESA;
+#endif 
+
+/* GL_EXT_texture_compression_s3tc */
+
+#ifdef __GLEE_GL_EXT_texture_compression_s3tc
+#endif 
+
+/* GL_IBM_cull_vertex */
+
+#ifdef __GLEE_GL_IBM_cull_vertex
+#endif 
+
+/* GL_IBM_multimode_draw_arrays */
+
+#ifdef __GLEE_GL_IBM_multimode_draw_arrays
+void __stdcall _Lazy_glMultiModeDrawArraysIBM(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride)  {if (GLeeInit()) glMultiModeDrawArraysIBM(mode, first, count, primcount, modestride);}
+void __stdcall _Lazy_glMultiModeDrawElementsIBM(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei primcount, GLint modestride)  {if (GLeeInit()) glMultiModeDrawElementsIBM(mode, count, type, indices, primcount, modestride);}
+PFNGLMULTIMODEDRAWARRAYSIBMPROC pglMultiModeDrawArraysIBM=_Lazy_glMultiModeDrawArraysIBM;
+PFNGLMULTIMODEDRAWELEMENTSIBMPROC pglMultiModeDrawElementsIBM=_Lazy_glMultiModeDrawElementsIBM;
+#endif 
+
+/* GL_IBM_vertex_array_lists */
+
+#ifdef __GLEE_GL_IBM_vertex_array_lists
+void __stdcall _Lazy_glColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glColorPointerListIBM(size, type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glSecondaryColorPointerListIBM(size, type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glEdgeFlagPointerListIBM(GLint stride, const GLboolean* * pointer, GLint ptrstride)  {if (GLeeInit()) glEdgeFlagPointerListIBM(stride, pointer, ptrstride);}
+void __stdcall _Lazy_glFogCoordPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glFogCoordPointerListIBM(type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glIndexPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glIndexPointerListIBM(type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glNormalPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glNormalPointerListIBM(type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glTexCoordPointerListIBM(size, type, stride, pointer, ptrstride);}
+void __stdcall _Lazy_glVertexPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride)  {if (GLeeInit()) glVertexPointerListIBM(size, type, stride, pointer, ptrstride);}
+PFNGLCOLORPOINTERLISTIBMPROC pglColorPointerListIBM=_Lazy_glColorPointerListIBM;
+PFNGLSECONDARYCOLORPOINTERLISTIBMPROC pglSecondaryColorPointerListIBM=_Lazy_glSecondaryColorPointerListIBM;
+PFNGLEDGEFLAGPOINTERLISTIBMPROC pglEdgeFlagPointerListIBM=_Lazy_glEdgeFlagPointerListIBM;
+PFNGLFOGCOORDPOINTERLISTIBMPROC pglFogCoordPointerListIBM=_Lazy_glFogCoordPointerListIBM;
+PFNGLINDEXPOINTERLISTIBMPROC pglIndexPointerListIBM=_Lazy_glIndexPointerListIBM;
+PFNGLNORMALPOINTERLISTIBMPROC pglNormalPointerListIBM=_Lazy_glNormalPointerListIBM;
+PFNGLTEXCOORDPOINTERLISTIBMPROC pglTexCoordPointerListIBM=_Lazy_glTexCoordPointerListIBM;
+PFNGLVERTEXPOINTERLISTIBMPROC pglVertexPointerListIBM=_Lazy_glVertexPointerListIBM;
+#endif 
+
+/* GL_SGIX_subsample */
+
+#ifdef __GLEE_GL_SGIX_subsample
+#endif 
+
+/* GL_SGIX_ycrcb_subsample */
+
+#ifdef __GLEE_GL_SGIX_ycrcb_subsample
+#endif 
+
+/* GL_SGIX_ycrcba */
+
+#ifdef __GLEE_GL_SGIX_ycrcba
+#endif 
+
+/* GL_SGI_depth_pass_instrument */
+
+#ifdef __GLEE_GL_SGI_depth_pass_instrument
+#endif 
+
+/* GL_3DFX_texture_compression_FXT1 */
+
+#ifdef __GLEE_GL_3DFX_texture_compression_FXT1
+#endif 
+
+/* GL_3DFX_multisample */
+
+#ifdef __GLEE_GL_3DFX_multisample
+#endif 
+
+/* GL_3DFX_tbuffer */
+
+#ifdef __GLEE_GL_3DFX_tbuffer
+void __stdcall _Lazy_glTbufferMask3DFX(GLuint mask)                                       {if (GLeeInit()) glTbufferMask3DFX(mask);}
+PFNGLTBUFFERMASK3DFXPROC pglTbufferMask3DFX=_Lazy_glTbufferMask3DFX;
+#endif 
+
+/* GL_EXT_multisample */
+
+#ifdef __GLEE_GL_EXT_multisample
+void __stdcall _Lazy_glSampleMaskEXT(GLclampf value, GLboolean invert)                    {if (GLeeInit()) glSampleMaskEXT(value, invert);}
+void __stdcall _Lazy_glSamplePatternEXT(GLenum pattern)                                   {if (GLeeInit()) glSamplePatternEXT(pattern);}
+PFNGLSAMPLEMASKEXTPROC pglSampleMaskEXT=_Lazy_glSampleMaskEXT;
+PFNGLSAMPLEPATTERNEXTPROC pglSamplePatternEXT=_Lazy_glSamplePatternEXT;
+#endif 
+
+/* GL_SGIX_vertex_preclip */
+
+#ifdef __GLEE_GL_SGIX_vertex_preclip
+#endif 
+
+/* GL_SGIX_convolution_accuracy */
+
+#ifdef __GLEE_GL_SGIX_convolution_accuracy
+#endif 
+
+/* GL_SGIX_resample */
+
+#ifdef __GLEE_GL_SGIX_resample
+#endif 
+
+/* GL_SGIS_point_line_texgen */
+
+#ifdef __GLEE_GL_SGIS_point_line_texgen
+#endif 
+
+/* GL_SGIS_texture_color_mask */
+
+#ifdef __GLEE_GL_SGIS_texture_color_mask
+void __stdcall _Lazy_glTextureColorMaskSGIS(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)  {if (GLeeInit()) glTextureColorMaskSGIS(red, green, blue, alpha);}
+PFNGLTEXTURECOLORMASKSGISPROC pglTextureColorMaskSGIS=_Lazy_glTextureColorMaskSGIS;
+#endif 
+
+/* GL_EXT_texture_env_dot3 */
+
+#ifdef __GLEE_GL_EXT_texture_env_dot3
+#endif 
+
+/* GL_ATI_texture_mirror_once */
+
+#ifdef __GLEE_GL_ATI_texture_mirror_once
+#endif 
+
+/* GL_NV_fence */
+
+#ifdef __GLEE_GL_NV_fence
+void __stdcall _Lazy_glDeleteFencesNV(GLsizei n, const GLuint * fences)                   {if (GLeeInit()) glDeleteFencesNV(n, fences);}
+void __stdcall _Lazy_glGenFencesNV(GLsizei n, GLuint * fences)                            {if (GLeeInit()) glGenFencesNV(n, fences);}
+GLboolean __stdcall _Lazy_glIsFenceNV(GLuint fence)                                       {if (GLeeInit()) return glIsFenceNV(fence); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_glTestFenceNV(GLuint fence)                                     {if (GLeeInit()) return glTestFenceNV(fence); return (GLboolean)0;}
+void __stdcall _Lazy_glGetFenceivNV(GLuint fence, GLenum pname, GLint * params)           {if (GLeeInit()) glGetFenceivNV(fence, pname, params);}
+void __stdcall _Lazy_glFinishFenceNV(GLuint fence)                                        {if (GLeeInit()) glFinishFenceNV(fence);}
+void __stdcall _Lazy_glSetFenceNV(GLuint fence, GLenum condition)                         {if (GLeeInit()) glSetFenceNV(fence, condition);}
+PFNGLDELETEFENCESNVPROC pglDeleteFencesNV=_Lazy_glDeleteFencesNV;
+PFNGLGENFENCESNVPROC pglGenFencesNV=_Lazy_glGenFencesNV;
+PFNGLISFENCENVPROC pglIsFenceNV=_Lazy_glIsFenceNV;
+PFNGLTESTFENCENVPROC pglTestFenceNV=_Lazy_glTestFenceNV;
+PFNGLGETFENCEIVNVPROC pglGetFenceivNV=_Lazy_glGetFenceivNV;
+PFNGLFINISHFENCENVPROC pglFinishFenceNV=_Lazy_glFinishFenceNV;
+PFNGLSETFENCENVPROC pglSetFenceNV=_Lazy_glSetFenceNV;
+#endif 
+
+/* GL_IBM_texture_mirrored_repeat */
+
+#ifdef __GLEE_GL_IBM_texture_mirrored_repeat
+#endif 
+
+/* GL_NV_evaluators */
+
+#ifdef __GLEE_GL_NV_evaluators
+void __stdcall _Lazy_glMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid * points)  {if (GLeeInit()) glMapControlPointsNV(target, index, type, ustride, vstride, uorder, vorder, packed, points);}
+void __stdcall _Lazy_glMapParameterivNV(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glMapParameterivNV(target, pname, params);}
+void __stdcall _Lazy_glMapParameterfvNV(GLenum target, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glMapParameterfvNV(target, pname, params);}
+void __stdcall _Lazy_glGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid * points)  {if (GLeeInit()) glGetMapControlPointsNV(target, index, type, ustride, vstride, packed, points);}
+void __stdcall _Lazy_glGetMapParameterivNV(GLenum target, GLenum pname, GLint * params)   {if (GLeeInit()) glGetMapParameterivNV(target, pname, params);}
+void __stdcall _Lazy_glGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetMapParameterfvNV(target, pname, params);}
+void __stdcall _Lazy_glGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint * params)  {if (GLeeInit()) glGetMapAttribParameterivNV(target, index, pname, params);}
+void __stdcall _Lazy_glGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetMapAttribParameterfvNV(target, index, pname, params);}
+void __stdcall _Lazy_glEvalMapsNV(GLenum target, GLenum mode)                             {if (GLeeInit()) glEvalMapsNV(target, mode);}
+PFNGLMAPCONTROLPOINTSNVPROC pglMapControlPointsNV=_Lazy_glMapControlPointsNV;
+PFNGLMAPPARAMETERIVNVPROC pglMapParameterivNV=_Lazy_glMapParameterivNV;
+PFNGLMAPPARAMETERFVNVPROC pglMapParameterfvNV=_Lazy_glMapParameterfvNV;
+PFNGLGETMAPCONTROLPOINTSNVPROC pglGetMapControlPointsNV=_Lazy_glGetMapControlPointsNV;
+PFNGLGETMAPPARAMETERIVNVPROC pglGetMapParameterivNV=_Lazy_glGetMapParameterivNV;
+PFNGLGETMAPPARAMETERFVNVPROC pglGetMapParameterfvNV=_Lazy_glGetMapParameterfvNV;
+PFNGLGETMAPATTRIBPARAMETERIVNVPROC pglGetMapAttribParameterivNV=_Lazy_glGetMapAttribParameterivNV;
+PFNGLGETMAPATTRIBPARAMETERFVNVPROC pglGetMapAttribParameterfvNV=_Lazy_glGetMapAttribParameterfvNV;
+PFNGLEVALMAPSNVPROC pglEvalMapsNV=_Lazy_glEvalMapsNV;
+#endif 
+
+/* GL_NV_packed_depth_stencil */
+
+#ifdef __GLEE_GL_NV_packed_depth_stencil
+#endif 
+
+/* GL_NV_register_combiners2 */
+
+#ifdef __GLEE_GL_NV_register_combiners2
+void __stdcall _Lazy_glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glCombinerStageParameterfvNV(stage, pname, params);}
+void __stdcall _Lazy_glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetCombinerStageParameterfvNV(stage, pname, params);}
+PFNGLCOMBINERSTAGEPARAMETERFVNVPROC pglCombinerStageParameterfvNV=_Lazy_glCombinerStageParameterfvNV;
+PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC pglGetCombinerStageParameterfvNV=_Lazy_glGetCombinerStageParameterfvNV;
+#endif 
+
+/* GL_NV_texture_compression_vtc */
+
+#ifdef __GLEE_GL_NV_texture_compression_vtc
+#endif 
+
+/* GL_NV_texture_rectangle */
+
+#ifdef __GLEE_GL_NV_texture_rectangle
+#endif 
+
+/* GL_NV_texture_shader */
+
+#ifdef __GLEE_GL_NV_texture_shader
+#endif 
+
+/* GL_NV_texture_shader2 */
+
+#ifdef __GLEE_GL_NV_texture_shader2
+#endif 
+
+/* GL_NV_vertex_array_range2 */
+
+#ifdef __GLEE_GL_NV_vertex_array_range2
+#endif 
+
+/* GL_NV_vertex_program */
+
+#ifdef __GLEE_GL_NV_vertex_program
+GLboolean __stdcall _Lazy_glAreProgramsResidentNV(GLsizei n, const GLuint * programs, GLboolean * residences)  {if (GLeeInit()) return glAreProgramsResidentNV(n, programs, residences); return (GLboolean)0;}
+void __stdcall _Lazy_glBindProgramNV(GLenum target, GLuint id)                            {if (GLeeInit()) glBindProgramNV(target, id);}
+void __stdcall _Lazy_glDeleteProgramsNV(GLsizei n, const GLuint * programs)               {if (GLeeInit()) glDeleteProgramsNV(n, programs);}
+void __stdcall _Lazy_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat * params)  {if (GLeeInit()) glExecuteProgramNV(target, id, params);}
+void __stdcall _Lazy_glGenProgramsNV(GLsizei n, GLuint * programs)                        {if (GLeeInit()) glGenProgramsNV(n, programs);}
+void __stdcall _Lazy_glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble * params)  {if (GLeeInit()) glGetProgramParameterdvNV(target, index, pname, params);}
+void __stdcall _Lazy_glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetProgramParameterfvNV(target, index, pname, params);}
+void __stdcall _Lazy_glGetProgramivNV(GLuint id, GLenum pname, GLint * params)            {if (GLeeInit()) glGetProgramivNV(id, pname, params);}
+void __stdcall _Lazy_glGetProgramStringNV(GLuint id, GLenum pname, GLubyte * program)     {if (GLeeInit()) glGetProgramStringNV(id, pname, program);}
+void __stdcall _Lazy_glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint * params)  {if (GLeeInit()) glGetTrackMatrixivNV(target, address, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble * params)  {if (GLeeInit()) glGetVertexAttribdvNV(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetVertexAttribfvNV(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint * params)    {if (GLeeInit()) glGetVertexAttribivNV(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid* * pointer)  {if (GLeeInit()) glGetVertexAttribPointervNV(index, pname, pointer);}
+GLboolean __stdcall _Lazy_glIsProgramNV(GLuint id)                                        {if (GLeeInit()) return glIsProgramNV(id); return (GLboolean)0;}
+void __stdcall _Lazy_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program)  {if (GLeeInit()) glLoadProgramNV(target, id, len, program);}
+void __stdcall _Lazy_glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glProgramParameter4dNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble * v)  {if (GLeeInit()) glProgramParameter4dvNV(target, index, v);}
+void __stdcall _Lazy_glProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glProgramParameter4fNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat * v)  {if (GLeeInit()) glProgramParameter4fvNV(target, index, v);}
+void __stdcall _Lazy_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint count, const GLdouble * v)  {if (GLeeInit()) glProgramParameters4dvNV(target, index, count, v);}
+void __stdcall _Lazy_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint count, const GLfloat * v)  {if (GLeeInit()) glProgramParameters4fvNV(target, index, count, v);}
+void __stdcall _Lazy_glRequestResidentProgramsNV(GLsizei n, const GLuint * programs)      {if (GLeeInit()) glRequestResidentProgramsNV(n, programs);}
+void __stdcall _Lazy_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform)  {if (GLeeInit()) glTrackMatrixNV(target, address, matrix, transform);}
+void __stdcall _Lazy_glVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexAttribPointerNV(index, fsize, type, stride, pointer);}
+void __stdcall _Lazy_glVertexAttrib1dNV(GLuint index, GLdouble x)                         {if (GLeeInit()) glVertexAttrib1dNV(index, x);}
+void __stdcall _Lazy_glVertexAttrib1dvNV(GLuint index, const GLdouble * v)                {if (GLeeInit()) glVertexAttrib1dvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib1fNV(GLuint index, GLfloat x)                          {if (GLeeInit()) glVertexAttrib1fNV(index, x);}
+void __stdcall _Lazy_glVertexAttrib1fvNV(GLuint index, const GLfloat * v)                 {if (GLeeInit()) glVertexAttrib1fvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib1sNV(GLuint index, GLshort x)                          {if (GLeeInit()) glVertexAttrib1sNV(index, x);}
+void __stdcall _Lazy_glVertexAttrib1svNV(GLuint index, const GLshort * v)                 {if (GLeeInit()) glVertexAttrib1svNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)             {if (GLeeInit()) glVertexAttrib2dNV(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2dvNV(GLuint index, const GLdouble * v)                {if (GLeeInit()) glVertexAttrib2dvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y)               {if (GLeeInit()) glVertexAttrib2fNV(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2fvNV(GLuint index, const GLfloat * v)                 {if (GLeeInit()) glVertexAttrib2fvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y)               {if (GLeeInit()) glVertexAttrib2sNV(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2svNV(GLuint index, const GLshort * v)                 {if (GLeeInit()) glVertexAttrib2svNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)  {if (GLeeInit()) glVertexAttrib3dNV(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3dvNV(GLuint index, const GLdouble * v)                {if (GLeeInit()) glVertexAttrib3dvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z)    {if (GLeeInit()) glVertexAttrib3fNV(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3fvNV(GLuint index, const GLfloat * v)                 {if (GLeeInit()) glVertexAttrib3fvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)    {if (GLeeInit()) glVertexAttrib3sNV(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3svNV(GLuint index, const GLshort * v)                 {if (GLeeInit()) glVertexAttrib3svNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glVertexAttrib4dNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4dvNV(GLuint index, const GLdouble * v)                {if (GLeeInit()) glVertexAttrib4dvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glVertexAttrib4fNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4fvNV(GLuint index, const GLfloat * v)                 {if (GLeeInit()) glVertexAttrib4fvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)  {if (GLeeInit()) glVertexAttrib4sNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4svNV(GLuint index, const GLshort * v)                 {if (GLeeInit()) glVertexAttrib4svNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)  {if (GLeeInit()) glVertexAttrib4ubNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4ubvNV(GLuint index, const GLubyte * v)                {if (GLeeInit()) glVertexAttrib4ubvNV(index, v);}
+void __stdcall _Lazy_glVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble * v)  {if (GLeeInit()) glVertexAttribs1dvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat * v)  {if (GLeeInit()) glVertexAttribs1fvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort * v)  {if (GLeeInit()) glVertexAttribs1svNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble * v)  {if (GLeeInit()) glVertexAttribs2dvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat * v)  {if (GLeeInit()) glVertexAttribs2fvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort * v)  {if (GLeeInit()) glVertexAttribs2svNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble * v)  {if (GLeeInit()) glVertexAttribs3dvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat * v)  {if (GLeeInit()) glVertexAttribs3fvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort * v)  {if (GLeeInit()) glVertexAttribs3svNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble * v)  {if (GLeeInit()) glVertexAttribs4dvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat * v)  {if (GLeeInit()) glVertexAttribs4fvNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort * v)  {if (GLeeInit()) glVertexAttribs4svNV(index, count, v);}
+void __stdcall _Lazy_glVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte * v)  {if (GLeeInit()) glVertexAttribs4ubvNV(index, count, v);}
+PFNGLAREPROGRAMSRESIDENTNVPROC pglAreProgramsResidentNV=_Lazy_glAreProgramsResidentNV;
+PFNGLBINDPROGRAMNVPROC pglBindProgramNV=_Lazy_glBindProgramNV;
+PFNGLDELETEPROGRAMSNVPROC pglDeleteProgramsNV=_Lazy_glDeleteProgramsNV;
+PFNGLEXECUTEPROGRAMNVPROC pglExecuteProgramNV=_Lazy_glExecuteProgramNV;
+PFNGLGENPROGRAMSNVPROC pglGenProgramsNV=_Lazy_glGenProgramsNV;
+PFNGLGETPROGRAMPARAMETERDVNVPROC pglGetProgramParameterdvNV=_Lazy_glGetProgramParameterdvNV;
+PFNGLGETPROGRAMPARAMETERFVNVPROC pglGetProgramParameterfvNV=_Lazy_glGetProgramParameterfvNV;
+PFNGLGETPROGRAMIVNVPROC pglGetProgramivNV=_Lazy_glGetProgramivNV;
+PFNGLGETPROGRAMSTRINGNVPROC pglGetProgramStringNV=_Lazy_glGetProgramStringNV;
+PFNGLGETTRACKMATRIXIVNVPROC pglGetTrackMatrixivNV=_Lazy_glGetTrackMatrixivNV;
+PFNGLGETVERTEXATTRIBDVNVPROC pglGetVertexAttribdvNV=_Lazy_glGetVertexAttribdvNV;
+PFNGLGETVERTEXATTRIBFVNVPROC pglGetVertexAttribfvNV=_Lazy_glGetVertexAttribfvNV;
+PFNGLGETVERTEXATTRIBIVNVPROC pglGetVertexAttribivNV=_Lazy_glGetVertexAttribivNV;
+PFNGLGETVERTEXATTRIBPOINTERVNVPROC pglGetVertexAttribPointervNV=_Lazy_glGetVertexAttribPointervNV;
+PFNGLISPROGRAMNVPROC pglIsProgramNV=_Lazy_glIsProgramNV;
+PFNGLLOADPROGRAMNVPROC pglLoadProgramNV=_Lazy_glLoadProgramNV;
+PFNGLPROGRAMPARAMETER4DNVPROC pglProgramParameter4dNV=_Lazy_glProgramParameter4dNV;
+PFNGLPROGRAMPARAMETER4DVNVPROC pglProgramParameter4dvNV=_Lazy_glProgramParameter4dvNV;
+PFNGLPROGRAMPARAMETER4FNVPROC pglProgramParameter4fNV=_Lazy_glProgramParameter4fNV;
+PFNGLPROGRAMPARAMETER4FVNVPROC pglProgramParameter4fvNV=_Lazy_glProgramParameter4fvNV;
+PFNGLPROGRAMPARAMETERS4DVNVPROC pglProgramParameters4dvNV=_Lazy_glProgramParameters4dvNV;
+PFNGLPROGRAMPARAMETERS4FVNVPROC pglProgramParameters4fvNV=_Lazy_glProgramParameters4fvNV;
+PFNGLREQUESTRESIDENTPROGRAMSNVPROC pglRequestResidentProgramsNV=_Lazy_glRequestResidentProgramsNV;
+PFNGLTRACKMATRIXNVPROC pglTrackMatrixNV=_Lazy_glTrackMatrixNV;
+PFNGLVERTEXATTRIBPOINTERNVPROC pglVertexAttribPointerNV=_Lazy_glVertexAttribPointerNV;
+PFNGLVERTEXATTRIB1DNVPROC pglVertexAttrib1dNV=_Lazy_glVertexAttrib1dNV;
+PFNGLVERTEXATTRIB1DVNVPROC pglVertexAttrib1dvNV=_Lazy_glVertexAttrib1dvNV;
+PFNGLVERTEXATTRIB1FNVPROC pglVertexAttrib1fNV=_Lazy_glVertexAttrib1fNV;
+PFNGLVERTEXATTRIB1FVNVPROC pglVertexAttrib1fvNV=_Lazy_glVertexAttrib1fvNV;
+PFNGLVERTEXATTRIB1SNVPROC pglVertexAttrib1sNV=_Lazy_glVertexAttrib1sNV;
+PFNGLVERTEXATTRIB1SVNVPROC pglVertexAttrib1svNV=_Lazy_glVertexAttrib1svNV;
+PFNGLVERTEXATTRIB2DNVPROC pglVertexAttrib2dNV=_Lazy_glVertexAttrib2dNV;
+PFNGLVERTEXATTRIB2DVNVPROC pglVertexAttrib2dvNV=_Lazy_glVertexAttrib2dvNV;
+PFNGLVERTEXATTRIB2FNVPROC pglVertexAttrib2fNV=_Lazy_glVertexAttrib2fNV;
+PFNGLVERTEXATTRIB2FVNVPROC pglVertexAttrib2fvNV=_Lazy_glVertexAttrib2fvNV;
+PFNGLVERTEXATTRIB2SNVPROC pglVertexAttrib2sNV=_Lazy_glVertexAttrib2sNV;
+PFNGLVERTEXATTRIB2SVNVPROC pglVertexAttrib2svNV=_Lazy_glVertexAttrib2svNV;
+PFNGLVERTEXATTRIB3DNVPROC pglVertexAttrib3dNV=_Lazy_glVertexAttrib3dNV;
+PFNGLVERTEXATTRIB3DVNVPROC pglVertexAttrib3dvNV=_Lazy_glVertexAttrib3dvNV;
+PFNGLVERTEXATTRIB3FNVPROC pglVertexAttrib3fNV=_Lazy_glVertexAttrib3fNV;
+PFNGLVERTEXATTRIB3FVNVPROC pglVertexAttrib3fvNV=_Lazy_glVertexAttrib3fvNV;
+PFNGLVERTEXATTRIB3SNVPROC pglVertexAttrib3sNV=_Lazy_glVertexAttrib3sNV;
+PFNGLVERTEXATTRIB3SVNVPROC pglVertexAttrib3svNV=_Lazy_glVertexAttrib3svNV;
+PFNGLVERTEXATTRIB4DNVPROC pglVertexAttrib4dNV=_Lazy_glVertexAttrib4dNV;
+PFNGLVERTEXATTRIB4DVNVPROC pglVertexAttrib4dvNV=_Lazy_glVertexAttrib4dvNV;
+PFNGLVERTEXATTRIB4FNVPROC pglVertexAttrib4fNV=_Lazy_glVertexAttrib4fNV;
+PFNGLVERTEXATTRIB4FVNVPROC pglVertexAttrib4fvNV=_Lazy_glVertexAttrib4fvNV;
+PFNGLVERTEXATTRIB4SNVPROC pglVertexAttrib4sNV=_Lazy_glVertexAttrib4sNV;
+PFNGLVERTEXATTRIB4SVNVPROC pglVertexAttrib4svNV=_Lazy_glVertexAttrib4svNV;
+PFNGLVERTEXATTRIB4UBNVPROC pglVertexAttrib4ubNV=_Lazy_glVertexAttrib4ubNV;
+PFNGLVERTEXATTRIB4UBVNVPROC pglVertexAttrib4ubvNV=_Lazy_glVertexAttrib4ubvNV;
+PFNGLVERTEXATTRIBS1DVNVPROC pglVertexAttribs1dvNV=_Lazy_glVertexAttribs1dvNV;
+PFNGLVERTEXATTRIBS1FVNVPROC pglVertexAttribs1fvNV=_Lazy_glVertexAttribs1fvNV;
+PFNGLVERTEXATTRIBS1SVNVPROC pglVertexAttribs1svNV=_Lazy_glVertexAttribs1svNV;
+PFNGLVERTEXATTRIBS2DVNVPROC pglVertexAttribs2dvNV=_Lazy_glVertexAttribs2dvNV;
+PFNGLVERTEXATTRIBS2FVNVPROC pglVertexAttribs2fvNV=_Lazy_glVertexAttribs2fvNV;
+PFNGLVERTEXATTRIBS2SVNVPROC pglVertexAttribs2svNV=_Lazy_glVertexAttribs2svNV;
+PFNGLVERTEXATTRIBS3DVNVPROC pglVertexAttribs3dvNV=_Lazy_glVertexAttribs3dvNV;
+PFNGLVERTEXATTRIBS3FVNVPROC pglVertexAttribs3fvNV=_Lazy_glVertexAttribs3fvNV;
+PFNGLVERTEXATTRIBS3SVNVPROC pglVertexAttribs3svNV=_Lazy_glVertexAttribs3svNV;
+PFNGLVERTEXATTRIBS4DVNVPROC pglVertexAttribs4dvNV=_Lazy_glVertexAttribs4dvNV;
+PFNGLVERTEXATTRIBS4FVNVPROC pglVertexAttribs4fvNV=_Lazy_glVertexAttribs4fvNV;
+PFNGLVERTEXATTRIBS4SVNVPROC pglVertexAttribs4svNV=_Lazy_glVertexAttribs4svNV;
+PFNGLVERTEXATTRIBS4UBVNVPROC pglVertexAttribs4ubvNV=_Lazy_glVertexAttribs4ubvNV;
+#endif 
+
+/* GL_SGIX_texture_coordinate_clamp */
+
+#ifdef __GLEE_GL_SGIX_texture_coordinate_clamp
+#endif 
+
+/* GL_SGIX_scalebias_hint */
+
+#ifdef __GLEE_GL_SGIX_scalebias_hint
+#endif 
+
+/* GL_OML_interlace */
+
+#ifdef __GLEE_GL_OML_interlace
+#endif 
+
+/* GL_OML_subsample */
+
+#ifdef __GLEE_GL_OML_subsample
+#endif 
+
+/* GL_OML_resample */
+
+#ifdef __GLEE_GL_OML_resample
+#endif 
+
+/* GL_NV_copy_depth_to_color */
+
+#ifdef __GLEE_GL_NV_copy_depth_to_color
+#endif 
+
+/* GL_ATI_envmap_bumpmap */
+
+#ifdef __GLEE_GL_ATI_envmap_bumpmap
+void __stdcall _Lazy_glTexBumpParameterivATI(GLenum pname, const GLint * param)           {if (GLeeInit()) glTexBumpParameterivATI(pname, param);}
+void __stdcall _Lazy_glTexBumpParameterfvATI(GLenum pname, const GLfloat * param)         {if (GLeeInit()) glTexBumpParameterfvATI(pname, param);}
+void __stdcall _Lazy_glGetTexBumpParameterivATI(GLenum pname, GLint * param)              {if (GLeeInit()) glGetTexBumpParameterivATI(pname, param);}
+void __stdcall _Lazy_glGetTexBumpParameterfvATI(GLenum pname, GLfloat * param)            {if (GLeeInit()) glGetTexBumpParameterfvATI(pname, param);}
+PFNGLTEXBUMPPARAMETERIVATIPROC pglTexBumpParameterivATI=_Lazy_glTexBumpParameterivATI;
+PFNGLTEXBUMPPARAMETERFVATIPROC pglTexBumpParameterfvATI=_Lazy_glTexBumpParameterfvATI;
+PFNGLGETTEXBUMPPARAMETERIVATIPROC pglGetTexBumpParameterivATI=_Lazy_glGetTexBumpParameterivATI;
+PFNGLGETTEXBUMPPARAMETERFVATIPROC pglGetTexBumpParameterfvATI=_Lazy_glGetTexBumpParameterfvATI;
+#endif 
+
+/* GL_ATI_fragment_shader */
+
+#ifdef __GLEE_GL_ATI_fragment_shader
+GLuint __stdcall _Lazy_glGenFragmentShadersATI(GLuint range)                              {if (GLeeInit()) return glGenFragmentShadersATI(range); return (GLuint)0;}
+void __stdcall _Lazy_glBindFragmentShaderATI(GLuint id)                                   {if (GLeeInit()) glBindFragmentShaderATI(id);}
+void __stdcall _Lazy_glDeleteFragmentShaderATI(GLuint id)                                 {if (GLeeInit()) glDeleteFragmentShaderATI(id);}
+void __stdcall _Lazy_glBeginFragmentShaderATI(void)                                       {if (GLeeInit()) glBeginFragmentShaderATI();}
+void __stdcall _Lazy_glEndFragmentShaderATI(void)                                         {if (GLeeInit()) glEndFragmentShaderATI();}
+void __stdcall _Lazy_glPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle)          {if (GLeeInit()) glPassTexCoordATI(dst, coord, swizzle);}
+void __stdcall _Lazy_glSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle)            {if (GLeeInit()) glSampleMapATI(dst, interp, swizzle);}
+void __stdcall _Lazy_glColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)  {if (GLeeInit()) glColorFragmentOp1ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod);}
+void __stdcall _Lazy_glColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)  {if (GLeeInit()) glColorFragmentOp2ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod);}
+void __stdcall _Lazy_glColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)  {if (GLeeInit()) glColorFragmentOp3ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);}
+void __stdcall _Lazy_glAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)  {if (GLeeInit()) glAlphaFragmentOp1ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod);}
+void __stdcall _Lazy_glAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)  {if (GLeeInit()) glAlphaFragmentOp2ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod);}
+void __stdcall _Lazy_glAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)  {if (GLeeInit()) glAlphaFragmentOp3ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);}
+void __stdcall _Lazy_glSetFragmentShaderConstantATI(GLuint dst, const GLfloat * value)    {if (GLeeInit()) glSetFragmentShaderConstantATI(dst, value);}
+PFNGLGENFRAGMENTSHADERSATIPROC pglGenFragmentShadersATI=_Lazy_glGenFragmentShadersATI;
+PFNGLBINDFRAGMENTSHADERATIPROC pglBindFragmentShaderATI=_Lazy_glBindFragmentShaderATI;
+PFNGLDELETEFRAGMENTSHADERATIPROC pglDeleteFragmentShaderATI=_Lazy_glDeleteFragmentShaderATI;
+PFNGLBEGINFRAGMENTSHADERATIPROC pglBeginFragmentShaderATI=_Lazy_glBeginFragmentShaderATI;
+PFNGLENDFRAGMENTSHADERATIPROC pglEndFragmentShaderATI=_Lazy_glEndFragmentShaderATI;
+PFNGLPASSTEXCOORDATIPROC pglPassTexCoordATI=_Lazy_glPassTexCoordATI;
+PFNGLSAMPLEMAPATIPROC pglSampleMapATI=_Lazy_glSampleMapATI;
+PFNGLCOLORFRAGMENTOP1ATIPROC pglColorFragmentOp1ATI=_Lazy_glColorFragmentOp1ATI;
+PFNGLCOLORFRAGMENTOP2ATIPROC pglColorFragmentOp2ATI=_Lazy_glColorFragmentOp2ATI;
+PFNGLCOLORFRAGMENTOP3ATIPROC pglColorFragmentOp3ATI=_Lazy_glColorFragmentOp3ATI;
+PFNGLALPHAFRAGMENTOP1ATIPROC pglAlphaFragmentOp1ATI=_Lazy_glAlphaFragmentOp1ATI;
+PFNGLALPHAFRAGMENTOP2ATIPROC pglAlphaFragmentOp2ATI=_Lazy_glAlphaFragmentOp2ATI;
+PFNGLALPHAFRAGMENTOP3ATIPROC pglAlphaFragmentOp3ATI=_Lazy_glAlphaFragmentOp3ATI;
+PFNGLSETFRAGMENTSHADERCONSTANTATIPROC pglSetFragmentShaderConstantATI=_Lazy_glSetFragmentShaderConstantATI;
+#endif 
+
+/* GL_ATI_pn_triangles */
+
+#ifdef __GLEE_GL_ATI_pn_triangles
+void __stdcall _Lazy_glPNTrianglesiATI(GLenum pname, GLint param)                         {if (GLeeInit()) glPNTrianglesiATI(pname, param);}
+void __stdcall _Lazy_glPNTrianglesfATI(GLenum pname, GLfloat param)                       {if (GLeeInit()) glPNTrianglesfATI(pname, param);}
+PFNGLPNTRIANGLESIATIPROC pglPNTrianglesiATI=_Lazy_glPNTrianglesiATI;
+PFNGLPNTRIANGLESFATIPROC pglPNTrianglesfATI=_Lazy_glPNTrianglesfATI;
+#endif 
+
+/* GL_ATI_vertex_array_object */
+
+#ifdef __GLEE_GL_ATI_vertex_array_object
+GLuint __stdcall _Lazy_glNewObjectBufferATI(GLsizei size, const GLvoid * pointer, GLenum usage)  {if (GLeeInit()) return glNewObjectBufferATI(size, pointer, usage); return (GLuint)0;}
+GLboolean __stdcall _Lazy_glIsObjectBufferATI(GLuint buffer)                              {if (GLeeInit()) return glIsObjectBufferATI(buffer); return (GLboolean)0;}
+void __stdcall _Lazy_glUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const GLvoid * pointer, GLenum preserve)  {if (GLeeInit()) glUpdateObjectBufferATI(buffer, offset, size, pointer, preserve);}
+void __stdcall _Lazy_glGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetObjectBufferfvATI(buffer, pname, params);}
+void __stdcall _Lazy_glGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint * params)  {if (GLeeInit()) glGetObjectBufferivATI(buffer, pname, params);}
+void __stdcall _Lazy_glFreeObjectBufferATI(GLuint buffer)                                 {if (GLeeInit()) glFreeObjectBufferATI(buffer);}
+void __stdcall _Lazy_glArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)  {if (GLeeInit()) glArrayObjectATI(array, size, type, stride, buffer, offset);}
+void __stdcall _Lazy_glGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetArrayObjectfvATI(array, pname, params);}
+void __stdcall _Lazy_glGetArrayObjectivATI(GLenum array, GLenum pname, GLint * params)    {if (GLeeInit()) glGetArrayObjectivATI(array, pname, params);}
+void __stdcall _Lazy_glVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)  {if (GLeeInit()) glVariantArrayObjectATI(id, type, stride, buffer, offset);}
+void __stdcall _Lazy_glGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetVariantArrayObjectfvATI(id, pname, params);}
+void __stdcall _Lazy_glGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint * params)  {if (GLeeInit()) glGetVariantArrayObjectivATI(id, pname, params);}
+PFNGLNEWOBJECTBUFFERATIPROC pglNewObjectBufferATI=_Lazy_glNewObjectBufferATI;
+PFNGLISOBJECTBUFFERATIPROC pglIsObjectBufferATI=_Lazy_glIsObjectBufferATI;
+PFNGLUPDATEOBJECTBUFFERATIPROC pglUpdateObjectBufferATI=_Lazy_glUpdateObjectBufferATI;
+PFNGLGETOBJECTBUFFERFVATIPROC pglGetObjectBufferfvATI=_Lazy_glGetObjectBufferfvATI;
+PFNGLGETOBJECTBUFFERIVATIPROC pglGetObjectBufferivATI=_Lazy_glGetObjectBufferivATI;
+PFNGLFREEOBJECTBUFFERATIPROC pglFreeObjectBufferATI=_Lazy_glFreeObjectBufferATI;
+PFNGLARRAYOBJECTATIPROC pglArrayObjectATI=_Lazy_glArrayObjectATI;
+PFNGLGETARRAYOBJECTFVATIPROC pglGetArrayObjectfvATI=_Lazy_glGetArrayObjectfvATI;
+PFNGLGETARRAYOBJECTIVATIPROC pglGetArrayObjectivATI=_Lazy_glGetArrayObjectivATI;
+PFNGLVARIANTARRAYOBJECTATIPROC pglVariantArrayObjectATI=_Lazy_glVariantArrayObjectATI;
+PFNGLGETVARIANTARRAYOBJECTFVATIPROC pglGetVariantArrayObjectfvATI=_Lazy_glGetVariantArrayObjectfvATI;
+PFNGLGETVARIANTARRAYOBJECTIVATIPROC pglGetVariantArrayObjectivATI=_Lazy_glGetVariantArrayObjectivATI;
+#endif 
+
+/* GL_EXT_vertex_shader */
+
+#ifdef __GLEE_GL_EXT_vertex_shader
+void __stdcall _Lazy_glBeginVertexShaderEXT(void)                                         {if (GLeeInit()) glBeginVertexShaderEXT();}
+void __stdcall _Lazy_glEndVertexShaderEXT(void)                                           {if (GLeeInit()) glEndVertexShaderEXT();}
+void __stdcall _Lazy_glBindVertexShaderEXT(GLuint id)                                     {if (GLeeInit()) glBindVertexShaderEXT(id);}
+GLuint __stdcall _Lazy_glGenVertexShadersEXT(GLuint range)                                {if (GLeeInit()) return glGenVertexShadersEXT(range); return (GLuint)0;}
+void __stdcall _Lazy_glDeleteVertexShaderEXT(GLuint id)                                   {if (GLeeInit()) glDeleteVertexShaderEXT(id);}
+void __stdcall _Lazy_glShaderOp1EXT(GLenum op, GLuint res, GLuint arg1)                   {if (GLeeInit()) glShaderOp1EXT(op, res, arg1);}
+void __stdcall _Lazy_glShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2)      {if (GLeeInit()) glShaderOp2EXT(op, res, arg1, arg2);}
+void __stdcall _Lazy_glShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3)  {if (GLeeInit()) glShaderOp3EXT(op, res, arg1, arg2, arg3);}
+void __stdcall _Lazy_glSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)  {if (GLeeInit()) glSwizzleEXT(res, in, outX, outY, outZ, outW);}
+void __stdcall _Lazy_glWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)  {if (GLeeInit()) glWriteMaskEXT(res, in, outX, outY, outZ, outW);}
+void __stdcall _Lazy_glInsertComponentEXT(GLuint res, GLuint src, GLuint num)             {if (GLeeInit()) glInsertComponentEXT(res, src, num);}
+void __stdcall _Lazy_glExtractComponentEXT(GLuint res, GLuint src, GLuint num)            {if (GLeeInit()) glExtractComponentEXT(res, src, num);}
+GLuint __stdcall _Lazy_glGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components)  {if (GLeeInit()) return glGenSymbolsEXT(datatype, storagetype, range, components); return (GLuint)0;}
+void __stdcall _Lazy_glSetInvariantEXT(GLuint id, GLenum type, const GLvoid * addr)       {if (GLeeInit()) glSetInvariantEXT(id, type, addr);}
+void __stdcall _Lazy_glSetLocalConstantEXT(GLuint id, GLenum type, const GLvoid * addr)   {if (GLeeInit()) glSetLocalConstantEXT(id, type, addr);}
+void __stdcall _Lazy_glVariantbvEXT(GLuint id, const GLbyte * addr)                       {if (GLeeInit()) glVariantbvEXT(id, addr);}
+void __stdcall _Lazy_glVariantsvEXT(GLuint id, const GLshort * addr)                      {if (GLeeInit()) glVariantsvEXT(id, addr);}
+void __stdcall _Lazy_glVariantivEXT(GLuint id, const GLint * addr)                        {if (GLeeInit()) glVariantivEXT(id, addr);}
+void __stdcall _Lazy_glVariantfvEXT(GLuint id, const GLfloat * addr)                      {if (GLeeInit()) glVariantfvEXT(id, addr);}
+void __stdcall _Lazy_glVariantdvEXT(GLuint id, const GLdouble * addr)                     {if (GLeeInit()) glVariantdvEXT(id, addr);}
+void __stdcall _Lazy_glVariantubvEXT(GLuint id, const GLubyte * addr)                     {if (GLeeInit()) glVariantubvEXT(id, addr);}
+void __stdcall _Lazy_glVariantusvEXT(GLuint id, const GLushort * addr)                    {if (GLeeInit()) glVariantusvEXT(id, addr);}
+void __stdcall _Lazy_glVariantuivEXT(GLuint id, const GLuint * addr)                      {if (GLeeInit()) glVariantuivEXT(id, addr);}
+void __stdcall _Lazy_glVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const GLvoid * addr)  {if (GLeeInit()) glVariantPointerEXT(id, type, stride, addr);}
+void __stdcall _Lazy_glEnableVariantClientStateEXT(GLuint id)                             {if (GLeeInit()) glEnableVariantClientStateEXT(id);}
+void __stdcall _Lazy_glDisableVariantClientStateEXT(GLuint id)                            {if (GLeeInit()) glDisableVariantClientStateEXT(id);}
+GLuint __stdcall _Lazy_glBindLightParameterEXT(GLenum light, GLenum value)                {if (GLeeInit()) return glBindLightParameterEXT(light, value); return (GLuint)0;}
+GLuint __stdcall _Lazy_glBindMaterialParameterEXT(GLenum face, GLenum value)              {if (GLeeInit()) return glBindMaterialParameterEXT(face, value); return (GLuint)0;}
+GLuint __stdcall _Lazy_glBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value)  {if (GLeeInit()) return glBindTexGenParameterEXT(unit, coord, value); return (GLuint)0;}
+GLuint __stdcall _Lazy_glBindTextureUnitParameterEXT(GLenum unit, GLenum value)           {if (GLeeInit()) return glBindTextureUnitParameterEXT(unit, value); return (GLuint)0;}
+GLuint __stdcall _Lazy_glBindParameterEXT(GLenum value)                                   {if (GLeeInit()) return glBindParameterEXT(value); return (GLuint)0;}
+GLboolean __stdcall _Lazy_glIsVariantEnabledEXT(GLuint id, GLenum cap)                    {if (GLeeInit()) return glIsVariantEnabledEXT(id, cap); return (GLboolean)0;}
+void __stdcall _Lazy_glGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean * data)   {if (GLeeInit()) glGetVariantBooleanvEXT(id, value, data);}
+void __stdcall _Lazy_glGetVariantIntegervEXT(GLuint id, GLenum value, GLint * data)       {if (GLeeInit()) glGetVariantIntegervEXT(id, value, data);}
+void __stdcall _Lazy_glGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat * data)       {if (GLeeInit()) glGetVariantFloatvEXT(id, value, data);}
+void __stdcall _Lazy_glGetVariantPointervEXT(GLuint id, GLenum value, GLvoid* * data)     {if (GLeeInit()) glGetVariantPointervEXT(id, value, data);}
+void __stdcall _Lazy_glGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean * data)  {if (GLeeInit()) glGetInvariantBooleanvEXT(id, value, data);}
+void __stdcall _Lazy_glGetInvariantIntegervEXT(GLuint id, GLenum value, GLint * data)     {if (GLeeInit()) glGetInvariantIntegervEXT(id, value, data);}
+void __stdcall _Lazy_glGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat * data)     {if (GLeeInit()) glGetInvariantFloatvEXT(id, value, data);}
+void __stdcall _Lazy_glGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean * data)  {if (GLeeInit()) glGetLocalConstantBooleanvEXT(id, value, data);}
+void __stdcall _Lazy_glGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint * data)  {if (GLeeInit()) glGetLocalConstantIntegervEXT(id, value, data);}
+void __stdcall _Lazy_glGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat * data)  {if (GLeeInit()) glGetLocalConstantFloatvEXT(id, value, data);}
+PFNGLBEGINVERTEXSHADEREXTPROC pglBeginVertexShaderEXT=_Lazy_glBeginVertexShaderEXT;
+PFNGLENDVERTEXSHADEREXTPROC pglEndVertexShaderEXT=_Lazy_glEndVertexShaderEXT;
+PFNGLBINDVERTEXSHADEREXTPROC pglBindVertexShaderEXT=_Lazy_glBindVertexShaderEXT;
+PFNGLGENVERTEXSHADERSEXTPROC pglGenVertexShadersEXT=_Lazy_glGenVertexShadersEXT;
+PFNGLDELETEVERTEXSHADEREXTPROC pglDeleteVertexShaderEXT=_Lazy_glDeleteVertexShaderEXT;
+PFNGLSHADEROP1EXTPROC pglShaderOp1EXT=_Lazy_glShaderOp1EXT;
+PFNGLSHADEROP2EXTPROC pglShaderOp2EXT=_Lazy_glShaderOp2EXT;
+PFNGLSHADEROP3EXTPROC pglShaderOp3EXT=_Lazy_glShaderOp3EXT;
+PFNGLSWIZZLEEXTPROC pglSwizzleEXT=_Lazy_glSwizzleEXT;
+PFNGLWRITEMASKEXTPROC pglWriteMaskEXT=_Lazy_glWriteMaskEXT;
+PFNGLINSERTCOMPONENTEXTPROC pglInsertComponentEXT=_Lazy_glInsertComponentEXT;
+PFNGLEXTRACTCOMPONENTEXTPROC pglExtractComponentEXT=_Lazy_glExtractComponentEXT;
+PFNGLGENSYMBOLSEXTPROC pglGenSymbolsEXT=_Lazy_glGenSymbolsEXT;
+PFNGLSETINVARIANTEXTPROC pglSetInvariantEXT=_Lazy_glSetInvariantEXT;
+PFNGLSETLOCALCONSTANTEXTPROC pglSetLocalConstantEXT=_Lazy_glSetLocalConstantEXT;
+PFNGLVARIANTBVEXTPROC pglVariantbvEXT=_Lazy_glVariantbvEXT;
+PFNGLVARIANTSVEXTPROC pglVariantsvEXT=_Lazy_glVariantsvEXT;
+PFNGLVARIANTIVEXTPROC pglVariantivEXT=_Lazy_glVariantivEXT;
+PFNGLVARIANTFVEXTPROC pglVariantfvEXT=_Lazy_glVariantfvEXT;
+PFNGLVARIANTDVEXTPROC pglVariantdvEXT=_Lazy_glVariantdvEXT;
+PFNGLVARIANTUBVEXTPROC pglVariantubvEXT=_Lazy_glVariantubvEXT;
+PFNGLVARIANTUSVEXTPROC pglVariantusvEXT=_Lazy_glVariantusvEXT;
+PFNGLVARIANTUIVEXTPROC pglVariantuivEXT=_Lazy_glVariantuivEXT;
+PFNGLVARIANTPOINTEREXTPROC pglVariantPointerEXT=_Lazy_glVariantPointerEXT;
+PFNGLENABLEVARIANTCLIENTSTATEEXTPROC pglEnableVariantClientStateEXT=_Lazy_glEnableVariantClientStateEXT;
+PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC pglDisableVariantClientStateEXT=_Lazy_glDisableVariantClientStateEXT;
+PFNGLBINDLIGHTPARAMETEREXTPROC pglBindLightParameterEXT=_Lazy_glBindLightParameterEXT;
+PFNGLBINDMATERIALPARAMETEREXTPROC pglBindMaterialParameterEXT=_Lazy_glBindMaterialParameterEXT;
+PFNGLBINDTEXGENPARAMETEREXTPROC pglBindTexGenParameterEXT=_Lazy_glBindTexGenParameterEXT;
+PFNGLBINDTEXTUREUNITPARAMETEREXTPROC pglBindTextureUnitParameterEXT=_Lazy_glBindTextureUnitParameterEXT;
+PFNGLBINDPARAMETEREXTPROC pglBindParameterEXT=_Lazy_glBindParameterEXT;
+PFNGLISVARIANTENABLEDEXTPROC pglIsVariantEnabledEXT=_Lazy_glIsVariantEnabledEXT;
+PFNGLGETVARIANTBOOLEANVEXTPROC pglGetVariantBooleanvEXT=_Lazy_glGetVariantBooleanvEXT;
+PFNGLGETVARIANTINTEGERVEXTPROC pglGetVariantIntegervEXT=_Lazy_glGetVariantIntegervEXT;
+PFNGLGETVARIANTFLOATVEXTPROC pglGetVariantFloatvEXT=_Lazy_glGetVariantFloatvEXT;
+PFNGLGETVARIANTPOINTERVEXTPROC pglGetVariantPointervEXT=_Lazy_glGetVariantPointervEXT;
+PFNGLGETINVARIANTBOOLEANVEXTPROC pglGetInvariantBooleanvEXT=_Lazy_glGetInvariantBooleanvEXT;
+PFNGLGETINVARIANTINTEGERVEXTPROC pglGetInvariantIntegervEXT=_Lazy_glGetInvariantIntegervEXT;
+PFNGLGETINVARIANTFLOATVEXTPROC pglGetInvariantFloatvEXT=_Lazy_glGetInvariantFloatvEXT;
+PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC pglGetLocalConstantBooleanvEXT=_Lazy_glGetLocalConstantBooleanvEXT;
+PFNGLGETLOCALCONSTANTINTEGERVEXTPROC pglGetLocalConstantIntegervEXT=_Lazy_glGetLocalConstantIntegervEXT;
+PFNGLGETLOCALCONSTANTFLOATVEXTPROC pglGetLocalConstantFloatvEXT=_Lazy_glGetLocalConstantFloatvEXT;
+#endif 
+
+/* GL_ATI_vertex_streams */
+
+#ifdef __GLEE_GL_ATI_vertex_streams
+void __stdcall _Lazy_glVertexStream1sATI(GLenum stream, GLshort x)                        {if (GLeeInit()) glVertexStream1sATI(stream, x);}
+void __stdcall _Lazy_glVertexStream1svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glVertexStream1svATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream1iATI(GLenum stream, GLint x)                          {if (GLeeInit()) glVertexStream1iATI(stream, x);}
+void __stdcall _Lazy_glVertexStream1ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glVertexStream1ivATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream1fATI(GLenum stream, GLfloat x)                        {if (GLeeInit()) glVertexStream1fATI(stream, x);}
+void __stdcall _Lazy_glVertexStream1fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glVertexStream1fvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream1dATI(GLenum stream, GLdouble x)                       {if (GLeeInit()) glVertexStream1dATI(stream, x);}
+void __stdcall _Lazy_glVertexStream1dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glVertexStream1dvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream2sATI(GLenum stream, GLshort x, GLshort y)             {if (GLeeInit()) glVertexStream2sATI(stream, x, y);}
+void __stdcall _Lazy_glVertexStream2svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glVertexStream2svATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream2iATI(GLenum stream, GLint x, GLint y)                 {if (GLeeInit()) glVertexStream2iATI(stream, x, y);}
+void __stdcall _Lazy_glVertexStream2ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glVertexStream2ivATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y)             {if (GLeeInit()) glVertexStream2fATI(stream, x, y);}
+void __stdcall _Lazy_glVertexStream2fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glVertexStream2fvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y)           {if (GLeeInit()) glVertexStream2dATI(stream, x, y);}
+void __stdcall _Lazy_glVertexStream2dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glVertexStream2dvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream3sATI(GLenum stream, GLshort x, GLshort y, GLshort z)  {if (GLeeInit()) glVertexStream3sATI(stream, x, y, z);}
+void __stdcall _Lazy_glVertexStream3svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glVertexStream3svATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z)        {if (GLeeInit()) glVertexStream3iATI(stream, x, y, z);}
+void __stdcall _Lazy_glVertexStream3ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glVertexStream3ivATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z)  {if (GLeeInit()) glVertexStream3fATI(stream, x, y, z);}
+void __stdcall _Lazy_glVertexStream3fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glVertexStream3fvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z)  {if (GLeeInit()) glVertexStream3dATI(stream, x, y, z);}
+void __stdcall _Lazy_glVertexStream3dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glVertexStream3dvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream4sATI(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w)  {if (GLeeInit()) glVertexStream4sATI(stream, x, y, z, w);}
+void __stdcall _Lazy_glVertexStream4svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glVertexStream4svATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w)  {if (GLeeInit()) glVertexStream4iATI(stream, x, y, z, w);}
+void __stdcall _Lazy_glVertexStream4ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glVertexStream4ivATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glVertexStream4fATI(stream, x, y, z, w);}
+void __stdcall _Lazy_glVertexStream4fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glVertexStream4fvATI(stream, coords);}
+void __stdcall _Lazy_glVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glVertexStream4dATI(stream, x, y, z, w);}
+void __stdcall _Lazy_glVertexStream4dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glVertexStream4dvATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3bATI(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz)  {if (GLeeInit()) glNormalStream3bATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3bvATI(GLenum stream, const GLbyte * coords)           {if (GLeeInit()) glNormalStream3bvATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3sATI(GLenum stream, GLshort nx, GLshort ny, GLshort nz)  {if (GLeeInit()) glNormalStream3sATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3svATI(GLenum stream, const GLshort * coords)          {if (GLeeInit()) glNormalStream3svATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz)     {if (GLeeInit()) glNormalStream3iATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3ivATI(GLenum stream, const GLint * coords)            {if (GLeeInit()) glNormalStream3ivATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz)  {if (GLeeInit()) glNormalStream3fATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3fvATI(GLenum stream, const GLfloat * coords)          {if (GLeeInit()) glNormalStream3fvATI(stream, coords);}
+void __stdcall _Lazy_glNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz)  {if (GLeeInit()) glNormalStream3dATI(stream, nx, ny, nz);}
+void __stdcall _Lazy_glNormalStream3dvATI(GLenum stream, const GLdouble * coords)         {if (GLeeInit()) glNormalStream3dvATI(stream, coords);}
+void __stdcall _Lazy_glClientActiveVertexStreamATI(GLenum stream)                         {if (GLeeInit()) glClientActiveVertexStreamATI(stream);}
+void __stdcall _Lazy_glVertexBlendEnviATI(GLenum pname, GLint param)                      {if (GLeeInit()) glVertexBlendEnviATI(pname, param);}
+void __stdcall _Lazy_glVertexBlendEnvfATI(GLenum pname, GLfloat param)                    {if (GLeeInit()) glVertexBlendEnvfATI(pname, param);}
+PFNGLVERTEXSTREAM1SATIPROC pglVertexStream1sATI=_Lazy_glVertexStream1sATI;
+PFNGLVERTEXSTREAM1SVATIPROC pglVertexStream1svATI=_Lazy_glVertexStream1svATI;
+PFNGLVERTEXSTREAM1IATIPROC pglVertexStream1iATI=_Lazy_glVertexStream1iATI;
+PFNGLVERTEXSTREAM1IVATIPROC pglVertexStream1ivATI=_Lazy_glVertexStream1ivATI;
+PFNGLVERTEXSTREAM1FATIPROC pglVertexStream1fATI=_Lazy_glVertexStream1fATI;
+PFNGLVERTEXSTREAM1FVATIPROC pglVertexStream1fvATI=_Lazy_glVertexStream1fvATI;
+PFNGLVERTEXSTREAM1DATIPROC pglVertexStream1dATI=_Lazy_glVertexStream1dATI;
+PFNGLVERTEXSTREAM1DVATIPROC pglVertexStream1dvATI=_Lazy_glVertexStream1dvATI;
+PFNGLVERTEXSTREAM2SATIPROC pglVertexStream2sATI=_Lazy_glVertexStream2sATI;
+PFNGLVERTEXSTREAM2SVATIPROC pglVertexStream2svATI=_Lazy_glVertexStream2svATI;
+PFNGLVERTEXSTREAM2IATIPROC pglVertexStream2iATI=_Lazy_glVertexStream2iATI;
+PFNGLVERTEXSTREAM2IVATIPROC pglVertexStream2ivATI=_Lazy_glVertexStream2ivATI;
+PFNGLVERTEXSTREAM2FATIPROC pglVertexStream2fATI=_Lazy_glVertexStream2fATI;
+PFNGLVERTEXSTREAM2FVATIPROC pglVertexStream2fvATI=_Lazy_glVertexStream2fvATI;
+PFNGLVERTEXSTREAM2DATIPROC pglVertexStream2dATI=_Lazy_glVertexStream2dATI;
+PFNGLVERTEXSTREAM2DVATIPROC pglVertexStream2dvATI=_Lazy_glVertexStream2dvATI;
+PFNGLVERTEXSTREAM3SATIPROC pglVertexStream3sATI=_Lazy_glVertexStream3sATI;
+PFNGLVERTEXSTREAM3SVATIPROC pglVertexStream3svATI=_Lazy_glVertexStream3svATI;
+PFNGLVERTEXSTREAM3IATIPROC pglVertexStream3iATI=_Lazy_glVertexStream3iATI;
+PFNGLVERTEXSTREAM3IVATIPROC pglVertexStream3ivATI=_Lazy_glVertexStream3ivATI;
+PFNGLVERTEXSTREAM3FATIPROC pglVertexStream3fATI=_Lazy_glVertexStream3fATI;
+PFNGLVERTEXSTREAM3FVATIPROC pglVertexStream3fvATI=_Lazy_glVertexStream3fvATI;
+PFNGLVERTEXSTREAM3DATIPROC pglVertexStream3dATI=_Lazy_glVertexStream3dATI;
+PFNGLVERTEXSTREAM3DVATIPROC pglVertexStream3dvATI=_Lazy_glVertexStream3dvATI;
+PFNGLVERTEXSTREAM4SATIPROC pglVertexStream4sATI=_Lazy_glVertexStream4sATI;
+PFNGLVERTEXSTREAM4SVATIPROC pglVertexStream4svATI=_Lazy_glVertexStream4svATI;
+PFNGLVERTEXSTREAM4IATIPROC pglVertexStream4iATI=_Lazy_glVertexStream4iATI;
+PFNGLVERTEXSTREAM4IVATIPROC pglVertexStream4ivATI=_Lazy_glVertexStream4ivATI;
+PFNGLVERTEXSTREAM4FATIPROC pglVertexStream4fATI=_Lazy_glVertexStream4fATI;
+PFNGLVERTEXSTREAM4FVATIPROC pglVertexStream4fvATI=_Lazy_glVertexStream4fvATI;
+PFNGLVERTEXSTREAM4DATIPROC pglVertexStream4dATI=_Lazy_glVertexStream4dATI;
+PFNGLVERTEXSTREAM4DVATIPROC pglVertexStream4dvATI=_Lazy_glVertexStream4dvATI;
+PFNGLNORMALSTREAM3BATIPROC pglNormalStream3bATI=_Lazy_glNormalStream3bATI;
+PFNGLNORMALSTREAM3BVATIPROC pglNormalStream3bvATI=_Lazy_glNormalStream3bvATI;
+PFNGLNORMALSTREAM3SATIPROC pglNormalStream3sATI=_Lazy_glNormalStream3sATI;
+PFNGLNORMALSTREAM3SVATIPROC pglNormalStream3svATI=_Lazy_glNormalStream3svATI;
+PFNGLNORMALSTREAM3IATIPROC pglNormalStream3iATI=_Lazy_glNormalStream3iATI;
+PFNGLNORMALSTREAM3IVATIPROC pglNormalStream3ivATI=_Lazy_glNormalStream3ivATI;
+PFNGLNORMALSTREAM3FATIPROC pglNormalStream3fATI=_Lazy_glNormalStream3fATI;
+PFNGLNORMALSTREAM3FVATIPROC pglNormalStream3fvATI=_Lazy_glNormalStream3fvATI;
+PFNGLNORMALSTREAM3DATIPROC pglNormalStream3dATI=_Lazy_glNormalStream3dATI;
+PFNGLNORMALSTREAM3DVATIPROC pglNormalStream3dvATI=_Lazy_glNormalStream3dvATI;
+PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC pglClientActiveVertexStreamATI=_Lazy_glClientActiveVertexStreamATI;
+PFNGLVERTEXBLENDENVIATIPROC pglVertexBlendEnviATI=_Lazy_glVertexBlendEnviATI;
+PFNGLVERTEXBLENDENVFATIPROC pglVertexBlendEnvfATI=_Lazy_glVertexBlendEnvfATI;
+#endif 
+
+/* GL_ATI_element_array */
+
+#ifdef __GLEE_GL_ATI_element_array
+void __stdcall _Lazy_glElementPointerATI(GLenum type, const GLvoid * pointer)             {if (GLeeInit()) glElementPointerATI(type, pointer);}
+void __stdcall _Lazy_glDrawElementArrayATI(GLenum mode, GLsizei count)                    {if (GLeeInit()) glDrawElementArrayATI(mode, count);}
+void __stdcall _Lazy_glDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count)  {if (GLeeInit()) glDrawRangeElementArrayATI(mode, start, end, count);}
+PFNGLELEMENTPOINTERATIPROC pglElementPointerATI=_Lazy_glElementPointerATI;
+PFNGLDRAWELEMENTARRAYATIPROC pglDrawElementArrayATI=_Lazy_glDrawElementArrayATI;
+PFNGLDRAWRANGEELEMENTARRAYATIPROC pglDrawRangeElementArrayATI=_Lazy_glDrawRangeElementArrayATI;
+#endif 
+
+/* GL_SUN_mesh_array */
+
+#ifdef __GLEE_GL_SUN_mesh_array
+void __stdcall _Lazy_glDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width)  {if (GLeeInit()) glDrawMeshArraysSUN(mode, first, count, width);}
+PFNGLDRAWMESHARRAYSSUNPROC pglDrawMeshArraysSUN=_Lazy_glDrawMeshArraysSUN;
+#endif 
+
+/* GL_SUN_slice_accum */
+
+#ifdef __GLEE_GL_SUN_slice_accum
+#endif 
+
+/* GL_NV_multisample_filter_hint */
+
+#ifdef __GLEE_GL_NV_multisample_filter_hint
+#endif 
+
+/* GL_NV_depth_clamp */
+
+#ifdef __GLEE_GL_NV_depth_clamp
+#endif 
+
+/* GL_NV_occlusion_query */
+
+#ifdef __GLEE_GL_NV_occlusion_query
+void __stdcall _Lazy_glGenOcclusionQueriesNV(GLsizei n, GLuint * ids)                     {if (GLeeInit()) glGenOcclusionQueriesNV(n, ids);}
+void __stdcall _Lazy_glDeleteOcclusionQueriesNV(GLsizei n, const GLuint * ids)            {if (GLeeInit()) glDeleteOcclusionQueriesNV(n, ids);}
+GLboolean __stdcall _Lazy_glIsOcclusionQueryNV(GLuint id)                                 {if (GLeeInit()) return glIsOcclusionQueryNV(id); return (GLboolean)0;}
+void __stdcall _Lazy_glBeginOcclusionQueryNV(GLuint id)                                   {if (GLeeInit()) glBeginOcclusionQueryNV(id);}
+void __stdcall _Lazy_glEndOcclusionQueryNV(void)                                          {if (GLeeInit()) glEndOcclusionQueryNV();}
+void __stdcall _Lazy_glGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint * params)     {if (GLeeInit()) glGetOcclusionQueryivNV(id, pname, params);}
+void __stdcall _Lazy_glGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint * params)   {if (GLeeInit()) glGetOcclusionQueryuivNV(id, pname, params);}
+PFNGLGENOCCLUSIONQUERIESNVPROC pglGenOcclusionQueriesNV=_Lazy_glGenOcclusionQueriesNV;
+PFNGLDELETEOCCLUSIONQUERIESNVPROC pglDeleteOcclusionQueriesNV=_Lazy_glDeleteOcclusionQueriesNV;
+PFNGLISOCCLUSIONQUERYNVPROC pglIsOcclusionQueryNV=_Lazy_glIsOcclusionQueryNV;
+PFNGLBEGINOCCLUSIONQUERYNVPROC pglBeginOcclusionQueryNV=_Lazy_glBeginOcclusionQueryNV;
+PFNGLENDOCCLUSIONQUERYNVPROC pglEndOcclusionQueryNV=_Lazy_glEndOcclusionQueryNV;
+PFNGLGETOCCLUSIONQUERYIVNVPROC pglGetOcclusionQueryivNV=_Lazy_glGetOcclusionQueryivNV;
+PFNGLGETOCCLUSIONQUERYUIVNVPROC pglGetOcclusionQueryuivNV=_Lazy_glGetOcclusionQueryuivNV;
+#endif 
+
+/* GL_NV_point_sprite */
+
+#ifdef __GLEE_GL_NV_point_sprite
+void __stdcall _Lazy_glPointParameteriNV(GLenum pname, GLint param)                       {if (GLeeInit()) glPointParameteriNV(pname, param);}
+void __stdcall _Lazy_glPointParameterivNV(GLenum pname, const GLint * params)             {if (GLeeInit()) glPointParameterivNV(pname, params);}
+PFNGLPOINTPARAMETERINVPROC pglPointParameteriNV=_Lazy_glPointParameteriNV;
+PFNGLPOINTPARAMETERIVNVPROC pglPointParameterivNV=_Lazy_glPointParameterivNV;
+#endif 
+
+/* GL_NV_texture_shader3 */
+
+#ifdef __GLEE_GL_NV_texture_shader3
+#endif 
+
+/* GL_NV_vertex_program1_1 */
+
+#ifdef __GLEE_GL_NV_vertex_program1_1
+#endif 
+
+/* GL_EXT_shadow_funcs */
+
+#ifdef __GLEE_GL_EXT_shadow_funcs
+#endif 
+
+/* GL_EXT_stencil_two_side */
+
+#ifdef __GLEE_GL_EXT_stencil_two_side
+void __stdcall _Lazy_glActiveStencilFaceEXT(GLenum face)                                  {if (GLeeInit()) glActiveStencilFaceEXT(face);}
+PFNGLACTIVESTENCILFACEEXTPROC pglActiveStencilFaceEXT=_Lazy_glActiveStencilFaceEXT;
+#endif 
+
+/* GL_ATI_text_fragment_shader */
+
+#ifdef __GLEE_GL_ATI_text_fragment_shader
+#endif 
+
+/* GL_APPLE_client_storage */
+
+#ifdef __GLEE_GL_APPLE_client_storage
+#endif 
+
+/* GL_APPLE_element_array */
+
+#ifdef __GLEE_GL_APPLE_element_array
+void __stdcall _Lazy_glElementPointerAPPLE(GLenum type, const GLvoid * pointer)           {if (GLeeInit()) glElementPointerAPPLE(type, pointer);}
+void __stdcall _Lazy_glDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count)     {if (GLeeInit()) glDrawElementArrayAPPLE(mode, first, count);}
+void __stdcall _Lazy_glDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count)  {if (GLeeInit()) glDrawRangeElementArrayAPPLE(mode, start, end, first, count);}
+void __stdcall _Lazy_glMultiDrawElementArrayAPPLE(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount)  {if (GLeeInit()) glMultiDrawElementArrayAPPLE(mode, first, count, primcount);}
+void __stdcall _Lazy_glMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, const GLint * first, const GLsizei * count, GLsizei primcount)  {if (GLeeInit()) glMultiDrawRangeElementArrayAPPLE(mode, start, end, first, count, primcount);}
+PFNGLELEMENTPOINTERAPPLEPROC pglElementPointerAPPLE=_Lazy_glElementPointerAPPLE;
+PFNGLDRAWELEMENTARRAYAPPLEPROC pglDrawElementArrayAPPLE=_Lazy_glDrawElementArrayAPPLE;
+PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC pglDrawRangeElementArrayAPPLE=_Lazy_glDrawRangeElementArrayAPPLE;
+PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC pglMultiDrawElementArrayAPPLE=_Lazy_glMultiDrawElementArrayAPPLE;
+PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC pglMultiDrawRangeElementArrayAPPLE=_Lazy_glMultiDrawRangeElementArrayAPPLE;
+#endif 
+
+/* GL_APPLE_fence */
+
+#ifdef __GLEE_GL_APPLE_fence
+void __stdcall _Lazy_glGenFencesAPPLE(GLsizei n, GLuint * fences)                         {if (GLeeInit()) glGenFencesAPPLE(n, fences);}
+void __stdcall _Lazy_glDeleteFencesAPPLE(GLsizei n, const GLuint * fences)                {if (GLeeInit()) glDeleteFencesAPPLE(n, fences);}
+void __stdcall _Lazy_glSetFenceAPPLE(GLuint fence)                                        {if (GLeeInit()) glSetFenceAPPLE(fence);}
+GLboolean __stdcall _Lazy_glIsFenceAPPLE(GLuint fence)                                    {if (GLeeInit()) return glIsFenceAPPLE(fence); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_glTestFenceAPPLE(GLuint fence)                                  {if (GLeeInit()) return glTestFenceAPPLE(fence); return (GLboolean)0;}
+void __stdcall _Lazy_glFinishFenceAPPLE(GLuint fence)                                     {if (GLeeInit()) glFinishFenceAPPLE(fence);}
+GLboolean __stdcall _Lazy_glTestObjectAPPLE(GLenum object, GLuint name)                   {if (GLeeInit()) return glTestObjectAPPLE(object, name); return (GLboolean)0;}
+void __stdcall _Lazy_glFinishObjectAPPLE(GLenum object, GLint name)                       {if (GLeeInit()) glFinishObjectAPPLE(object, name);}
+PFNGLGENFENCESAPPLEPROC pglGenFencesAPPLE=_Lazy_glGenFencesAPPLE;
+PFNGLDELETEFENCESAPPLEPROC pglDeleteFencesAPPLE=_Lazy_glDeleteFencesAPPLE;
+PFNGLSETFENCEAPPLEPROC pglSetFenceAPPLE=_Lazy_glSetFenceAPPLE;
+PFNGLISFENCEAPPLEPROC pglIsFenceAPPLE=_Lazy_glIsFenceAPPLE;
+PFNGLTESTFENCEAPPLEPROC pglTestFenceAPPLE=_Lazy_glTestFenceAPPLE;
+PFNGLFINISHFENCEAPPLEPROC pglFinishFenceAPPLE=_Lazy_glFinishFenceAPPLE;
+PFNGLTESTOBJECTAPPLEPROC pglTestObjectAPPLE=_Lazy_glTestObjectAPPLE;
+PFNGLFINISHOBJECTAPPLEPROC pglFinishObjectAPPLE=_Lazy_glFinishObjectAPPLE;
+#endif 
+
+/* GL_APPLE_vertex_array_object */
+
+#ifdef __GLEE_GL_APPLE_vertex_array_object
+void __stdcall _Lazy_glBindVertexArrayAPPLE(GLuint array)                                 {if (GLeeInit()) glBindVertexArrayAPPLE(array);}
+void __stdcall _Lazy_glDeleteVertexArraysAPPLE(GLsizei n, const GLuint * arrays)          {if (GLeeInit()) glDeleteVertexArraysAPPLE(n, arrays);}
+void __stdcall _Lazy_glGenVertexArraysAPPLE(GLsizei n, const GLuint * arrays)             {if (GLeeInit()) glGenVertexArraysAPPLE(n, arrays);}
+GLboolean __stdcall _Lazy_glIsVertexArrayAPPLE(GLuint array)                              {if (GLeeInit()) return glIsVertexArrayAPPLE(array); return (GLboolean)0;}
+PFNGLBINDVERTEXARRAYAPPLEPROC pglBindVertexArrayAPPLE=_Lazy_glBindVertexArrayAPPLE;
+PFNGLDELETEVERTEXARRAYSAPPLEPROC pglDeleteVertexArraysAPPLE=_Lazy_glDeleteVertexArraysAPPLE;
+PFNGLGENVERTEXARRAYSAPPLEPROC pglGenVertexArraysAPPLE=_Lazy_glGenVertexArraysAPPLE;
+PFNGLISVERTEXARRAYAPPLEPROC pglIsVertexArrayAPPLE=_Lazy_glIsVertexArrayAPPLE;
+#endif 
+
+/* GL_APPLE_vertex_array_range */
+
+#ifdef __GLEE_GL_APPLE_vertex_array_range
+void __stdcall _Lazy_glVertexArrayRangeAPPLE(GLsizei length, GLvoid * pointer)            {if (GLeeInit()) glVertexArrayRangeAPPLE(length, pointer);}
+void __stdcall _Lazy_glFlushVertexArrayRangeAPPLE(GLsizei length, GLvoid * pointer)       {if (GLeeInit()) glFlushVertexArrayRangeAPPLE(length, pointer);}
+void __stdcall _Lazy_glVertexArrayParameteriAPPLE(GLenum pname, GLint param)              {if (GLeeInit()) glVertexArrayParameteriAPPLE(pname, param);}
+PFNGLVERTEXARRAYRANGEAPPLEPROC pglVertexArrayRangeAPPLE=_Lazy_glVertexArrayRangeAPPLE;
+PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC pglFlushVertexArrayRangeAPPLE=_Lazy_glFlushVertexArrayRangeAPPLE;
+PFNGLVERTEXARRAYPARAMETERIAPPLEPROC pglVertexArrayParameteriAPPLE=_Lazy_glVertexArrayParameteriAPPLE;
+#endif 
+
+/* GL_APPLE_ycbcr_422 */
+
+#ifdef __GLEE_GL_APPLE_ycbcr_422
+#endif 
+
+/* GL_S3_s3tc */
+
+#ifdef __GLEE_GL_S3_s3tc
+#endif 
+
+/* GL_ATI_draw_buffers */
+
+#ifdef __GLEE_GL_ATI_draw_buffers
+void __stdcall _Lazy_glDrawBuffersATI(GLsizei n, const GLenum * bufs)                     {if (GLeeInit()) glDrawBuffersATI(n, bufs);}
+PFNGLDRAWBUFFERSATIPROC pglDrawBuffersATI=_Lazy_glDrawBuffersATI;
+#endif 
+
+/* GL_ATI_pixel_format_float */
+
+#ifdef __GLEE_GL_ATI_pixel_format_float
+#endif 
+
+/* GL_ATI_texture_env_combine3 */
+
+#ifdef __GLEE_GL_ATI_texture_env_combine3
+#endif 
+
+/* GL_ATI_texture_float */
+
+#ifdef __GLEE_GL_ATI_texture_float
+#endif 
+
+/* GL_NV_float_buffer */
+
+#ifdef __GLEE_GL_NV_float_buffer
+#endif 
+
+/* GL_NV_fragment_program */
+
+#ifdef __GLEE_GL_NV_fragment_program
+void __stdcall _Lazy_glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)  {if (GLeeInit()) glProgramNamedParameter4fNV(id, len, name, x, y, z, w);}
+void __stdcall _Lazy_glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)  {if (GLeeInit()) glProgramNamedParameter4dNV(id, len, name, x, y, z, w);}
+void __stdcall _Lazy_glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v)  {if (GLeeInit()) glProgramNamedParameter4fvNV(id, len, name, v);}
+void __stdcall _Lazy_glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v)  {if (GLeeInit()) glProgramNamedParameter4dvNV(id, len, name, v);}
+void __stdcall _Lazy_glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params)  {if (GLeeInit()) glGetProgramNamedParameterfvNV(id, len, name, params);}
+void __stdcall _Lazy_glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params)  {if (GLeeInit()) glGetProgramNamedParameterdvNV(id, len, name, params);}
+PFNGLPROGRAMNAMEDPARAMETER4FNVPROC pglProgramNamedParameter4fNV=_Lazy_glProgramNamedParameter4fNV;
+PFNGLPROGRAMNAMEDPARAMETER4DNVPROC pglProgramNamedParameter4dNV=_Lazy_glProgramNamedParameter4dNV;
+PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC pglProgramNamedParameter4fvNV=_Lazy_glProgramNamedParameter4fvNV;
+PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC pglProgramNamedParameter4dvNV=_Lazy_glProgramNamedParameter4dvNV;
+PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC pglGetProgramNamedParameterfvNV=_Lazy_glGetProgramNamedParameterfvNV;
+PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC pglGetProgramNamedParameterdvNV=_Lazy_glGetProgramNamedParameterdvNV;
+#endif 
+
+/* GL_NV_half_float */
+
+#ifdef __GLEE_GL_NV_half_float
+void __stdcall _Lazy_glVertex2hNV(GLhalfNV x, GLhalfNV y)                                 {if (GLeeInit()) glVertex2hNV(x, y);}
+void __stdcall _Lazy_glVertex2hvNV(const GLhalfNV * v)                                    {if (GLeeInit()) glVertex2hvNV(v);}
+void __stdcall _Lazy_glVertex3hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z)                     {if (GLeeInit()) glVertex3hNV(x, y, z);}
+void __stdcall _Lazy_glVertex3hvNV(const GLhalfNV * v)                                    {if (GLeeInit()) glVertex3hvNV(v);}
+void __stdcall _Lazy_glVertex4hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)         {if (GLeeInit()) glVertex4hNV(x, y, z, w);}
+void __stdcall _Lazy_glVertex4hvNV(const GLhalfNV * v)                                    {if (GLeeInit()) glVertex4hvNV(v);}
+void __stdcall _Lazy_glNormal3hNV(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz)                  {if (GLeeInit()) glNormal3hNV(nx, ny, nz);}
+void __stdcall _Lazy_glNormal3hvNV(const GLhalfNV * v)                                    {if (GLeeInit()) glNormal3hvNV(v);}
+void __stdcall _Lazy_glColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue)             {if (GLeeInit()) glColor3hNV(red, green, blue);}
+void __stdcall _Lazy_glColor3hvNV(const GLhalfNV * v)                                     {if (GLeeInit()) glColor3hvNV(v);}
+void __stdcall _Lazy_glColor4hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha)  {if (GLeeInit()) glColor4hNV(red, green, blue, alpha);}
+void __stdcall _Lazy_glColor4hvNV(const GLhalfNV * v)                                     {if (GLeeInit()) glColor4hvNV(v);}
+void __stdcall _Lazy_glTexCoord1hNV(GLhalfNV s)                                           {if (GLeeInit()) glTexCoord1hNV(s);}
+void __stdcall _Lazy_glTexCoord1hvNV(const GLhalfNV * v)                                  {if (GLeeInit()) glTexCoord1hvNV(v);}
+void __stdcall _Lazy_glTexCoord2hNV(GLhalfNV s, GLhalfNV t)                               {if (GLeeInit()) glTexCoord2hNV(s, t);}
+void __stdcall _Lazy_glTexCoord2hvNV(const GLhalfNV * v)                                  {if (GLeeInit()) glTexCoord2hvNV(v);}
+void __stdcall _Lazy_glTexCoord3hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r)                   {if (GLeeInit()) glTexCoord3hNV(s, t, r);}
+void __stdcall _Lazy_glTexCoord3hvNV(const GLhalfNV * v)                                  {if (GLeeInit()) glTexCoord3hvNV(v);}
+void __stdcall _Lazy_glTexCoord4hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q)       {if (GLeeInit()) glTexCoord4hNV(s, t, r, q);}
+void __stdcall _Lazy_glTexCoord4hvNV(const GLhalfNV * v)                                  {if (GLeeInit()) glTexCoord4hvNV(v);}
+void __stdcall _Lazy_glMultiTexCoord1hNV(GLenum target, GLhalfNV s)                       {if (GLeeInit()) glMultiTexCoord1hNV(target, s);}
+void __stdcall _Lazy_glMultiTexCoord1hvNV(GLenum target, const GLhalfNV * v)              {if (GLeeInit()) glMultiTexCoord1hvNV(target, v);}
+void __stdcall _Lazy_glMultiTexCoord2hNV(GLenum target, GLhalfNV s, GLhalfNV t)           {if (GLeeInit()) glMultiTexCoord2hNV(target, s, t);}
+void __stdcall _Lazy_glMultiTexCoord2hvNV(GLenum target, const GLhalfNV * v)              {if (GLeeInit()) glMultiTexCoord2hvNV(target, v);}
+void __stdcall _Lazy_glMultiTexCoord3hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r)  {if (GLeeInit()) glMultiTexCoord3hNV(target, s, t, r);}
+void __stdcall _Lazy_glMultiTexCoord3hvNV(GLenum target, const GLhalfNV * v)              {if (GLeeInit()) glMultiTexCoord3hvNV(target, v);}
+void __stdcall _Lazy_glMultiTexCoord4hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q)  {if (GLeeInit()) glMultiTexCoord4hNV(target, s, t, r, q);}
+void __stdcall _Lazy_glMultiTexCoord4hvNV(GLenum target, const GLhalfNV * v)              {if (GLeeInit()) glMultiTexCoord4hvNV(target, v);}
+void __stdcall _Lazy_glFogCoordhNV(GLhalfNV fog)                                          {if (GLeeInit()) glFogCoordhNV(fog);}
+void __stdcall _Lazy_glFogCoordhvNV(const GLhalfNV * fog)                                 {if (GLeeInit()) glFogCoordhvNV(fog);}
+void __stdcall _Lazy_glSecondaryColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue)    {if (GLeeInit()) glSecondaryColor3hNV(red, green, blue);}
+void __stdcall _Lazy_glSecondaryColor3hvNV(const GLhalfNV * v)                            {if (GLeeInit()) glSecondaryColor3hvNV(v);}
+void __stdcall _Lazy_glVertexWeighthNV(GLhalfNV weight)                                   {if (GLeeInit()) glVertexWeighthNV(weight);}
+void __stdcall _Lazy_glVertexWeighthvNV(const GLhalfNV * weight)                          {if (GLeeInit()) glVertexWeighthvNV(weight);}
+void __stdcall _Lazy_glVertexAttrib1hNV(GLuint index, GLhalfNV x)                         {if (GLeeInit()) glVertexAttrib1hNV(index, x);}
+void __stdcall _Lazy_glVertexAttrib1hvNV(GLuint index, const GLhalfNV * v)                {if (GLeeInit()) glVertexAttrib1hvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib2hNV(GLuint index, GLhalfNV x, GLhalfNV y)             {if (GLeeInit()) glVertexAttrib2hNV(index, x, y);}
+void __stdcall _Lazy_glVertexAttrib2hvNV(GLuint index, const GLhalfNV * v)                {if (GLeeInit()) glVertexAttrib2hvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib3hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z)  {if (GLeeInit()) glVertexAttrib3hNV(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttrib3hvNV(GLuint index, const GLhalfNV * v)                {if (GLeeInit()) glVertexAttrib3hvNV(index, v);}
+void __stdcall _Lazy_glVertexAttrib4hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)  {if (GLeeInit()) glVertexAttrib4hNV(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttrib4hvNV(GLuint index, const GLhalfNV * v)                {if (GLeeInit()) glVertexAttrib4hvNV(index, v);}
+void __stdcall _Lazy_glVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV * v)    {if (GLeeInit()) glVertexAttribs1hvNV(index, n, v);}
+void __stdcall _Lazy_glVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV * v)    {if (GLeeInit()) glVertexAttribs2hvNV(index, n, v);}
+void __stdcall _Lazy_glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV * v)    {if (GLeeInit()) glVertexAttribs3hvNV(index, n, v);}
+void __stdcall _Lazy_glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV * v)    {if (GLeeInit()) glVertexAttribs4hvNV(index, n, v);}
+PFNGLVERTEX2HNVPROC pglVertex2hNV=_Lazy_glVertex2hNV;
+PFNGLVERTEX2HVNVPROC pglVertex2hvNV=_Lazy_glVertex2hvNV;
+PFNGLVERTEX3HNVPROC pglVertex3hNV=_Lazy_glVertex3hNV;
+PFNGLVERTEX3HVNVPROC pglVertex3hvNV=_Lazy_glVertex3hvNV;
+PFNGLVERTEX4HNVPROC pglVertex4hNV=_Lazy_glVertex4hNV;
+PFNGLVERTEX4HVNVPROC pglVertex4hvNV=_Lazy_glVertex4hvNV;
+PFNGLNORMAL3HNVPROC pglNormal3hNV=_Lazy_glNormal3hNV;
+PFNGLNORMAL3HVNVPROC pglNormal3hvNV=_Lazy_glNormal3hvNV;
+PFNGLCOLOR3HNVPROC pglColor3hNV=_Lazy_glColor3hNV;
+PFNGLCOLOR3HVNVPROC pglColor3hvNV=_Lazy_glColor3hvNV;
+PFNGLCOLOR4HNVPROC pglColor4hNV=_Lazy_glColor4hNV;
+PFNGLCOLOR4HVNVPROC pglColor4hvNV=_Lazy_glColor4hvNV;
+PFNGLTEXCOORD1HNVPROC pglTexCoord1hNV=_Lazy_glTexCoord1hNV;
+PFNGLTEXCOORD1HVNVPROC pglTexCoord1hvNV=_Lazy_glTexCoord1hvNV;
+PFNGLTEXCOORD2HNVPROC pglTexCoord2hNV=_Lazy_glTexCoord2hNV;
+PFNGLTEXCOORD2HVNVPROC pglTexCoord2hvNV=_Lazy_glTexCoord2hvNV;
+PFNGLTEXCOORD3HNVPROC pglTexCoord3hNV=_Lazy_glTexCoord3hNV;
+PFNGLTEXCOORD3HVNVPROC pglTexCoord3hvNV=_Lazy_glTexCoord3hvNV;
+PFNGLTEXCOORD4HNVPROC pglTexCoord4hNV=_Lazy_glTexCoord4hNV;
+PFNGLTEXCOORD4HVNVPROC pglTexCoord4hvNV=_Lazy_glTexCoord4hvNV;
+PFNGLMULTITEXCOORD1HNVPROC pglMultiTexCoord1hNV=_Lazy_glMultiTexCoord1hNV;
+PFNGLMULTITEXCOORD1HVNVPROC pglMultiTexCoord1hvNV=_Lazy_glMultiTexCoord1hvNV;
+PFNGLMULTITEXCOORD2HNVPROC pglMultiTexCoord2hNV=_Lazy_glMultiTexCoord2hNV;
+PFNGLMULTITEXCOORD2HVNVPROC pglMultiTexCoord2hvNV=_Lazy_glMultiTexCoord2hvNV;
+PFNGLMULTITEXCOORD3HNVPROC pglMultiTexCoord3hNV=_Lazy_glMultiTexCoord3hNV;
+PFNGLMULTITEXCOORD3HVNVPROC pglMultiTexCoord3hvNV=_Lazy_glMultiTexCoord3hvNV;
+PFNGLMULTITEXCOORD4HNVPROC pglMultiTexCoord4hNV=_Lazy_glMultiTexCoord4hNV;
+PFNGLMULTITEXCOORD4HVNVPROC pglMultiTexCoord4hvNV=_Lazy_glMultiTexCoord4hvNV;
+PFNGLFOGCOORDHNVPROC pglFogCoordhNV=_Lazy_glFogCoordhNV;
+PFNGLFOGCOORDHVNVPROC pglFogCoordhvNV=_Lazy_glFogCoordhvNV;
+PFNGLSECONDARYCOLOR3HNVPROC pglSecondaryColor3hNV=_Lazy_glSecondaryColor3hNV;
+PFNGLSECONDARYCOLOR3HVNVPROC pglSecondaryColor3hvNV=_Lazy_glSecondaryColor3hvNV;
+PFNGLVERTEXWEIGHTHNVPROC pglVertexWeighthNV=_Lazy_glVertexWeighthNV;
+PFNGLVERTEXWEIGHTHVNVPROC pglVertexWeighthvNV=_Lazy_glVertexWeighthvNV;
+PFNGLVERTEXATTRIB1HNVPROC pglVertexAttrib1hNV=_Lazy_glVertexAttrib1hNV;
+PFNGLVERTEXATTRIB1HVNVPROC pglVertexAttrib1hvNV=_Lazy_glVertexAttrib1hvNV;
+PFNGLVERTEXATTRIB2HNVPROC pglVertexAttrib2hNV=_Lazy_glVertexAttrib2hNV;
+PFNGLVERTEXATTRIB2HVNVPROC pglVertexAttrib2hvNV=_Lazy_glVertexAttrib2hvNV;
+PFNGLVERTEXATTRIB3HNVPROC pglVertexAttrib3hNV=_Lazy_glVertexAttrib3hNV;
+PFNGLVERTEXATTRIB3HVNVPROC pglVertexAttrib3hvNV=_Lazy_glVertexAttrib3hvNV;
+PFNGLVERTEXATTRIB4HNVPROC pglVertexAttrib4hNV=_Lazy_glVertexAttrib4hNV;
+PFNGLVERTEXATTRIB4HVNVPROC pglVertexAttrib4hvNV=_Lazy_glVertexAttrib4hvNV;
+PFNGLVERTEXATTRIBS1HVNVPROC pglVertexAttribs1hvNV=_Lazy_glVertexAttribs1hvNV;
+PFNGLVERTEXATTRIBS2HVNVPROC pglVertexAttribs2hvNV=_Lazy_glVertexAttribs2hvNV;
+PFNGLVERTEXATTRIBS3HVNVPROC pglVertexAttribs3hvNV=_Lazy_glVertexAttribs3hvNV;
+PFNGLVERTEXATTRIBS4HVNVPROC pglVertexAttribs4hvNV=_Lazy_glVertexAttribs4hvNV;
+#endif 
+
+/* GL_NV_pixel_data_range */
+
+#ifdef __GLEE_GL_NV_pixel_data_range
+void __stdcall _Lazy_glPixelDataRangeNV(GLenum target, GLsizei length, GLvoid * pointer)  {if (GLeeInit()) glPixelDataRangeNV(target, length, pointer);}
+void __stdcall _Lazy_glFlushPixelDataRangeNV(GLenum target)                               {if (GLeeInit()) glFlushPixelDataRangeNV(target);}
+PFNGLPIXELDATARANGENVPROC pglPixelDataRangeNV=_Lazy_glPixelDataRangeNV;
+PFNGLFLUSHPIXELDATARANGENVPROC pglFlushPixelDataRangeNV=_Lazy_glFlushPixelDataRangeNV;
+#endif 
+
+/* GL_NV_primitive_restart */
+
+#ifdef __GLEE_GL_NV_primitive_restart
+void __stdcall _Lazy_glPrimitiveRestartNV(void)                                           {if (GLeeInit()) glPrimitiveRestartNV();}
+void __stdcall _Lazy_glPrimitiveRestartIndexNV(GLuint index)                              {if (GLeeInit()) glPrimitiveRestartIndexNV(index);}
+PFNGLPRIMITIVERESTARTNVPROC pglPrimitiveRestartNV=_Lazy_glPrimitiveRestartNV;
+PFNGLPRIMITIVERESTARTINDEXNVPROC pglPrimitiveRestartIndexNV=_Lazy_glPrimitiveRestartIndexNV;
+#endif 
+
+/* GL_NV_texture_expand_normal */
+
+#ifdef __GLEE_GL_NV_texture_expand_normal
+#endif 
+
+/* GL_NV_vertex_program2 */
+
+#ifdef __GLEE_GL_NV_vertex_program2
+#endif 
+
+/* GL_ATI_map_object_buffer */
+
+#ifdef __GLEE_GL_ATI_map_object_buffer
+GLvoid* __stdcall _Lazy_glMapObjectBufferATI(GLuint buffer)                               {if (GLeeInit()) return glMapObjectBufferATI(buffer); return (GLvoid*)0;}
+void __stdcall _Lazy_glUnmapObjectBufferATI(GLuint buffer)                                {if (GLeeInit()) glUnmapObjectBufferATI(buffer);}
+PFNGLMAPOBJECTBUFFERATIPROC pglMapObjectBufferATI=_Lazy_glMapObjectBufferATI;
+PFNGLUNMAPOBJECTBUFFERATIPROC pglUnmapObjectBufferATI=_Lazy_glUnmapObjectBufferATI;
+#endif 
+
+/* GL_ATI_separate_stencil */
+
+#ifdef __GLEE_GL_ATI_separate_stencil
+void __stdcall _Lazy_glStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)  {if (GLeeInit()) glStencilOpSeparateATI(face, sfail, dpfail, dppass);}
+void __stdcall _Lazy_glStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)  {if (GLeeInit()) glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);}
+PFNGLSTENCILOPSEPARATEATIPROC pglStencilOpSeparateATI=_Lazy_glStencilOpSeparateATI;
+PFNGLSTENCILFUNCSEPARATEATIPROC pglStencilFuncSeparateATI=_Lazy_glStencilFuncSeparateATI;
+#endif 
+
+/* GL_ATI_vertex_attrib_array_object */
+
+#ifdef __GLEE_GL_ATI_vertex_attrib_array_object
+void __stdcall _Lazy_glVertexAttribArrayObjectATI(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset)  {if (GLeeInit()) glVertexAttribArrayObjectATI(index, size, type, normalized, stride, buffer, offset);}
+void __stdcall _Lazy_glGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetVertexAttribArrayObjectfvATI(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint * params)  {if (GLeeInit()) glGetVertexAttribArrayObjectivATI(index, pname, params);}
+PFNGLVERTEXATTRIBARRAYOBJECTATIPROC pglVertexAttribArrayObjectATI=_Lazy_glVertexAttribArrayObjectATI;
+PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC pglGetVertexAttribArrayObjectfvATI=_Lazy_glGetVertexAttribArrayObjectfvATI;
+PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC pglGetVertexAttribArrayObjectivATI=_Lazy_glGetVertexAttribArrayObjectivATI;
+#endif 
+
+/* GL_OES_read_format */
+
+#ifdef __GLEE_GL_OES_read_format
+#endif 
+
+/* GL_EXT_depth_bounds_test */
+
+#ifdef __GLEE_GL_EXT_depth_bounds_test
+void __stdcall _Lazy_glDepthBoundsEXT(GLclampd zmin, GLclampd zmax)                       {if (GLeeInit()) glDepthBoundsEXT(zmin, zmax);}
+PFNGLDEPTHBOUNDSEXTPROC pglDepthBoundsEXT=_Lazy_glDepthBoundsEXT;
+#endif 
+
+/* GL_EXT_texture_mirror_clamp */
+
+#ifdef __GLEE_GL_EXT_texture_mirror_clamp
+#endif 
+
+/* GL_EXT_blend_equation_separate */
+
+#ifdef __GLEE_GL_EXT_blend_equation_separate
+void __stdcall _Lazy_glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha)         {if (GLeeInit()) glBlendEquationSeparateEXT(modeRGB, modeAlpha);}
+PFNGLBLENDEQUATIONSEPARATEEXTPROC pglBlendEquationSeparateEXT=_Lazy_glBlendEquationSeparateEXT;
+#endif 
+
+/* GL_MESA_pack_invert */
+
+#ifdef __GLEE_GL_MESA_pack_invert
+#endif 
+
+/* GL_MESA_ycbcr_texture */
+
+#ifdef __GLEE_GL_MESA_ycbcr_texture
+#endif 
+
+/* GL_EXT_pixel_buffer_object */
+
+#ifdef __GLEE_GL_EXT_pixel_buffer_object
+#endif 
+
+/* GL_NV_fragment_program_option */
+
+#ifdef __GLEE_GL_NV_fragment_program_option
+#endif 
+
+/* GL_NV_fragment_program2 */
+
+#ifdef __GLEE_GL_NV_fragment_program2
+#endif 
+
+/* GL_NV_vertex_program2_option */
+
+#ifdef __GLEE_GL_NV_vertex_program2_option
+#endif 
+
+/* GL_NV_vertex_program3 */
+
+#ifdef __GLEE_GL_NV_vertex_program3
+#endif 
+
+/* GL_EXT_framebuffer_object */
+
+#ifdef __GLEE_GL_EXT_framebuffer_object
+GLboolean __stdcall _Lazy_glIsRenderbufferEXT(GLuint renderbuffer)                        {if (GLeeInit()) return glIsRenderbufferEXT(renderbuffer); return (GLboolean)0;}
+void __stdcall _Lazy_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer)            {if (GLeeInit()) glBindRenderbufferEXT(target, renderbuffer);}
+void __stdcall _Lazy_glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers)    {if (GLeeInit()) glDeleteRenderbuffersEXT(n, renderbuffers);}
+void __stdcall _Lazy_glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers)             {if (GLeeInit()) glGenRenderbuffersEXT(n, renderbuffers);}
+void __stdcall _Lazy_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)  {if (GLeeInit()) glRenderbufferStorageEXT(target, internalformat, width, height);}
+void __stdcall _Lazy_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetRenderbufferParameterivEXT(target, pname, params);}
+GLboolean __stdcall _Lazy_glIsFramebufferEXT(GLuint framebuffer)                          {if (GLeeInit()) return glIsFramebufferEXT(framebuffer); return (GLboolean)0;}
+void __stdcall _Lazy_glBindFramebufferEXT(GLenum target, GLuint framebuffer)              {if (GLeeInit()) glBindFramebufferEXT(target, framebuffer);}
+void __stdcall _Lazy_glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers)      {if (GLeeInit()) glDeleteFramebuffersEXT(n, framebuffers);}
+void __stdcall _Lazy_glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers)               {if (GLeeInit()) glGenFramebuffersEXT(n, framebuffers);}
+GLenum __stdcall _Lazy_glCheckFramebufferStatusEXT(GLenum target)                         {if (GLeeInit()) return glCheckFramebufferStatusEXT(target); return (GLenum)0;}
+void __stdcall _Lazy_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)  {if (GLeeInit()) glFramebufferTexture1DEXT(target, attachment, textarget, texture, level);}
+void __stdcall _Lazy_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)  {if (GLeeInit()) glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);}
+void __stdcall _Lazy_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)  {if (GLeeInit()) glFramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset);}
+void __stdcall _Lazy_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)  {if (GLeeInit()) glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);}
+void __stdcall _Lazy_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);}
+void __stdcall _Lazy_glGenerateMipmapEXT(GLenum target)                                   {if (GLeeInit()) glGenerateMipmapEXT(target);}
+PFNGLISRENDERBUFFEREXTPROC pglIsRenderbufferEXT=_Lazy_glIsRenderbufferEXT;
+PFNGLBINDRENDERBUFFEREXTPROC pglBindRenderbufferEXT=_Lazy_glBindRenderbufferEXT;
+PFNGLDELETERENDERBUFFERSEXTPROC pglDeleteRenderbuffersEXT=_Lazy_glDeleteRenderbuffersEXT;
+PFNGLGENRENDERBUFFERSEXTPROC pglGenRenderbuffersEXT=_Lazy_glGenRenderbuffersEXT;
+PFNGLRENDERBUFFERSTORAGEEXTPROC pglRenderbufferStorageEXT=_Lazy_glRenderbufferStorageEXT;
+PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC pglGetRenderbufferParameterivEXT=_Lazy_glGetRenderbufferParameterivEXT;
+PFNGLISFRAMEBUFFEREXTPROC pglIsFramebufferEXT=_Lazy_glIsFramebufferEXT;
+PFNGLBINDFRAMEBUFFEREXTPROC pglBindFramebufferEXT=_Lazy_glBindFramebufferEXT;
+PFNGLDELETEFRAMEBUFFERSEXTPROC pglDeleteFramebuffersEXT=_Lazy_glDeleteFramebuffersEXT;
+PFNGLGENFRAMEBUFFERSEXTPROC pglGenFramebuffersEXT=_Lazy_glGenFramebuffersEXT;
+PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC pglCheckFramebufferStatusEXT=_Lazy_glCheckFramebufferStatusEXT;
+PFNGLFRAMEBUFFERTEXTURE1DEXTPROC pglFramebufferTexture1DEXT=_Lazy_glFramebufferTexture1DEXT;
+PFNGLFRAMEBUFFERTEXTURE2DEXTPROC pglFramebufferTexture2DEXT=_Lazy_glFramebufferTexture2DEXT;
+PFNGLFRAMEBUFFERTEXTURE3DEXTPROC pglFramebufferTexture3DEXT=_Lazy_glFramebufferTexture3DEXT;
+PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC pglFramebufferRenderbufferEXT=_Lazy_glFramebufferRenderbufferEXT;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC pglGetFramebufferAttachmentParameterivEXT=_Lazy_glGetFramebufferAttachmentParameterivEXT;
+PFNGLGENERATEMIPMAPEXTPROC pglGenerateMipmapEXT=_Lazy_glGenerateMipmapEXT;
+#endif 
+
+/* GL_GREMEDY_string_marker */
+
+#ifdef __GLEE_GL_GREMEDY_string_marker
+void __stdcall _Lazy_glStringMarkerGREMEDY(GLsizei len, const GLvoid * string)            {if (GLeeInit()) glStringMarkerGREMEDY(len, string);}
+PFNGLSTRINGMARKERGREMEDYPROC pglStringMarkerGREMEDY=_Lazy_glStringMarkerGREMEDY;
+#endif 
+
+/* GL_EXT_Cg_shader */
+
+#ifdef __GLEE_GL_EXT_Cg_shader
+#endif 
+
+/* GL_EXT_timer_query */
+
+#ifdef __GLEE_GL_EXT_timer_query
+void __stdcall _Lazy_glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64EXT * params)  {if (GLeeInit()) glGetQueryObjecti64vEXT(id, pname, params);}
+void __stdcall _Lazy_glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64EXT * params)  {if (GLeeInit()) glGetQueryObjectui64vEXT(id, pname, params);}
+PFNGLGETQUERYOBJECTI64VEXTPROC pglGetQueryObjecti64vEXT=_Lazy_glGetQueryObjecti64vEXT;
+PFNGLGETQUERYOBJECTUI64VEXTPROC pglGetQueryObjectui64vEXT=_Lazy_glGetQueryObjectui64vEXT;
+#endif 
+
+/* GL_EXT_texture_buffer_object */
+
+#ifdef __GLEE_GL_EXT_texture_buffer_object
+void __stdcall _Lazy_glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer)  {if (GLeeInit()) glTexBufferEXT(target, internalformat, buffer);}
+PFNGLTEXBUFFEREXTPROC pglTexBufferEXT=_Lazy_glTexBufferEXT;
+#endif 
+
+/* GL_EXT_gpu_shader4 */
+
+#ifdef __GLEE_GL_EXT_gpu_shader4
+void __stdcall _Lazy_glGetUniformuivEXT(GLuint program, GLint location, GLuint * params)  {if (GLeeInit()) glGetUniformuivEXT(program, location, params);}
+void __stdcall _Lazy_glBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar * name)  {if (GLeeInit()) glBindFragDataLocationEXT(program, color, name);}
+GLint __stdcall _Lazy_glGetFragDataLocationEXT(GLuint program, const GLchar * name)       {if (GLeeInit()) return glGetFragDataLocationEXT(program, name); return (GLint)0;}
+void __stdcall _Lazy_glUniform1uiEXT(GLint location, GLuint v0)                           {if (GLeeInit()) glUniform1uiEXT(location, v0);}
+void __stdcall _Lazy_glUniform2uiEXT(GLint location, GLuint v0, GLuint v1)                {if (GLeeInit()) glUniform2uiEXT(location, v0, v1);}
+void __stdcall _Lazy_glUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2)     {if (GLeeInit()) glUniform3uiEXT(location, v0, v1, v2);}
+void __stdcall _Lazy_glUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)  {if (GLeeInit()) glUniform4uiEXT(location, v0, v1, v2, v3);}
+void __stdcall _Lazy_glUniform1uivEXT(GLint location, GLsizei count, const GLuint * value)  {if (GLeeInit()) glUniform1uivEXT(location, count, value);}
+void __stdcall _Lazy_glUniform2uivEXT(GLint location, GLsizei count, const GLuint * value)  {if (GLeeInit()) glUniform2uivEXT(location, count, value);}
+void __stdcall _Lazy_glUniform3uivEXT(GLint location, GLsizei count, const GLuint * value)  {if (GLeeInit()) glUniform3uivEXT(location, count, value);}
+void __stdcall _Lazy_glUniform4uivEXT(GLint location, GLsizei count, const GLuint * value)  {if (GLeeInit()) glUniform4uivEXT(location, count, value);}
+void __stdcall _Lazy_glVertexAttribI1iEXT(GLuint index, GLint x)                          {if (GLeeInit()) glVertexAttribI1iEXT(index, x);}
+void __stdcall _Lazy_glVertexAttribI2iEXT(GLuint index, GLint x, GLint y)                 {if (GLeeInit()) glVertexAttribI2iEXT(index, x, y);}
+void __stdcall _Lazy_glVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z)        {if (GLeeInit()) glVertexAttribI3iEXT(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w)  {if (GLeeInit()) glVertexAttribI4iEXT(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttribI1uiEXT(GLuint index, GLuint x)                        {if (GLeeInit()) glVertexAttribI1uiEXT(index, x);}
+void __stdcall _Lazy_glVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y)              {if (GLeeInit()) glVertexAttribI2uiEXT(index, x, y);}
+void __stdcall _Lazy_glVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z)    {if (GLeeInit()) glVertexAttribI3uiEXT(index, x, y, z);}
+void __stdcall _Lazy_glVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)  {if (GLeeInit()) glVertexAttribI4uiEXT(index, x, y, z, w);}
+void __stdcall _Lazy_glVertexAttribI1ivEXT(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttribI1ivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI2ivEXT(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttribI2ivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI3ivEXT(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttribI3ivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4ivEXT(GLuint index, const GLint * v)                 {if (GLeeInit()) glVertexAttribI4ivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI1uivEXT(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttribI1uivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI2uivEXT(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttribI2uivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI3uivEXT(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttribI3uivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4uivEXT(GLuint index, const GLuint * v)               {if (GLeeInit()) glVertexAttribI4uivEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4bvEXT(GLuint index, const GLbyte * v)                {if (GLeeInit()) glVertexAttribI4bvEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4svEXT(GLuint index, const GLshort * v)               {if (GLeeInit()) glVertexAttribI4svEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4ubvEXT(GLuint index, const GLubyte * v)              {if (GLeeInit()) glVertexAttribI4ubvEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribI4usvEXT(GLuint index, const GLushort * v)             {if (GLeeInit()) glVertexAttribI4usvEXT(index, v);}
+void __stdcall _Lazy_glVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)  {if (GLeeInit()) glVertexAttribIPointerEXT(index, size, type, stride, pointer);}
+void __stdcall _Lazy_glGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint * params)  {if (GLeeInit()) glGetVertexAttribIivEXT(index, pname, params);}
+void __stdcall _Lazy_glGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint * params)  {if (GLeeInit()) glGetVertexAttribIuivEXT(index, pname, params);}
+PFNGLGETUNIFORMUIVEXTPROC pglGetUniformuivEXT=_Lazy_glGetUniformuivEXT;
+PFNGLBINDFRAGDATALOCATIONEXTPROC pglBindFragDataLocationEXT=_Lazy_glBindFragDataLocationEXT;
+PFNGLGETFRAGDATALOCATIONEXTPROC pglGetFragDataLocationEXT=_Lazy_glGetFragDataLocationEXT;
+PFNGLUNIFORM1UIEXTPROC pglUniform1uiEXT=_Lazy_glUniform1uiEXT;
+PFNGLUNIFORM2UIEXTPROC pglUniform2uiEXT=_Lazy_glUniform2uiEXT;
+PFNGLUNIFORM3UIEXTPROC pglUniform3uiEXT=_Lazy_glUniform3uiEXT;
+PFNGLUNIFORM4UIEXTPROC pglUniform4uiEXT=_Lazy_glUniform4uiEXT;
+PFNGLUNIFORM1UIVEXTPROC pglUniform1uivEXT=_Lazy_glUniform1uivEXT;
+PFNGLUNIFORM2UIVEXTPROC pglUniform2uivEXT=_Lazy_glUniform2uivEXT;
+PFNGLUNIFORM3UIVEXTPROC pglUniform3uivEXT=_Lazy_glUniform3uivEXT;
+PFNGLUNIFORM4UIVEXTPROC pglUniform4uivEXT=_Lazy_glUniform4uivEXT;
+PFNGLVERTEXATTRIBI1IEXTPROC pglVertexAttribI1iEXT=_Lazy_glVertexAttribI1iEXT;
+PFNGLVERTEXATTRIBI2IEXTPROC pglVertexAttribI2iEXT=_Lazy_glVertexAttribI2iEXT;
+PFNGLVERTEXATTRIBI3IEXTPROC pglVertexAttribI3iEXT=_Lazy_glVertexAttribI3iEXT;
+PFNGLVERTEXATTRIBI4IEXTPROC pglVertexAttribI4iEXT=_Lazy_glVertexAttribI4iEXT;
+PFNGLVERTEXATTRIBI1UIEXTPROC pglVertexAttribI1uiEXT=_Lazy_glVertexAttribI1uiEXT;
+PFNGLVERTEXATTRIBI2UIEXTPROC pglVertexAttribI2uiEXT=_Lazy_glVertexAttribI2uiEXT;
+PFNGLVERTEXATTRIBI3UIEXTPROC pglVertexAttribI3uiEXT=_Lazy_glVertexAttribI3uiEXT;
+PFNGLVERTEXATTRIBI4UIEXTPROC pglVertexAttribI4uiEXT=_Lazy_glVertexAttribI4uiEXT;
+PFNGLVERTEXATTRIBI1IVEXTPROC pglVertexAttribI1ivEXT=_Lazy_glVertexAttribI1ivEXT;
+PFNGLVERTEXATTRIBI2IVEXTPROC pglVertexAttribI2ivEXT=_Lazy_glVertexAttribI2ivEXT;
+PFNGLVERTEXATTRIBI3IVEXTPROC pglVertexAttribI3ivEXT=_Lazy_glVertexAttribI3ivEXT;
+PFNGLVERTEXATTRIBI4IVEXTPROC pglVertexAttribI4ivEXT=_Lazy_glVertexAttribI4ivEXT;
+PFNGLVERTEXATTRIBI1UIVEXTPROC pglVertexAttribI1uivEXT=_Lazy_glVertexAttribI1uivEXT;
+PFNGLVERTEXATTRIBI2UIVEXTPROC pglVertexAttribI2uivEXT=_Lazy_glVertexAttribI2uivEXT;
+PFNGLVERTEXATTRIBI3UIVEXTPROC pglVertexAttribI3uivEXT=_Lazy_glVertexAttribI3uivEXT;
+PFNGLVERTEXATTRIBI4UIVEXTPROC pglVertexAttribI4uivEXT=_Lazy_glVertexAttribI4uivEXT;
+PFNGLVERTEXATTRIBI4BVEXTPROC pglVertexAttribI4bvEXT=_Lazy_glVertexAttribI4bvEXT;
+PFNGLVERTEXATTRIBI4SVEXTPROC pglVertexAttribI4svEXT=_Lazy_glVertexAttribI4svEXT;
+PFNGLVERTEXATTRIBI4UBVEXTPROC pglVertexAttribI4ubvEXT=_Lazy_glVertexAttribI4ubvEXT;
+PFNGLVERTEXATTRIBI4USVEXTPROC pglVertexAttribI4usvEXT=_Lazy_glVertexAttribI4usvEXT;
+PFNGLVERTEXATTRIBIPOINTEREXTPROC pglVertexAttribIPointerEXT=_Lazy_glVertexAttribIPointerEXT;
+PFNGLGETVERTEXATTRIBIIVEXTPROC pglGetVertexAttribIivEXT=_Lazy_glGetVertexAttribIivEXT;
+PFNGLGETVERTEXATTRIBIUIVEXTPROC pglGetVertexAttribIuivEXT=_Lazy_glGetVertexAttribIuivEXT;
+#endif 
+
+/* GL_EXT_geometry_shader4 */
+
+#ifdef __GLEE_GL_EXT_geometry_shader4
+void __stdcall _Lazy_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value)    {if (GLeeInit()) glProgramParameteriEXT(program, pname, value);}
+void __stdcall _Lazy_glFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level)  {if (GLeeInit()) glFramebufferTextureEXT(target, attachment, texture, level);}
+void __stdcall _Lazy_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)  {if (GLeeInit()) glFramebufferTextureLayerEXT(target, attachment, texture, level, layer);}
+void __stdcall _Lazy_glFramebufferTextureFaceEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)  {if (GLeeInit()) glFramebufferTextureFaceEXT(target, attachment, texture, level, face);}
+PFNGLPROGRAMPARAMETERIEXTPROC pglProgramParameteriEXT=_Lazy_glProgramParameteriEXT;
+PFNGLFRAMEBUFFERTEXTUREEXTPROC pglFramebufferTextureEXT=_Lazy_glFramebufferTextureEXT;
+PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC pglFramebufferTextureLayerEXT=_Lazy_glFramebufferTextureLayerEXT;
+PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC pglFramebufferTextureFaceEXT=_Lazy_glFramebufferTextureFaceEXT;
+#endif 
+
+/* GL_EXT_bindable_uniform */
+
+#ifdef __GLEE_GL_EXT_bindable_uniform
+void __stdcall _Lazy_glUniformBufferEXT(GLuint program, GLint location, GLuint buffer)    {if (GLeeInit()) glUniformBufferEXT(program, location, buffer);}
+GLint __stdcall _Lazy_glGetUniformBufferSizeEXT(GLuint program, GLint location)           {if (GLeeInit()) return glGetUniformBufferSizeEXT(program, location); return (GLint)0;}
+GLintptr __stdcall _Lazy_glGetUniformOffsetEXT(GLuint program, GLint location)            {if (GLeeInit()) return glGetUniformOffsetEXT(program, location); return (GLintptr)0;}
+PFNGLUNIFORMBUFFEREXTPROC pglUniformBufferEXT=_Lazy_glUniformBufferEXT;
+PFNGLGETUNIFORMBUFFERSIZEEXTPROC pglGetUniformBufferSizeEXT=_Lazy_glGetUniformBufferSizeEXT;
+PFNGLGETUNIFORMOFFSETEXTPROC pglGetUniformOffsetEXT=_Lazy_glGetUniformOffsetEXT;
+#endif 
+
+/* GL_EXT_framebuffer_sRGB */
+
+#ifdef __GLEE_GL_EXT_framebuffer_sRGB
+#endif 
+
+/* GL_EXT_texture_shared_exponent */
+
+#ifdef __GLEE_GL_EXT_texture_shared_exponent
+#endif 
+
+/* GL_EXT_packed_float */
+
+#ifdef __GLEE_GL_EXT_packed_float
+#endif 
+
+/* GL_EXT_texture_array */
+
+#ifdef __GLEE_GL_EXT_texture_array
+#endif 
+
+/* GL_EXT_texture_integer */
+
+#ifdef __GLEE_GL_EXT_texture_integer
+void __stdcall _Lazy_glTexParameterIivEXT(GLenum target, GLenum pname, const GLint * params)  {if (GLeeInit()) glTexParameterIivEXT(target, pname, params);}
+void __stdcall _Lazy_glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint * params)  {if (GLeeInit()) glTexParameterIuivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint * params)  {if (GLeeInit()) glGetTexParameterIivEXT(target, pname, params);}
+void __stdcall _Lazy_glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint * params)  {if (GLeeInit()) glGetTexParameterIuivEXT(target, pname, params);}
+void __stdcall _Lazy_glClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha)   {if (GLeeInit()) glClearColorIiEXT(red, green, blue, alpha);}
+void __stdcall _Lazy_glClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha)  {if (GLeeInit()) glClearColorIuiEXT(red, green, blue, alpha);}
+PFNGLTEXPARAMETERIIVEXTPROC pglTexParameterIivEXT=_Lazy_glTexParameterIivEXT;
+PFNGLTEXPARAMETERIUIVEXTPROC pglTexParameterIuivEXT=_Lazy_glTexParameterIuivEXT;
+PFNGLGETTEXPARAMETERIIVEXTPROC pglGetTexParameterIivEXT=_Lazy_glGetTexParameterIivEXT;
+PFNGLGETTEXPARAMETERIUIVEXTPROC pglGetTexParameterIuivEXT=_Lazy_glGetTexParameterIuivEXT;
+PFNGLCLEARCOLORIIEXTPROC pglClearColorIiEXT=_Lazy_glClearColorIiEXT;
+PFNGLCLEARCOLORIUIEXTPROC pglClearColorIuiEXT=_Lazy_glClearColorIuiEXT;
+#endif 
+
+/* GL_NV_depth_buffer_float */
+
+#ifdef __GLEE_GL_NV_depth_buffer_float
+void __stdcall _Lazy_glDepthRangedNV(GLdouble zNear, GLdouble zFar)                       {if (GLeeInit()) glDepthRangedNV(zNear, zFar);}
+void __stdcall _Lazy_glClearDepthdNV(GLdouble depth)                                      {if (GLeeInit()) glClearDepthdNV(depth);}
+void __stdcall _Lazy_glDepthBoundsdNV(GLdouble zmin, GLdouble zmax)                       {if (GLeeInit()) glDepthBoundsdNV(zmin, zmax);}
+PFNGLDEPTHRANGEDNVPROC pglDepthRangedNV=_Lazy_glDepthRangedNV;
+PFNGLCLEARDEPTHDNVPROC pglClearDepthdNV=_Lazy_glClearDepthdNV;
+PFNGLDEPTHBOUNDSDNVPROC pglDepthBoundsdNV=_Lazy_glDepthBoundsdNV;
+#endif 
+
+/* GL_EXT_texture_compression_latc */
+
+#ifdef __GLEE_GL_EXT_texture_compression_latc
+#endif 
+
+/* GL_NV_transform_feedback */
+
+#ifdef __GLEE_GL_NV_transform_feedback
+void __stdcall _Lazy_glBeginTransformFeedbackNV(GLenum primitiveMode)                     {if (GLeeInit()) glBeginTransformFeedbackNV(primitiveMode);}
+void __stdcall _Lazy_glEndTransformFeedbackNV(void)                                       {if (GLeeInit()) glEndTransformFeedbackNV();}
+void __stdcall _Lazy_glTransformFeedbackAttribsNV(GLuint count, const GLint * attribs, GLenum bufferMode)  {if (GLeeInit()) glTransformFeedbackAttribsNV(count, attribs, bufferMode);}
+void __stdcall _Lazy_glBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)  {if (GLeeInit()) glBindBufferRangeNV(target, index, buffer, offset, size);}
+void __stdcall _Lazy_glBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset)  {if (GLeeInit()) glBindBufferOffsetNV(target, index, buffer, offset);}
+void __stdcall _Lazy_glBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer)       {if (GLeeInit()) glBindBufferBaseNV(target, index, buffer);}
+void __stdcall _Lazy_glTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint * locations, GLenum bufferMode)  {if (GLeeInit()) glTransformFeedbackVaryingsNV(program, count, locations, bufferMode);}
+void __stdcall _Lazy_glActiveVaryingNV(GLuint program, const GLchar * name)               {if (GLeeInit()) glActiveVaryingNV(program, name);}
+GLint __stdcall _Lazy_glGetVaryingLocationNV(GLuint program, const GLchar * name)         {if (GLeeInit()) return glGetVaryingLocationNV(program, name); return (GLint)0;}
+void __stdcall _Lazy_glGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name)  {if (GLeeInit()) glGetActiveVaryingNV(program, index, bufSize, length, size, type, name);}
+void __stdcall _Lazy_glGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint * location)  {if (GLeeInit()) glGetTransformFeedbackVaryingNV(program, index, location);}
+PFNGLBEGINTRANSFORMFEEDBACKNVPROC pglBeginTransformFeedbackNV=_Lazy_glBeginTransformFeedbackNV;
+PFNGLENDTRANSFORMFEEDBACKNVPROC pglEndTransformFeedbackNV=_Lazy_glEndTransformFeedbackNV;
+PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC pglTransformFeedbackAttribsNV=_Lazy_glTransformFeedbackAttribsNV;
+PFNGLBINDBUFFERRANGENVPROC pglBindBufferRangeNV=_Lazy_glBindBufferRangeNV;
+PFNGLBINDBUFFEROFFSETNVPROC pglBindBufferOffsetNV=_Lazy_glBindBufferOffsetNV;
+PFNGLBINDBUFFERBASENVPROC pglBindBufferBaseNV=_Lazy_glBindBufferBaseNV;
+PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC pglTransformFeedbackVaryingsNV=_Lazy_glTransformFeedbackVaryingsNV;
+PFNGLACTIVEVARYINGNVPROC pglActiveVaryingNV=_Lazy_glActiveVaryingNV;
+PFNGLGETVARYINGLOCATIONNVPROC pglGetVaryingLocationNV=_Lazy_glGetVaryingLocationNV;
+PFNGLGETACTIVEVARYINGNVPROC pglGetActiveVaryingNV=_Lazy_glGetActiveVaryingNV;
+PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC pglGetTransformFeedbackVaryingNV=_Lazy_glGetTransformFeedbackVaryingNV;
+#endif 
+
+/* GL_NV_geometry_program4 */
+
+#ifdef __GLEE_GL_NV_geometry_program4
+void __stdcall _Lazy_glProgramVertexLimitNV(GLenum target, GLint limit)                   {if (GLeeInit()) glProgramVertexLimitNV(target, limit);}
+PFNGLPROGRAMVERTEXLIMITNVPROC pglProgramVertexLimitNV=_Lazy_glProgramVertexLimitNV;
+#endif 
+
+/* GL_NV_gpu_program4 */
+
+#ifdef __GLEE_GL_NV_gpu_program4
+void __stdcall _Lazy_glProgramLocalParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)  {if (GLeeInit()) glProgramLocalParameterI4iNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramLocalParameterI4ivNV(GLenum target, GLuint index, const GLint * params)  {if (GLeeInit()) glProgramLocalParameterI4ivNV(target, index, params);}
+void __stdcall _Lazy_glProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint * params)  {if (GLeeInit()) glProgramLocalParametersI4ivNV(target, index, count, params);}
+void __stdcall _Lazy_glProgramLocalParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)  {if (GLeeInit()) glProgramLocalParameterI4uiNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramLocalParameterI4uivNV(GLenum target, GLuint index, const GLuint * params)  {if (GLeeInit()) glProgramLocalParameterI4uivNV(target, index, params);}
+void __stdcall _Lazy_glProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint * params)  {if (GLeeInit()) glProgramLocalParametersI4uivNV(target, index, count, params);}
+void __stdcall _Lazy_glProgramEnvParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)  {if (GLeeInit()) glProgramEnvParameterI4iNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramEnvParameterI4ivNV(GLenum target, GLuint index, const GLint * params)  {if (GLeeInit()) glProgramEnvParameterI4ivNV(target, index, params);}
+void __stdcall _Lazy_glProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint * params)  {if (GLeeInit()) glProgramEnvParametersI4ivNV(target, index, count, params);}
+void __stdcall _Lazy_glProgramEnvParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)  {if (GLeeInit()) glProgramEnvParameterI4uiNV(target, index, x, y, z, w);}
+void __stdcall _Lazy_glProgramEnvParameterI4uivNV(GLenum target, GLuint index, const GLuint * params)  {if (GLeeInit()) glProgramEnvParameterI4uivNV(target, index, params);}
+void __stdcall _Lazy_glProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint * params)  {if (GLeeInit()) glProgramEnvParametersI4uivNV(target, index, count, params);}
+void __stdcall _Lazy_glGetProgramLocalParameterIivNV(GLenum target, GLuint index, GLint * params)  {if (GLeeInit()) glGetProgramLocalParameterIivNV(target, index, params);}
+void __stdcall _Lazy_glGetProgramLocalParameterIuivNV(GLenum target, GLuint index, GLuint * params)  {if (GLeeInit()) glGetProgramLocalParameterIuivNV(target, index, params);}
+void __stdcall _Lazy_glGetProgramEnvParameterIivNV(GLenum target, GLuint index, GLint * params)  {if (GLeeInit()) glGetProgramEnvParameterIivNV(target, index, params);}
+void __stdcall _Lazy_glGetProgramEnvParameterIuivNV(GLenum target, GLuint index, GLuint * params)  {if (GLeeInit()) glGetProgramEnvParameterIuivNV(target, index, params);}
+PFNGLPROGRAMLOCALPARAMETERI4INVPROC pglProgramLocalParameterI4iNV=_Lazy_glProgramLocalParameterI4iNV;
+PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC pglProgramLocalParameterI4ivNV=_Lazy_glProgramLocalParameterI4ivNV;
+PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC pglProgramLocalParametersI4ivNV=_Lazy_glProgramLocalParametersI4ivNV;
+PFNGLPROGRAMLOCALPARAMETERI4UINVPROC pglProgramLocalParameterI4uiNV=_Lazy_glProgramLocalParameterI4uiNV;
+PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC pglProgramLocalParameterI4uivNV=_Lazy_glProgramLocalParameterI4uivNV;
+PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC pglProgramLocalParametersI4uivNV=_Lazy_glProgramLocalParametersI4uivNV;
+PFNGLPROGRAMENVPARAMETERI4INVPROC pglProgramEnvParameterI4iNV=_Lazy_glProgramEnvParameterI4iNV;
+PFNGLPROGRAMENVPARAMETERI4IVNVPROC pglProgramEnvParameterI4ivNV=_Lazy_glProgramEnvParameterI4ivNV;
+PFNGLPROGRAMENVPARAMETERSI4IVNVPROC pglProgramEnvParametersI4ivNV=_Lazy_glProgramEnvParametersI4ivNV;
+PFNGLPROGRAMENVPARAMETERI4UINVPROC pglProgramEnvParameterI4uiNV=_Lazy_glProgramEnvParameterI4uiNV;
+PFNGLPROGRAMENVPARAMETERI4UIVNVPROC pglProgramEnvParameterI4uivNV=_Lazy_glProgramEnvParameterI4uivNV;
+PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC pglProgramEnvParametersI4uivNV=_Lazy_glProgramEnvParametersI4uivNV;
+PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC pglGetProgramLocalParameterIivNV=_Lazy_glGetProgramLocalParameterIivNV;
+PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC pglGetProgramLocalParameterIuivNV=_Lazy_glGetProgramLocalParameterIuivNV;
+PFNGLGETPROGRAMENVPARAMETERIIVNVPROC pglGetProgramEnvParameterIivNV=_Lazy_glGetProgramEnvParameterIivNV;
+PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC pglGetProgramEnvParameterIuivNV=_Lazy_glGetProgramEnvParameterIuivNV;
+#endif 
+
+/* GL_NV_framebuffer_multisample_coverage */
+
+#ifdef __GLEE_GL_NV_framebuffer_multisample_coverage
+void __stdcall _Lazy_glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)  {if (GLeeInit()) glRenderbufferStorageMultisampleCoverageNV(target, coverageSamples, colorSamples, internalformat, width, height);}
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC pglRenderbufferStorageMultisampleCoverageNV=_Lazy_glRenderbufferStorageMultisampleCoverageNV;
+#endif 
+
+/* GL_EXT_framebuffer_multisample */
+
+#ifdef __GLEE_GL_EXT_framebuffer_multisample
+void __stdcall _Lazy_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)  {if (GLeeInit()) glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);}
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC pglRenderbufferStorageMultisampleEXT=_Lazy_glRenderbufferStorageMultisampleEXT;
+#endif 
+
+/* GL_EXT_framebuffer_blit */
+
+#ifdef __GLEE_GL_EXT_framebuffer_blit
+void __stdcall _Lazy_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)  {if (GLeeInit()) glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);}
+PFNGLBLITFRAMEBUFFEREXTPROC pglBlitFramebufferEXT=_Lazy_glBlitFramebufferEXT;
+#endif 
+
+/* GL_EXT_texture_compression_rgtc */
+
+#ifdef __GLEE_GL_EXT_texture_compression_rgtc
+#endif 
+
+/* GL_EXT_color_matrix */
+
+#ifdef __GLEE_GL_EXT_color_matrix
+#endif 
+
+/* GL_SGIX_texture_select */
+
+#ifdef __GLEE_GL_SGIX_texture_select
+#endif 
+
+/* GL_INGR_blend_func_separate */
+
+#ifdef __GLEE_GL_INGR_blend_func_separate
+void __stdcall _Lazy_glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)  {if (GLeeInit()) glBlendFuncSeparateINGR(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);}
+PFNGLBLENDFUNCSEPARATEINGRPROC pglBlendFuncSeparateINGR=_Lazy_glBlendFuncSeparateINGR;
+#endif 
+
+/* GL_SGIX_depth_pass_instrument */
+
+#ifdef __GLEE_GL_SGIX_depth_pass_instrument
+#endif 
+
+/* GL_SGIX_igloo_interface */
+
+#ifdef __GLEE_GL_SGIX_igloo_interface
+void __stdcall _Lazy_glIglooInterfaceSGIX(GLenum pname, const GLvoid * params)            {if (GLeeInit()) glIglooInterfaceSGIX(pname, params);}
+PFNGLIGLOOINTERFACESGIXPROC pglIglooInterfaceSGIX=_Lazy_glIglooInterfaceSGIX;
+#endif 
+
+/* GL_EXT_draw_buffers2 */
+
+#ifdef __GLEE_GL_EXT_draw_buffers2
+void __stdcall _Lazy_glColorMaskIndexedEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)  {if (GLeeInit()) glColorMaskIndexedEXT(index, r, g, b, a);}
+void __stdcall _Lazy_glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean * data)  {if (GLeeInit()) glGetBooleanIndexedvEXT(target, index, data);}
+void __stdcall _Lazy_glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint * data)   {if (GLeeInit()) glGetIntegerIndexedvEXT(target, index, data);}
+void __stdcall _Lazy_glEnableIndexedEXT(GLenum target, GLuint index)                      {if (GLeeInit()) glEnableIndexedEXT(target, index);}
+void __stdcall _Lazy_glDisableIndexedEXT(GLenum target, GLuint index)                     {if (GLeeInit()) glDisableIndexedEXT(target, index);}
+GLboolean __stdcall _Lazy_glIsEnabledIndexedEXT(GLenum target, GLuint index)              {if (GLeeInit()) return glIsEnabledIndexedEXT(target, index); return (GLboolean)0;}
+PFNGLCOLORMASKINDEXEDEXTPROC pglColorMaskIndexedEXT=_Lazy_glColorMaskIndexedEXT;
+PFNGLGETBOOLEANINDEXEDVEXTPROC pglGetBooleanIndexedvEXT=_Lazy_glGetBooleanIndexedvEXT;
+PFNGLGETINTEGERINDEXEDVEXTPROC pglGetIntegerIndexedvEXT=_Lazy_glGetIntegerIndexedvEXT;
+PFNGLENABLEINDEXEDEXTPROC pglEnableIndexedEXT=_Lazy_glEnableIndexedEXT;
+PFNGLDISABLEINDEXEDEXTPROC pglDisableIndexedEXT=_Lazy_glDisableIndexedEXT;
+PFNGLISENABLEDINDEXEDEXTPROC pglIsEnabledIndexedEXT=_Lazy_glIsEnabledIndexedEXT;
+#endif 
+
+/* GL_NV_parameter_buffer_object */
+
+#ifdef __GLEE_GL_NV_parameter_buffer_object
+void __stdcall _Lazy_glProgramBufferParametersfvNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat * params)  {if (GLeeInit()) glProgramBufferParametersfvNV(target, buffer, index, count, params);}
+void __stdcall _Lazy_glProgramBufferParametersIivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint * params)  {if (GLeeInit()) glProgramBufferParametersIivNV(target, buffer, index, count, params);}
+void __stdcall _Lazy_glProgramBufferParametersIuivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint * params)  {if (GLeeInit()) glProgramBufferParametersIuivNV(target, buffer, index, count, params);}
+PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC pglProgramBufferParametersfvNV=_Lazy_glProgramBufferParametersfvNV;
+PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC pglProgramBufferParametersIivNV=_Lazy_glProgramBufferParametersIivNV;
+PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC pglProgramBufferParametersIuivNV=_Lazy_glProgramBufferParametersIuivNV;
+#endif 
+
+/* GL_EXT_draw_instanced */
+
+#ifdef __GLEE_GL_EXT_draw_instanced
+void __stdcall _Lazy_glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount)  {if (GLeeInit()) glDrawArraysInstancedEXT(mode, start, count, primcount);}
+void __stdcall _Lazy_glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)  {if (GLeeInit()) glDrawElementsInstancedEXT(mode, count, type, indices, primcount);}
+PFNGLDRAWARRAYSINSTANCEDEXTPROC pglDrawArraysInstancedEXT=_Lazy_glDrawArraysInstancedEXT;
+PFNGLDRAWELEMENTSINSTANCEDEXTPROC pglDrawElementsInstancedEXT=_Lazy_glDrawElementsInstancedEXT;
+#endif 
+
+/* GL_EXT_fragment_lighting */
+
+#ifdef __GLEE_GL_EXT_fragment_lighting
+GLvoid __stdcall _Lazy_glFragmentLightModeliEXT(GLenum pname, GLint param)                {if (GLeeInit()) glFragmentLightModeliEXT(pname, param);}
+GLvoid __stdcall _Lazy_glFragmentLightModelfEXT(GLenum pname, GLfloat param)              {if (GLeeInit()) glFragmentLightModelfEXT(pname, param);}
+GLvoid __stdcall _Lazy_glFragmentLightModelivEXT(GLenum pname, GLint * params)            {if (GLeeInit()) glFragmentLightModelivEXT(pname, params);}
+GLvoid __stdcall _Lazy_glFragmentLightModelfvEXT(GLenum pname, GLfloat * params)          {if (GLeeInit()) glFragmentLightModelfvEXT(pname, params);}
+GLvoid __stdcall _Lazy_glFragmentLightiEXT(GLenum light, GLenum pname, GLint param)       {if (GLeeInit()) glFragmentLightiEXT(light, pname, param);}
+GLvoid __stdcall _Lazy_glFragmentLightfEXT(GLenum light, GLenum pname, GLfloat param)     {if (GLeeInit()) glFragmentLightfEXT(light, pname, param);}
+GLvoid __stdcall _Lazy_glFragmentLightivEXT(GLenum light, GLenum pname, GLint * params)   {if (GLeeInit()) glFragmentLightivEXT(light, pname, params);}
+GLvoid __stdcall _Lazy_glFragmentLightfvEXT(GLenum light, GLenum pname, GLfloat * params)  {if (GLeeInit()) glFragmentLightfvEXT(light, pname, params);}
+GLvoid __stdcall _Lazy_glGetFragmentLightivEXT(GLenum light, GLenum pname, GLint * params)  {if (GLeeInit()) glGetFragmentLightivEXT(light, pname, params);}
+GLvoid __stdcall _Lazy_glGetFragmentLightfvEXT(GLenum light, GLenum pname, GLfloat * params)  {if (GLeeInit()) glGetFragmentLightfvEXT(light, pname, params);}
+GLvoid __stdcall _Lazy_glFragmentMaterialfEXT(GLenum face, GLenum pname, const GLfloat param)  {if (GLeeInit()) glFragmentMaterialfEXT(face, pname, param);}
+GLvoid __stdcall _Lazy_glFragmentMaterialiEXT(GLenum face, GLenum pname, const GLint param)  {if (GLeeInit()) glFragmentMaterialiEXT(face, pname, param);}
+GLvoid __stdcall _Lazy_glFragmentMaterialfvEXT(GLenum face, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glFragmentMaterialfvEXT(face, pname, params);}
+GLvoid __stdcall _Lazy_glFragmentMaterialivEXT(GLenum face, GLenum pname, const GLint * params)  {if (GLeeInit()) glFragmentMaterialivEXT(face, pname, params);}
+GLvoid __stdcall _Lazy_glFragmentColorMaterialEXT(GLenum face, GLenum mode)               {if (GLeeInit()) glFragmentColorMaterialEXT(face, mode);}
+GLvoid __stdcall _Lazy_glGetFragmentMaterialfvEXT(GLenum face, GLenum pname, const GLfloat * params)  {if (GLeeInit()) glGetFragmentMaterialfvEXT(face, pname, params);}
+GLvoid __stdcall _Lazy_glGetFragmentMaterialivEXT(GLenum face, GLenum pname, const GLint * params)  {if (GLeeInit()) glGetFragmentMaterialivEXT(face, pname, params);}
+GLvoid __stdcall _Lazy_glLightEnviEXT(GLenum pname, GLint param)                          {if (GLeeInit()) glLightEnviEXT(pname, param);}
+PFNGLFRAGMENTLIGHTMODELIEXTPROC pglFragmentLightModeliEXT=_Lazy_glFragmentLightModeliEXT;
+PFNGLFRAGMENTLIGHTMODELFEXTPROC pglFragmentLightModelfEXT=_Lazy_glFragmentLightModelfEXT;
+PFNGLFRAGMENTLIGHTMODELIVEXTPROC pglFragmentLightModelivEXT=_Lazy_glFragmentLightModelivEXT;
+PFNGLFRAGMENTLIGHTMODELFVEXTPROC pglFragmentLightModelfvEXT=_Lazy_glFragmentLightModelfvEXT;
+PFNGLFRAGMENTLIGHTIEXTPROC pglFragmentLightiEXT=_Lazy_glFragmentLightiEXT;
+PFNGLFRAGMENTLIGHTFEXTPROC pglFragmentLightfEXT=_Lazy_glFragmentLightfEXT;
+PFNGLFRAGMENTLIGHTIVEXTPROC pglFragmentLightivEXT=_Lazy_glFragmentLightivEXT;
+PFNGLFRAGMENTLIGHTFVEXTPROC pglFragmentLightfvEXT=_Lazy_glFragmentLightfvEXT;
+PFNGLGETFRAGMENTLIGHTIVEXTPROC pglGetFragmentLightivEXT=_Lazy_glGetFragmentLightivEXT;
+PFNGLGETFRAGMENTLIGHTFVEXTPROC pglGetFragmentLightfvEXT=_Lazy_glGetFragmentLightfvEXT;
+PFNGLFRAGMENTMATERIALFEXTPROC pglFragmentMaterialfEXT=_Lazy_glFragmentMaterialfEXT;
+PFNGLFRAGMENTMATERIALIEXTPROC pglFragmentMaterialiEXT=_Lazy_glFragmentMaterialiEXT;
+PFNGLFRAGMENTMATERIALFVEXTPROC pglFragmentMaterialfvEXT=_Lazy_glFragmentMaterialfvEXT;
+PFNGLFRAGMENTMATERIALIVEXTPROC pglFragmentMaterialivEXT=_Lazy_glFragmentMaterialivEXT;
+PFNGLFRAGMENTCOLORMATERIALEXTPROC pglFragmentColorMaterialEXT=_Lazy_glFragmentColorMaterialEXT;
+PFNGLGETFRAGMENTMATERIALFVEXTPROC pglGetFragmentMaterialfvEXT=_Lazy_glGetFragmentMaterialfvEXT;
+PFNGLGETFRAGMENTMATERIALIVEXTPROC pglGetFragmentMaterialivEXT=_Lazy_glGetFragmentMaterialivEXT;
+PFNGLLIGHTENVIEXTPROC pglLightEnviEXT=_Lazy_glLightEnviEXT;
+#endif 
+
+/* GL_EXT_packed_depth_stencil */
+
+#ifdef __GLEE_GL_EXT_packed_depth_stencil
+#endif 
+
+/* GL_EXT_scene_marker */
+
+#ifdef __GLEE_GL_EXT_scene_marker
+GLvoid __stdcall _Lazy_glBeginSceneEXT(void)                                              {if (GLeeInit()) glBeginSceneEXT();}
+GLvoid __stdcall _Lazy_glEndSceneEXT(void)                                                {if (GLeeInit()) glEndSceneEXT();}
+PFNGLBEGINSCENEEXTPROC pglBeginSceneEXT=_Lazy_glBeginSceneEXT;
+PFNGLENDSCENEEXTPROC pglEndSceneEXT=_Lazy_glEndSceneEXT;
+#endif 
+
+/* GL_EXT_stencil_clear_tag */
+
+#ifdef __GLEE_GL_EXT_stencil_clear_tag
+#endif 
+
+/* GL_EXT_texture_compression_dxt1 */
+
+#ifdef __GLEE_GL_EXT_texture_compression_dxt1
+#endif 
+
+/* GL_EXT_texture_env */
+
+#ifdef __GLEE_GL_EXT_texture_env
+#endif 
+
+/* GL_EXT_texture_sRGB */
+
+#ifdef __GLEE_GL_EXT_texture_sRGB
+#endif 
+
+/* GL_IBM_static_data */
+
+#ifdef __GLEE_GL_IBM_static_data
+#endif 
+
+/* GL_MESAX_texture_stack */
+
+#ifdef __GLEE_GL_MESAX_texture_stack
+#endif 
+
+/* GL_OES_byte_coordinates */
+
+#ifdef __GLEE_GL_OES_byte_coordinates
+#endif 
+
+/* GL_OES_compressed_paletted_texture */
+
+#ifdef __GLEE_GL_OES_compressed_paletted_texture
+#endif 
+
+/* GL_OES_single_precision */
+
+#ifdef __GLEE_GL_OES_single_precision
+GLvoid __stdcall _Lazy_glDepthRangefOES(GLclampf n, GLclampf f)                           {if (GLeeInit()) glDepthRangefOES(n, f);}
+GLvoid __stdcall _Lazy_glFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)  {if (GLeeInit()) glFrustumfOES(l, r, b, t, n, f);}
+GLvoid __stdcall _Lazy_glOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)  {if (GLeeInit()) glOrthofOES(l, r, b, t, n, f);}
+GLvoid __stdcall _Lazy_glClipPlanefOES(GLenum plane, const GLfloat* equation)             {if (GLeeInit()) glClipPlanefOES(plane, equation);}
+GLvoid __stdcall _Lazy_glGetClipPlanefOES(GLenum plane, GLfloat* equation)                {if (GLeeInit()) glGetClipPlanefOES(plane, equation);}
+GLvoid __stdcall _Lazy_glClearDepthfOES(GLclampd depth)                                   {if (GLeeInit()) glClearDepthfOES(depth);}
+PFNGLDEPTHRANGEFOESPROC pglDepthRangefOES=_Lazy_glDepthRangefOES;
+PFNGLFRUSTUMFOESPROC pglFrustumfOES=_Lazy_glFrustumfOES;
+PFNGLORTHOFOESPROC pglOrthofOES=_Lazy_glOrthofOES;
+PFNGLCLIPPLANEFOESPROC pglClipPlanefOES=_Lazy_glClipPlanefOES;
+PFNGLGETCLIPPLANEFOESPROC pglGetClipPlanefOES=_Lazy_glGetClipPlanefOES;
+PFNGLCLEARDEPTHFOESPROC pglClearDepthfOES=_Lazy_glClearDepthfOES;
+#endif 
+
+/* GL_SGIX_pixel_texture_bits */
+
+#ifdef __GLEE_GL_SGIX_pixel_texture_bits
+#endif 
+
+/* GL_SGIX_texture_range */
+
+#ifdef __GLEE_GL_SGIX_texture_range
+#endif 
+
+/* WGL */
+
+#ifdef WIN32
+
+/* Extension querying variables */
+
+GLboolean _GLEE_WGL_ARB_buffer_region = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_multisample = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_extensions_string = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_pixel_format = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_make_current_read = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_pbuffer = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_render_texture = GL_FALSE;
+GLboolean _GLEE_WGL_ARB_pixel_format_float = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_make_current_read = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_pixel_format = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_pbuffer = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_depth_float = GL_FALSE;
+GLboolean _GLEE_WGL_3DFX_multisample = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_multisample = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_digital_video_control = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_gamma = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_genlock = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_image_buffer = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_swap_frame_lock = GL_FALSE;
+GLboolean _GLEE_WGL_NV_render_depth_texture = GL_FALSE;
+GLboolean _GLEE_WGL_NV_render_texture_rectangle = GL_FALSE;
+GLboolean _GLEE_WGL_ATI_pixel_format_float = GL_FALSE;
+GLboolean _GLEE_WGL_NV_float_buffer = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_display_color_table = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_extensions_string = GL_FALSE;
+GLboolean _GLEE_WGL_EXT_swap_control = GL_FALSE;
+GLboolean _GLEE_WGL_NV_vertex_array_range = GL_FALSE;
+GLboolean _GLEE_WGL_OML_sync_control = GL_FALSE;
+GLboolean _GLEE_WGL_I3D_swap_frame_usage = GL_FALSE;
+GLboolean _GLEE_WGL_3DL_stereo_control = GL_FALSE;
+
+/*  WGL Extension names */
+
+char __GLeeWGLExtensionNames[30][32]={
+    "WGL_ARB_buffer_region",
+    "WGL_ARB_multisample",
+    "WGL_ARB_extensions_string",
+    "WGL_ARB_pixel_format",
+    "WGL_ARB_make_current_read",
+    "WGL_ARB_pbuffer",
+    "WGL_ARB_render_texture",
+    "WGL_ARB_pixel_format_float",
+    "WGL_EXT_make_current_read",
+    "WGL_EXT_pixel_format",
+    "WGL_EXT_pbuffer",
+    "WGL_EXT_depth_float",
+    "WGL_3DFX_multisample",
+    "WGL_EXT_multisample",
+    "WGL_I3D_digital_video_control",
+    "WGL_I3D_gamma",
+    "WGL_I3D_genlock",
+    "WGL_I3D_image_buffer",
+    "WGL_I3D_swap_frame_lock",
+    "WGL_NV_render_depth_texture",
+    "WGL_NV_render_texture_rectangle",
+    "WGL_ATI_pixel_format_float",
+    "WGL_NV_float_buffer",
+    "WGL_EXT_display_color_table",
+    "WGL_EXT_extensions_string",
+    "WGL_EXT_swap_control",
+    "WGL_NV_vertex_array_range",
+    "WGL_OML_sync_control",
+    "WGL_I3D_swap_frame_usage",
+    "WGL_3DL_stereo_control"
+};
+int __GLeeWGLNumExtensions=30;
+
+/* WGL_ARB_buffer_region */
+
+#ifdef __GLEE_WGL_ARB_buffer_region
+HANDLE __stdcall _Lazy_wglCreateBufferRegionARB(HDC hDC, int iLayerPlane, UINT uType)     {if (GLeeInit()) return wglCreateBufferRegionARB(hDC, iLayerPlane, uType); return (HANDLE)0;}
+VOID __stdcall _Lazy_wglDeleteBufferRegionARB(HANDLE hRegion)                             {if (GLeeInit()) wglDeleteBufferRegionARB(hRegion);}
+BOOL __stdcall _Lazy_wglSaveBufferRegionARB(HANDLE hRegion, int x, int y, int width, int height)  {if (GLeeInit()) return wglSaveBufferRegionARB(hRegion, x, y, width, height); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglRestoreBufferRegionARB(HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc)  {if (GLeeInit()) return wglRestoreBufferRegionARB(hRegion, x, y, width, height, xSrc, ySrc); return (BOOL)0;}
+PFNWGLCREATEBUFFERREGIONARBPROC pwglCreateBufferRegionARB=_Lazy_wglCreateBufferRegionARB;
+PFNWGLDELETEBUFFERREGIONARBPROC pwglDeleteBufferRegionARB=_Lazy_wglDeleteBufferRegionARB;
+PFNWGLSAVEBUFFERREGIONARBPROC pwglSaveBufferRegionARB=_Lazy_wglSaveBufferRegionARB;
+PFNWGLRESTOREBUFFERREGIONARBPROC pwglRestoreBufferRegionARB=_Lazy_wglRestoreBufferRegionARB;
+#endif 
+
+/* WGL_ARB_multisample */
+
+#ifdef __GLEE_WGL_ARB_multisample
+#endif 
+
+/* WGL_ARB_extensions_string */
+
+#ifdef __GLEE_WGL_ARB_extensions_string
+const char * __stdcall _Lazy_wglGetExtensionsStringARB(HDC hdc)                           {if (GLeeInit()) return wglGetExtensionsStringARB(hdc); return (const char *)0;}
+PFNWGLGETEXTENSIONSSTRINGARBPROC pwglGetExtensionsStringARB=_Lazy_wglGetExtensionsStringARB;
+#endif 
+
+/* WGL_ARB_pixel_format */
+
+#ifdef __GLEE_WGL_ARB_pixel_format
+BOOL __stdcall _Lazy_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, int * piValues)  {if (GLeeInit()) return wglGetPixelFormatAttribivARB(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, piValues); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetPixelFormatAttribfvARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, FLOAT * pfValues)  {if (GLeeInit()) return wglGetPixelFormatAttribfvARB(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, pfValues); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglChoosePixelFormatARB(HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats)  {if (GLeeInit()) return wglChoosePixelFormatARB(hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats); return (BOOL)0;}
+PFNWGLGETPIXELFORMATATTRIBIVARBPROC pwglGetPixelFormatAttribivARB=_Lazy_wglGetPixelFormatAttribivARB;
+PFNWGLGETPIXELFORMATATTRIBFVARBPROC pwglGetPixelFormatAttribfvARB=_Lazy_wglGetPixelFormatAttribfvARB;
+PFNWGLCHOOSEPIXELFORMATARBPROC pwglChoosePixelFormatARB=_Lazy_wglChoosePixelFormatARB;
+#endif 
+
+/* WGL_ARB_make_current_read */
+
+#ifdef __GLEE_WGL_ARB_make_current_read
+BOOL __stdcall _Lazy_wglMakeContextCurrentARB(HDC hDrawDC, HDC hReadDC, HGLRC hglrc)      {if (GLeeInit()) return wglMakeContextCurrentARB(hDrawDC, hReadDC, hglrc); return (BOOL)0;}
+HDC __stdcall _Lazy_wglGetCurrentReadDCARB(void)                                          {if (GLeeInit()) return wglGetCurrentReadDCARB(); return (HDC)0;}
+PFNWGLMAKECONTEXTCURRENTARBPROC pwglMakeContextCurrentARB=_Lazy_wglMakeContextCurrentARB;
+PFNWGLGETCURRENTREADDCARBPROC pwglGetCurrentReadDCARB=_Lazy_wglGetCurrentReadDCARB;
+#endif 
+
+/* WGL_ARB_pbuffer */
+
+#ifdef __GLEE_WGL_ARB_pbuffer
+HPBUFFERARB __stdcall _Lazy_wglCreatePbufferARB(HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList)  {if (GLeeInit()) return wglCreatePbufferARB(hDC, iPixelFormat, iWidth, iHeight, piAttribList); return (HPBUFFERARB)0;}
+HDC __stdcall _Lazy_wglGetPbufferDCARB(HPBUFFERARB hPbuffer)                              {if (GLeeInit()) return wglGetPbufferDCARB(hPbuffer); return (HDC)0;}
+int __stdcall _Lazy_wglReleasePbufferDCARB(HPBUFFERARB hPbuffer, HDC hDC)                 {if (GLeeInit()) return wglReleasePbufferDCARB(hPbuffer, hDC); return (int)0;}
+BOOL __stdcall _Lazy_wglDestroyPbufferARB(HPBUFFERARB hPbuffer)                           {if (GLeeInit()) return wglDestroyPbufferARB(hPbuffer); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAttribute, int * piValue)  {if (GLeeInit()) return wglQueryPbufferARB(hPbuffer, iAttribute, piValue); return (BOOL)0;}
+PFNWGLCREATEPBUFFERARBPROC pwglCreatePbufferARB=_Lazy_wglCreatePbufferARB;
+PFNWGLGETPBUFFERDCARBPROC pwglGetPbufferDCARB=_Lazy_wglGetPbufferDCARB;
+PFNWGLRELEASEPBUFFERDCARBPROC pwglReleasePbufferDCARB=_Lazy_wglReleasePbufferDCARB;
+PFNWGLDESTROYPBUFFERARBPROC pwglDestroyPbufferARB=_Lazy_wglDestroyPbufferARB;
+PFNWGLQUERYPBUFFERARBPROC pwglQueryPbufferARB=_Lazy_wglQueryPbufferARB;
+#endif 
+
+/* WGL_ARB_render_texture */
+
+#ifdef __GLEE_WGL_ARB_render_texture
+BOOL __stdcall _Lazy_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuffer)                {if (GLeeInit()) return wglBindTexImageARB(hPbuffer, iBuffer); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglReleaseTexImageARB(HPBUFFERARB hPbuffer, int iBuffer)             {if (GLeeInit()) return wglReleaseTexImageARB(hPbuffer, iBuffer); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglSetPbufferAttribARB(HPBUFFERARB hPbuffer, const int * piAttribList)  {if (GLeeInit()) return wglSetPbufferAttribARB(hPbuffer, piAttribList); return (BOOL)0;}
+PFNWGLBINDTEXIMAGEARBPROC pwglBindTexImageARB=_Lazy_wglBindTexImageARB;
+PFNWGLRELEASETEXIMAGEARBPROC pwglReleaseTexImageARB=_Lazy_wglReleaseTexImageARB;
+PFNWGLSETPBUFFERATTRIBARBPROC pwglSetPbufferAttribARB=_Lazy_wglSetPbufferAttribARB;
+#endif 
+
+/* WGL_ARB_pixel_format_float */
+
+#ifdef __GLEE_WGL_ARB_pixel_format_float
+#endif 
+
+/* WGL_EXT_make_current_read */
+
+#ifdef __GLEE_WGL_EXT_make_current_read
+BOOL __stdcall _Lazy_wglMakeContextCurrentEXT(HDC hDrawDC, HDC hReadDC, HGLRC hglrc)      {if (GLeeInit()) return wglMakeContextCurrentEXT(hDrawDC, hReadDC, hglrc); return (BOOL)0;}
+HDC __stdcall _Lazy_wglGetCurrentReadDCEXT(void)                                          {if (GLeeInit()) return wglGetCurrentReadDCEXT(); return (HDC)0;}
+PFNWGLMAKECONTEXTCURRENTEXTPROC pwglMakeContextCurrentEXT=_Lazy_wglMakeContextCurrentEXT;
+PFNWGLGETCURRENTREADDCEXTPROC pwglGetCurrentReadDCEXT=_Lazy_wglGetCurrentReadDCEXT;
+#endif 
+
+/* WGL_EXT_pixel_format */
+
+#ifdef __GLEE_WGL_EXT_pixel_format
+BOOL __stdcall _Lazy_wglGetPixelFormatAttribivEXT(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, int * piValues)  {if (GLeeInit()) return wglGetPixelFormatAttribivEXT(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, piValues); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetPixelFormatAttribfvEXT(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, FLOAT * pfValues)  {if (GLeeInit()) return wglGetPixelFormatAttribfvEXT(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, pfValues); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglChoosePixelFormatEXT(HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats)  {if (GLeeInit()) return wglChoosePixelFormatEXT(hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats); return (BOOL)0;}
+PFNWGLGETPIXELFORMATATTRIBIVEXTPROC pwglGetPixelFormatAttribivEXT=_Lazy_wglGetPixelFormatAttribivEXT;
+PFNWGLGETPIXELFORMATATTRIBFVEXTPROC pwglGetPixelFormatAttribfvEXT=_Lazy_wglGetPixelFormatAttribfvEXT;
+PFNWGLCHOOSEPIXELFORMATEXTPROC pwglChoosePixelFormatEXT=_Lazy_wglChoosePixelFormatEXT;
+#endif 
+
+/* WGL_EXT_pbuffer */
+
+#ifdef __GLEE_WGL_EXT_pbuffer
+HPBUFFEREXT __stdcall _Lazy_wglCreatePbufferEXT(HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList)  {if (GLeeInit()) return wglCreatePbufferEXT(hDC, iPixelFormat, iWidth, iHeight, piAttribList); return (HPBUFFEREXT)0;}
+HDC __stdcall _Lazy_wglGetPbufferDCEXT(HPBUFFEREXT hPbuffer)                              {if (GLeeInit()) return wglGetPbufferDCEXT(hPbuffer); return (HDC)0;}
+int __stdcall _Lazy_wglReleasePbufferDCEXT(HPBUFFEREXT hPbuffer, HDC hDC)                 {if (GLeeInit()) return wglReleasePbufferDCEXT(hPbuffer, hDC); return (int)0;}
+BOOL __stdcall _Lazy_wglDestroyPbufferEXT(HPBUFFEREXT hPbuffer)                           {if (GLeeInit()) return wglDestroyPbufferEXT(hPbuffer); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryPbufferEXT(HPBUFFEREXT hPbuffer, int iAttribute, int * piValue)  {if (GLeeInit()) return wglQueryPbufferEXT(hPbuffer, iAttribute, piValue); return (BOOL)0;}
+PFNWGLCREATEPBUFFEREXTPROC pwglCreatePbufferEXT=_Lazy_wglCreatePbufferEXT;
+PFNWGLGETPBUFFERDCEXTPROC pwglGetPbufferDCEXT=_Lazy_wglGetPbufferDCEXT;
+PFNWGLRELEASEPBUFFERDCEXTPROC pwglReleasePbufferDCEXT=_Lazy_wglReleasePbufferDCEXT;
+PFNWGLDESTROYPBUFFEREXTPROC pwglDestroyPbufferEXT=_Lazy_wglDestroyPbufferEXT;
+PFNWGLQUERYPBUFFEREXTPROC pwglQueryPbufferEXT=_Lazy_wglQueryPbufferEXT;
+#endif 
+
+/* WGL_EXT_depth_float */
+
+#ifdef __GLEE_WGL_EXT_depth_float
+#endif 
+
+/* WGL_3DFX_multisample */
+
+#ifdef __GLEE_WGL_3DFX_multisample
+#endif 
+
+/* WGL_EXT_multisample */
+
+#ifdef __GLEE_WGL_EXT_multisample
+#endif 
+
+/* WGL_I3D_digital_video_control */
+
+#ifdef __GLEE_WGL_I3D_digital_video_control
+BOOL __stdcall _Lazy_wglGetDigitalVideoParametersI3D(HDC hDC, int iAttribute, int * piValue)  {if (GLeeInit()) return wglGetDigitalVideoParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglSetDigitalVideoParametersI3D(HDC hDC, int iAttribute, const int * piValue)  {if (GLeeInit()) return wglSetDigitalVideoParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;}
+PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC pwglGetDigitalVideoParametersI3D=_Lazy_wglGetDigitalVideoParametersI3D;
+PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC pwglSetDigitalVideoParametersI3D=_Lazy_wglSetDigitalVideoParametersI3D;
+#endif 
+
+/* WGL_I3D_gamma */
+
+#ifdef __GLEE_WGL_I3D_gamma
+BOOL __stdcall _Lazy_wglGetGammaTableParametersI3D(HDC hDC, int iAttribute, int * piValue)  {if (GLeeInit()) return wglGetGammaTableParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglSetGammaTableParametersI3D(HDC hDC, int iAttribute, const int * piValue)  {if (GLeeInit()) return wglSetGammaTableParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGammaTableI3D(HDC hDC, int iEntries, USHORT * puRed, USHORT * puGreen, USHORT * puBlue)  {if (GLeeInit()) return wglGetGammaTableI3D(hDC, iEntries, puRed, puGreen, puBlue); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglSetGammaTableI3D(HDC hDC, int iEntries, const USHORT * puRed, const USHORT * puGreen, const USHORT * puBlue)  {if (GLeeInit()) return wglSetGammaTableI3D(hDC, iEntries, puRed, puGreen, puBlue); return (BOOL)0;}
+PFNWGLGETGAMMATABLEPARAMETERSI3DPROC pwglGetGammaTableParametersI3D=_Lazy_wglGetGammaTableParametersI3D;
+PFNWGLSETGAMMATABLEPARAMETERSI3DPROC pwglSetGammaTableParametersI3D=_Lazy_wglSetGammaTableParametersI3D;
+PFNWGLGETGAMMATABLEI3DPROC pwglGetGammaTableI3D=_Lazy_wglGetGammaTableI3D;
+PFNWGLSETGAMMATABLEI3DPROC pwglSetGammaTableI3D=_Lazy_wglSetGammaTableI3D;
+#endif 
+
+/* WGL_I3D_genlock */
+
+#ifdef __GLEE_WGL_I3D_genlock
+BOOL __stdcall _Lazy_wglEnableGenlockI3D(HDC hDC)                                         {if (GLeeInit()) return wglEnableGenlockI3D(hDC); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglDisableGenlockI3D(HDC hDC)                                        {if (GLeeInit()) return wglDisableGenlockI3D(hDC); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglIsEnabledGenlockI3D(HDC hDC, BOOL * pFlag)                        {if (GLeeInit()) return wglIsEnabledGenlockI3D(hDC, pFlag); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGenlockSourceI3D(HDC hDC, UINT uSource)                           {if (GLeeInit()) return wglGenlockSourceI3D(hDC, uSource); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGenlockSourceI3D(HDC hDC, UINT * uSource)                      {if (GLeeInit()) return wglGetGenlockSourceI3D(hDC, uSource); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGenlockSourceEdgeI3D(HDC hDC, UINT uEdge)                         {if (GLeeInit()) return wglGenlockSourceEdgeI3D(hDC, uEdge); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGenlockSourceEdgeI3D(HDC hDC, UINT * uEdge)                    {if (GLeeInit()) return wglGetGenlockSourceEdgeI3D(hDC, uEdge); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGenlockSampleRateI3D(HDC hDC, UINT uRate)                         {if (GLeeInit()) return wglGenlockSampleRateI3D(hDC, uRate); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGenlockSampleRateI3D(HDC hDC, UINT * uRate)                    {if (GLeeInit()) return wglGetGenlockSampleRateI3D(hDC, uRate); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGenlockSourceDelayI3D(HDC hDC, UINT uDelay)                       {if (GLeeInit()) return wglGenlockSourceDelayI3D(hDC, uDelay); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetGenlockSourceDelayI3D(HDC hDC, UINT * uDelay)                  {if (GLeeInit()) return wglGetGenlockSourceDelayI3D(hDC, uDelay); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryGenlockMaxSourceDelayI3D(HDC hDC, UINT * uMaxLineDelay, UINT * uMaxPixelDelay)  {if (GLeeInit()) return wglQueryGenlockMaxSourceDelayI3D(hDC, uMaxLineDelay, uMaxPixelDelay); return (BOOL)0;}
+PFNWGLENABLEGENLOCKI3DPROC pwglEnableGenlockI3D=_Lazy_wglEnableGenlockI3D;
+PFNWGLDISABLEGENLOCKI3DPROC pwglDisableGenlockI3D=_Lazy_wglDisableGenlockI3D;
+PFNWGLISENABLEDGENLOCKI3DPROC pwglIsEnabledGenlockI3D=_Lazy_wglIsEnabledGenlockI3D;
+PFNWGLGENLOCKSOURCEI3DPROC pwglGenlockSourceI3D=_Lazy_wglGenlockSourceI3D;
+PFNWGLGETGENLOCKSOURCEI3DPROC pwglGetGenlockSourceI3D=_Lazy_wglGetGenlockSourceI3D;
+PFNWGLGENLOCKSOURCEEDGEI3DPROC pwglGenlockSourceEdgeI3D=_Lazy_wglGenlockSourceEdgeI3D;
+PFNWGLGETGENLOCKSOURCEEDGEI3DPROC pwglGetGenlockSourceEdgeI3D=_Lazy_wglGetGenlockSourceEdgeI3D;
+PFNWGLGENLOCKSAMPLERATEI3DPROC pwglGenlockSampleRateI3D=_Lazy_wglGenlockSampleRateI3D;
+PFNWGLGETGENLOCKSAMPLERATEI3DPROC pwglGetGenlockSampleRateI3D=_Lazy_wglGetGenlockSampleRateI3D;
+PFNWGLGENLOCKSOURCEDELAYI3DPROC pwglGenlockSourceDelayI3D=_Lazy_wglGenlockSourceDelayI3D;
+PFNWGLGETGENLOCKSOURCEDELAYI3DPROC pwglGetGenlockSourceDelayI3D=_Lazy_wglGetGenlockSourceDelayI3D;
+PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC pwglQueryGenlockMaxSourceDelayI3D=_Lazy_wglQueryGenlockMaxSourceDelayI3D;
+#endif 
+
+/* WGL_I3D_image_buffer */
+
+#ifdef __GLEE_WGL_I3D_image_buffer
+LPVOID __stdcall _Lazy_wglCreateImageBufferI3D(HDC hDC, DWORD dwSize, UINT uFlags)        {if (GLeeInit()) return wglCreateImageBufferI3D(hDC, dwSize, uFlags); return (LPVOID)0;}
+BOOL __stdcall _Lazy_wglDestroyImageBufferI3D(HDC hDC, LPVOID pAddress)                   {if (GLeeInit()) return wglDestroyImageBufferI3D(hDC, pAddress); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglAssociateImageBufferEventsI3D(HDC hDC, const HANDLE * pEvent, const LPVOID * pAddress, const DWORD * pSize, UINT count)  {if (GLeeInit()) return wglAssociateImageBufferEventsI3D(hDC, pEvent, pAddress, pSize, count); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglReleaseImageBufferEventsI3D(HDC hDC, const LPVOID * pAddress, UINT count)  {if (GLeeInit()) return wglReleaseImageBufferEventsI3D(hDC, pAddress, count); return (BOOL)0;}
+PFNWGLCREATEIMAGEBUFFERI3DPROC pwglCreateImageBufferI3D=_Lazy_wglCreateImageBufferI3D;
+PFNWGLDESTROYIMAGEBUFFERI3DPROC pwglDestroyImageBufferI3D=_Lazy_wglDestroyImageBufferI3D;
+PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC pwglAssociateImageBufferEventsI3D=_Lazy_wglAssociateImageBufferEventsI3D;
+PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC pwglReleaseImageBufferEventsI3D=_Lazy_wglReleaseImageBufferEventsI3D;
+#endif 
+
+/* WGL_I3D_swap_frame_lock */
+
+#ifdef __GLEE_WGL_I3D_swap_frame_lock
+BOOL __stdcall _Lazy_wglEnableFrameLockI3D(void)                                          {if (GLeeInit()) return wglEnableFrameLockI3D(); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglDisableFrameLockI3D(void)                                         {if (GLeeInit()) return wglDisableFrameLockI3D(); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglIsEnabledFrameLockI3D(BOOL * pFlag)                               {if (GLeeInit()) return wglIsEnabledFrameLockI3D(pFlag); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryFrameLockMasterI3D(BOOL * pFlag)                             {if (GLeeInit()) return wglQueryFrameLockMasterI3D(pFlag); return (BOOL)0;}
+PFNWGLENABLEFRAMELOCKI3DPROC pwglEnableFrameLockI3D=_Lazy_wglEnableFrameLockI3D;
+PFNWGLDISABLEFRAMELOCKI3DPROC pwglDisableFrameLockI3D=_Lazy_wglDisableFrameLockI3D;
+PFNWGLISENABLEDFRAMELOCKI3DPROC pwglIsEnabledFrameLockI3D=_Lazy_wglIsEnabledFrameLockI3D;
+PFNWGLQUERYFRAMELOCKMASTERI3DPROC pwglQueryFrameLockMasterI3D=_Lazy_wglQueryFrameLockMasterI3D;
+#endif 
+
+/* WGL_NV_render_depth_texture */
+
+#ifdef __GLEE_WGL_NV_render_depth_texture
+#endif 
+
+/* WGL_NV_render_texture_rectangle */
+
+#ifdef __GLEE_WGL_NV_render_texture_rectangle
+#endif 
+
+/* WGL_ATI_pixel_format_float */
+
+#ifdef __GLEE_WGL_ATI_pixel_format_float
+#endif 
+
+/* WGL_NV_float_buffer */
+
+#ifdef __GLEE_WGL_NV_float_buffer
+#endif 
+
+/* WGL_EXT_display_color_table */
+
+#ifdef __GLEE_WGL_EXT_display_color_table
+GLboolean __stdcall _Lazy_wglCreateDisplayColorTableEXT(GLushort id)                      {if (GLeeInit()) return wglCreateDisplayColorTableEXT(id); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_wglLoadDisplayColorTableEXT(const GLushort * table, GLuint length)  {if (GLeeInit()) return wglLoadDisplayColorTableEXT(table, length); return (GLboolean)0;}
+GLboolean __stdcall _Lazy_wglBindDisplayColorTableEXT(GLushort id)                        {if (GLeeInit()) return wglBindDisplayColorTableEXT(id); return (GLboolean)0;}
+VOID __stdcall _Lazy_wglDestroyDisplayColorTableEXT(GLushort id)                          {if (GLeeInit()) wglDestroyDisplayColorTableEXT(id);}
+PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC pwglCreateDisplayColorTableEXT=_Lazy_wglCreateDisplayColorTableEXT;
+PFNWGLLOADDISPLAYCOLORTABLEEXTPROC pwglLoadDisplayColorTableEXT=_Lazy_wglLoadDisplayColorTableEXT;
+PFNWGLBINDDISPLAYCOLORTABLEEXTPROC pwglBindDisplayColorTableEXT=_Lazy_wglBindDisplayColorTableEXT;
+PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC pwglDestroyDisplayColorTableEXT=_Lazy_wglDestroyDisplayColorTableEXT;
+#endif 
+
+/* WGL_EXT_extensions_string */
+
+#ifdef __GLEE_WGL_EXT_extensions_string
+const char * __stdcall _Lazy_wglGetExtensionsStringEXT(void)                              {if (GLeeInit()) return wglGetExtensionsStringEXT(); return (const char *)0;}
+PFNWGLGETEXTENSIONSSTRINGEXTPROC pwglGetExtensionsStringEXT=_Lazy_wglGetExtensionsStringEXT;
+#endif 
+
+/* WGL_EXT_swap_control */
+
+#ifdef __GLEE_WGL_EXT_swap_control
+BOOL __stdcall _Lazy_wglSwapIntervalEXT(int interval)                                     {if (GLeeInit()) return wglSwapIntervalEXT(interval); return (BOOL)0;}
+int __stdcall _Lazy_wglGetSwapIntervalEXT(void)                                           {if (GLeeInit()) return wglGetSwapIntervalEXT(); return (int)0;}
+PFNWGLSWAPINTERVALEXTPROC pwglSwapIntervalEXT=_Lazy_wglSwapIntervalEXT;
+PFNWGLGETSWAPINTERVALEXTPROC pwglGetSwapIntervalEXT=_Lazy_wglGetSwapIntervalEXT;
+#endif 
+
+/* WGL_NV_vertex_array_range */
+
+#ifdef __GLEE_WGL_NV_vertex_array_range
+void* __stdcall _Lazy_wglAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority)  {if (GLeeInit()) return wglAllocateMemoryNV(size, readfreq, writefreq, priority); return (void*)0;}
+void __stdcall _Lazy_wglFreeMemoryNV(void * pointer)                                      {if (GLeeInit()) wglFreeMemoryNV(pointer);}
+PFNWGLALLOCATEMEMORYNVPROC pwglAllocateMemoryNV=_Lazy_wglAllocateMemoryNV;
+PFNWGLFREEMEMORYNVPROC pwglFreeMemoryNV=_Lazy_wglFreeMemoryNV;
+#endif 
+
+/* WGL_OML_sync_control */
+
+#ifdef __GLEE_WGL_OML_sync_control
+BOOL __stdcall _Lazy_wglGetSyncValuesOML(HDC hdc, INT64 * ust, INT64 * msc, INT64 * sbc)  {if (GLeeInit()) return wglGetSyncValuesOML(hdc, ust, msc, sbc); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglGetMscRateOML(HDC hdc, INT32 * numerator, INT32 * denominator)    {if (GLeeInit()) return wglGetMscRateOML(hdc, numerator, denominator); return (BOOL)0;}
+INT64 __stdcall _Lazy_wglSwapBuffersMscOML(HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder)  {if (GLeeInit()) return wglSwapBuffersMscOML(hdc, target_msc, divisor, remainder); return (INT64)0;}
+INT64 __stdcall _Lazy_wglSwapLayerBuffersMscOML(HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder)  {if (GLeeInit()) return wglSwapLayerBuffersMscOML(hdc, fuPlanes, target_msc, divisor, remainder); return (INT64)0;}
+BOOL __stdcall _Lazy_wglWaitForMscOML(HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 * ust, INT64 * msc, INT64 * sbc)  {if (GLeeInit()) return wglWaitForMscOML(hdc, target_msc, divisor, remainder, ust, msc, sbc); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglWaitForSbcOML(HDC hdc, INT64 target_sbc, INT64 * ust, INT64 * msc, INT64 * sbc)  {if (GLeeInit()) return wglWaitForSbcOML(hdc, target_sbc, ust, msc, sbc); return (BOOL)0;}
+PFNWGLGETSYNCVALUESOMLPROC pwglGetSyncValuesOML=_Lazy_wglGetSyncValuesOML;
+PFNWGLGETMSCRATEOMLPROC pwglGetMscRateOML=_Lazy_wglGetMscRateOML;
+PFNWGLSWAPBUFFERSMSCOMLPROC pwglSwapBuffersMscOML=_Lazy_wglSwapBuffersMscOML;
+PFNWGLSWAPLAYERBUFFERSMSCOMLPROC pwglSwapLayerBuffersMscOML=_Lazy_wglSwapLayerBuffersMscOML;
+PFNWGLWAITFORMSCOMLPROC pwglWaitForMscOML=_Lazy_wglWaitForMscOML;
+PFNWGLWAITFORSBCOMLPROC pwglWaitForSbcOML=_Lazy_wglWaitForSbcOML;
+#endif 
+
+/* WGL_I3D_swap_frame_usage */
+
+#ifdef __GLEE_WGL_I3D_swap_frame_usage
+BOOL __stdcall _Lazy_wglGetFrameUsageI3D(float * pUsage)                                  {if (GLeeInit()) return wglGetFrameUsageI3D(pUsage); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglBeginFrameTrackingI3D(void)                                       {if (GLeeInit()) return wglBeginFrameTrackingI3D(); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglEndFrameTrackingI3D(void)                                         {if (GLeeInit()) return wglEndFrameTrackingI3D(); return (BOOL)0;}
+BOOL __stdcall _Lazy_wglQueryFrameTrackingI3D(DWORD * pFrameCount, DWORD * pMissedFrames, float * pLastMissedUsage)  {if (GLeeInit()) return wglQueryFrameTrackingI3D(pFrameCount, pMissedFrames, pLastMissedUsage); return (BOOL)0;}
+PFNWGLGETFRAMEUSAGEI3DPROC pwglGetFrameUsageI3D=_Lazy_wglGetFrameUsageI3D;
+PFNWGLBEGINFRAMETRACKINGI3DPROC pwglBeginFrameTrackingI3D=_Lazy_wglBeginFrameTrackingI3D;
+PFNWGLENDFRAMETRACKINGI3DPROC pwglEndFrameTrackingI3D=_Lazy_wglEndFrameTrackingI3D;
+PFNWGLQUERYFRAMETRACKINGI3DPROC pwglQueryFrameTrackingI3D=_Lazy_wglQueryFrameTrackingI3D;
+#endif 
+
+/* WGL_3DL_stereo_control */
+
+#ifdef __GLEE_WGL_3DL_stereo_control
+BOOL __stdcall _Lazy_wglSetStereoEmitterState3DL(HDC hDC, UINT uState)                    {if (GLeeInit()) return wglSetStereoEmitterState3DL(hDC, uState); return (BOOL)0;}
+PFNWGLSETSTEREOEMITTERSTATE3DLPROC pwglSetStereoEmitterState3DL=_Lazy_wglSetStereoEmitterState3DL;
+#endif 
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else /* GLX */
+
+/* Extension querying variables */
+
+GLboolean _GLEE_GLX_VERSION_1_3 = GL_FALSE;
+GLboolean _GLEE_GLX_VERSION_1_4 = GL_FALSE;
+GLboolean _GLEE_GLX_ARB_multisample = GL_FALSE;
+GLboolean _GLEE_GLX_ARB_fbconfig_float = GL_FALSE;
+GLboolean _GLEE_GLX_SGIS_multisample = GL_FALSE;
+GLboolean _GLEE_GLX_EXT_visual_info = GL_FALSE;
+GLboolean _GLEE_GLX_SGI_swap_control = GL_FALSE;
+GLboolean _GLEE_GLX_SGI_video_sync = GL_FALSE;
+GLboolean _GLEE_GLX_SGI_make_current_read = GL_FALSE;
+GLboolean _GLEE_GLX_EXT_visual_rating = GL_FALSE;
+GLboolean _GLEE_GLX_EXT_import_context = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_fbconfig = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_pbuffer = GL_FALSE;
+GLboolean _GLEE_GLX_SGI_cushion = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_video_resize = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_swap_group = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_swap_barrier = GL_FALSE;
+GLboolean _GLEE_GLX_SGIS_blended_overlay = GL_FALSE;
+GLboolean _GLEE_GLX_SGIS_shared_multisample = GL_FALSE;
+GLboolean _GLEE_GLX_SUN_get_transparent_index = GL_FALSE;
+GLboolean _GLEE_GLX_3DFX_multisample = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_copy_sub_buffer = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_pixmap_colormap = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_release_buffers = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_set_3dfx_mode = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_visual_select_group = GL_FALSE;
+GLboolean _GLEE_GLX_OML_swap_method = GL_FALSE;
+GLboolean _GLEE_GLX_OML_sync_control = GL_FALSE;
+GLboolean _GLEE_GLX_NV_float_buffer = GL_FALSE;
+GLboolean _GLEE_GLX_SGIX_hyperpipe = GL_FALSE;
+GLboolean _GLEE_GLX_MESA_agp_offset = GL_FALSE;
+GLboolean _GLEE_GLX_EXT_scene_marker = GL_FALSE;
+
+/*  GLX Extension names */
+
+char __GLeeGLXExtensionNames[32][30]={
+    "GLX_VERSION_1_3",
+    "GLX_VERSION_1_4",
+    "GLX_ARB_multisample",
+    "GLX_ARB_fbconfig_float",
+    "GLX_SGIS_multisample",
+    "GLX_EXT_visual_info",
+    "GLX_SGI_swap_control",
+    "GLX_SGI_video_sync",
+    "GLX_SGI_make_current_read",
+    "GLX_EXT_visual_rating",
+    "GLX_EXT_import_context",
+    "GLX_SGIX_fbconfig",
+    "GLX_SGIX_pbuffer",
+    "GLX_SGI_cushion",
+    "GLX_SGIX_video_resize",
+    "GLX_SGIX_swap_group",
+    "GLX_SGIX_swap_barrier",
+    "GLX_SGIS_blended_overlay",
+    "GLX_SGIS_shared_multisample",
+    "GLX_SUN_get_transparent_index",
+    "GLX_3DFX_multisample",
+    "GLX_MESA_copy_sub_buffer",
+    "GLX_MESA_pixmap_colormap",
+    "GLX_MESA_release_buffers",
+    "GLX_MESA_set_3dfx_mode",
+    "GLX_SGIX_visual_select_group",
+    "GLX_OML_swap_method",
+    "GLX_OML_sync_control",
+    "GLX_NV_float_buffer",
+    "GLX_SGIX_hyperpipe",
+    "GLX_MESA_agp_offset",
+    "GLX_EXT_scene_marker"
+};
+int __GLeeGLXNumExtensions=32;
+
+/* GLX_VERSION_1_3 */
+
+#ifdef __GLEE_GLX_VERSION_1_3
+GLXFBConfig * __stdcall _Lazy_glXGetFBConfigs(Display * dpy, int screen, int * nelements)  {if (GLeeInit()) return glXGetFBConfigs(dpy, screen, nelements); return (GLXFBConfig *)0;}
+GLXFBConfig * __stdcall _Lazy_glXChooseFBConfig(Display * dpy, int screen, const int * attrib_list, int * nelements)  {if (GLeeInit()) return glXChooseFBConfig(dpy, screen, attrib_list, nelements); return (GLXFBConfig *)0;}
+int __stdcall _Lazy_glXGetFBConfigAttrib(Display * dpy, GLXFBConfig config, int attribute, int * value)  {if (GLeeInit()) return glXGetFBConfigAttrib(dpy, config, attribute, value); return (int)0;}
+XVisualInfo * __stdcall _Lazy_glXGetVisualFromFBConfig(Display * dpy, GLXFBConfig config)  {if (GLeeInit()) return glXGetVisualFromFBConfig(dpy, config); return (XVisualInfo *)0;}
+GLXWindow __stdcall _Lazy_glXCreateWindow(Display * dpy, GLXFBConfig config, Window win, const int * attrib_list)  {if (GLeeInit()) return glXCreateWindow(dpy, config, win, attrib_list); return (GLXWindow)0;}
+void __stdcall _Lazy_glXDestroyWindow(Display * dpy, GLXWindow win)                       {if (GLeeInit()) glXDestroyWindow(dpy, win);}
+GLXPixmap __stdcall _Lazy_glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap, const int * attrib_list)  {if (GLeeInit()) return glXCreatePixmap(dpy, config, pixmap, attrib_list); return (GLXPixmap)0;}
+void __stdcall _Lazy_glXDestroyPixmap(Display * dpy, GLXPixmap pixmap)                    {if (GLeeInit()) glXDestroyPixmap(dpy, pixmap);}
+GLXPbuffer __stdcall _Lazy_glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int * attrib_list)  {if (GLeeInit()) return glXCreatePbuffer(dpy, config, attrib_list); return (GLXPbuffer)0;}
+void __stdcall _Lazy_glXDestroyPbuffer(Display * dpy, GLXPbuffer pbuf)                    {if (GLeeInit()) glXDestroyPbuffer(dpy, pbuf);}
+void __stdcall _Lazy_glXQueryDrawable(Display * dpy, GLXDrawable draw, int attribute, unsigned int * value)  {if (GLeeInit()) glXQueryDrawable(dpy, draw, attribute, value);}
+GLXContext __stdcall _Lazy_glXCreateNewContext(Display * dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct)  {if (GLeeInit()) return glXCreateNewContext(dpy, config, render_type, share_list, direct); return (GLXContext)0;}
+Bool __stdcall _Lazy_glXMakeContextCurrent(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)  {if (GLeeInit()) return glXMakeContextCurrent(dpy, draw, read, ctx); return (Bool)0;}
+GLXDrawable __stdcall _Lazy_glXGetCurrentReadDrawable(void)                               {if (GLeeInit()) return glXGetCurrentReadDrawable(); return (GLXDrawable)0;}
+Display * __stdcall _Lazy_glXGetCurrentDisplay(void)                                      {if (GLeeInit()) return glXGetCurrentDisplay(); return (Display *)0;}
+int __stdcall _Lazy_glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int * value)  {if (GLeeInit()) return glXQueryContext(dpy, ctx, attribute, value); return (int)0;}
+void __stdcall _Lazy_glXSelectEvent(Display * dpy, GLXDrawable draw, unsigned long event_mask)  {if (GLeeInit()) glXSelectEvent(dpy, draw, event_mask);}
+void __stdcall _Lazy_glXGetSelectedEvent(Display * dpy, GLXDrawable draw, unsigned long * event_mask)  {if (GLeeInit()) glXGetSelectedEvent(dpy, draw, event_mask);}
+PFNGLXGETFBCONFIGSPROC pglXGetFBConfigs=_Lazy_glXGetFBConfigs;
+PFNGLXCHOOSEFBCONFIGPROC pglXChooseFBConfig=_Lazy_glXChooseFBConfig;
+PFNGLXGETFBCONFIGATTRIBPROC pglXGetFBConfigAttrib=_Lazy_glXGetFBConfigAttrib;
+PFNGLXGETVISUALFROMFBCONFIGPROC pglXGetVisualFromFBConfig=_Lazy_glXGetVisualFromFBConfig;
+PFNGLXCREATEWINDOWPROC pglXCreateWindow=_Lazy_glXCreateWindow;
+PFNGLXDESTROYWINDOWPROC pglXDestroyWindow=_Lazy_glXDestroyWindow;
+PFNGLXCREATEPIXMAPPROC pglXCreatePixmap=_Lazy_glXCreatePixmap;
+PFNGLXDESTROYPIXMAPPROC pglXDestroyPixmap=_Lazy_glXDestroyPixmap;
+PFNGLXCREATEPBUFFERPROC pglXCreatePbuffer=_Lazy_glXCreatePbuffer;
+PFNGLXDESTROYPBUFFERPROC pglXDestroyPbuffer=_Lazy_glXDestroyPbuffer;
+PFNGLXQUERYDRAWABLEPROC pglXQueryDrawable=_Lazy_glXQueryDrawable;
+PFNGLXCREATENEWCONTEXTPROC pglXCreateNewContext=_Lazy_glXCreateNewContext;
+PFNGLXMAKECONTEXTCURRENTPROC pglXMakeContextCurrent=_Lazy_glXMakeContextCurrent;
+PFNGLXGETCURRENTREADDRAWABLEPROC pglXGetCurrentReadDrawable=_Lazy_glXGetCurrentReadDrawable;
+PFNGLXGETCURRENTDISPLAYPROC pglXGetCurrentDisplay=_Lazy_glXGetCurrentDisplay;
+PFNGLXQUERYCONTEXTPROC pglXQueryContext=_Lazy_glXQueryContext;
+PFNGLXSELECTEVENTPROC pglXSelectEvent=_Lazy_glXSelectEvent;
+PFNGLXGETSELECTEDEVENTPROC pglXGetSelectedEvent=_Lazy_glXGetSelectedEvent;
+#endif 
+
+/* GLX_VERSION_1_4 */
+
+#ifdef __GLEE_GLX_VERSION_1_4
+__GLXextFuncPtr __stdcall _Lazy_glXGetProcAddress(const GLubyte * procName)               {if (GLeeInit()) return glXGetProcAddress(procName); return (__GLXextFuncPtr)0;}
+PFNGLXGETPROCADDRESSPROC pglXGetProcAddress=_Lazy_glXGetProcAddress;
+#endif 
+
+/* GLX_ARB_multisample */
+
+#ifdef __GLEE_GLX_ARB_multisample
+#endif 
+
+/* GLX_ARB_fbconfig_float */
+
+#ifdef __GLEE_GLX_ARB_fbconfig_float
+#endif 
+
+/* GLX_SGIS_multisample */
+
+#ifdef __GLEE_GLX_SGIS_multisample
+#endif 
+
+/* GLX_EXT_visual_info */
+
+#ifdef __GLEE_GLX_EXT_visual_info
+#endif 
+
+/* GLX_SGI_swap_control */
+
+#ifdef __GLEE_GLX_SGI_swap_control
+int __stdcall _Lazy_glXSwapIntervalSGI(int interval)                                      {if (GLeeInit()) return glXSwapIntervalSGI(interval); return (int)0;}
+PFNGLXSWAPINTERVALSGIPROC pglXSwapIntervalSGI=_Lazy_glXSwapIntervalSGI;
+#endif 
+
+/* GLX_SGI_video_sync */
+
+#ifdef __GLEE_GLX_SGI_video_sync
+int __stdcall _Lazy_glXGetVideoSyncSGI(unsigned int * count)                              {if (GLeeInit()) return glXGetVideoSyncSGI(count); return (int)0;}
+int __stdcall _Lazy_glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int * count)  {if (GLeeInit()) return glXWaitVideoSyncSGI(divisor, remainder, count); return (int)0;}
+PFNGLXGETVIDEOSYNCSGIPROC pglXGetVideoSyncSGI=_Lazy_glXGetVideoSyncSGI;
+PFNGLXWAITVIDEOSYNCSGIPROC pglXWaitVideoSyncSGI=_Lazy_glXWaitVideoSyncSGI;
+#endif 
+
+/* GLX_SGI_make_current_read */
+
+#ifdef __GLEE_GLX_SGI_make_current_read
+Bool __stdcall _Lazy_glXMakeCurrentReadSGI(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)  {if (GLeeInit()) return glXMakeCurrentReadSGI(dpy, draw, read, ctx); return (Bool)0;}
+GLXDrawable __stdcall _Lazy_glXGetCurrentReadDrawableSGI(void)                            {if (GLeeInit()) return glXGetCurrentReadDrawableSGI(); return (GLXDrawable)0;}
+PFNGLXMAKECURRENTREADSGIPROC pglXMakeCurrentReadSGI=_Lazy_glXMakeCurrentReadSGI;
+PFNGLXGETCURRENTREADDRAWABLESGIPROC pglXGetCurrentReadDrawableSGI=_Lazy_glXGetCurrentReadDrawableSGI;
+#endif 
+
+/* GLX_EXT_visual_rating */
+
+#ifdef __GLEE_GLX_EXT_visual_rating
+#endif 
+
+/* GLX_EXT_import_context */
+
+#ifdef __GLEE_GLX_EXT_import_context
+Display * __stdcall _Lazy_glXGetCurrentDisplayEXT(void)                                   {if (GLeeInit()) return glXGetCurrentDisplayEXT(); return (Display *)0;}
+int __stdcall _Lazy_glXQueryContextInfoEXT(Display * dpy, GLXContext context, int attribute, int * value)  {if (GLeeInit()) return glXQueryContextInfoEXT(dpy, context, attribute, value); return (int)0;}
+GLXContextID __stdcall _Lazy_glXGetContextIDEXT(const GLXContext context)                 {if (GLeeInit()) return glXGetContextIDEXT(context); return (GLXContextID)0;}
+GLXContext __stdcall _Lazy_glXImportContextEXT(Display * dpy, GLXContextID contextID)     {if (GLeeInit()) return glXImportContextEXT(dpy, contextID); return (GLXContext)0;}
+void __stdcall _Lazy_glXFreeContextEXT(Display * dpy, GLXContext context)                 {if (GLeeInit()) glXFreeContextEXT(dpy, context);}
+PFNGLXGETCURRENTDISPLAYEXTPROC pglXGetCurrentDisplayEXT=_Lazy_glXGetCurrentDisplayEXT;
+PFNGLXQUERYCONTEXTINFOEXTPROC pglXQueryContextInfoEXT=_Lazy_glXQueryContextInfoEXT;
+PFNGLXGETCONTEXTIDEXTPROC pglXGetContextIDEXT=_Lazy_glXGetContextIDEXT;
+PFNGLXIMPORTCONTEXTEXTPROC pglXImportContextEXT=_Lazy_glXImportContextEXT;
+PFNGLXFREECONTEXTEXTPROC pglXFreeContextEXT=_Lazy_glXFreeContextEXT;
+#endif 
+
+/* GLX_SGIX_fbconfig */
+
+#ifdef __GLEE_GLX_SGIX_fbconfig
+int __stdcall _Lazy_glXGetFBConfigAttribSGIX(Display * dpy, GLXFBConfigSGIX config, int attribute, int * value)  {if (GLeeInit()) return glXGetFBConfigAttribSGIX(dpy, config, attribute, value); return (int)0;}
+GLXFBConfigSGIX * __stdcall _Lazy_glXChooseFBConfigSGIX(Display * dpy, int screen, int * attrib_list, int * nelements)  {if (GLeeInit()) return glXChooseFBConfigSGIX(dpy, screen, attrib_list, nelements); return (GLXFBConfigSGIX *)0;}
+GLXPixmap __stdcall _Lazy_glXCreateGLXPixmapWithConfigSGIX(Display * dpy, GLXFBConfigSGIX config, Pixmap pixmap)  {if (GLeeInit()) return glXCreateGLXPixmapWithConfigSGIX(dpy, config, pixmap); return (GLXPixmap)0;}
+GLXContext __stdcall _Lazy_glXCreateContextWithConfigSGIX(Display * dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct)  {if (GLeeInit()) return glXCreateContextWithConfigSGIX(dpy, config, render_type, share_list, direct); return (GLXContext)0;}
+XVisualInfo * __stdcall _Lazy_glXGetVisualFromFBConfigSGIX(Display * dpy, GLXFBConfigSGIX config)  {if (GLeeInit()) return glXGetVisualFromFBConfigSGIX(dpy, config); return (XVisualInfo *)0;}
+GLXFBConfigSGIX __stdcall _Lazy_glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis)  {if (GLeeInit()) return glXGetFBConfigFromVisualSGIX(dpy, vis); return (GLXFBConfigSGIX)0;}
+PFNGLXGETFBCONFIGATTRIBSGIXPROC pglXGetFBConfigAttribSGIX=_Lazy_glXGetFBConfigAttribSGIX;
+PFNGLXCHOOSEFBCONFIGSGIXPROC pglXChooseFBConfigSGIX=_Lazy_glXChooseFBConfigSGIX;
+PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC pglXCreateGLXPixmapWithConfigSGIX=_Lazy_glXCreateGLXPixmapWithConfigSGIX;
+PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC pglXCreateContextWithConfigSGIX=_Lazy_glXCreateContextWithConfigSGIX;
+PFNGLXGETVISUALFROMFBCONFIGSGIXPROC pglXGetVisualFromFBConfigSGIX=_Lazy_glXGetVisualFromFBConfigSGIX;
+PFNGLXGETFBCONFIGFROMVISUALSGIXPROC pglXGetFBConfigFromVisualSGIX=_Lazy_glXGetFBConfigFromVisualSGIX;
+#endif 
+
+/* GLX_SGIX_pbuffer */
+
+#ifdef __GLEE_GLX_SGIX_pbuffer
+GLXPbufferSGIX __stdcall _Lazy_glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int * attrib_list)  {if (GLeeInit()) return glXCreateGLXPbufferSGIX(dpy, config, width, height, attrib_list); return (GLXPbufferSGIX)0;}
+void __stdcall _Lazy_glXDestroyGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX pbuf)         {if (GLeeInit()) glXDestroyGLXPbufferSGIX(dpy, pbuf);}
+int __stdcall _Lazy_glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int * value)  {if (GLeeInit()) return glXQueryGLXPbufferSGIX(dpy, pbuf, attribute, value); return (int)0;}
+void __stdcall _Lazy_glXSelectEventSGIX(Display * dpy, GLXDrawable drawable, unsigned long mask)  {if (GLeeInit()) glXSelectEventSGIX(dpy, drawable, mask);}
+void __stdcall _Lazy_glXGetSelectedEventSGIX(Display * dpy, GLXDrawable drawable, unsigned long * mask)  {if (GLeeInit()) glXGetSelectedEventSGIX(dpy, drawable, mask);}
+PFNGLXCREATEGLXPBUFFERSGIXPROC pglXCreateGLXPbufferSGIX=_Lazy_glXCreateGLXPbufferSGIX;
+PFNGLXDESTROYGLXPBUFFERSGIXPROC pglXDestroyGLXPbufferSGIX=_Lazy_glXDestroyGLXPbufferSGIX;
+PFNGLXQUERYGLXPBUFFERSGIXPROC pglXQueryGLXPbufferSGIX=_Lazy_glXQueryGLXPbufferSGIX;
+PFNGLXSELECTEVENTSGIXPROC pglXSelectEventSGIX=_Lazy_glXSelectEventSGIX;
+PFNGLXGETSELECTEDEVENTSGIXPROC pglXGetSelectedEventSGIX=_Lazy_glXGetSelectedEventSGIX;
+#endif 
+
+/* GLX_SGI_cushion */
+
+#ifdef __GLEE_GLX_SGI_cushion
+void __stdcall _Lazy_glXCushionSGI(Display * dpy, Window window, float cushion)           {if (GLeeInit()) glXCushionSGI(dpy, window, cushion);}
+PFNGLXCUSHIONSGIPROC pglXCushionSGI=_Lazy_glXCushionSGI;
+#endif 
+
+/* GLX_SGIX_video_resize */
+
+#ifdef __GLEE_GLX_SGIX_video_resize
+int __stdcall _Lazy_glXBindChannelToWindowSGIX(Display * display, int screen, int channel, Window window)  {if (GLeeInit()) return glXBindChannelToWindowSGIX(display, screen, channel, window); return (int)0;}
+int __stdcall _Lazy_glXChannelRectSGIX(Display * display, int screen, int channel, int x, int y, int w, int h)  {if (GLeeInit()) return glXChannelRectSGIX(display, screen, channel, x, y, w, h); return (int)0;}
+int __stdcall _Lazy_glXQueryChannelRectSGIX(Display * display, int screen, int channel, int * dx, int * dy, int * dw, int * dh)  {if (GLeeInit()) return glXQueryChannelRectSGIX(display, screen, channel, dx, dy, dw, dh); return (int)0;}
+int __stdcall _Lazy_glXQueryChannelDeltasSGIX(Display * display, int screen, int channel, int * x, int * y, int * w, int * h)  {if (GLeeInit()) return glXQueryChannelDeltasSGIX(display, screen, channel, x, y, w, h); return (int)0;}
+int __stdcall _Lazy_glXChannelRectSyncSGIX(Display * display, int screen, int channel, GLenum synctype)  {if (GLeeInit()) return glXChannelRectSyncSGIX(display, screen, channel, synctype); return (int)0;}
+PFNGLXBINDCHANNELTOWINDOWSGIXPROC pglXBindChannelToWindowSGIX=_Lazy_glXBindChannelToWindowSGIX;
+PFNGLXCHANNELRECTSGIXPROC pglXChannelRectSGIX=_Lazy_glXChannelRectSGIX;
+PFNGLXQUERYCHANNELRECTSGIXPROC pglXQueryChannelRectSGIX=_Lazy_glXQueryChannelRectSGIX;
+PFNGLXQUERYCHANNELDELTASSGIXPROC pglXQueryChannelDeltasSGIX=_Lazy_glXQueryChannelDeltasSGIX;
+PFNGLXCHANNELRECTSYNCSGIXPROC pglXChannelRectSyncSGIX=_Lazy_glXChannelRectSyncSGIX;
+#endif 
+
+/* GLX_SGIX_swap_group */
+
+#ifdef __GLEE_GLX_SGIX_swap_group
+void __stdcall _Lazy_glXJoinSwapGroupSGIX(Display * dpy, GLXDrawable drawable, GLXDrawable member)  {if (GLeeInit()) glXJoinSwapGroupSGIX(dpy, drawable, member);}
+PFNGLXJOINSWAPGROUPSGIXPROC pglXJoinSwapGroupSGIX=_Lazy_glXJoinSwapGroupSGIX;
+#endif 
+
+/* GLX_SGIX_swap_barrier */
+
+#ifdef __GLEE_GLX_SGIX_swap_barrier
+void __stdcall _Lazy_glXBindSwapBarrierSGIX(Display * dpy, GLXDrawable drawable, int barrier)  {if (GLeeInit()) glXBindSwapBarrierSGIX(dpy, drawable, barrier);}
+Bool __stdcall _Lazy_glXQueryMaxSwapBarriersSGIX(Display * dpy, int screen, int * max)    {if (GLeeInit()) return glXQueryMaxSwapBarriersSGIX(dpy, screen, max); return (Bool)0;}
+PFNGLXBINDSWAPBARRIERSGIXPROC pglXBindSwapBarrierSGIX=_Lazy_glXBindSwapBarrierSGIX;
+PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC pglXQueryMaxSwapBarriersSGIX=_Lazy_glXQueryMaxSwapBarriersSGIX;
+#endif 
+
+/* GLX_SGIS_blended_overlay */
+
+#ifdef __GLEE_GLX_SGIS_blended_overlay
+#endif 
+
+/* GLX_SGIS_shared_multisample */
+
+#ifdef __GLEE_GLX_SGIS_shared_multisample
+#endif 
+
+/* GLX_SUN_get_transparent_index */
+
+#ifdef __GLEE_GLX_SUN_get_transparent_index
+Status __stdcall _Lazy_glXGetTransparentIndexSUN(Display * dpy, Window overlay, Window underlay, long * pTransparentIndex)  {if (GLeeInit()) return glXGetTransparentIndexSUN(dpy, overlay, underlay, pTransparentIndex); return (Status)0;}
+PFNGLXGETTRANSPARENTINDEXSUNPROC pglXGetTransparentIndexSUN=_Lazy_glXGetTransparentIndexSUN;
+#endif 
+
+/* GLX_3DFX_multisample */
+
+#ifdef __GLEE_GLX_3DFX_multisample
+#endif 
+
+/* GLX_MESA_copy_sub_buffer */
+
+#ifdef __GLEE_GLX_MESA_copy_sub_buffer
+void __stdcall _Lazy_glXCopySubBufferMESA(Display * dpy, GLXDrawable drawable, int x, int y, int width, int height)  {if (GLeeInit()) glXCopySubBufferMESA(dpy, drawable, x, y, width, height);}
+PFNGLXCOPYSUBBUFFERMESAPROC pglXCopySubBufferMESA=_Lazy_glXCopySubBufferMESA;
+#endif 
+
+/* GLX_MESA_pixmap_colormap */
+
+#ifdef __GLEE_GLX_MESA_pixmap_colormap
+GLXPixmap __stdcall _Lazy_glXCreateGLXPixmapMESA(Display * dpy, XVisualInfo * visual, Pixmap pixmap, Colormap cmap)  {if (GLeeInit()) return glXCreateGLXPixmapMESA(dpy, visual, pixmap, cmap); return (GLXPixmap)0;}
+PFNGLXCREATEGLXPIXMAPMESAPROC pglXCreateGLXPixmapMESA=_Lazy_glXCreateGLXPixmapMESA;
+#endif 
+
+/* GLX_MESA_release_buffers */
+
+#ifdef __GLEE_GLX_MESA_release_buffers
+Bool __stdcall _Lazy_glXReleaseBuffersMESA(Display * dpy, GLXDrawable drawable)           {if (GLeeInit()) return glXReleaseBuffersMESA(dpy, drawable); return (Bool)0;}
+PFNGLXRELEASEBUFFERSMESAPROC pglXReleaseBuffersMESA=_Lazy_glXReleaseBuffersMESA;
+#endif 
+
+/* GLX_MESA_set_3dfx_mode */
+
+#ifdef __GLEE_GLX_MESA_set_3dfx_mode
+Bool __stdcall _Lazy_glXSet3DfxModeMESA(int mode)                                         {if (GLeeInit()) return glXSet3DfxModeMESA(mode); return (Bool)0;}
+PFNGLXSET3DFXMODEMESAPROC pglXSet3DfxModeMESA=_Lazy_glXSet3DfxModeMESA;
+#endif 
+
+/* GLX_SGIX_visual_select_group */
+
+#ifdef __GLEE_GLX_SGIX_visual_select_group
+#endif 
+
+/* GLX_OML_swap_method */
+
+#ifdef __GLEE_GLX_OML_swap_method
+#endif 
+
+/* GLX_OML_sync_control */
+
+#ifdef __GLEE_GLX_OML_sync_control
+Bool __stdcall _Lazy_glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable, int64_t * ust, int64_t * msc, int64_t * sbc)  {if (GLeeInit()) return glXGetSyncValuesOML(dpy, drawable, ust, msc, sbc); return (Bool)0;}
+Bool __stdcall _Lazy_glXGetMscRateOML(Display * dpy, GLXDrawable drawable, int32_t * numerator, int32_t * denominator)  {if (GLeeInit()) return glXGetMscRateOML(dpy, drawable, numerator, denominator); return (Bool)0;}
+int64_t __stdcall _Lazy_glXSwapBuffersMscOML(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder)  {if (GLeeInit()) return glXSwapBuffersMscOML(dpy, drawable, target_msc, divisor, remainder); return (int64_t)0;}
+Bool __stdcall _Lazy_glXWaitForMscOML(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc, int64_t * sbc)  {if (GLeeInit()) return glXWaitForMscOML(dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc); return (Bool)0;}
+Bool __stdcall _Lazy_glXWaitForSbcOML(Display * dpy, GLXDrawable drawable, int64_t target_sbc, int64_t * ust, int64_t * msc, int64_t * sbc)  {if (GLeeInit()) return glXWaitForSbcOML(dpy, drawable, target_sbc, ust, msc, sbc); return (Bool)0;}
+PFNGLXGETSYNCVALUESOMLPROC pglXGetSyncValuesOML=_Lazy_glXGetSyncValuesOML;
+PFNGLXGETMSCRATEOMLPROC pglXGetMscRateOML=_Lazy_glXGetMscRateOML;
+PFNGLXSWAPBUFFERSMSCOMLPROC pglXSwapBuffersMscOML=_Lazy_glXSwapBuffersMscOML;
+PFNGLXWAITFORMSCOMLPROC pglXWaitForMscOML=_Lazy_glXWaitForMscOML;
+PFNGLXWAITFORSBCOMLPROC pglXWaitForSbcOML=_Lazy_glXWaitForSbcOML;
+#endif 
+
+/* GLX_NV_float_buffer */
+
+#ifdef __GLEE_GLX_NV_float_buffer
+#endif 
+
+/* GLX_SGIX_hyperpipe */
+
+#ifdef __GLEE_GLX_SGIX_hyperpipe
+GLXHyperpipeNetworkSGIX * __stdcall _Lazy_glXQueryHyperpipeNetworkSGIX(Display * dpy, int * npipes)  {if (GLeeInit()) return glXQueryHyperpipeNetworkSGIX(dpy, npipes); return (GLXHyperpipeNetworkSGIX *)0;}
+int __stdcall _Lazy_glXHyperpipeConfigSGIX(Display * dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX * cfg, int * hpId)  {if (GLeeInit()) return glXHyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId); return (int)0;}
+GLXHyperpipeConfigSGIX * __stdcall _Lazy_glXQueryHyperpipeConfigSGIX(Display * dpy, int hpId, int * npipes)  {if (GLeeInit()) return glXQueryHyperpipeConfigSGIX(dpy, hpId, npipes); return (GLXHyperpipeConfigSGIX *)0;}
+int __stdcall _Lazy_glXDestroyHyperpipeConfigSGIX(Display * dpy, int hpId)                {if (GLeeInit()) return glXDestroyHyperpipeConfigSGIX(dpy, hpId); return (int)0;}
+int __stdcall _Lazy_glXBindHyperpipeSGIX(Display * dpy, int hpId)                         {if (GLeeInit()) return glXBindHyperpipeSGIX(dpy, hpId); return (int)0;}
+int __stdcall _Lazy_glXQueryHyperpipeBestAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * attribList, void * returnAttribList)  {if (GLeeInit()) return glXQueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList); return (int)0;}
+int __stdcall _Lazy_glXHyperpipeAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * attribList)  {if (GLeeInit()) return glXHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList); return (int)0;}
+int __stdcall _Lazy_glXQueryHyperpipeAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * returnAttribList)  {if (GLeeInit()) return glXQueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList); return (int)0;}
+PFNGLXQUERYHYPERPIPENETWORKSGIXPROC pglXQueryHyperpipeNetworkSGIX=_Lazy_glXQueryHyperpipeNetworkSGIX;
+PFNGLXHYPERPIPECONFIGSGIXPROC pglXHyperpipeConfigSGIX=_Lazy_glXHyperpipeConfigSGIX;
+PFNGLXQUERYHYPERPIPECONFIGSGIXPROC pglXQueryHyperpipeConfigSGIX=_Lazy_glXQueryHyperpipeConfigSGIX;
+PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC pglXDestroyHyperpipeConfigSGIX=_Lazy_glXDestroyHyperpipeConfigSGIX;
+PFNGLXBINDHYPERPIPESGIXPROC pglXBindHyperpipeSGIX=_Lazy_glXBindHyperpipeSGIX;
+PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC pglXQueryHyperpipeBestAttribSGIX=_Lazy_glXQueryHyperpipeBestAttribSGIX;
+PFNGLXHYPERPIPEATTRIBSGIXPROC pglXHyperpipeAttribSGIX=_Lazy_glXHyperpipeAttribSGIX;
+PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC pglXQueryHyperpipeAttribSGIX=_Lazy_glXQueryHyperpipeAttribSGIX;
+#endif 
+
+/* GLX_MESA_agp_offset */
+
+#ifdef __GLEE_GLX_MESA_agp_offset
+unsigned int __stdcall _Lazy_glXGetAGPOffsetMESA(const void * pointer)                    {if (GLeeInit()) return glXGetAGPOffsetMESA(pointer); return (unsigned int)0;}
+PFNGLXGETAGPOFFSETMESAPROC pglXGetAGPOffsetMESA=_Lazy_glXGetAGPOffsetMESA;
+#endif 
+
+/* GLX_EXT_scene_marker */
+
+#ifdef __GLEE_GLX_EXT_scene_marker
+#endif 
+#endif /* end GLX */
+/*****************************************************************
+* Extension link functions
+*****************************************************************/
+
+GLuint __GLeeLink_GL_VERSION_1_2(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_1_2
+    if ((pglBlendColor = (PFNGLBLENDCOLORPROC) __GLeeGetProcAddress("glBlendColor"))!=0) nLinked++;
+    if ((pglBlendEquation = (PFNGLBLENDEQUATIONPROC) __GLeeGetProcAddress("glBlendEquation"))!=0) nLinked++;
+    if ((pglDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC) __GLeeGetProcAddress("glDrawRangeElements"))!=0) nLinked++;
+    if ((pglColorTable = (PFNGLCOLORTABLEPROC) __GLeeGetProcAddress("glColorTable"))!=0) nLinked++;
+    if ((pglColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC) __GLeeGetProcAddress("glColorTableParameterfv"))!=0) nLinked++;
+    if ((pglColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC) __GLeeGetProcAddress("glColorTableParameteriv"))!=0) nLinked++;
+    if ((pglCopyColorTable = (PFNGLCOPYCOLORTABLEPROC) __GLeeGetProcAddress("glCopyColorTable"))!=0) nLinked++;
+    if ((pglGetColorTable = (PFNGLGETCOLORTABLEPROC) __GLeeGetProcAddress("glGetColorTable"))!=0) nLinked++;
+    if ((pglGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC) __GLeeGetProcAddress("glGetColorTableParameterfv"))!=0) nLinked++;
+    if ((pglGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC) __GLeeGetProcAddress("glGetColorTableParameteriv"))!=0) nLinked++;
+    if ((pglColorSubTable = (PFNGLCOLORSUBTABLEPROC) __GLeeGetProcAddress("glColorSubTable"))!=0) nLinked++;
+    if ((pglCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC) __GLeeGetProcAddress("glCopyColorSubTable"))!=0) nLinked++;
+    if ((pglConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC) __GLeeGetProcAddress("glConvolutionFilter1D"))!=0) nLinked++;
+    if ((pglConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC) __GLeeGetProcAddress("glConvolutionFilter2D"))!=0) nLinked++;
+    if ((pglConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC) __GLeeGetProcAddress("glConvolutionParameterf"))!=0) nLinked++;
+    if ((pglConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC) __GLeeGetProcAddress("glConvolutionParameterfv"))!=0) nLinked++;
+    if ((pglConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC) __GLeeGetProcAddress("glConvolutionParameteri"))!=0) nLinked++;
+    if ((pglConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC) __GLeeGetProcAddress("glConvolutionParameteriv"))!=0) nLinked++;
+    if ((pglCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC) __GLeeGetProcAddress("glCopyConvolutionFilter1D"))!=0) nLinked++;
+    if ((pglCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC) __GLeeGetProcAddress("glCopyConvolutionFilter2D"))!=0) nLinked++;
+    if ((pglGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC) __GLeeGetProcAddress("glGetConvolutionFilter"))!=0) nLinked++;
+    if ((pglGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC) __GLeeGetProcAddress("glGetConvolutionParameterfv"))!=0) nLinked++;
+    if ((pglGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC) __GLeeGetProcAddress("glGetConvolutionParameteriv"))!=0) nLinked++;
+    if ((pglGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC) __GLeeGetProcAddress("glGetSeparableFilter"))!=0) nLinked++;
+    if ((pglSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC) __GLeeGetProcAddress("glSeparableFilter2D"))!=0) nLinked++;
+    if ((pglGetHistogram = (PFNGLGETHISTOGRAMPROC) __GLeeGetProcAddress("glGetHistogram"))!=0) nLinked++;
+    if ((pglGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC) __GLeeGetProcAddress("glGetHistogramParameterfv"))!=0) nLinked++;
+    if ((pglGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC) __GLeeGetProcAddress("glGetHistogramParameteriv"))!=0) nLinked++;
+    if ((pglGetMinmax = (PFNGLGETMINMAXPROC) __GLeeGetProcAddress("glGetMinmax"))!=0) nLinked++;
+    if ((pglGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC) __GLeeGetProcAddress("glGetMinmaxParameterfv"))!=0) nLinked++;
+    if ((pglGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC) __GLeeGetProcAddress("glGetMinmaxParameteriv"))!=0) nLinked++;
+    if ((pglHistogram = (PFNGLHISTOGRAMPROC) __GLeeGetProcAddress("glHistogram"))!=0) nLinked++;
+    if ((pglMinmax = (PFNGLMINMAXPROC) __GLeeGetProcAddress("glMinmax"))!=0) nLinked++;
+    if ((pglResetHistogram = (PFNGLRESETHISTOGRAMPROC) __GLeeGetProcAddress("glResetHistogram"))!=0) nLinked++;
+    if ((pglResetMinmax = (PFNGLRESETMINMAXPROC) __GLeeGetProcAddress("glResetMinmax"))!=0) nLinked++;
+    if ((pglTexImage3D = (PFNGLTEXIMAGE3DPROC) __GLeeGetProcAddress("glTexImage3D"))!=0) nLinked++;
+    if ((pglTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glTexSubImage3D"))!=0) nLinked++;
+    if ((pglCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glCopyTexSubImage3D"))!=0) nLinked++;
+#endif
+    if (nLinked==38) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_imaging(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_VERSION_1_3(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_1_3
+    if ((pglActiveTexture = (PFNGLACTIVETEXTUREPROC) __GLeeGetProcAddress("glActiveTexture"))!=0) nLinked++;
+    if ((pglClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC) __GLeeGetProcAddress("glClientActiveTexture"))!=0) nLinked++;
+    if ((pglMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC) __GLeeGetProcAddress("glMultiTexCoord1d"))!=0) nLinked++;
+    if ((pglMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC) __GLeeGetProcAddress("glMultiTexCoord1dv"))!=0) nLinked++;
+    if ((pglMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC) __GLeeGetProcAddress("glMultiTexCoord1f"))!=0) nLinked++;
+    if ((pglMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC) __GLeeGetProcAddress("glMultiTexCoord1fv"))!=0) nLinked++;
+    if ((pglMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC) __GLeeGetProcAddress("glMultiTexCoord1i"))!=0) nLinked++;
+    if ((pglMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC) __GLeeGetProcAddress("glMultiTexCoord1iv"))!=0) nLinked++;
+    if ((pglMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC) __GLeeGetProcAddress("glMultiTexCoord1s"))!=0) nLinked++;
+    if ((pglMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC) __GLeeGetProcAddress("glMultiTexCoord1sv"))!=0) nLinked++;
+    if ((pglMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC) __GLeeGetProcAddress("glMultiTexCoord2d"))!=0) nLinked++;
+    if ((pglMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC) __GLeeGetProcAddress("glMultiTexCoord2dv"))!=0) nLinked++;
+    if ((pglMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC) __GLeeGetProcAddress("glMultiTexCoord2f"))!=0) nLinked++;
+    if ((pglMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC) __GLeeGetProcAddress("glMultiTexCoord2fv"))!=0) nLinked++;
+    if ((pglMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC) __GLeeGetProcAddress("glMultiTexCoord2i"))!=0) nLinked++;
+    if ((pglMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC) __GLeeGetProcAddress("glMultiTexCoord2iv"))!=0) nLinked++;
+    if ((pglMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC) __GLeeGetProcAddress("glMultiTexCoord2s"))!=0) nLinked++;
+    if ((pglMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC) __GLeeGetProcAddress("glMultiTexCoord2sv"))!=0) nLinked++;
+    if ((pglMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC) __GLeeGetProcAddress("glMultiTexCoord3d"))!=0) nLinked++;
+    if ((pglMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC) __GLeeGetProcAddress("glMultiTexCoord3dv"))!=0) nLinked++;
+    if ((pglMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC) __GLeeGetProcAddress("glMultiTexCoord3f"))!=0) nLinked++;
+    if ((pglMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC) __GLeeGetProcAddress("glMultiTexCoord3fv"))!=0) nLinked++;
+    if ((pglMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC) __GLeeGetProcAddress("glMultiTexCoord3i"))!=0) nLinked++;
+    if ((pglMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC) __GLeeGetProcAddress("glMultiTexCoord3iv"))!=0) nLinked++;
+    if ((pglMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC) __GLeeGetProcAddress("glMultiTexCoord3s"))!=0) nLinked++;
+    if ((pglMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC) __GLeeGetProcAddress("glMultiTexCoord3sv"))!=0) nLinked++;
+    if ((pglMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC) __GLeeGetProcAddress("glMultiTexCoord4d"))!=0) nLinked++;
+    if ((pglMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC) __GLeeGetProcAddress("glMultiTexCoord4dv"))!=0) nLinked++;
+    if ((pglMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC) __GLeeGetProcAddress("glMultiTexCoord4f"))!=0) nLinked++;
+    if ((pglMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC) __GLeeGetProcAddress("glMultiTexCoord4fv"))!=0) nLinked++;
+    if ((pglMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC) __GLeeGetProcAddress("glMultiTexCoord4i"))!=0) nLinked++;
+    if ((pglMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC) __GLeeGetProcAddress("glMultiTexCoord4iv"))!=0) nLinked++;
+    if ((pglMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC) __GLeeGetProcAddress("glMultiTexCoord4s"))!=0) nLinked++;
+    if ((pglMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC) __GLeeGetProcAddress("glMultiTexCoord4sv"))!=0) nLinked++;
+    if ((pglLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC) __GLeeGetProcAddress("glLoadTransposeMatrixf"))!=0) nLinked++;
+    if ((pglLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC) __GLeeGetProcAddress("glLoadTransposeMatrixd"))!=0) nLinked++;
+    if ((pglMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC) __GLeeGetProcAddress("glMultTransposeMatrixf"))!=0) nLinked++;
+    if ((pglMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC) __GLeeGetProcAddress("glMultTransposeMatrixd"))!=0) nLinked++;
+    if ((pglSampleCoverage = (PFNGLSAMPLECOVERAGEPROC) __GLeeGetProcAddress("glSampleCoverage"))!=0) nLinked++;
+    if ((pglCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC) __GLeeGetProcAddress("glCompressedTexImage3D"))!=0) nLinked++;
+    if ((pglCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC) __GLeeGetProcAddress("glCompressedTexImage2D"))!=0) nLinked++;
+    if ((pglCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC) __GLeeGetProcAddress("glCompressedTexImage1D"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glCompressedTexSubImage3D"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) __GLeeGetProcAddress("glCompressedTexSubImage2D"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) __GLeeGetProcAddress("glCompressedTexSubImage1D"))!=0) nLinked++;
+    if ((pglGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC) __GLeeGetProcAddress("glGetCompressedTexImage"))!=0) nLinked++;
+#endif
+    if (nLinked==46) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_VERSION_1_4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_1_4
+    if ((pglBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) __GLeeGetProcAddress("glBlendFuncSeparate"))!=0) nLinked++;
+    if ((pglFogCoordf = (PFNGLFOGCOORDFPROC) __GLeeGetProcAddress("glFogCoordf"))!=0) nLinked++;
+    if ((pglFogCoordfv = (PFNGLFOGCOORDFVPROC) __GLeeGetProcAddress("glFogCoordfv"))!=0) nLinked++;
+    if ((pglFogCoordd = (PFNGLFOGCOORDDPROC) __GLeeGetProcAddress("glFogCoordd"))!=0) nLinked++;
+    if ((pglFogCoorddv = (PFNGLFOGCOORDDVPROC) __GLeeGetProcAddress("glFogCoorddv"))!=0) nLinked++;
+    if ((pglFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC) __GLeeGetProcAddress("glFogCoordPointer"))!=0) nLinked++;
+    if ((pglMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC) __GLeeGetProcAddress("glMultiDrawArrays"))!=0) nLinked++;
+    if ((pglMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC) __GLeeGetProcAddress("glMultiDrawElements"))!=0) nLinked++;
+    if ((pglPointParameterf = (PFNGLPOINTPARAMETERFPROC) __GLeeGetProcAddress("glPointParameterf"))!=0) nLinked++;
+    if ((pglPointParameterfv = (PFNGLPOINTPARAMETERFVPROC) __GLeeGetProcAddress("glPointParameterfv"))!=0) nLinked++;
+    if ((pglPointParameteri = (PFNGLPOINTPARAMETERIPROC) __GLeeGetProcAddress("glPointParameteri"))!=0) nLinked++;
+    if ((pglPointParameteriv = (PFNGLPOINTPARAMETERIVPROC) __GLeeGetProcAddress("glPointParameteriv"))!=0) nLinked++;
+    if ((pglSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC) __GLeeGetProcAddress("glSecondaryColor3b"))!=0) nLinked++;
+    if ((pglSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC) __GLeeGetProcAddress("glSecondaryColor3bv"))!=0) nLinked++;
+    if ((pglSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC) __GLeeGetProcAddress("glSecondaryColor3d"))!=0) nLinked++;
+    if ((pglSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC) __GLeeGetProcAddress("glSecondaryColor3dv"))!=0) nLinked++;
+    if ((pglSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC) __GLeeGetProcAddress("glSecondaryColor3f"))!=0) nLinked++;
+    if ((pglSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC) __GLeeGetProcAddress("glSecondaryColor3fv"))!=0) nLinked++;
+    if ((pglSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC) __GLeeGetProcAddress("glSecondaryColor3i"))!=0) nLinked++;
+    if ((pglSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC) __GLeeGetProcAddress("glSecondaryColor3iv"))!=0) nLinked++;
+    if ((pglSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC) __GLeeGetProcAddress("glSecondaryColor3s"))!=0) nLinked++;
+    if ((pglSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC) __GLeeGetProcAddress("glSecondaryColor3sv"))!=0) nLinked++;
+    if ((pglSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC) __GLeeGetProcAddress("glSecondaryColor3ub"))!=0) nLinked++;
+    if ((pglSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC) __GLeeGetProcAddress("glSecondaryColor3ubv"))!=0) nLinked++;
+    if ((pglSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC) __GLeeGetProcAddress("glSecondaryColor3ui"))!=0) nLinked++;
+    if ((pglSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC) __GLeeGetProcAddress("glSecondaryColor3uiv"))!=0) nLinked++;
+    if ((pglSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC) __GLeeGetProcAddress("glSecondaryColor3us"))!=0) nLinked++;
+    if ((pglSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC) __GLeeGetProcAddress("glSecondaryColor3usv"))!=0) nLinked++;
+    if ((pglSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC) __GLeeGetProcAddress("glSecondaryColorPointer"))!=0) nLinked++;
+    if ((pglWindowPos2d = (PFNGLWINDOWPOS2DPROC) __GLeeGetProcAddress("glWindowPos2d"))!=0) nLinked++;
+    if ((pglWindowPos2dv = (PFNGLWINDOWPOS2DVPROC) __GLeeGetProcAddress("glWindowPos2dv"))!=0) nLinked++;
+    if ((pglWindowPos2f = (PFNGLWINDOWPOS2FPROC) __GLeeGetProcAddress("glWindowPos2f"))!=0) nLinked++;
+    if ((pglWindowPos2fv = (PFNGLWINDOWPOS2FVPROC) __GLeeGetProcAddress("glWindowPos2fv"))!=0) nLinked++;
+    if ((pglWindowPos2i = (PFNGLWINDOWPOS2IPROC) __GLeeGetProcAddress("glWindowPos2i"))!=0) nLinked++;
+    if ((pglWindowPos2iv = (PFNGLWINDOWPOS2IVPROC) __GLeeGetProcAddress("glWindowPos2iv"))!=0) nLinked++;
+    if ((pglWindowPos2s = (PFNGLWINDOWPOS2SPROC) __GLeeGetProcAddress("glWindowPos2s"))!=0) nLinked++;
+    if ((pglWindowPos2sv = (PFNGLWINDOWPOS2SVPROC) __GLeeGetProcAddress("glWindowPos2sv"))!=0) nLinked++;
+    if ((pglWindowPos3d = (PFNGLWINDOWPOS3DPROC) __GLeeGetProcAddress("glWindowPos3d"))!=0) nLinked++;
+    if ((pglWindowPos3dv = (PFNGLWINDOWPOS3DVPROC) __GLeeGetProcAddress("glWindowPos3dv"))!=0) nLinked++;
+    if ((pglWindowPos3f = (PFNGLWINDOWPOS3FPROC) __GLeeGetProcAddress("glWindowPos3f"))!=0) nLinked++;
+    if ((pglWindowPos3fv = (PFNGLWINDOWPOS3FVPROC) __GLeeGetProcAddress("glWindowPos3fv"))!=0) nLinked++;
+    if ((pglWindowPos3i = (PFNGLWINDOWPOS3IPROC) __GLeeGetProcAddress("glWindowPos3i"))!=0) nLinked++;
+    if ((pglWindowPos3iv = (PFNGLWINDOWPOS3IVPROC) __GLeeGetProcAddress("glWindowPos3iv"))!=0) nLinked++;
+    if ((pglWindowPos3s = (PFNGLWINDOWPOS3SPROC) __GLeeGetProcAddress("glWindowPos3s"))!=0) nLinked++;
+    if ((pglWindowPos3sv = (PFNGLWINDOWPOS3SVPROC) __GLeeGetProcAddress("glWindowPos3sv"))!=0) nLinked++;
+#endif
+    if (nLinked==45) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_VERSION_1_5(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_1_5
+    if ((pglGenQueries = (PFNGLGENQUERIESPROC) __GLeeGetProcAddress("glGenQueries"))!=0) nLinked++;
+    if ((pglDeleteQueries = (PFNGLDELETEQUERIESPROC) __GLeeGetProcAddress("glDeleteQueries"))!=0) nLinked++;
+    if ((pglIsQuery = (PFNGLISQUERYPROC) __GLeeGetProcAddress("glIsQuery"))!=0) nLinked++;
+    if ((pglBeginQuery = (PFNGLBEGINQUERYPROC) __GLeeGetProcAddress("glBeginQuery"))!=0) nLinked++;
+    if ((pglEndQuery = (PFNGLENDQUERYPROC) __GLeeGetProcAddress("glEndQuery"))!=0) nLinked++;
+    if ((pglGetQueryiv = (PFNGLGETQUERYIVPROC) __GLeeGetProcAddress("glGetQueryiv"))!=0) nLinked++;
+    if ((pglGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC) __GLeeGetProcAddress("glGetQueryObjectiv"))!=0) nLinked++;
+    if ((pglGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC) __GLeeGetProcAddress("glGetQueryObjectuiv"))!=0) nLinked++;
+    if ((pglBindBuffer = (PFNGLBINDBUFFERPROC) __GLeeGetProcAddress("glBindBuffer"))!=0) nLinked++;
+    if ((pglDeleteBuffers = (PFNGLDELETEBUFFERSPROC) __GLeeGetProcAddress("glDeleteBuffers"))!=0) nLinked++;
+    if ((pglGenBuffers = (PFNGLGENBUFFERSPROC) __GLeeGetProcAddress("glGenBuffers"))!=0) nLinked++;
+    if ((pglIsBuffer = (PFNGLISBUFFERPROC) __GLeeGetProcAddress("glIsBuffer"))!=0) nLinked++;
+    if ((pglBufferData = (PFNGLBUFFERDATAPROC) __GLeeGetProcAddress("glBufferData"))!=0) nLinked++;
+    if ((pglBufferSubData = (PFNGLBUFFERSUBDATAPROC) __GLeeGetProcAddress("glBufferSubData"))!=0) nLinked++;
+    if ((pglGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC) __GLeeGetProcAddress("glGetBufferSubData"))!=0) nLinked++;
+    if ((pglMapBuffer = (PFNGLMAPBUFFERPROC) __GLeeGetProcAddress("glMapBuffer"))!=0) nLinked++;
+    if ((pglUnmapBuffer = (PFNGLUNMAPBUFFERPROC) __GLeeGetProcAddress("glUnmapBuffer"))!=0) nLinked++;
+    if ((pglGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC) __GLeeGetProcAddress("glGetBufferParameteriv"))!=0) nLinked++;
+    if ((pglGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC) __GLeeGetProcAddress("glGetBufferPointerv"))!=0) nLinked++;
+#endif
+    if (nLinked==19) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_VERSION_2_0(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_2_0
+    if ((pglBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC) __GLeeGetProcAddress("glBlendEquationSeparate"))!=0) nLinked++;
+    if ((pglDrawBuffers = (PFNGLDRAWBUFFERSPROC) __GLeeGetProcAddress("glDrawBuffers"))!=0) nLinked++;
+    if ((pglStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC) __GLeeGetProcAddress("glStencilOpSeparate"))!=0) nLinked++;
+    if ((pglStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC) __GLeeGetProcAddress("glStencilFuncSeparate"))!=0) nLinked++;
+    if ((pglStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC) __GLeeGetProcAddress("glStencilMaskSeparate"))!=0) nLinked++;
+    if ((pglAttachShader = (PFNGLATTACHSHADERPROC) __GLeeGetProcAddress("glAttachShader"))!=0) nLinked++;
+    if ((pglBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC) __GLeeGetProcAddress("glBindAttribLocation"))!=0) nLinked++;
+    if ((pglCompileShader = (PFNGLCOMPILESHADERPROC) __GLeeGetProcAddress("glCompileShader"))!=0) nLinked++;
+    if ((pglCreateProgram = (PFNGLCREATEPROGRAMPROC) __GLeeGetProcAddress("glCreateProgram"))!=0) nLinked++;
+    if ((pglCreateShader = (PFNGLCREATESHADERPROC) __GLeeGetProcAddress("glCreateShader"))!=0) nLinked++;
+    if ((pglDeleteProgram = (PFNGLDELETEPROGRAMPROC) __GLeeGetProcAddress("glDeleteProgram"))!=0) nLinked++;
+    if ((pglDeleteShader = (PFNGLDELETESHADERPROC) __GLeeGetProcAddress("glDeleteShader"))!=0) nLinked++;
+    if ((pglDetachShader = (PFNGLDETACHSHADERPROC) __GLeeGetProcAddress("glDetachShader"))!=0) nLinked++;
+    if ((pglDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) __GLeeGetProcAddress("glDisableVertexAttribArray"))!=0) nLinked++;
+    if ((pglEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) __GLeeGetProcAddress("glEnableVertexAttribArray"))!=0) nLinked++;
+    if ((pglGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC) __GLeeGetProcAddress("glGetActiveAttrib"))!=0) nLinked++;
+    if ((pglGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC) __GLeeGetProcAddress("glGetActiveUniform"))!=0) nLinked++;
+    if ((pglGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC) __GLeeGetProcAddress("glGetAttachedShaders"))!=0) nLinked++;
+    if ((pglGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC) __GLeeGetProcAddress("glGetAttribLocation"))!=0) nLinked++;
+    if ((pglGetProgramiv = (PFNGLGETPROGRAMIVPROC) __GLeeGetProcAddress("glGetProgramiv"))!=0) nLinked++;
+    if ((pglGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) __GLeeGetProcAddress("glGetProgramInfoLog"))!=0) nLinked++;
+    if ((pglGetShaderiv = (PFNGLGETSHADERIVPROC) __GLeeGetProcAddress("glGetShaderiv"))!=0) nLinked++;
+    if ((pglGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) __GLeeGetProcAddress("glGetShaderInfoLog"))!=0) nLinked++;
+    if ((pglGetShaderSource = (PFNGLGETSHADERSOURCEPROC) __GLeeGetProcAddress("glGetShaderSource"))!=0) nLinked++;
+    if ((pglGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) __GLeeGetProcAddress("glGetUniformLocation"))!=0) nLinked++;
+    if ((pglGetUniformfv = (PFNGLGETUNIFORMFVPROC) __GLeeGetProcAddress("glGetUniformfv"))!=0) nLinked++;
+    if ((pglGetUniformiv = (PFNGLGETUNIFORMIVPROC) __GLeeGetProcAddress("glGetUniformiv"))!=0) nLinked++;
+    if ((pglGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC) __GLeeGetProcAddress("glGetVertexAttribdv"))!=0) nLinked++;
+    if ((pglGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC) __GLeeGetProcAddress("glGetVertexAttribfv"))!=0) nLinked++;
+    if ((pglGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC) __GLeeGetProcAddress("glGetVertexAttribiv"))!=0) nLinked++;
+    if ((pglGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC) __GLeeGetProcAddress("glGetVertexAttribPointerv"))!=0) nLinked++;
+    if ((pglIsProgram = (PFNGLISPROGRAMPROC) __GLeeGetProcAddress("glIsProgram"))!=0) nLinked++;
+    if ((pglIsShader = (PFNGLISSHADERPROC) __GLeeGetProcAddress("glIsShader"))!=0) nLinked++;
+    if ((pglLinkProgram = (PFNGLLINKPROGRAMPROC) __GLeeGetProcAddress("glLinkProgram"))!=0) nLinked++;
+    if ((pglShaderSource = (PFNGLSHADERSOURCEPROC) __GLeeGetProcAddress("glShaderSource"))!=0) nLinked++;
+    if ((pglUseProgram = (PFNGLUSEPROGRAMPROC) __GLeeGetProcAddress("glUseProgram"))!=0) nLinked++;
+    if ((pglUniform1f = (PFNGLUNIFORM1FPROC) __GLeeGetProcAddress("glUniform1f"))!=0) nLinked++;
+    if ((pglUniform2f = (PFNGLUNIFORM2FPROC) __GLeeGetProcAddress("glUniform2f"))!=0) nLinked++;
+    if ((pglUniform3f = (PFNGLUNIFORM3FPROC) __GLeeGetProcAddress("glUniform3f"))!=0) nLinked++;
+    if ((pglUniform4f = (PFNGLUNIFORM4FPROC) __GLeeGetProcAddress("glUniform4f"))!=0) nLinked++;
+    if ((pglUniform1i = (PFNGLUNIFORM1IPROC) __GLeeGetProcAddress("glUniform1i"))!=0) nLinked++;
+    if ((pglUniform2i = (PFNGLUNIFORM2IPROC) __GLeeGetProcAddress("glUniform2i"))!=0) nLinked++;
+    if ((pglUniform3i = (PFNGLUNIFORM3IPROC) __GLeeGetProcAddress("glUniform3i"))!=0) nLinked++;
+    if ((pglUniform4i = (PFNGLUNIFORM4IPROC) __GLeeGetProcAddress("glUniform4i"))!=0) nLinked++;
+    if ((pglUniform1fv = (PFNGLUNIFORM1FVPROC) __GLeeGetProcAddress("glUniform1fv"))!=0) nLinked++;
+    if ((pglUniform2fv = (PFNGLUNIFORM2FVPROC) __GLeeGetProcAddress("glUniform2fv"))!=0) nLinked++;
+    if ((pglUniform3fv = (PFNGLUNIFORM3FVPROC) __GLeeGetProcAddress("glUniform3fv"))!=0) nLinked++;
+    if ((pglUniform4fv = (PFNGLUNIFORM4FVPROC) __GLeeGetProcAddress("glUniform4fv"))!=0) nLinked++;
+    if ((pglUniform1iv = (PFNGLUNIFORM1IVPROC) __GLeeGetProcAddress("glUniform1iv"))!=0) nLinked++;
+    if ((pglUniform2iv = (PFNGLUNIFORM2IVPROC) __GLeeGetProcAddress("glUniform2iv"))!=0) nLinked++;
+    if ((pglUniform3iv = (PFNGLUNIFORM3IVPROC) __GLeeGetProcAddress("glUniform3iv"))!=0) nLinked++;
+    if ((pglUniform4iv = (PFNGLUNIFORM4IVPROC) __GLeeGetProcAddress("glUniform4iv"))!=0) nLinked++;
+    if ((pglUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC) __GLeeGetProcAddress("glUniformMatrix2fv"))!=0) nLinked++;
+    if ((pglUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC) __GLeeGetProcAddress("glUniformMatrix3fv"))!=0) nLinked++;
+    if ((pglUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC) __GLeeGetProcAddress("glUniformMatrix4fv"))!=0) nLinked++;
+    if ((pglValidateProgram = (PFNGLVALIDATEPROGRAMPROC) __GLeeGetProcAddress("glValidateProgram"))!=0) nLinked++;
+    if ((pglVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC) __GLeeGetProcAddress("glVertexAttrib1d"))!=0) nLinked++;
+    if ((pglVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC) __GLeeGetProcAddress("glVertexAttrib1dv"))!=0) nLinked++;
+    if ((pglVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC) __GLeeGetProcAddress("glVertexAttrib1f"))!=0) nLinked++;
+    if ((pglVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC) __GLeeGetProcAddress("glVertexAttrib1fv"))!=0) nLinked++;
+    if ((pglVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC) __GLeeGetProcAddress("glVertexAttrib1s"))!=0) nLinked++;
+    if ((pglVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC) __GLeeGetProcAddress("glVertexAttrib1sv"))!=0) nLinked++;
+    if ((pglVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC) __GLeeGetProcAddress("glVertexAttrib2d"))!=0) nLinked++;
+    if ((pglVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC) __GLeeGetProcAddress("glVertexAttrib2dv"))!=0) nLinked++;
+    if ((pglVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC) __GLeeGetProcAddress("glVertexAttrib2f"))!=0) nLinked++;
+    if ((pglVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC) __GLeeGetProcAddress("glVertexAttrib2fv"))!=0) nLinked++;
+    if ((pglVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC) __GLeeGetProcAddress("glVertexAttrib2s"))!=0) nLinked++;
+    if ((pglVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC) __GLeeGetProcAddress("glVertexAttrib2sv"))!=0) nLinked++;
+    if ((pglVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC) __GLeeGetProcAddress("glVertexAttrib3d"))!=0) nLinked++;
+    if ((pglVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC) __GLeeGetProcAddress("glVertexAttrib3dv"))!=0) nLinked++;
+    if ((pglVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC) __GLeeGetProcAddress("glVertexAttrib3f"))!=0) nLinked++;
+    if ((pglVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC) __GLeeGetProcAddress("glVertexAttrib3fv"))!=0) nLinked++;
+    if ((pglVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC) __GLeeGetProcAddress("glVertexAttrib3s"))!=0) nLinked++;
+    if ((pglVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC) __GLeeGetProcAddress("glVertexAttrib3sv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC) __GLeeGetProcAddress("glVertexAttrib4Nbv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC) __GLeeGetProcAddress("glVertexAttrib4Niv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC) __GLeeGetProcAddress("glVertexAttrib4Nsv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC) __GLeeGetProcAddress("glVertexAttrib4Nub"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC) __GLeeGetProcAddress("glVertexAttrib4Nubv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC) __GLeeGetProcAddress("glVertexAttrib4Nuiv"))!=0) nLinked++;
+    if ((pglVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC) __GLeeGetProcAddress("glVertexAttrib4Nusv"))!=0) nLinked++;
+    if ((pglVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC) __GLeeGetProcAddress("glVertexAttrib4bv"))!=0) nLinked++;
+    if ((pglVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC) __GLeeGetProcAddress("glVertexAttrib4d"))!=0) nLinked++;
+    if ((pglVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC) __GLeeGetProcAddress("glVertexAttrib4dv"))!=0) nLinked++;
+    if ((pglVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC) __GLeeGetProcAddress("glVertexAttrib4f"))!=0) nLinked++;
+    if ((pglVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) __GLeeGetProcAddress("glVertexAttrib4fv"))!=0) nLinked++;
+    if ((pglVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC) __GLeeGetProcAddress("glVertexAttrib4iv"))!=0) nLinked++;
+    if ((pglVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC) __GLeeGetProcAddress("glVertexAttrib4s"))!=0) nLinked++;
+    if ((pglVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC) __GLeeGetProcAddress("glVertexAttrib4sv"))!=0) nLinked++;
+    if ((pglVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC) __GLeeGetProcAddress("glVertexAttrib4ubv"))!=0) nLinked++;
+    if ((pglVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC) __GLeeGetProcAddress("glVertexAttrib4uiv"))!=0) nLinked++;
+    if ((pglVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC) __GLeeGetProcAddress("glVertexAttrib4usv"))!=0) nLinked++;
+    if ((pglVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) __GLeeGetProcAddress("glVertexAttribPointer"))!=0) nLinked++;
+#endif
+    if (nLinked==93) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_VERSION_2_1(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_VERSION_2_1
+    if ((pglUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC) __GLeeGetProcAddress("glUniformMatrix2x3fv"))!=0) nLinked++;
+    if ((pglUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC) __GLeeGetProcAddress("glUniformMatrix3x2fv"))!=0) nLinked++;
+    if ((pglUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC) __GLeeGetProcAddress("glUniformMatrix2x4fv"))!=0) nLinked++;
+    if ((pglUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC) __GLeeGetProcAddress("glUniformMatrix4x2fv"))!=0) nLinked++;
+    if ((pglUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC) __GLeeGetProcAddress("glUniformMatrix3x4fv"))!=0) nLinked++;
+    if ((pglUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC) __GLeeGetProcAddress("glUniformMatrix4x3fv"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_multitexture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_multitexture
+    if ((pglActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) __GLeeGetProcAddress("glActiveTextureARB"))!=0) nLinked++;
+    if ((pglClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC) __GLeeGetProcAddress("glClientActiveTextureARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC) __GLeeGetProcAddress("glMultiTexCoord1dARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1dvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC) __GLeeGetProcAddress("glMultiTexCoord1fARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1fvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC) __GLeeGetProcAddress("glMultiTexCoord1iARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1ivARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC) __GLeeGetProcAddress("glMultiTexCoord1sARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1svARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC) __GLeeGetProcAddress("glMultiTexCoord2dARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2dvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) __GLeeGetProcAddress("glMultiTexCoord2fARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2fvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC) __GLeeGetProcAddress("glMultiTexCoord2iARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2ivARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC) __GLeeGetProcAddress("glMultiTexCoord2sARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2svARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC) __GLeeGetProcAddress("glMultiTexCoord3dARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3dvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC) __GLeeGetProcAddress("glMultiTexCoord3fARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3fvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC) __GLeeGetProcAddress("glMultiTexCoord3iARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3ivARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC) __GLeeGetProcAddress("glMultiTexCoord3sARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3svARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC) __GLeeGetProcAddress("glMultiTexCoord4dARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4dvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC) __GLeeGetProcAddress("glMultiTexCoord4fARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4fvARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC) __GLeeGetProcAddress("glMultiTexCoord4iARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4ivARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC) __GLeeGetProcAddress("glMultiTexCoord4sARB"))!=0) nLinked++;
+    if ((pglMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4svARB"))!=0) nLinked++;
+#endif
+    if (nLinked==34) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_transpose_matrix(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_transpose_matrix
+    if ((pglLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC) __GLeeGetProcAddress("glLoadTransposeMatrixfARB"))!=0) nLinked++;
+    if ((pglLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC) __GLeeGetProcAddress("glLoadTransposeMatrixdARB"))!=0) nLinked++;
+    if ((pglMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC) __GLeeGetProcAddress("glMultTransposeMatrixfARB"))!=0) nLinked++;
+    if ((pglMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC) __GLeeGetProcAddress("glMultTransposeMatrixdARB"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_multisample(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_multisample
+    if ((pglSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC) __GLeeGetProcAddress("glSampleCoverageARB"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_texture_env_add(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_cube_map(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_compression(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_texture_compression
+    if ((pglCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) __GLeeGetProcAddress("glCompressedTexImage3DARB"))!=0) nLinked++;
+    if ((pglCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) __GLeeGetProcAddress("glCompressedTexImage2DARB"))!=0) nLinked++;
+    if ((pglCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) __GLeeGetProcAddress("glCompressedTexImage1DARB"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage3DARB"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage2DARB"))!=0) nLinked++;
+    if ((pglCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage1DARB"))!=0) nLinked++;
+    if ((pglGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) __GLeeGetProcAddress("glGetCompressedTexImageARB"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_texture_border_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_point_parameters(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_point_parameters
+    if ((pglPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC) __GLeeGetProcAddress("glPointParameterfARB"))!=0) nLinked++;
+    if ((pglPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC) __GLeeGetProcAddress("glPointParameterfvARB"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_vertex_blend(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_vertex_blend
+    if ((pglWeightbvARB = (PFNGLWEIGHTBVARBPROC) __GLeeGetProcAddress("glWeightbvARB"))!=0) nLinked++;
+    if ((pglWeightsvARB = (PFNGLWEIGHTSVARBPROC) __GLeeGetProcAddress("glWeightsvARB"))!=0) nLinked++;
+    if ((pglWeightivARB = (PFNGLWEIGHTIVARBPROC) __GLeeGetProcAddress("glWeightivARB"))!=0) nLinked++;
+    if ((pglWeightfvARB = (PFNGLWEIGHTFVARBPROC) __GLeeGetProcAddress("glWeightfvARB"))!=0) nLinked++;
+    if ((pglWeightdvARB = (PFNGLWEIGHTDVARBPROC) __GLeeGetProcAddress("glWeightdvARB"))!=0) nLinked++;
+    if ((pglWeightubvARB = (PFNGLWEIGHTUBVARBPROC) __GLeeGetProcAddress("glWeightubvARB"))!=0) nLinked++;
+    if ((pglWeightusvARB = (PFNGLWEIGHTUSVARBPROC) __GLeeGetProcAddress("glWeightusvARB"))!=0) nLinked++;
+    if ((pglWeightuivARB = (PFNGLWEIGHTUIVARBPROC) __GLeeGetProcAddress("glWeightuivARB"))!=0) nLinked++;
+    if ((pglWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC) __GLeeGetProcAddress("glWeightPointerARB"))!=0) nLinked++;
+    if ((pglVertexBlendARB = (PFNGLVERTEXBLENDARBPROC) __GLeeGetProcAddress("glVertexBlendARB"))!=0) nLinked++;
+#endif
+    if (nLinked==10) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_matrix_palette(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_matrix_palette
+    if ((pglCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC) __GLeeGetProcAddress("glCurrentPaletteMatrixARB"))!=0) nLinked++;
+    if ((pglMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC) __GLeeGetProcAddress("glMatrixIndexubvARB"))!=0) nLinked++;
+    if ((pglMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC) __GLeeGetProcAddress("glMatrixIndexusvARB"))!=0) nLinked++;
+    if ((pglMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC) __GLeeGetProcAddress("glMatrixIndexuivARB"))!=0) nLinked++;
+    if ((pglMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC) __GLeeGetProcAddress("glMatrixIndexPointerARB"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_texture_env_combine(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_env_crossbar(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_env_dot3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_mirrored_repeat(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_depth_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_shadow(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_shadow_ambient(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_window_pos(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_window_pos
+    if ((pglWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC) __GLeeGetProcAddress("glWindowPos2dARB"))!=0) nLinked++;
+    if ((pglWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC) __GLeeGetProcAddress("glWindowPos2dvARB"))!=0) nLinked++;
+    if ((pglWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC) __GLeeGetProcAddress("glWindowPos2fARB"))!=0) nLinked++;
+    if ((pglWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC) __GLeeGetProcAddress("glWindowPos2fvARB"))!=0) nLinked++;
+    if ((pglWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC) __GLeeGetProcAddress("glWindowPos2iARB"))!=0) nLinked++;
+    if ((pglWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC) __GLeeGetProcAddress("glWindowPos2ivARB"))!=0) nLinked++;
+    if ((pglWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC) __GLeeGetProcAddress("glWindowPos2sARB"))!=0) nLinked++;
+    if ((pglWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC) __GLeeGetProcAddress("glWindowPos2svARB"))!=0) nLinked++;
+    if ((pglWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC) __GLeeGetProcAddress("glWindowPos3dARB"))!=0) nLinked++;
+    if ((pglWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC) __GLeeGetProcAddress("glWindowPos3dvARB"))!=0) nLinked++;
+    if ((pglWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC) __GLeeGetProcAddress("glWindowPos3fARB"))!=0) nLinked++;
+    if ((pglWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC) __GLeeGetProcAddress("glWindowPos3fvARB"))!=0) nLinked++;
+    if ((pglWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC) __GLeeGetProcAddress("glWindowPos3iARB"))!=0) nLinked++;
+    if ((pglWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC) __GLeeGetProcAddress("glWindowPos3ivARB"))!=0) nLinked++;
+    if ((pglWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC) __GLeeGetProcAddress("glWindowPos3sARB"))!=0) nLinked++;
+    if ((pglWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC) __GLeeGetProcAddress("glWindowPos3svARB"))!=0) nLinked++;
+#endif
+    if (nLinked==16) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_vertex_program(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_vertex_program
+    if ((pglVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC) __GLeeGetProcAddress("glVertexAttrib1dARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC) __GLeeGetProcAddress("glVertexAttrib1dvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC) __GLeeGetProcAddress("glVertexAttrib1fARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC) __GLeeGetProcAddress("glVertexAttrib1fvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC) __GLeeGetProcAddress("glVertexAttrib1sARB"))!=0) nLinked++;
+    if ((pglVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC) __GLeeGetProcAddress("glVertexAttrib1svARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC) __GLeeGetProcAddress("glVertexAttrib2dARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC) __GLeeGetProcAddress("glVertexAttrib2dvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC) __GLeeGetProcAddress("glVertexAttrib2fARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC) __GLeeGetProcAddress("glVertexAttrib2fvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC) __GLeeGetProcAddress("glVertexAttrib2sARB"))!=0) nLinked++;
+    if ((pglVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC) __GLeeGetProcAddress("glVertexAttrib2svARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC) __GLeeGetProcAddress("glVertexAttrib3dARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC) __GLeeGetProcAddress("glVertexAttrib3dvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC) __GLeeGetProcAddress("glVertexAttrib3fARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC) __GLeeGetProcAddress("glVertexAttrib3fvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC) __GLeeGetProcAddress("glVertexAttrib3sARB"))!=0) nLinked++;
+    if ((pglVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC) __GLeeGetProcAddress("glVertexAttrib3svARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NbvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NivARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NsvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC) __GLeeGetProcAddress("glVertexAttrib4NubARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NubvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NuivARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NusvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC) __GLeeGetProcAddress("glVertexAttrib4bvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC) __GLeeGetProcAddress("glVertexAttrib4dARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC) __GLeeGetProcAddress("glVertexAttrib4dvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC) __GLeeGetProcAddress("glVertexAttrib4fARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC) __GLeeGetProcAddress("glVertexAttrib4fvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC) __GLeeGetProcAddress("glVertexAttrib4ivARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC) __GLeeGetProcAddress("glVertexAttrib4sARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC) __GLeeGetProcAddress("glVertexAttrib4svARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4ubvARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4uivARB"))!=0) nLinked++;
+    if ((pglVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC) __GLeeGetProcAddress("glVertexAttrib4usvARB"))!=0) nLinked++;
+    if ((pglVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC) __GLeeGetProcAddress("glVertexAttribPointerARB"))!=0) nLinked++;
+    if ((pglEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC) __GLeeGetProcAddress("glEnableVertexAttribArrayARB"))!=0) nLinked++;
+    if ((pglDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) __GLeeGetProcAddress("glDisableVertexAttribArrayARB"))!=0) nLinked++;
+    if ((pglProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC) __GLeeGetProcAddress("glProgramStringARB"))!=0) nLinked++;
+    if ((pglBindProgramARB = (PFNGLBINDPROGRAMARBPROC) __GLeeGetProcAddress("glBindProgramARB"))!=0) nLinked++;
+    if ((pglDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC) __GLeeGetProcAddress("glDeleteProgramsARB"))!=0) nLinked++;
+    if ((pglGenProgramsARB = (PFNGLGENPROGRAMSARBPROC) __GLeeGetProcAddress("glGenProgramsARB"))!=0) nLinked++;
+    if ((pglProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4dARB"))!=0) nLinked++;
+    if ((pglProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4dvARB"))!=0) nLinked++;
+    if ((pglProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4fARB"))!=0) nLinked++;
+    if ((pglProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4fvARB"))!=0) nLinked++;
+    if ((pglProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4dARB"))!=0) nLinked++;
+    if ((pglProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4dvARB"))!=0) nLinked++;
+    if ((pglProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4fARB"))!=0) nLinked++;
+    if ((pglProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4fvARB"))!=0) nLinked++;
+    if ((pglGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC) __GLeeGetProcAddress("glGetProgramEnvParameterdvARB"))!=0) nLinked++;
+    if ((pglGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetProgramEnvParameterfvARB"))!=0) nLinked++;
+    if ((pglGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) __GLeeGetProcAddress("glGetProgramLocalParameterdvARB"))!=0) nLinked++;
+    if ((pglGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetProgramLocalParameterfvARB"))!=0) nLinked++;
+    if ((pglGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC) __GLeeGetProcAddress("glGetProgramivARB"))!=0) nLinked++;
+    if ((pglGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC) __GLeeGetProcAddress("glGetProgramStringARB"))!=0) nLinked++;
+    if ((pglGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC) __GLeeGetProcAddress("glGetVertexAttribdvARB"))!=0) nLinked++;
+    if ((pglGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) __GLeeGetProcAddress("glGetVertexAttribfvARB"))!=0) nLinked++;
+    if ((pglGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC) __GLeeGetProcAddress("glGetVertexAttribivARB"))!=0) nLinked++;
+    if ((pglGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC) __GLeeGetProcAddress("glGetVertexAttribPointervARB"))!=0) nLinked++;
+    if ((pglIsProgramARB = (PFNGLISPROGRAMARBPROC) __GLeeGetProcAddress("glIsProgramARB"))!=0) nLinked++;
+#endif
+    if (nLinked==62) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_fragment_program(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_vertex_buffer_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_vertex_buffer_object
+    if ((pglBindBufferARB = (PFNGLBINDBUFFERARBPROC) __GLeeGetProcAddress("glBindBufferARB"))!=0) nLinked++;
+    if ((pglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) __GLeeGetProcAddress("glDeleteBuffersARB"))!=0) nLinked++;
+    if ((pglGenBuffersARB = (PFNGLGENBUFFERSARBPROC) __GLeeGetProcAddress("glGenBuffersARB"))!=0) nLinked++;
+    if ((pglIsBufferARB = (PFNGLISBUFFERARBPROC) __GLeeGetProcAddress("glIsBufferARB"))!=0) nLinked++;
+    if ((pglBufferDataARB = (PFNGLBUFFERDATAARBPROC) __GLeeGetProcAddress("glBufferDataARB"))!=0) nLinked++;
+    if ((pglBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC) __GLeeGetProcAddress("glBufferSubDataARB"))!=0) nLinked++;
+    if ((pglGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC) __GLeeGetProcAddress("glGetBufferSubDataARB"))!=0) nLinked++;
+    if ((pglMapBufferARB = (PFNGLMAPBUFFERARBPROC) __GLeeGetProcAddress("glMapBufferARB"))!=0) nLinked++;
+    if ((pglUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC) __GLeeGetProcAddress("glUnmapBufferARB"))!=0) nLinked++;
+    if ((pglGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC) __GLeeGetProcAddress("glGetBufferParameterivARB"))!=0) nLinked++;
+    if ((pglGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC) __GLeeGetProcAddress("glGetBufferPointervARB"))!=0) nLinked++;
+#endif
+    if (nLinked==11) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_occlusion_query(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_occlusion_query
+    if ((pglGenQueriesARB = (PFNGLGENQUERIESARBPROC) __GLeeGetProcAddress("glGenQueriesARB"))!=0) nLinked++;
+    if ((pglDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC) __GLeeGetProcAddress("glDeleteQueriesARB"))!=0) nLinked++;
+    if ((pglIsQueryARB = (PFNGLISQUERYARBPROC) __GLeeGetProcAddress("glIsQueryARB"))!=0) nLinked++;
+    if ((pglBeginQueryARB = (PFNGLBEGINQUERYARBPROC) __GLeeGetProcAddress("glBeginQueryARB"))!=0) nLinked++;
+    if ((pglEndQueryARB = (PFNGLENDQUERYARBPROC) __GLeeGetProcAddress("glEndQueryARB"))!=0) nLinked++;
+    if ((pglGetQueryivARB = (PFNGLGETQUERYIVARBPROC) __GLeeGetProcAddress("glGetQueryivARB"))!=0) nLinked++;
+    if ((pglGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC) __GLeeGetProcAddress("glGetQueryObjectivARB"))!=0) nLinked++;
+    if ((pglGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC) __GLeeGetProcAddress("glGetQueryObjectuivARB"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_shader_objects(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_shader_objects
+    if ((pglDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC) __GLeeGetProcAddress("glDeleteObjectARB"))!=0) nLinked++;
+    if ((pglGetHandleARB = (PFNGLGETHANDLEARBPROC) __GLeeGetProcAddress("glGetHandleARB"))!=0) nLinked++;
+    if ((pglDetachObjectARB = (PFNGLDETACHOBJECTARBPROC) __GLeeGetProcAddress("glDetachObjectARB"))!=0) nLinked++;
+    if ((pglCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) __GLeeGetProcAddress("glCreateShaderObjectARB"))!=0) nLinked++;
+    if ((pglShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) __GLeeGetProcAddress("glShaderSourceARB"))!=0) nLinked++;
+    if ((pglCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) __GLeeGetProcAddress("glCompileShaderARB"))!=0) nLinked++;
+    if ((pglCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) __GLeeGetProcAddress("glCreateProgramObjectARB"))!=0) nLinked++;
+    if ((pglAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) __GLeeGetProcAddress("glAttachObjectARB"))!=0) nLinked++;
+    if ((pglLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) __GLeeGetProcAddress("glLinkProgramARB"))!=0) nLinked++;
+    if ((pglUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) __GLeeGetProcAddress("glUseProgramObjectARB"))!=0) nLinked++;
+    if ((pglValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC) __GLeeGetProcAddress("glValidateProgramARB"))!=0) nLinked++;
+    if ((pglUniform1fARB = (PFNGLUNIFORM1FARBPROC) __GLeeGetProcAddress("glUniform1fARB"))!=0) nLinked++;
+    if ((pglUniform2fARB = (PFNGLUNIFORM2FARBPROC) __GLeeGetProcAddress("glUniform2fARB"))!=0) nLinked++;
+    if ((pglUniform3fARB = (PFNGLUNIFORM3FARBPROC) __GLeeGetProcAddress("glUniform3fARB"))!=0) nLinked++;
+    if ((pglUniform4fARB = (PFNGLUNIFORM4FARBPROC) __GLeeGetProcAddress("glUniform4fARB"))!=0) nLinked++;
+    if ((pglUniform1iARB = (PFNGLUNIFORM1IARBPROC) __GLeeGetProcAddress("glUniform1iARB"))!=0) nLinked++;
+    if ((pglUniform2iARB = (PFNGLUNIFORM2IARBPROC) __GLeeGetProcAddress("glUniform2iARB"))!=0) nLinked++;
+    if ((pglUniform3iARB = (PFNGLUNIFORM3IARBPROC) __GLeeGetProcAddress("glUniform3iARB"))!=0) nLinked++;
+    if ((pglUniform4iARB = (PFNGLUNIFORM4IARBPROC) __GLeeGetProcAddress("glUniform4iARB"))!=0) nLinked++;
+    if ((pglUniform1fvARB = (PFNGLUNIFORM1FVARBPROC) __GLeeGetProcAddress("glUniform1fvARB"))!=0) nLinked++;
+    if ((pglUniform2fvARB = (PFNGLUNIFORM2FVARBPROC) __GLeeGetProcAddress("glUniform2fvARB"))!=0) nLinked++;
+    if ((pglUniform3fvARB = (PFNGLUNIFORM3FVARBPROC) __GLeeGetProcAddress("glUniform3fvARB"))!=0) nLinked++;
+    if ((pglUniform4fvARB = (PFNGLUNIFORM4FVARBPROC) __GLeeGetProcAddress("glUniform4fvARB"))!=0) nLinked++;
+    if ((pglUniform1ivARB = (PFNGLUNIFORM1IVARBPROC) __GLeeGetProcAddress("glUniform1ivARB"))!=0) nLinked++;
+    if ((pglUniform2ivARB = (PFNGLUNIFORM2IVARBPROC) __GLeeGetProcAddress("glUniform2ivARB"))!=0) nLinked++;
+    if ((pglUniform3ivARB = (PFNGLUNIFORM3IVARBPROC) __GLeeGetProcAddress("glUniform3ivARB"))!=0) nLinked++;
+    if ((pglUniform4ivARB = (PFNGLUNIFORM4IVARBPROC) __GLeeGetProcAddress("glUniform4ivARB"))!=0) nLinked++;
+    if ((pglUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC) __GLeeGetProcAddress("glUniformMatrix2fvARB"))!=0) nLinked++;
+    if ((pglUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC) __GLeeGetProcAddress("glUniformMatrix3fvARB"))!=0) nLinked++;
+    if ((pglUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC) __GLeeGetProcAddress("glUniformMatrix4fvARB"))!=0) nLinked++;
+    if ((pglGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetObjectParameterfvARB"))!=0) nLinked++;
+    if ((pglGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC) __GLeeGetProcAddress("glGetObjectParameterivARB"))!=0) nLinked++;
+    if ((pglGetInfoLogARB = (PFNGLGETINFOLOGARBPROC) __GLeeGetProcAddress("glGetInfoLogARB"))!=0) nLinked++;
+    if ((pglGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC) __GLeeGetProcAddress("glGetAttachedObjectsARB"))!=0) nLinked++;
+    if ((pglGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) __GLeeGetProcAddress("glGetUniformLocationARB"))!=0) nLinked++;
+    if ((pglGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC) __GLeeGetProcAddress("glGetActiveUniformARB"))!=0) nLinked++;
+    if ((pglGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC) __GLeeGetProcAddress("glGetUniformfvARB"))!=0) nLinked++;
+    if ((pglGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC) __GLeeGetProcAddress("glGetUniformivARB"))!=0) nLinked++;
+    if ((pglGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC) __GLeeGetProcAddress("glGetShaderSourceARB"))!=0) nLinked++;
+#endif
+    if (nLinked==39) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_vertex_shader(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_vertex_shader
+    if ((pglBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC) __GLeeGetProcAddress("glBindAttribLocationARB"))!=0) nLinked++;
+    if ((pglGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC) __GLeeGetProcAddress("glGetActiveAttribARB"))!=0) nLinked++;
+    if ((pglGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC) __GLeeGetProcAddress("glGetAttribLocationARB"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_fragment_shader(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_shading_language_100(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_non_power_of_two(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_point_sprite(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_fragment_program_shadow(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_draw_buffers(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_draw_buffers
+    if ((pglDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC) __GLeeGetProcAddress("glDrawBuffersARB"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_texture_rectangle(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_color_buffer_float(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ARB_color_buffer_float
+    if ((pglClampColorARB = (PFNGLCLAMPCOLORARBPROC) __GLeeGetProcAddress("glClampColorARB"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ARB_half_float_pixel(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_texture_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ARB_pixel_buffer_object(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_abgr(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_blend_color(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_blend_color
+    if ((pglBlendColorEXT = (PFNGLBLENDCOLOREXTPROC) __GLeeGetProcAddress("glBlendColorEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_polygon_offset(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_polygon_offset
+    if ((pglPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC) __GLeeGetProcAddress("glPolygonOffsetEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture3D(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture3D
+    if ((pglTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC) __GLeeGetProcAddress("glTexImage3DEXT"))!=0) nLinked++;
+    if ((pglTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glTexSubImage3DEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_texture_filter4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_texture_filter4
+    if ((pglGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC) __GLeeGetProcAddress("glGetTexFilterFuncSGIS"))!=0) nLinked++;
+    if ((pglTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC) __GLeeGetProcAddress("glTexFilterFuncSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_subtexture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_subtexture
+    if ((pglTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glTexSubImage1DEXT"))!=0) nLinked++;
+    if ((pglTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glTexSubImage2DEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_copy_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_copy_texture
+    if ((pglCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyTexImage1DEXT"))!=0) nLinked++;
+    if ((pglCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyTexImage2DEXT"))!=0) nLinked++;
+    if ((pglCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage1DEXT"))!=0) nLinked++;
+    if ((pglCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage2DEXT"))!=0) nLinked++;
+    if ((pglCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage3DEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_histogram(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_histogram
+    if ((pglGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC) __GLeeGetProcAddress("glGetHistogramEXT"))!=0) nLinked++;
+    if ((pglGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetHistogramParameterfvEXT"))!=0) nLinked++;
+    if ((pglGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetHistogramParameterivEXT"))!=0) nLinked++;
+    if ((pglGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC) __GLeeGetProcAddress("glGetMinmaxEXT"))!=0) nLinked++;
+    if ((pglGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetMinmaxParameterfvEXT"))!=0) nLinked++;
+    if ((pglGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetMinmaxParameterivEXT"))!=0) nLinked++;
+    if ((pglHistogramEXT = (PFNGLHISTOGRAMEXTPROC) __GLeeGetProcAddress("glHistogramEXT"))!=0) nLinked++;
+    if ((pglMinmaxEXT = (PFNGLMINMAXEXTPROC) __GLeeGetProcAddress("glMinmaxEXT"))!=0) nLinked++;
+    if ((pglResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC) __GLeeGetProcAddress("glResetHistogramEXT"))!=0) nLinked++;
+    if ((pglResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC) __GLeeGetProcAddress("glResetMinmaxEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==10) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_convolution(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_convolution
+    if ((pglConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC) __GLeeGetProcAddress("glConvolutionFilter1DEXT"))!=0) nLinked++;
+    if ((pglConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC) __GLeeGetProcAddress("glConvolutionFilter2DEXT"))!=0) nLinked++;
+    if ((pglConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC) __GLeeGetProcAddress("glConvolutionParameterfEXT"))!=0) nLinked++;
+    if ((pglConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC) __GLeeGetProcAddress("glConvolutionParameterfvEXT"))!=0) nLinked++;
+    if ((pglConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC) __GLeeGetProcAddress("glConvolutionParameteriEXT"))!=0) nLinked++;
+    if ((pglConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC) __GLeeGetProcAddress("glConvolutionParameterivEXT"))!=0) nLinked++;
+    if ((pglCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) __GLeeGetProcAddress("glCopyConvolutionFilter1DEXT"))!=0) nLinked++;
+    if ((pglCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) __GLeeGetProcAddress("glCopyConvolutionFilter2DEXT"))!=0) nLinked++;
+    if ((pglGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC) __GLeeGetProcAddress("glGetConvolutionFilterEXT"))!=0) nLinked++;
+    if ((pglGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetConvolutionParameterfvEXT"))!=0) nLinked++;
+    if ((pglGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetConvolutionParameterivEXT"))!=0) nLinked++;
+    if ((pglGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC) __GLeeGetProcAddress("glGetSeparableFilterEXT"))!=0) nLinked++;
+    if ((pglSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC) __GLeeGetProcAddress("glSeparableFilter2DEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==13) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGI_color_matrix(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGI_color_table(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGI_color_table
+    if ((pglColorTableSGI = (PFNGLCOLORTABLESGIPROC) __GLeeGetProcAddress("glColorTableSGI"))!=0) nLinked++;
+    if ((pglColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC) __GLeeGetProcAddress("glColorTableParameterfvSGI"))!=0) nLinked++;
+    if ((pglColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC) __GLeeGetProcAddress("glColorTableParameterivSGI"))!=0) nLinked++;
+    if ((pglCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC) __GLeeGetProcAddress("glCopyColorTableSGI"))!=0) nLinked++;
+    if ((pglGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC) __GLeeGetProcAddress("glGetColorTableSGI"))!=0) nLinked++;
+    if ((pglGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) __GLeeGetProcAddress("glGetColorTableParameterfvSGI"))!=0) nLinked++;
+    if ((pglGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) __GLeeGetProcAddress("glGetColorTableParameterivSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_pixel_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_pixel_texture
+    if ((pglPixelTexGenParameteriSGIS = (PFNGLPIXELTEXGENPARAMETERISGISPROC) __GLeeGetProcAddress("glPixelTexGenParameteriSGIS"))!=0) nLinked++;
+    if ((pglPixelTexGenParameterivSGIS = (PFNGLPIXELTEXGENPARAMETERIVSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterivSGIS"))!=0) nLinked++;
+    if ((pglPixelTexGenParameterfSGIS = (PFNGLPIXELTEXGENPARAMETERFSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterfSGIS"))!=0) nLinked++;
+    if ((pglPixelTexGenParameterfvSGIS = (PFNGLPIXELTEXGENPARAMETERFVSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterfvSGIS"))!=0) nLinked++;
+    if ((pglGetPixelTexGenParameterivSGIS = (PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) __GLeeGetProcAddress("glGetPixelTexGenParameterivSGIS"))!=0) nLinked++;
+    if ((pglGetPixelTexGenParameterfvSGIS = (PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) __GLeeGetProcAddress("glGetPixelTexGenParameterfvSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_pixel_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_pixel_texture
+    if ((pglPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC) __GLeeGetProcAddress("glPixelTexGenSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_texture4D(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_texture4D
+    if ((pglTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC) __GLeeGetProcAddress("glTexImage4DSGIS"))!=0) nLinked++;
+    if ((pglTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC) __GLeeGetProcAddress("glTexSubImage4DSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGI_texture_color_table(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_cmyka(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture_object
+    if ((pglAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC) __GLeeGetProcAddress("glAreTexturesResidentEXT"))!=0) nLinked++;
+    if ((pglBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC) __GLeeGetProcAddress("glBindTextureEXT"))!=0) nLinked++;
+    if ((pglDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC) __GLeeGetProcAddress("glDeleteTexturesEXT"))!=0) nLinked++;
+    if ((pglGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC) __GLeeGetProcAddress("glGenTexturesEXT"))!=0) nLinked++;
+    if ((pglIsTextureEXT = (PFNGLISTEXTUREEXTPROC) __GLeeGetProcAddress("glIsTextureEXT"))!=0) nLinked++;
+    if ((pglPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC) __GLeeGetProcAddress("glPrioritizeTexturesEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_detail_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_detail_texture
+    if ((pglDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC) __GLeeGetProcAddress("glDetailTexFuncSGIS"))!=0) nLinked++;
+    if ((pglGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC) __GLeeGetProcAddress("glGetDetailTexFuncSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_sharpen_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_sharpen_texture
+    if ((pglSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC) __GLeeGetProcAddress("glSharpenTexFuncSGIS"))!=0) nLinked++;
+    if ((pglGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC) __GLeeGetProcAddress("glGetSharpenTexFuncSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_packed_pixels(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_lod(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_multisample(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_multisample
+    if ((pglSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC) __GLeeGetProcAddress("glSampleMaskSGIS"))!=0) nLinked++;
+    if ((pglSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC) __GLeeGetProcAddress("glSamplePatternSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_rescale_normal(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_vertex_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_vertex_array
+    if ((pglArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC) __GLeeGetProcAddress("glArrayElementEXT"))!=0) nLinked++;
+    if ((pglColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC) __GLeeGetProcAddress("glColorPointerEXT"))!=0) nLinked++;
+    if ((pglDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC) __GLeeGetProcAddress("glDrawArraysEXT"))!=0) nLinked++;
+    if ((pglEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC) __GLeeGetProcAddress("glEdgeFlagPointerEXT"))!=0) nLinked++;
+    if ((pglGetPointervEXT = (PFNGLGETPOINTERVEXTPROC) __GLeeGetProcAddress("glGetPointervEXT"))!=0) nLinked++;
+    if ((pglIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC) __GLeeGetProcAddress("glIndexPointerEXT"))!=0) nLinked++;
+    if ((pglNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC) __GLeeGetProcAddress("glNormalPointerEXT"))!=0) nLinked++;
+    if ((pglTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC) __GLeeGetProcAddress("glTexCoordPointerEXT"))!=0) nLinked++;
+    if ((pglVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC) __GLeeGetProcAddress("glVertexPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==9) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_misc_attribute(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_generate_mipmap(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_clipmap(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_shadow(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_edge_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_border_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_blend_minmax(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_blend_minmax
+    if ((pglBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC) __GLeeGetProcAddress("glBlendEquationEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_blend_subtract(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_blend_logic_op(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_interlace(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_pixel_tiles(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_select(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_sprite(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_sprite
+    if ((pglSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC) __GLeeGetProcAddress("glSpriteParameterfSGIX"))!=0) nLinked++;
+    if ((pglSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glSpriteParameterfvSGIX"))!=0) nLinked++;
+    if ((pglSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC) __GLeeGetProcAddress("glSpriteParameteriSGIX"))!=0) nLinked++;
+    if ((pglSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glSpriteParameterivSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_texture_multi_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_point_parameters(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_point_parameters
+    if ((pglPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC) __GLeeGetProcAddress("glPointParameterfEXT"))!=0) nLinked++;
+    if ((pglPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC) __GLeeGetProcAddress("glPointParameterfvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIS_point_parameters(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_point_parameters
+    if ((pglPointParameterfSGIS = (PFNGLPOINTPARAMETERFSGISPROC) __GLeeGetProcAddress("glPointParameterfSGIS"))!=0) nLinked++;
+    if ((pglPointParameterfvSGIS = (PFNGLPOINTPARAMETERFVSGISPROC) __GLeeGetProcAddress("glPointParameterfvSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_instruments(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_instruments
+    if ((pglGetInstrumentsSGIX = (PFNGLGETINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glGetInstrumentsSGIX"))!=0) nLinked++;
+    if ((pglInstrumentsBufferSGIX = (PFNGLINSTRUMENTSBUFFERSGIXPROC) __GLeeGetProcAddress("glInstrumentsBufferSGIX"))!=0) nLinked++;
+    if ((pglPollInstrumentsSGIX = (PFNGLPOLLINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glPollInstrumentsSGIX"))!=0) nLinked++;
+    if ((pglReadInstrumentsSGIX = (PFNGLREADINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glReadInstrumentsSGIX"))!=0) nLinked++;
+    if ((pglStartInstrumentsSGIX = (PFNGLSTARTINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glStartInstrumentsSGIX"))!=0) nLinked++;
+    if ((pglStopInstrumentsSGIX = (PFNGLSTOPINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glStopInstrumentsSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_texture_scale_bias(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_framezoom(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_framezoom
+    if ((pglFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC) __GLeeGetProcAddress("glFrameZoomSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_tag_sample_buffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_tag_sample_buffer
+    if ((pglTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC) __GLeeGetProcAddress("glTagSampleBufferSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_FfdMaskSGIX(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_polynomial_ffd(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_polynomial_ffd
+    if ((pglDeformationMap3dSGIX = (PFNGLDEFORMATIONMAP3DSGIXPROC) __GLeeGetProcAddress("glDeformationMap3dSGIX"))!=0) nLinked++;
+    if ((pglDeformationMap3fSGIX = (PFNGLDEFORMATIONMAP3FSGIXPROC) __GLeeGetProcAddress("glDeformationMap3fSGIX"))!=0) nLinked++;
+    if ((pglDeformSGIX = (PFNGLDEFORMSGIXPROC) __GLeeGetProcAddress("glDeformSGIX"))!=0) nLinked++;
+    if ((pglLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) __GLeeGetProcAddress("glLoadIdentityDeformationMapSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_reference_plane(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_reference_plane
+    if ((pglReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC) __GLeeGetProcAddress("glReferencePlaneSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_flush_raster(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_flush_raster
+    if ((pglFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC) __GLeeGetProcAddress("glFlushRasterSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_depth_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_fog_function(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_fog_function
+    if ((pglFogFuncSGIS = (PFNGLFOGFUNCSGISPROC) __GLeeGetProcAddress("glFogFuncSGIS"))!=0) nLinked++;
+    if ((pglGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC) __GLeeGetProcAddress("glGetFogFuncSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_fog_offset(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_HP_image_transform(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_HP_image_transform
+    if ((pglImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC) __GLeeGetProcAddress("glImageTransformParameteriHP"))!=0) nLinked++;
+    if ((pglImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC) __GLeeGetProcAddress("glImageTransformParameterfHP"))!=0) nLinked++;
+    if ((pglImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) __GLeeGetProcAddress("glImageTransformParameterivHP"))!=0) nLinked++;
+    if ((pglImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) __GLeeGetProcAddress("glImageTransformParameterfvHP"))!=0) nLinked++;
+    if ((pglGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) __GLeeGetProcAddress("glGetImageTransformParameterivHP"))!=0) nLinked++;
+    if ((pglGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) __GLeeGetProcAddress("glGetImageTransformParameterfvHP"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_HP_convolution_border_modes(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INGR_palette_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_texture_add_env(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_color_subtable(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_color_subtable
+    if ((pglColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC) __GLeeGetProcAddress("glColorSubTableEXT"))!=0) nLinked++;
+    if ((pglCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC) __GLeeGetProcAddress("glCopyColorSubTableEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_PGI_vertex_hints(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_PGI_misc_hints(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_PGI_misc_hints
+    if ((pglHintPGI = (PFNGLHINTPGIPROC) __GLeeGetProcAddress("glHintPGI"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_paletted_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_paletted_texture
+    if ((pglColorTableEXT = (PFNGLCOLORTABLEEXTPROC) __GLeeGetProcAddress("glColorTableEXT"))!=0) nLinked++;
+    if ((pglGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC) __GLeeGetProcAddress("glGetColorTableEXT"))!=0) nLinked++;
+    if ((pglGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetColorTableParameterivEXT"))!=0) nLinked++;
+    if ((pglGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetColorTableParameterfvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_clip_volume_hint(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_list_priority(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_list_priority
+    if ((pglGetListParameterfvSGIX = (PFNGLGETLISTPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glGetListParameterfvSGIX"))!=0) nLinked++;
+    if ((pglGetListParameterivSGIX = (PFNGLGETLISTPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glGetListParameterivSGIX"))!=0) nLinked++;
+    if ((pglListParameterfSGIX = (PFNGLLISTPARAMETERFSGIXPROC) __GLeeGetProcAddress("glListParameterfSGIX"))!=0) nLinked++;
+    if ((pglListParameterfvSGIX = (PFNGLLISTPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glListParameterfvSGIX"))!=0) nLinked++;
+    if ((pglListParameteriSGIX = (PFNGLLISTPARAMETERISGIXPROC) __GLeeGetProcAddress("glListParameteriSGIX"))!=0) nLinked++;
+    if ((pglListParameterivSGIX = (PFNGLLISTPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glListParameterivSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_ir_instrument1(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_calligraphic_fragment(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_texture_lod_bias(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_shadow_ambient(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_index_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_index_material(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_index_material
+    if ((pglIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC) __GLeeGetProcAddress("glIndexMaterialEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_index_func(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_index_func
+    if ((pglIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC) __GLeeGetProcAddress("glIndexFuncEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_index_array_formats(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_compiled_vertex_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_compiled_vertex_array
+    if ((pglLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC) __GLeeGetProcAddress("glLockArraysEXT"))!=0) nLinked++;
+    if ((pglUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC) __GLeeGetProcAddress("glUnlockArraysEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_cull_vertex(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_cull_vertex
+    if ((pglCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC) __GLeeGetProcAddress("glCullParameterdvEXT"))!=0) nLinked++;
+    if ((pglCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC) __GLeeGetProcAddress("glCullParameterfvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_ycrcb(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_fragment_lighting(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_fragment_lighting
+    if ((pglFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC) __GLeeGetProcAddress("glFragmentColorMaterialSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC) __GLeeGetProcAddress("glFragmentLightfSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC) __GLeeGetProcAddress("glFragmentLightfvSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC) __GLeeGetProcAddress("glFragmentLightiSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC) __GLeeGetProcAddress("glFragmentLightivSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelfSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelfvSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC) __GLeeGetProcAddress("glFragmentLightModeliSGIX"))!=0) nLinked++;
+    if ((pglFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelivSGIX"))!=0) nLinked++;
+    if ((pglFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialfSGIX"))!=0) nLinked++;
+    if ((pglFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialfvSGIX"))!=0) nLinked++;
+    if ((pglFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC) __GLeeGetProcAddress("glFragmentMaterialiSGIX"))!=0) nLinked++;
+    if ((pglFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialivSGIX"))!=0) nLinked++;
+    if ((pglGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC) __GLeeGetProcAddress("glGetFragmentLightfvSGIX"))!=0) nLinked++;
+    if ((pglGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC) __GLeeGetProcAddress("glGetFragmentLightivSGIX"))!=0) nLinked++;
+    if ((pglGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC) __GLeeGetProcAddress("glGetFragmentMaterialfvSGIX"))!=0) nLinked++;
+    if ((pglGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC) __GLeeGetProcAddress("glGetFragmentMaterialivSGIX"))!=0) nLinked++;
+    if ((pglLightEnviSGIX = (PFNGLLIGHTENVISGIXPROC) __GLeeGetProcAddress("glLightEnviSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==18) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_IBM_rasterpos_clip(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_HP_texture_lighting(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_draw_range_elements(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_draw_range_elements
+    if ((pglDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC) __GLeeGetProcAddress("glDrawRangeElementsEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_WIN_phong_shading(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_WIN_specular_fog(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_light_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_light_texture
+    if ((pglApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC) __GLeeGetProcAddress("glApplyTextureEXT"))!=0) nLinked++;
+    if ((pglTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC) __GLeeGetProcAddress("glTextureLightEXT"))!=0) nLinked++;
+    if ((pglTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC) __GLeeGetProcAddress("glTextureMaterialEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_blend_alpha_minmax(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_impact_pixel_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_bgra(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_async(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_async
+    if ((pglAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC) __GLeeGetProcAddress("glAsyncMarkerSGIX"))!=0) nLinked++;
+    if ((pglFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC) __GLeeGetProcAddress("glFinishAsyncSGIX"))!=0) nLinked++;
+    if ((pglPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC) __GLeeGetProcAddress("glPollAsyncSGIX"))!=0) nLinked++;
+    if ((pglGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC) __GLeeGetProcAddress("glGenAsyncMarkersSGIX"))!=0) nLinked++;
+    if ((pglDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC) __GLeeGetProcAddress("glDeleteAsyncMarkersSGIX"))!=0) nLinked++;
+    if ((pglIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC) __GLeeGetProcAddress("glIsAsyncMarkerSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_async_pixel(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_async_histogram(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INTEL_texture_scissor(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INTEL_parallel_arrays(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_INTEL_parallel_arrays
+    if ((pglVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC) __GLeeGetProcAddress("glVertexPointervINTEL"))!=0) nLinked++;
+    if ((pglNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC) __GLeeGetProcAddress("glNormalPointervINTEL"))!=0) nLinked++;
+    if ((pglColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC) __GLeeGetProcAddress("glColorPointervINTEL"))!=0) nLinked++;
+    if ((pglTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC) __GLeeGetProcAddress("glTexCoordPointervINTEL"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_HP_occlusion_test(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_pixel_transform(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_pixel_transform
+    if ((pglPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) __GLeeGetProcAddress("glPixelTransformParameteriEXT"))!=0) nLinked++;
+    if ((pglPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterfEXT"))!=0) nLinked++;
+    if ((pglPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterivEXT"))!=0) nLinked++;
+    if ((pglPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterfvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_pixel_transform_color_table(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_shared_texture_palette(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_separate_specular_color(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_secondary_color(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_secondary_color
+    if ((pglSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC) __GLeeGetProcAddress("glSecondaryColor3bEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3bvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC) __GLeeGetProcAddress("glSecondaryColor3dEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3dvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC) __GLeeGetProcAddress("glSecondaryColor3fEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3fvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC) __GLeeGetProcAddress("glSecondaryColor3iEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ivEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC) __GLeeGetProcAddress("glSecondaryColor3sEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3svEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ubEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ubvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC) __GLeeGetProcAddress("glSecondaryColor3uiEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3uivEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC) __GLeeGetProcAddress("glSecondaryColor3usEXT"))!=0) nLinked++;
+    if ((pglSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3usvEXT"))!=0) nLinked++;
+    if ((pglSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC) __GLeeGetProcAddress("glSecondaryColorPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==17) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_perturb_normal(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture_perturb_normal
+    if ((pglTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC) __GLeeGetProcAddress("glTextureNormalEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_multi_draw_arrays(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_multi_draw_arrays
+    if ((pglMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC) __GLeeGetProcAddress("glMultiDrawArraysEXT"))!=0) nLinked++;
+    if ((pglMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC) __GLeeGetProcAddress("glMultiDrawElementsEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_fog_coord(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_fog_coord
+    if ((pglFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC) __GLeeGetProcAddress("glFogCoordfEXT"))!=0) nLinked++;
+    if ((pglFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC) __GLeeGetProcAddress("glFogCoordfvEXT"))!=0) nLinked++;
+    if ((pglFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC) __GLeeGetProcAddress("glFogCoorddEXT"))!=0) nLinked++;
+    if ((pglFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC) __GLeeGetProcAddress("glFogCoorddvEXT"))!=0) nLinked++;
+    if ((pglFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC) __GLeeGetProcAddress("glFogCoordPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_REND_screen_coordinates(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_coordinate_frame(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_coordinate_frame
+    if ((pglTangent3bEXT = (PFNGLTANGENT3BEXTPROC) __GLeeGetProcAddress("glTangent3bEXT"))!=0) nLinked++;
+    if ((pglTangent3bvEXT = (PFNGLTANGENT3BVEXTPROC) __GLeeGetProcAddress("glTangent3bvEXT"))!=0) nLinked++;
+    if ((pglTangent3dEXT = (PFNGLTANGENT3DEXTPROC) __GLeeGetProcAddress("glTangent3dEXT"))!=0) nLinked++;
+    if ((pglTangent3dvEXT = (PFNGLTANGENT3DVEXTPROC) __GLeeGetProcAddress("glTangent3dvEXT"))!=0) nLinked++;
+    if ((pglTangent3fEXT = (PFNGLTANGENT3FEXTPROC) __GLeeGetProcAddress("glTangent3fEXT"))!=0) nLinked++;
+    if ((pglTangent3fvEXT = (PFNGLTANGENT3FVEXTPROC) __GLeeGetProcAddress("glTangent3fvEXT"))!=0) nLinked++;
+    if ((pglTangent3iEXT = (PFNGLTANGENT3IEXTPROC) __GLeeGetProcAddress("glTangent3iEXT"))!=0) nLinked++;
+    if ((pglTangent3ivEXT = (PFNGLTANGENT3IVEXTPROC) __GLeeGetProcAddress("glTangent3ivEXT"))!=0) nLinked++;
+    if ((pglTangent3sEXT = (PFNGLTANGENT3SEXTPROC) __GLeeGetProcAddress("glTangent3sEXT"))!=0) nLinked++;
+    if ((pglTangent3svEXT = (PFNGLTANGENT3SVEXTPROC) __GLeeGetProcAddress("glTangent3svEXT"))!=0) nLinked++;
+    if ((pglBinormal3bEXT = (PFNGLBINORMAL3BEXTPROC) __GLeeGetProcAddress("glBinormal3bEXT"))!=0) nLinked++;
+    if ((pglBinormal3bvEXT = (PFNGLBINORMAL3BVEXTPROC) __GLeeGetProcAddress("glBinormal3bvEXT"))!=0) nLinked++;
+    if ((pglBinormal3dEXT = (PFNGLBINORMAL3DEXTPROC) __GLeeGetProcAddress("glBinormal3dEXT"))!=0) nLinked++;
+    if ((pglBinormal3dvEXT = (PFNGLBINORMAL3DVEXTPROC) __GLeeGetProcAddress("glBinormal3dvEXT"))!=0) nLinked++;
+    if ((pglBinormal3fEXT = (PFNGLBINORMAL3FEXTPROC) __GLeeGetProcAddress("glBinormal3fEXT"))!=0) nLinked++;
+    if ((pglBinormal3fvEXT = (PFNGLBINORMAL3FVEXTPROC) __GLeeGetProcAddress("glBinormal3fvEXT"))!=0) nLinked++;
+    if ((pglBinormal3iEXT = (PFNGLBINORMAL3IEXTPROC) __GLeeGetProcAddress("glBinormal3iEXT"))!=0) nLinked++;
+    if ((pglBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC) __GLeeGetProcAddress("glBinormal3ivEXT"))!=0) nLinked++;
+    if ((pglBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC) __GLeeGetProcAddress("glBinormal3sEXT"))!=0) nLinked++;
+    if ((pglBinormal3svEXT = (PFNGLBINORMAL3SVEXTPROC) __GLeeGetProcAddress("glBinormal3svEXT"))!=0) nLinked++;
+    if ((pglTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC) __GLeeGetProcAddress("glTangentPointerEXT"))!=0) nLinked++;
+    if ((pglBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC) __GLeeGetProcAddress("glBinormalPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==22) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_env_combine(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_APPLE_specular_vector(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_APPLE_transform_hint(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_fog_scale(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SUNX_constant_data(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUNX_constant_data
+    if ((pglFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC) __GLeeGetProcAddress("glFinishTextureSUNX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_global_alpha(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUN_global_alpha
+    if ((pglGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorbSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorsSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactoriSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorfSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactordSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorubSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorusSUN"))!=0) nLinked++;
+    if ((pglGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactoruiSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_triangle_list(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUN_triangle_list
+    if ((pglReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC) __GLeeGetProcAddress("glReplacementCodeuiSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC) __GLeeGetProcAddress("glReplacementCodeusSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC) __GLeeGetProcAddress("glReplacementCodeubSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuivSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC) __GLeeGetProcAddress("glReplacementCodeusvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC) __GLeeGetProcAddress("glReplacementCodeubvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC) __GLeeGetProcAddress("glReplacementCodePointerSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_vertex(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUN_vertex
+    if ((pglColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC) __GLeeGetProcAddress("glColor4ubVertex2fSUN"))!=0) nLinked++;
+    if ((pglColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC) __GLeeGetProcAddress("glColor4ubVertex2fvSUN"))!=0) nLinked++;
+    if ((pglColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor4ubVertex3fSUN"))!=0) nLinked++;
+    if ((pglColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor4ubVertex3fvSUN"))!=0) nLinked++;
+    if ((pglColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor4fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor4fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC) __GLeeGetProcAddress("glTexCoord4fVertex4fSUN"))!=0) nLinked++;
+    if ((pglTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC) __GLeeGetProcAddress("glTexCoord4fVertex4fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4ubVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4ubVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) __GLeeGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fSUN"))!=0) nLinked++;
+    if ((pglTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) __GLeeGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4ubVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4ubVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"))!=0) nLinked++;
+    if ((pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==40) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_blend_func_separate(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_blend_func_separate
+    if ((pglBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC) __GLeeGetProcAddress("glBlendFuncSeparateEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_INGR_color_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INGR_interlace_read(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_stencil_wrap(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_422_pixels(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texgen_reflection(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_cube_map(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SUN_convolution_border_modes(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_env_add(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_lod_bias(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_filter_anisotropic(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_vertex_weighting(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_vertex_weighting
+    if ((pglVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC) __GLeeGetProcAddress("glVertexWeightfEXT"))!=0) nLinked++;
+    if ((pglVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC) __GLeeGetProcAddress("glVertexWeightfvEXT"))!=0) nLinked++;
+    if ((pglVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC) __GLeeGetProcAddress("glVertexWeightPointerEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_light_max_exponent(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_array_range(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_vertex_array_range
+    if ((pglFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC) __GLeeGetProcAddress("glFlushVertexArrayRangeNV"))!=0) nLinked++;
+    if ((pglVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC) __GLeeGetProcAddress("glVertexArrayRangeNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_register_combiners(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_register_combiners
+    if ((pglCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC) __GLeeGetProcAddress("glCombinerParameterfvNV"))!=0) nLinked++;
+    if ((pglCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC) __GLeeGetProcAddress("glCombinerParameterfNV"))!=0) nLinked++;
+    if ((pglCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC) __GLeeGetProcAddress("glCombinerParameterivNV"))!=0) nLinked++;
+    if ((pglCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC) __GLeeGetProcAddress("glCombinerParameteriNV"))!=0) nLinked++;
+    if ((pglCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC) __GLeeGetProcAddress("glCombinerInputNV"))!=0) nLinked++;
+    if ((pglCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC) __GLeeGetProcAddress("glCombinerOutputNV"))!=0) nLinked++;
+    if ((pglFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC) __GLeeGetProcAddress("glFinalCombinerInputNV"))!=0) nLinked++;
+    if ((pglGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerInputParameterfvNV"))!=0) nLinked++;
+    if ((pglGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetCombinerInputParameterivNV"))!=0) nLinked++;
+    if ((pglGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerOutputParameterfvNV"))!=0) nLinked++;
+    if ((pglGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetCombinerOutputParameterivNV"))!=0) nLinked++;
+    if ((pglGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetFinalCombinerInputParameterfvNV"))!=0) nLinked++;
+    if ((pglGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetFinalCombinerInputParameterivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==13) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_fog_distance(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texgen_emboss(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_blend_square(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texture_env_combine4(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_MESA_resize_buffers(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_MESA_resize_buffers
+    if ((pglResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC) __GLeeGetProcAddress("glResizeBuffersMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_MESA_window_pos(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_MESA_window_pos
+    if ((pglWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC) __GLeeGetProcAddress("glWindowPos2dMESA"))!=0) nLinked++;
+    if ((pglWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC) __GLeeGetProcAddress("glWindowPos2dvMESA"))!=0) nLinked++;
+    if ((pglWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC) __GLeeGetProcAddress("glWindowPos2fMESA"))!=0) nLinked++;
+    if ((pglWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC) __GLeeGetProcAddress("glWindowPos2fvMESA"))!=0) nLinked++;
+    if ((pglWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC) __GLeeGetProcAddress("glWindowPos2iMESA"))!=0) nLinked++;
+    if ((pglWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC) __GLeeGetProcAddress("glWindowPos2ivMESA"))!=0) nLinked++;
+    if ((pglWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC) __GLeeGetProcAddress("glWindowPos2sMESA"))!=0) nLinked++;
+    if ((pglWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC) __GLeeGetProcAddress("glWindowPos2svMESA"))!=0) nLinked++;
+    if ((pglWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC) __GLeeGetProcAddress("glWindowPos3dMESA"))!=0) nLinked++;
+    if ((pglWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC) __GLeeGetProcAddress("glWindowPos3dvMESA"))!=0) nLinked++;
+    if ((pglWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC) __GLeeGetProcAddress("glWindowPos3fMESA"))!=0) nLinked++;
+    if ((pglWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC) __GLeeGetProcAddress("glWindowPos3fvMESA"))!=0) nLinked++;
+    if ((pglWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC) __GLeeGetProcAddress("glWindowPos3iMESA"))!=0) nLinked++;
+    if ((pglWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC) __GLeeGetProcAddress("glWindowPos3ivMESA"))!=0) nLinked++;
+    if ((pglWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC) __GLeeGetProcAddress("glWindowPos3sMESA"))!=0) nLinked++;
+    if ((pglWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC) __GLeeGetProcAddress("glWindowPos3svMESA"))!=0) nLinked++;
+    if ((pglWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC) __GLeeGetProcAddress("glWindowPos4dMESA"))!=0) nLinked++;
+    if ((pglWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC) __GLeeGetProcAddress("glWindowPos4dvMESA"))!=0) nLinked++;
+    if ((pglWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC) __GLeeGetProcAddress("glWindowPos4fMESA"))!=0) nLinked++;
+    if ((pglWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC) __GLeeGetProcAddress("glWindowPos4fvMESA"))!=0) nLinked++;
+    if ((pglWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC) __GLeeGetProcAddress("glWindowPos4iMESA"))!=0) nLinked++;
+    if ((pglWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC) __GLeeGetProcAddress("glWindowPos4ivMESA"))!=0) nLinked++;
+    if ((pglWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC) __GLeeGetProcAddress("glWindowPos4sMESA"))!=0) nLinked++;
+    if ((pglWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC) __GLeeGetProcAddress("glWindowPos4svMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==24) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_compression_s3tc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_IBM_cull_vertex(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_IBM_multimode_draw_arrays(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_IBM_multimode_draw_arrays
+    if ((pglMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC) __GLeeGetProcAddress("glMultiModeDrawArraysIBM"))!=0) nLinked++;
+    if ((pglMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC) __GLeeGetProcAddress("glMultiModeDrawElementsIBM"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_IBM_vertex_array_lists(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_IBM_vertex_array_lists
+    if ((pglColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC) __GLeeGetProcAddress("glColorPointerListIBM"))!=0) nLinked++;
+    if ((pglSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) __GLeeGetProcAddress("glSecondaryColorPointerListIBM"))!=0) nLinked++;
+    if ((pglEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC) __GLeeGetProcAddress("glEdgeFlagPointerListIBM"))!=0) nLinked++;
+    if ((pglFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC) __GLeeGetProcAddress("glFogCoordPointerListIBM"))!=0) nLinked++;
+    if ((pglIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC) __GLeeGetProcAddress("glIndexPointerListIBM"))!=0) nLinked++;
+    if ((pglNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC) __GLeeGetProcAddress("glNormalPointerListIBM"))!=0) nLinked++;
+    if ((pglTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC) __GLeeGetProcAddress("glTexCoordPointerListIBM"))!=0) nLinked++;
+    if ((pglVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC) __GLeeGetProcAddress("glVertexPointerListIBM"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_subsample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_ycrcb_subsample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_ycrcba(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGI_depth_pass_instrument(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_3DFX_texture_compression_FXT1(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_3DFX_tbuffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_3DFX_tbuffer
+    if ((pglTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC) __GLeeGetProcAddress("glTbufferMask3DFX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_multisample(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_multisample
+    if ((pglSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC) __GLeeGetProcAddress("glSampleMaskEXT"))!=0) nLinked++;
+    if ((pglSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC) __GLeeGetProcAddress("glSamplePatternEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_vertex_preclip(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_convolution_accuracy(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_resample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_point_line_texgen(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIS_texture_color_mask(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIS_texture_color_mask
+    if ((pglTextureColorMaskSGIS = (PFNGLTEXTURECOLORMASKSGISPROC) __GLeeGetProcAddress("glTextureColorMaskSGIS"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_env_dot3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_texture_mirror_once(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_fence(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_fence
+    if ((pglDeleteFencesNV = (PFNGLDELETEFENCESNVPROC) __GLeeGetProcAddress("glDeleteFencesNV"))!=0) nLinked++;
+    if ((pglGenFencesNV = (PFNGLGENFENCESNVPROC) __GLeeGetProcAddress("glGenFencesNV"))!=0) nLinked++;
+    if ((pglIsFenceNV = (PFNGLISFENCENVPROC) __GLeeGetProcAddress("glIsFenceNV"))!=0) nLinked++;
+    if ((pglTestFenceNV = (PFNGLTESTFENCENVPROC) __GLeeGetProcAddress("glTestFenceNV"))!=0) nLinked++;
+    if ((pglGetFenceivNV = (PFNGLGETFENCEIVNVPROC) __GLeeGetProcAddress("glGetFenceivNV"))!=0) nLinked++;
+    if ((pglFinishFenceNV = (PFNGLFINISHFENCENVPROC) __GLeeGetProcAddress("glFinishFenceNV"))!=0) nLinked++;
+    if ((pglSetFenceNV = (PFNGLSETFENCENVPROC) __GLeeGetProcAddress("glSetFenceNV"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_IBM_texture_mirrored_repeat(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_evaluators(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_evaluators
+    if ((pglMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC) __GLeeGetProcAddress("glMapControlPointsNV"))!=0) nLinked++;
+    if ((pglMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC) __GLeeGetProcAddress("glMapParameterivNV"))!=0) nLinked++;
+    if ((pglMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC) __GLeeGetProcAddress("glMapParameterfvNV"))!=0) nLinked++;
+    if ((pglGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC) __GLeeGetProcAddress("glGetMapControlPointsNV"))!=0) nLinked++;
+    if ((pglGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetMapParameterivNV"))!=0) nLinked++;
+    if ((pglGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetMapParameterfvNV"))!=0) nLinked++;
+    if ((pglGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetMapAttribParameterivNV"))!=0) nLinked++;
+    if ((pglGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetMapAttribParameterfvNV"))!=0) nLinked++;
+    if ((pglEvalMapsNV = (PFNGLEVALMAPSNVPROC) __GLeeGetProcAddress("glEvalMapsNV"))!=0) nLinked++;
+#endif
+    if (nLinked==9) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_packed_depth_stencil(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_register_combiners2(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_register_combiners2
+    if ((pglCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) __GLeeGetProcAddress("glCombinerStageParameterfvNV"))!=0) nLinked++;
+    if ((pglGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerStageParameterfvNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_texture_compression_vtc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texture_rectangle(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texture_shader(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_texture_shader2(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_array_range2(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_vertex_program
+    if ((pglAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC) __GLeeGetProcAddress("glAreProgramsResidentNV"))!=0) nLinked++;
+    if ((pglBindProgramNV = (PFNGLBINDPROGRAMNVPROC) __GLeeGetProcAddress("glBindProgramNV"))!=0) nLinked++;
+    if ((pglDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC) __GLeeGetProcAddress("glDeleteProgramsNV"))!=0) nLinked++;
+    if ((pglExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC) __GLeeGetProcAddress("glExecuteProgramNV"))!=0) nLinked++;
+    if ((pglGenProgramsNV = (PFNGLGENPROGRAMSNVPROC) __GLeeGetProcAddress("glGenProgramsNV"))!=0) nLinked++;
+    if ((pglGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC) __GLeeGetProcAddress("glGetProgramParameterdvNV"))!=0) nLinked++;
+    if ((pglGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetProgramParameterfvNV"))!=0) nLinked++;
+    if ((pglGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC) __GLeeGetProcAddress("glGetProgramivNV"))!=0) nLinked++;
+    if ((pglGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC) __GLeeGetProcAddress("glGetProgramStringNV"))!=0) nLinked++;
+    if ((pglGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC) __GLeeGetProcAddress("glGetTrackMatrixivNV"))!=0) nLinked++;
+    if ((pglGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) __GLeeGetProcAddress("glGetVertexAttribdvNV"))!=0) nLinked++;
+    if ((pglGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) __GLeeGetProcAddress("glGetVertexAttribfvNV"))!=0) nLinked++;
+    if ((pglGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) __GLeeGetProcAddress("glGetVertexAttribivNV"))!=0) nLinked++;
+    if ((pglGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC) __GLeeGetProcAddress("glGetVertexAttribPointervNV"))!=0) nLinked++;
+    if ((pglIsProgramNV = (PFNGLISPROGRAMNVPROC) __GLeeGetProcAddress("glIsProgramNV"))!=0) nLinked++;
+    if ((pglLoadProgramNV = (PFNGLLOADPROGRAMNVPROC) __GLeeGetProcAddress("glLoadProgramNV"))!=0) nLinked++;
+    if ((pglProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC) __GLeeGetProcAddress("glProgramParameter4dNV"))!=0) nLinked++;
+    if ((pglProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC) __GLeeGetProcAddress("glProgramParameter4dvNV"))!=0) nLinked++;
+    if ((pglProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC) __GLeeGetProcAddress("glProgramParameter4fNV"))!=0) nLinked++;
+    if ((pglProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC) __GLeeGetProcAddress("glProgramParameter4fvNV"))!=0) nLinked++;
+    if ((pglProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC) __GLeeGetProcAddress("glProgramParameters4dvNV"))!=0) nLinked++;
+    if ((pglProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC) __GLeeGetProcAddress("glProgramParameters4fvNV"))!=0) nLinked++;
+    if ((pglRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC) __GLeeGetProcAddress("glRequestResidentProgramsNV"))!=0) nLinked++;
+    if ((pglTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC) __GLeeGetProcAddress("glTrackMatrixNV"))!=0) nLinked++;
+    if ((pglVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC) __GLeeGetProcAddress("glVertexAttribPointerNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC) __GLeeGetProcAddress("glVertexAttrib1dNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC) __GLeeGetProcAddress("glVertexAttrib1dvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC) __GLeeGetProcAddress("glVertexAttrib1fNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC) __GLeeGetProcAddress("glVertexAttrib1fvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC) __GLeeGetProcAddress("glVertexAttrib1sNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC) __GLeeGetProcAddress("glVertexAttrib1svNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC) __GLeeGetProcAddress("glVertexAttrib2dNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC) __GLeeGetProcAddress("glVertexAttrib2dvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC) __GLeeGetProcAddress("glVertexAttrib2fNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC) __GLeeGetProcAddress("glVertexAttrib2fvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC) __GLeeGetProcAddress("glVertexAttrib2sNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC) __GLeeGetProcAddress("glVertexAttrib2svNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC) __GLeeGetProcAddress("glVertexAttrib3dNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC) __GLeeGetProcAddress("glVertexAttrib3dvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC) __GLeeGetProcAddress("glVertexAttrib3fNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC) __GLeeGetProcAddress("glVertexAttrib3fvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC) __GLeeGetProcAddress("glVertexAttrib3sNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC) __GLeeGetProcAddress("glVertexAttrib3svNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC) __GLeeGetProcAddress("glVertexAttrib4dNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC) __GLeeGetProcAddress("glVertexAttrib4dvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC) __GLeeGetProcAddress("glVertexAttrib4fNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC) __GLeeGetProcAddress("glVertexAttrib4fvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC) __GLeeGetProcAddress("glVertexAttrib4sNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC) __GLeeGetProcAddress("glVertexAttrib4svNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC) __GLeeGetProcAddress("glVertexAttrib4ubNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC) __GLeeGetProcAddress("glVertexAttrib4ubvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC) __GLeeGetProcAddress("glVertexAttribs1dvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC) __GLeeGetProcAddress("glVertexAttribs1fvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC) __GLeeGetProcAddress("glVertexAttribs1svNV"))!=0) nLinked++;
+    if ((pglVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC) __GLeeGetProcAddress("glVertexAttribs2dvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC) __GLeeGetProcAddress("glVertexAttribs2fvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC) __GLeeGetProcAddress("glVertexAttribs2svNV"))!=0) nLinked++;
+    if ((pglVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC) __GLeeGetProcAddress("glVertexAttribs3dvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC) __GLeeGetProcAddress("glVertexAttribs3fvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC) __GLeeGetProcAddress("glVertexAttribs3svNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC) __GLeeGetProcAddress("glVertexAttribs4dvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC) __GLeeGetProcAddress("glVertexAttribs4fvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC) __GLeeGetProcAddress("glVertexAttribs4svNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC) __GLeeGetProcAddress("glVertexAttribs4ubvNV"))!=0) nLinked++;
+#endif
+    if (nLinked==64) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_texture_coordinate_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_scalebias_hint(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OML_interlace(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OML_subsample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OML_resample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_copy_depth_to_color(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_envmap_bumpmap(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_envmap_bumpmap
+    if ((pglTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC) __GLeeGetProcAddress("glTexBumpParameterivATI"))!=0) nLinked++;
+    if ((pglTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC) __GLeeGetProcAddress("glTexBumpParameterfvATI"))!=0) nLinked++;
+    if ((pglGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC) __GLeeGetProcAddress("glGetTexBumpParameterivATI"))!=0) nLinked++;
+    if ((pglGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC) __GLeeGetProcAddress("glGetTexBumpParameterfvATI"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_fragment_shader(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_fragment_shader
+    if ((pglGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC) __GLeeGetProcAddress("glGenFragmentShadersATI"))!=0) nLinked++;
+    if ((pglBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glBindFragmentShaderATI"))!=0) nLinked++;
+    if ((pglDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glDeleteFragmentShaderATI"))!=0) nLinked++;
+    if ((pglBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glBeginFragmentShaderATI"))!=0) nLinked++;
+    if ((pglEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glEndFragmentShaderATI"))!=0) nLinked++;
+    if ((pglPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC) __GLeeGetProcAddress("glPassTexCoordATI"))!=0) nLinked++;
+    if ((pglSampleMapATI = (PFNGLSAMPLEMAPATIPROC) __GLeeGetProcAddress("glSampleMapATI"))!=0) nLinked++;
+    if ((pglColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC) __GLeeGetProcAddress("glColorFragmentOp1ATI"))!=0) nLinked++;
+    if ((pglColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC) __GLeeGetProcAddress("glColorFragmentOp2ATI"))!=0) nLinked++;
+    if ((pglColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC) __GLeeGetProcAddress("glColorFragmentOp3ATI"))!=0) nLinked++;
+    if ((pglAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp1ATI"))!=0) nLinked++;
+    if ((pglAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp2ATI"))!=0) nLinked++;
+    if ((pglAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp3ATI"))!=0) nLinked++;
+    if ((pglSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) __GLeeGetProcAddress("glSetFragmentShaderConstantATI"))!=0) nLinked++;
+#endif
+    if (nLinked==14) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_pn_triangles(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_pn_triangles
+    if ((pglPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC) __GLeeGetProcAddress("glPNTrianglesiATI"))!=0) nLinked++;
+    if ((pglPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC) __GLeeGetProcAddress("glPNTrianglesfATI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_vertex_array_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_vertex_array_object
+    if ((pglNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glNewObjectBufferATI"))!=0) nLinked++;
+    if ((pglIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glIsObjectBufferATI"))!=0) nLinked++;
+    if ((pglUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glUpdateObjectBufferATI"))!=0) nLinked++;
+    if ((pglGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC) __GLeeGetProcAddress("glGetObjectBufferfvATI"))!=0) nLinked++;
+    if ((pglGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC) __GLeeGetProcAddress("glGetObjectBufferivATI"))!=0) nLinked++;
+    if ((pglFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glFreeObjectBufferATI"))!=0) nLinked++;
+    if ((pglArrayObjectATI = (PFNGLARRAYOBJECTATIPROC) __GLeeGetProcAddress("glArrayObjectATI"))!=0) nLinked++;
+    if ((pglGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetArrayObjectfvATI"))!=0) nLinked++;
+    if ((pglGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetArrayObjectivATI"))!=0) nLinked++;
+    if ((pglVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC) __GLeeGetProcAddress("glVariantArrayObjectATI"))!=0) nLinked++;
+    if ((pglGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetVariantArrayObjectfvATI"))!=0) nLinked++;
+    if ((pglGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetVariantArrayObjectivATI"))!=0) nLinked++;
+#endif
+    if (nLinked==12) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_vertex_shader(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_vertex_shader
+    if ((pglBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glBeginVertexShaderEXT"))!=0) nLinked++;
+    if ((pglEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glEndVertexShaderEXT"))!=0) nLinked++;
+    if ((pglBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glBindVertexShaderEXT"))!=0) nLinked++;
+    if ((pglGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC) __GLeeGetProcAddress("glGenVertexShadersEXT"))!=0) nLinked++;
+    if ((pglDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glDeleteVertexShaderEXT"))!=0) nLinked++;
+    if ((pglShaderOp1EXT = (PFNGLSHADEROP1EXTPROC) __GLeeGetProcAddress("glShaderOp1EXT"))!=0) nLinked++;
+    if ((pglShaderOp2EXT = (PFNGLSHADEROP2EXTPROC) __GLeeGetProcAddress("glShaderOp2EXT"))!=0) nLinked++;
+    if ((pglShaderOp3EXT = (PFNGLSHADEROP3EXTPROC) __GLeeGetProcAddress("glShaderOp3EXT"))!=0) nLinked++;
+    if ((pglSwizzleEXT = (PFNGLSWIZZLEEXTPROC) __GLeeGetProcAddress("glSwizzleEXT"))!=0) nLinked++;
+    if ((pglWriteMaskEXT = (PFNGLWRITEMASKEXTPROC) __GLeeGetProcAddress("glWriteMaskEXT"))!=0) nLinked++;
+    if ((pglInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC) __GLeeGetProcAddress("glInsertComponentEXT"))!=0) nLinked++;
+    if ((pglExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC) __GLeeGetProcAddress("glExtractComponentEXT"))!=0) nLinked++;
+    if ((pglGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC) __GLeeGetProcAddress("glGenSymbolsEXT"))!=0) nLinked++;
+    if ((pglSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC) __GLeeGetProcAddress("glSetInvariantEXT"))!=0) nLinked++;
+    if ((pglSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC) __GLeeGetProcAddress("glSetLocalConstantEXT"))!=0) nLinked++;
+    if ((pglVariantbvEXT = (PFNGLVARIANTBVEXTPROC) __GLeeGetProcAddress("glVariantbvEXT"))!=0) nLinked++;
+    if ((pglVariantsvEXT = (PFNGLVARIANTSVEXTPROC) __GLeeGetProcAddress("glVariantsvEXT"))!=0) nLinked++;
+    if ((pglVariantivEXT = (PFNGLVARIANTIVEXTPROC) __GLeeGetProcAddress("glVariantivEXT"))!=0) nLinked++;
+    if ((pglVariantfvEXT = (PFNGLVARIANTFVEXTPROC) __GLeeGetProcAddress("glVariantfvEXT"))!=0) nLinked++;
+    if ((pglVariantdvEXT = (PFNGLVARIANTDVEXTPROC) __GLeeGetProcAddress("glVariantdvEXT"))!=0) nLinked++;
+    if ((pglVariantubvEXT = (PFNGLVARIANTUBVEXTPROC) __GLeeGetProcAddress("glVariantubvEXT"))!=0) nLinked++;
+    if ((pglVariantusvEXT = (PFNGLVARIANTUSVEXTPROC) __GLeeGetProcAddress("glVariantusvEXT"))!=0) nLinked++;
+    if ((pglVariantuivEXT = (PFNGLVARIANTUIVEXTPROC) __GLeeGetProcAddress("glVariantuivEXT"))!=0) nLinked++;
+    if ((pglVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC) __GLeeGetProcAddress("glVariantPointerEXT"))!=0) nLinked++;
+    if ((pglEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) __GLeeGetProcAddress("glEnableVariantClientStateEXT"))!=0) nLinked++;
+    if ((pglDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) __GLeeGetProcAddress("glDisableVariantClientStateEXT"))!=0) nLinked++;
+    if ((pglBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC) __GLeeGetProcAddress("glBindLightParameterEXT"))!=0) nLinked++;
+    if ((pglBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC) __GLeeGetProcAddress("glBindMaterialParameterEXT"))!=0) nLinked++;
+    if ((pglBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC) __GLeeGetProcAddress("glBindTexGenParameterEXT"))!=0) nLinked++;
+    if ((pglBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) __GLeeGetProcAddress("glBindTextureUnitParameterEXT"))!=0) nLinked++;
+    if ((pglBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC) __GLeeGetProcAddress("glBindParameterEXT"))!=0) nLinked++;
+    if ((pglIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC) __GLeeGetProcAddress("glIsVariantEnabledEXT"))!=0) nLinked++;
+    if ((pglGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetVariantBooleanvEXT"))!=0) nLinked++;
+    if ((pglGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetVariantIntegervEXT"))!=0) nLinked++;
+    if ((pglGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetVariantFloatvEXT"))!=0) nLinked++;
+    if ((pglGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC) __GLeeGetProcAddress("glGetVariantPointervEXT"))!=0) nLinked++;
+    if ((pglGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetInvariantBooleanvEXT"))!=0) nLinked++;
+    if ((pglGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetInvariantIntegervEXT"))!=0) nLinked++;
+    if ((pglGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetInvariantFloatvEXT"))!=0) nLinked++;
+    if ((pglGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantBooleanvEXT"))!=0) nLinked++;
+    if ((pglGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantIntegervEXT"))!=0) nLinked++;
+    if ((pglGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantFloatvEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==42) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_vertex_streams(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_vertex_streams
+    if ((pglVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC) __GLeeGetProcAddress("glVertexStream1sATI"))!=0) nLinked++;
+    if ((pglVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC) __GLeeGetProcAddress("glVertexStream1svATI"))!=0) nLinked++;
+    if ((pglVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC) __GLeeGetProcAddress("glVertexStream1iATI"))!=0) nLinked++;
+    if ((pglVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC) __GLeeGetProcAddress("glVertexStream1ivATI"))!=0) nLinked++;
+    if ((pglVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC) __GLeeGetProcAddress("glVertexStream1fATI"))!=0) nLinked++;
+    if ((pglVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC) __GLeeGetProcAddress("glVertexStream1fvATI"))!=0) nLinked++;
+    if ((pglVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC) __GLeeGetProcAddress("glVertexStream1dATI"))!=0) nLinked++;
+    if ((pglVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC) __GLeeGetProcAddress("glVertexStream1dvATI"))!=0) nLinked++;
+    if ((pglVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC) __GLeeGetProcAddress("glVertexStream2sATI"))!=0) nLinked++;
+    if ((pglVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC) __GLeeGetProcAddress("glVertexStream2svATI"))!=0) nLinked++;
+    if ((pglVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC) __GLeeGetProcAddress("glVertexStream2iATI"))!=0) nLinked++;
+    if ((pglVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC) __GLeeGetProcAddress("glVertexStream2ivATI"))!=0) nLinked++;
+    if ((pglVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC) __GLeeGetProcAddress("glVertexStream2fATI"))!=0) nLinked++;
+    if ((pglVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC) __GLeeGetProcAddress("glVertexStream2fvATI"))!=0) nLinked++;
+    if ((pglVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC) __GLeeGetProcAddress("glVertexStream2dATI"))!=0) nLinked++;
+    if ((pglVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC) __GLeeGetProcAddress("glVertexStream2dvATI"))!=0) nLinked++;
+    if ((pglVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC) __GLeeGetProcAddress("glVertexStream3sATI"))!=0) nLinked++;
+    if ((pglVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC) __GLeeGetProcAddress("glVertexStream3svATI"))!=0) nLinked++;
+    if ((pglVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC) __GLeeGetProcAddress("glVertexStream3iATI"))!=0) nLinked++;
+    if ((pglVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC) __GLeeGetProcAddress("glVertexStream3ivATI"))!=0) nLinked++;
+    if ((pglVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC) __GLeeGetProcAddress("glVertexStream3fATI"))!=0) nLinked++;
+    if ((pglVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC) __GLeeGetProcAddress("glVertexStream3fvATI"))!=0) nLinked++;
+    if ((pglVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC) __GLeeGetProcAddress("glVertexStream3dATI"))!=0) nLinked++;
+    if ((pglVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC) __GLeeGetProcAddress("glVertexStream3dvATI"))!=0) nLinked++;
+    if ((pglVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC) __GLeeGetProcAddress("glVertexStream4sATI"))!=0) nLinked++;
+    if ((pglVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC) __GLeeGetProcAddress("glVertexStream4svATI"))!=0) nLinked++;
+    if ((pglVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC) __GLeeGetProcAddress("glVertexStream4iATI"))!=0) nLinked++;
+    if ((pglVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC) __GLeeGetProcAddress("glVertexStream4ivATI"))!=0) nLinked++;
+    if ((pglVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC) __GLeeGetProcAddress("glVertexStream4fATI"))!=0) nLinked++;
+    if ((pglVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC) __GLeeGetProcAddress("glVertexStream4fvATI"))!=0) nLinked++;
+    if ((pglVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC) __GLeeGetProcAddress("glVertexStream4dATI"))!=0) nLinked++;
+    if ((pglVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC) __GLeeGetProcAddress("glVertexStream4dvATI"))!=0) nLinked++;
+    if ((pglNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC) __GLeeGetProcAddress("glNormalStream3bATI"))!=0) nLinked++;
+    if ((pglNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC) __GLeeGetProcAddress("glNormalStream3bvATI"))!=0) nLinked++;
+    if ((pglNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC) __GLeeGetProcAddress("glNormalStream3sATI"))!=0) nLinked++;
+    if ((pglNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC) __GLeeGetProcAddress("glNormalStream3svATI"))!=0) nLinked++;
+    if ((pglNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC) __GLeeGetProcAddress("glNormalStream3iATI"))!=0) nLinked++;
+    if ((pglNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC) __GLeeGetProcAddress("glNormalStream3ivATI"))!=0) nLinked++;
+    if ((pglNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC) __GLeeGetProcAddress("glNormalStream3fATI"))!=0) nLinked++;
+    if ((pglNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC) __GLeeGetProcAddress("glNormalStream3fvATI"))!=0) nLinked++;
+    if ((pglNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC) __GLeeGetProcAddress("glNormalStream3dATI"))!=0) nLinked++;
+    if ((pglNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC) __GLeeGetProcAddress("glNormalStream3dvATI"))!=0) nLinked++;
+    if ((pglClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) __GLeeGetProcAddress("glClientActiveVertexStreamATI"))!=0) nLinked++;
+    if ((pglVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC) __GLeeGetProcAddress("glVertexBlendEnviATI"))!=0) nLinked++;
+    if ((pglVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC) __GLeeGetProcAddress("glVertexBlendEnvfATI"))!=0) nLinked++;
+#endif
+    if (nLinked==45) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_element_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_element_array
+    if ((pglElementPointerATI = (PFNGLELEMENTPOINTERATIPROC) __GLeeGetProcAddress("glElementPointerATI"))!=0) nLinked++;
+    if ((pglDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC) __GLeeGetProcAddress("glDrawElementArrayATI"))!=0) nLinked++;
+    if ((pglDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC) __GLeeGetProcAddress("glDrawRangeElementArrayATI"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_mesh_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SUN_mesh_array
+    if ((pglDrawMeshArraysSUN = (PFNGLDRAWMESHARRAYSSUNPROC) __GLeeGetProcAddress("glDrawMeshArraysSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SUN_slice_accum(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_multisample_filter_hint(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_depth_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_occlusion_query(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_occlusion_query
+    if ((pglGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC) __GLeeGetProcAddress("glGenOcclusionQueriesNV"))!=0) nLinked++;
+    if ((pglDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC) __GLeeGetProcAddress("glDeleteOcclusionQueriesNV"))!=0) nLinked++;
+    if ((pglIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glIsOcclusionQueryNV"))!=0) nLinked++;
+    if ((pglBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glBeginOcclusionQueryNV"))!=0) nLinked++;
+    if ((pglEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glEndOcclusionQueryNV"))!=0) nLinked++;
+    if ((pglGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC) __GLeeGetProcAddress("glGetOcclusionQueryivNV"))!=0) nLinked++;
+    if ((pglGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC) __GLeeGetProcAddress("glGetOcclusionQueryuivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==7) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_point_sprite(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_point_sprite
+    if ((pglPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC) __GLeeGetProcAddress("glPointParameteriNV"))!=0) nLinked++;
+    if ((pglPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC) __GLeeGetProcAddress("glPointParameterivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_texture_shader3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program1_1(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_shadow_funcs(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_stencil_two_side(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_stencil_two_side
+    if ((pglActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC) __GLeeGetProcAddress("glActiveStencilFaceEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_text_fragment_shader(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_APPLE_client_storage(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_APPLE_element_array(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_APPLE_element_array
+    if ((pglElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC) __GLeeGetProcAddress("glElementPointerAPPLE"))!=0) nLinked++;
+    if ((pglDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glDrawElementArrayAPPLE"))!=0) nLinked++;
+    if ((pglDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glDrawRangeElementArrayAPPLE"))!=0) nLinked++;
+    if ((pglMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glMultiDrawElementArrayAPPLE"))!=0) nLinked++;
+    if ((pglMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glMultiDrawRangeElementArrayAPPLE"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_APPLE_fence(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_APPLE_fence
+    if ((pglGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC) __GLeeGetProcAddress("glGenFencesAPPLE"))!=0) nLinked++;
+    if ((pglDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC) __GLeeGetProcAddress("glDeleteFencesAPPLE"))!=0) nLinked++;
+    if ((pglSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC) __GLeeGetProcAddress("glSetFenceAPPLE"))!=0) nLinked++;
+    if ((pglIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC) __GLeeGetProcAddress("glIsFenceAPPLE"))!=0) nLinked++;
+    if ((pglTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC) __GLeeGetProcAddress("glTestFenceAPPLE"))!=0) nLinked++;
+    if ((pglFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC) __GLeeGetProcAddress("glFinishFenceAPPLE"))!=0) nLinked++;
+    if ((pglTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC) __GLeeGetProcAddress("glTestObjectAPPLE"))!=0) nLinked++;
+    if ((pglFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC) __GLeeGetProcAddress("glFinishObjectAPPLE"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_APPLE_vertex_array_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_APPLE_vertex_array_object
+    if ((pglBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC) __GLeeGetProcAddress("glBindVertexArrayAPPLE"))!=0) nLinked++;
+    if ((pglDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) __GLeeGetProcAddress("glDeleteVertexArraysAPPLE"))!=0) nLinked++;
+    if ((pglGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC) __GLeeGetProcAddress("glGenVertexArraysAPPLE"))!=0) nLinked++;
+    if ((pglIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC) __GLeeGetProcAddress("glIsVertexArrayAPPLE"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_APPLE_vertex_array_range(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_APPLE_vertex_array_range
+    if ((pglVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC) __GLeeGetProcAddress("glVertexArrayRangeAPPLE"))!=0) nLinked++;
+    if ((pglFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) __GLeeGetProcAddress("glFlushVertexArrayRangeAPPLE"))!=0) nLinked++;
+    if ((pglVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) __GLeeGetProcAddress("glVertexArrayParameteriAPPLE"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_APPLE_ycbcr_422(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_S3_s3tc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_draw_buffers(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_draw_buffers
+    if ((pglDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC) __GLeeGetProcAddress("glDrawBuffersATI"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_pixel_format_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_texture_env_combine3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_texture_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_fragment_program(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_fragment_program
+    if ((pglProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4fNV"))!=0) nLinked++;
+    if ((pglProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4dNV"))!=0) nLinked++;
+    if ((pglProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4fvNV"))!=0) nLinked++;
+    if ((pglProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4dvNV"))!=0) nLinked++;
+    if ((pglGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetProgramNamedParameterfvNV"))!=0) nLinked++;
+    if ((pglGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) __GLeeGetProcAddress("glGetProgramNamedParameterdvNV"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_half_float(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_half_float
+    if ((pglVertex2hNV = (PFNGLVERTEX2HNVPROC) __GLeeGetProcAddress("glVertex2hNV"))!=0) nLinked++;
+    if ((pglVertex2hvNV = (PFNGLVERTEX2HVNVPROC) __GLeeGetProcAddress("glVertex2hvNV"))!=0) nLinked++;
+    if ((pglVertex3hNV = (PFNGLVERTEX3HNVPROC) __GLeeGetProcAddress("glVertex3hNV"))!=0) nLinked++;
+    if ((pglVertex3hvNV = (PFNGLVERTEX3HVNVPROC) __GLeeGetProcAddress("glVertex3hvNV"))!=0) nLinked++;
+    if ((pglVertex4hNV = (PFNGLVERTEX4HNVPROC) __GLeeGetProcAddress("glVertex4hNV"))!=0) nLinked++;
+    if ((pglVertex4hvNV = (PFNGLVERTEX4HVNVPROC) __GLeeGetProcAddress("glVertex4hvNV"))!=0) nLinked++;
+    if ((pglNormal3hNV = (PFNGLNORMAL3HNVPROC) __GLeeGetProcAddress("glNormal3hNV"))!=0) nLinked++;
+    if ((pglNormal3hvNV = (PFNGLNORMAL3HVNVPROC) __GLeeGetProcAddress("glNormal3hvNV"))!=0) nLinked++;
+    if ((pglColor3hNV = (PFNGLCOLOR3HNVPROC) __GLeeGetProcAddress("glColor3hNV"))!=0) nLinked++;
+    if ((pglColor3hvNV = (PFNGLCOLOR3HVNVPROC) __GLeeGetProcAddress("glColor3hvNV"))!=0) nLinked++;
+    if ((pglColor4hNV = (PFNGLCOLOR4HNVPROC) __GLeeGetProcAddress("glColor4hNV"))!=0) nLinked++;
+    if ((pglColor4hvNV = (PFNGLCOLOR4HVNVPROC) __GLeeGetProcAddress("glColor4hvNV"))!=0) nLinked++;
+    if ((pglTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC) __GLeeGetProcAddress("glTexCoord1hNV"))!=0) nLinked++;
+    if ((pglTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC) __GLeeGetProcAddress("glTexCoord1hvNV"))!=0) nLinked++;
+    if ((pglTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC) __GLeeGetProcAddress("glTexCoord2hNV"))!=0) nLinked++;
+    if ((pglTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC) __GLeeGetProcAddress("glTexCoord2hvNV"))!=0) nLinked++;
+    if ((pglTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC) __GLeeGetProcAddress("glTexCoord3hNV"))!=0) nLinked++;
+    if ((pglTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC) __GLeeGetProcAddress("glTexCoord3hvNV"))!=0) nLinked++;
+    if ((pglTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC) __GLeeGetProcAddress("glTexCoord4hNV"))!=0) nLinked++;
+    if ((pglTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC) __GLeeGetProcAddress("glTexCoord4hvNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC) __GLeeGetProcAddress("glMultiTexCoord1hNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord1hvNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC) __GLeeGetProcAddress("glMultiTexCoord2hNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord2hvNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC) __GLeeGetProcAddress("glMultiTexCoord3hNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord3hvNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC) __GLeeGetProcAddress("glMultiTexCoord4hNV"))!=0) nLinked++;
+    if ((pglMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord4hvNV"))!=0) nLinked++;
+    if ((pglFogCoordhNV = (PFNGLFOGCOORDHNVPROC) __GLeeGetProcAddress("glFogCoordhNV"))!=0) nLinked++;
+    if ((pglFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC) __GLeeGetProcAddress("glFogCoordhvNV"))!=0) nLinked++;
+    if ((pglSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC) __GLeeGetProcAddress("glSecondaryColor3hNV"))!=0) nLinked++;
+    if ((pglSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC) __GLeeGetProcAddress("glSecondaryColor3hvNV"))!=0) nLinked++;
+    if ((pglVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC) __GLeeGetProcAddress("glVertexWeighthNV"))!=0) nLinked++;
+    if ((pglVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC) __GLeeGetProcAddress("glVertexWeighthvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC) __GLeeGetProcAddress("glVertexAttrib1hNV"))!=0) nLinked++;
+    if ((pglVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC) __GLeeGetProcAddress("glVertexAttrib1hvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC) __GLeeGetProcAddress("glVertexAttrib2hNV"))!=0) nLinked++;
+    if ((pglVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC) __GLeeGetProcAddress("glVertexAttrib2hvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC) __GLeeGetProcAddress("glVertexAttrib3hNV"))!=0) nLinked++;
+    if ((pglVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC) __GLeeGetProcAddress("glVertexAttrib3hvNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC) __GLeeGetProcAddress("glVertexAttrib4hNV"))!=0) nLinked++;
+    if ((pglVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC) __GLeeGetProcAddress("glVertexAttrib4hvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC) __GLeeGetProcAddress("glVertexAttribs1hvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC) __GLeeGetProcAddress("glVertexAttribs2hvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC) __GLeeGetProcAddress("glVertexAttribs3hvNV"))!=0) nLinked++;
+    if ((pglVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC) __GLeeGetProcAddress("glVertexAttribs4hvNV"))!=0) nLinked++;
+#endif
+    if (nLinked==46) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_pixel_data_range(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_pixel_data_range
+    if ((pglPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC) __GLeeGetProcAddress("glPixelDataRangeNV"))!=0) nLinked++;
+    if ((pglFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC) __GLeeGetProcAddress("glFlushPixelDataRangeNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_primitive_restart(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_primitive_restart
+    if ((pglPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC) __GLeeGetProcAddress("glPrimitiveRestartNV"))!=0) nLinked++;
+    if ((pglPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC) __GLeeGetProcAddress("glPrimitiveRestartIndexNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_texture_expand_normal(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program2(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_ATI_map_object_buffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_map_object_buffer
+    if ((pglMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glMapObjectBufferATI"))!=0) nLinked++;
+    if ((pglUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glUnmapObjectBufferATI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_separate_stencil(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_separate_stencil
+    if ((pglStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC) __GLeeGetProcAddress("glStencilOpSeparateATI"))!=0) nLinked++;
+    if ((pglStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC) __GLeeGetProcAddress("glStencilFuncSeparateATI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_ATI_vertex_attrib_array_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_ATI_vertex_attrib_array_object
+    if ((pglVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) __GLeeGetProcAddress("glVertexAttribArrayObjectATI"))!=0) nLinked++;
+    if ((pglGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetVertexAttribArrayObjectfvATI"))!=0) nLinked++;
+    if ((pglGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetVertexAttribArrayObjectivATI"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_OES_read_format(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_depth_bounds_test(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_depth_bounds_test
+    if ((pglDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC) __GLeeGetProcAddress("glDepthBoundsEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_mirror_clamp(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_blend_equation_separate(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_blend_equation_separate
+    if ((pglBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC) __GLeeGetProcAddress("glBlendEquationSeparateEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_MESA_pack_invert(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_MESA_ycbcr_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_pixel_buffer_object(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_fragment_program_option(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_fragment_program2(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program2_option(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_vertex_program3(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_framebuffer_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_framebuffer_object
+    if ((pglIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glIsRenderbufferEXT"))!=0) nLinked++;
+    if ((pglBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glBindRenderbufferEXT"))!=0) nLinked++;
+    if ((pglDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC) __GLeeGetProcAddress("glDeleteRenderbuffersEXT"))!=0) nLinked++;
+    if ((pglGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC) __GLeeGetProcAddress("glGenRenderbuffersEXT"))!=0) nLinked++;
+    if ((pglRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC) __GLeeGetProcAddress("glRenderbufferStorageEXT"))!=0) nLinked++;
+    if ((pglGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetRenderbufferParameterivEXT"))!=0) nLinked++;
+    if ((pglIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glIsFramebufferEXT"))!=0) nLinked++;
+    if ((pglBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glBindFramebufferEXT"))!=0) nLinked++;
+    if ((pglDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) __GLeeGetProcAddress("glDeleteFramebuffersEXT"))!=0) nLinked++;
+    if ((pglGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) __GLeeGetProcAddress("glGenFramebuffersEXT"))!=0) nLinked++;
+    if ((pglCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) __GLeeGetProcAddress("glCheckFramebufferStatusEXT"))!=0) nLinked++;
+    if ((pglFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture1DEXT"))!=0) nLinked++;
+    if ((pglFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture2DEXT"))!=0) nLinked++;
+    if ((pglFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture3DEXT"))!=0) nLinked++;
+    if ((pglFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glFramebufferRenderbufferEXT"))!=0) nLinked++;
+    if ((pglGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetFramebufferAttachmentParameterivEXT"))!=0) nLinked++;
+    if ((pglGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC) __GLeeGetProcAddress("glGenerateMipmapEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==17) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_GREMEDY_string_marker(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_GREMEDY_string_marker
+    if ((pglStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC) __GLeeGetProcAddress("glStringMarkerGREMEDY"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_Cg_shader(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_timer_query(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_timer_query
+    if ((pglGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC) __GLeeGetProcAddress("glGetQueryObjecti64vEXT"))!=0) nLinked++;
+    if ((pglGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC) __GLeeGetProcAddress("glGetQueryObjectui64vEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_buffer_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture_buffer_object
+    if ((pglTexBufferEXT = (PFNGLTEXBUFFEREXTPROC) __GLeeGetProcAddress("glTexBufferEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_gpu_shader4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_gpu_shader4
+    if ((pglGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC) __GLeeGetProcAddress("glGetUniformuivEXT"))!=0) nLinked++;
+    if ((pglBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC) __GLeeGetProcAddress("glBindFragDataLocationEXT"))!=0) nLinked++;
+    if ((pglGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC) __GLeeGetProcAddress("glGetFragDataLocationEXT"))!=0) nLinked++;
+    if ((pglUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC) __GLeeGetProcAddress("glUniform1uiEXT"))!=0) nLinked++;
+    if ((pglUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC) __GLeeGetProcAddress("glUniform2uiEXT"))!=0) nLinked++;
+    if ((pglUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC) __GLeeGetProcAddress("glUniform3uiEXT"))!=0) nLinked++;
+    if ((pglUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC) __GLeeGetProcAddress("glUniform4uiEXT"))!=0) nLinked++;
+    if ((pglUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC) __GLeeGetProcAddress("glUniform1uivEXT"))!=0) nLinked++;
+    if ((pglUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC) __GLeeGetProcAddress("glUniform2uivEXT"))!=0) nLinked++;
+    if ((pglUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC) __GLeeGetProcAddress("glUniform3uivEXT"))!=0) nLinked++;
+    if ((pglUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC) __GLeeGetProcAddress("glUniform4uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC) __GLeeGetProcAddress("glVertexAttribI1iEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC) __GLeeGetProcAddress("glVertexAttribI2iEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC) __GLeeGetProcAddress("glVertexAttribI3iEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC) __GLeeGetProcAddress("glVertexAttribI4iEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC) __GLeeGetProcAddress("glVertexAttribI1uiEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC) __GLeeGetProcAddress("glVertexAttribI2uiEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC) __GLeeGetProcAddress("glVertexAttribI3uiEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC) __GLeeGetProcAddress("glVertexAttribI4uiEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC) __GLeeGetProcAddress("glVertexAttribI1ivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC) __GLeeGetProcAddress("glVertexAttribI2ivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC) __GLeeGetProcAddress("glVertexAttribI3ivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4ivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC) __GLeeGetProcAddress("glVertexAttribI1uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC) __GLeeGetProcAddress("glVertexAttribI2uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC) __GLeeGetProcAddress("glVertexAttribI3uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4uivEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4bvEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4svEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4ubvEXT"))!=0) nLinked++;
+    if ((pglVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC) __GLeeGetProcAddress("glVertexAttribI4usvEXT"))!=0) nLinked++;
+    if ((pglVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC) __GLeeGetProcAddress("glVertexAttribIPointerEXT"))!=0) nLinked++;
+    if ((pglGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC) __GLeeGetProcAddress("glGetVertexAttribIivEXT"))!=0) nLinked++;
+    if ((pglGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC) __GLeeGetProcAddress("glGetVertexAttribIuivEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==34) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_geometry_shader4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_geometry_shader4
+    if ((pglProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC) __GLeeGetProcAddress("glProgramParameteriEXT"))!=0) nLinked++;
+    if ((pglFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC) __GLeeGetProcAddress("glFramebufferTextureEXT"))!=0) nLinked++;
+    if ((pglFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) __GLeeGetProcAddress("glFramebufferTextureLayerEXT"))!=0) nLinked++;
+    if ((pglFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) __GLeeGetProcAddress("glFramebufferTextureFaceEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_bindable_uniform(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_bindable_uniform
+    if ((pglUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC) __GLeeGetProcAddress("glUniformBufferEXT"))!=0) nLinked++;
+    if ((pglGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC) __GLeeGetProcAddress("glGetUniformBufferSizeEXT"))!=0) nLinked++;
+    if ((pglGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC) __GLeeGetProcAddress("glGetUniformOffsetEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_framebuffer_sRGB(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_shared_exponent(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_packed_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_array(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_integer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_texture_integer
+    if ((pglTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glTexParameterIivEXT"))!=0) nLinked++;
+    if ((pglTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glTexParameterIuivEXT"))!=0) nLinked++;
+    if ((pglGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glGetTexParameterIivEXT"))!=0) nLinked++;
+    if ((pglGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glGetTexParameterIuivEXT"))!=0) nLinked++;
+    if ((pglClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC) __GLeeGetProcAddress("glClearColorIiEXT"))!=0) nLinked++;
+    if ((pglClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC) __GLeeGetProcAddress("glClearColorIuiEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_depth_buffer_float(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_depth_buffer_float
+    if ((pglDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC) __GLeeGetProcAddress("glDepthRangedNV"))!=0) nLinked++;
+    if ((pglClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC) __GLeeGetProcAddress("glClearDepthdNV"))!=0) nLinked++;
+    if ((pglDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC) __GLeeGetProcAddress("glDepthBoundsdNV"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_compression_latc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_NV_transform_feedback(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_transform_feedback
+    if ((pglBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glBeginTransformFeedbackNV"))!=0) nLinked++;
+    if ((pglEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glEndTransformFeedbackNV"))!=0) nLinked++;
+    if ((pglTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) __GLeeGetProcAddress("glTransformFeedbackAttribsNV"))!=0) nLinked++;
+    if ((pglBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC) __GLeeGetProcAddress("glBindBufferRangeNV"))!=0) nLinked++;
+    if ((pglBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC) __GLeeGetProcAddress("glBindBufferOffsetNV"))!=0) nLinked++;
+    if ((pglBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC) __GLeeGetProcAddress("glBindBufferBaseNV"))!=0) nLinked++;
+    if ((pglTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) __GLeeGetProcAddress("glTransformFeedbackVaryingsNV"))!=0) nLinked++;
+    if ((pglActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC) __GLeeGetProcAddress("glActiveVaryingNV"))!=0) nLinked++;
+    if ((pglGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC) __GLeeGetProcAddress("glGetVaryingLocationNV"))!=0) nLinked++;
+    if ((pglGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC) __GLeeGetProcAddress("glGetActiveVaryingNV"))!=0) nLinked++;
+    if ((pglGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) __GLeeGetProcAddress("glGetTransformFeedbackVaryingNV"))!=0) nLinked++;
+#endif
+    if (nLinked==11) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_geometry_program4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_geometry_program4
+    if ((pglProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC) __GLeeGetProcAddress("glProgramVertexLimitNV"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_gpu_program4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_gpu_program4
+    if ((pglProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC) __GLeeGetProcAddress("glProgramLocalParameterI4iNV"))!=0) nLinked++;
+    if ((pglProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) __GLeeGetProcAddress("glProgramLocalParameterI4ivNV"))!=0) nLinked++;
+    if ((pglProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) __GLeeGetProcAddress("glProgramLocalParametersI4ivNV"))!=0) nLinked++;
+    if ((pglProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) __GLeeGetProcAddress("glProgramLocalParameterI4uiNV"))!=0) nLinked++;
+    if ((pglProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) __GLeeGetProcAddress("glProgramLocalParameterI4uivNV"))!=0) nLinked++;
+    if ((pglProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) __GLeeGetProcAddress("glProgramLocalParametersI4uivNV"))!=0) nLinked++;
+    if ((pglProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC) __GLeeGetProcAddress("glProgramEnvParameterI4iNV"))!=0) nLinked++;
+    if ((pglProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC) __GLeeGetProcAddress("glProgramEnvParameterI4ivNV"))!=0) nLinked++;
+    if ((pglProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) __GLeeGetProcAddress("glProgramEnvParametersI4ivNV"))!=0) nLinked++;
+    if ((pglProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC) __GLeeGetProcAddress("glProgramEnvParameterI4uiNV"))!=0) nLinked++;
+    if ((pglProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) __GLeeGetProcAddress("glProgramEnvParameterI4uivNV"))!=0) nLinked++;
+    if ((pglProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) __GLeeGetProcAddress("glProgramEnvParametersI4uivNV"))!=0) nLinked++;
+    if ((pglGetProgramLocalParameterIivNV = (PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) __GLeeGetProcAddress("glGetProgramLocalParameterIivNV"))!=0) nLinked++;
+    if ((pglGetProgramLocalParameterIuivNV = (PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) __GLeeGetProcAddress("glGetProgramLocalParameterIuivNV"))!=0) nLinked++;
+    if ((pglGetProgramEnvParameterIivNV = (PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) __GLeeGetProcAddress("glGetProgramEnvParameterIivNV"))!=0) nLinked++;
+    if ((pglGetProgramEnvParameterIuivNV = (PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) __GLeeGetProcAddress("glGetProgramEnvParameterIuivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==16) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_framebuffer_multisample_coverage(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_framebuffer_multisample_coverage
+    if ((pglRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) __GLeeGetProcAddress("glRenderbufferStorageMultisampleCoverageNV"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_framebuffer_multisample(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_framebuffer_multisample
+    if ((pglRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) __GLeeGetProcAddress("glRenderbufferStorageMultisampleEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_framebuffer_blit(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_framebuffer_blit
+    if ((pglBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glBlitFramebufferEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_texture_compression_rgtc(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_color_matrix(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_texture_select(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_INGR_blend_func_separate(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_INGR_blend_func_separate
+    if ((pglBlendFuncSeparateINGR = (PFNGLBLENDFUNCSEPARATEINGRPROC) __GLeeGetProcAddress("glBlendFuncSeparateINGR"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_depth_pass_instrument(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_igloo_interface(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_SGIX_igloo_interface
+    if ((pglIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC) __GLeeGetProcAddress("glIglooInterfaceSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_draw_buffers2(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_draw_buffers2
+    if ((pglColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC) __GLeeGetProcAddress("glColorMaskIndexedEXT"))!=0) nLinked++;
+    if ((pglGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetBooleanIndexedvEXT"))!=0) nLinked++;
+    if ((pglGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetIntegerIndexedvEXT"))!=0) nLinked++;
+    if ((pglEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC) __GLeeGetProcAddress("glEnableIndexedEXT"))!=0) nLinked++;
+    if ((pglDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC) __GLeeGetProcAddress("glDisableIndexedEXT"))!=0) nLinked++;
+    if ((pglIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC) __GLeeGetProcAddress("glIsEnabledIndexedEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_NV_parameter_buffer_object(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_NV_parameter_buffer_object
+    if ((pglProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersfvNV"))!=0) nLinked++;
+    if ((pglProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersIivNV"))!=0) nLinked++;
+    if ((pglProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersIuivNV"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_draw_instanced(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_draw_instanced
+    if ((pglDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC) __GLeeGetProcAddress("glDrawArraysInstancedEXT"))!=0) nLinked++;
+    if ((pglDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC) __GLeeGetProcAddress("glDrawElementsInstancedEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_fragment_lighting(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_fragment_lighting
+    if ((pglFragmentLightModeliEXT = (PFNGLFRAGMENTLIGHTMODELIEXTPROC) __GLeeGetProcAddress("glFragmentLightModeliEXT"))!=0) nLinked++;
+    if ((pglFragmentLightModelfEXT = (PFNGLFRAGMENTLIGHTMODELFEXTPROC) __GLeeGetProcAddress("glFragmentLightModelfEXT"))!=0) nLinked++;
+    if ((pglFragmentLightModelivEXT = (PFNGLFRAGMENTLIGHTMODELIVEXTPROC) __GLeeGetProcAddress("glFragmentLightModelivEXT"))!=0) nLinked++;
+    if ((pglFragmentLightModelfvEXT = (PFNGLFRAGMENTLIGHTMODELFVEXTPROC) __GLeeGetProcAddress("glFragmentLightModelfvEXT"))!=0) nLinked++;
+    if ((pglFragmentLightiEXT = (PFNGLFRAGMENTLIGHTIEXTPROC) __GLeeGetProcAddress("glFragmentLightiEXT"))!=0) nLinked++;
+    if ((pglFragmentLightfEXT = (PFNGLFRAGMENTLIGHTFEXTPROC) __GLeeGetProcAddress("glFragmentLightfEXT"))!=0) nLinked++;
+    if ((pglFragmentLightivEXT = (PFNGLFRAGMENTLIGHTIVEXTPROC) __GLeeGetProcAddress("glFragmentLightivEXT"))!=0) nLinked++;
+    if ((pglFragmentLightfvEXT = (PFNGLFRAGMENTLIGHTFVEXTPROC) __GLeeGetProcAddress("glFragmentLightfvEXT"))!=0) nLinked++;
+    if ((pglGetFragmentLightivEXT = (PFNGLGETFRAGMENTLIGHTIVEXTPROC) __GLeeGetProcAddress("glGetFragmentLightivEXT"))!=0) nLinked++;
+    if ((pglGetFragmentLightfvEXT = (PFNGLGETFRAGMENTLIGHTFVEXTPROC) __GLeeGetProcAddress("glGetFragmentLightfvEXT"))!=0) nLinked++;
+    if ((pglFragmentMaterialfEXT = (PFNGLFRAGMENTMATERIALFEXTPROC) __GLeeGetProcAddress("glFragmentMaterialfEXT"))!=0) nLinked++;
+    if ((pglFragmentMaterialiEXT = (PFNGLFRAGMENTMATERIALIEXTPROC) __GLeeGetProcAddress("glFragmentMaterialiEXT"))!=0) nLinked++;
+    if ((pglFragmentMaterialfvEXT = (PFNGLFRAGMENTMATERIALFVEXTPROC) __GLeeGetProcAddress("glFragmentMaterialfvEXT"))!=0) nLinked++;
+    if ((pglFragmentMaterialivEXT = (PFNGLFRAGMENTMATERIALIVEXTPROC) __GLeeGetProcAddress("glFragmentMaterialivEXT"))!=0) nLinked++;
+    if ((pglFragmentColorMaterialEXT = (PFNGLFRAGMENTCOLORMATERIALEXTPROC) __GLeeGetProcAddress("glFragmentColorMaterialEXT"))!=0) nLinked++;
+    if ((pglGetFragmentMaterialfvEXT = (PFNGLGETFRAGMENTMATERIALFVEXTPROC) __GLeeGetProcAddress("glGetFragmentMaterialfvEXT"))!=0) nLinked++;
+    if ((pglGetFragmentMaterialivEXT = (PFNGLGETFRAGMENTMATERIALIVEXTPROC) __GLeeGetProcAddress("glGetFragmentMaterialivEXT"))!=0) nLinked++;
+    if ((pglLightEnviEXT = (PFNGLLIGHTENVIEXTPROC) __GLeeGetProcAddress("glLightEnviEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==18) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_packed_depth_stencil(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_scene_marker(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_EXT_scene_marker
+    if ((pglBeginSceneEXT = (PFNGLBEGINSCENEEXTPROC) __GLeeGetProcAddress("glBeginSceneEXT"))!=0) nLinked++;
+    if ((pglEndSceneEXT = (PFNGLENDSCENEEXTPROC) __GLeeGetProcAddress("glEndSceneEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_EXT_stencil_clear_tag(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_compression_dxt1(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_env(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_EXT_texture_sRGB(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_IBM_static_data(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_MESAX_texture_stack(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OES_byte_coordinates(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OES_compressed_paletted_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_OES_single_precision(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GL_OES_single_precision
+    if ((pglDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC) __GLeeGetProcAddress("glDepthRangefOES"))!=0) nLinked++;
+    if ((pglFrustumfOES = (PFNGLFRUSTUMFOESPROC) __GLeeGetProcAddress("glFrustumfOES"))!=0) nLinked++;
+    if ((pglOrthofOES = (PFNGLORTHOFOESPROC) __GLeeGetProcAddress("glOrthofOES"))!=0) nLinked++;
+    if ((pglClipPlanefOES = (PFNGLCLIPPLANEFOESPROC) __GLeeGetProcAddress("glClipPlanefOES"))!=0) nLinked++;
+    if ((pglGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC) __GLeeGetProcAddress("glGetClipPlanefOES"))!=0) nLinked++;
+    if ((pglClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC) __GLeeGetProcAddress("glClearDepthfOES"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GL_SGIX_pixel_texture_bits(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GL_SGIX_texture_range(void) {return GLEE_LINK_COMPLETE;}
+
+GLEE_LINK_FUNCTION __GLeeGLLoadFunction[300];
+
+void initGLLoadFunctions(void)
+{
+    __GLeeGLLoadFunction[0]=__GLeeLink_GL_VERSION_1_2;
+    __GLeeGLLoadFunction[1]=__GLeeLink_GL_ARB_imaging;
+    __GLeeGLLoadFunction[2]=__GLeeLink_GL_VERSION_1_3;
+    __GLeeGLLoadFunction[3]=__GLeeLink_GL_VERSION_1_4;
+    __GLeeGLLoadFunction[4]=__GLeeLink_GL_VERSION_1_5;
+    __GLeeGLLoadFunction[5]=__GLeeLink_GL_VERSION_2_0;
+    __GLeeGLLoadFunction[6]=__GLeeLink_GL_VERSION_2_1;
+    __GLeeGLLoadFunction[7]=__GLeeLink_GL_ARB_multitexture;
+    __GLeeGLLoadFunction[8]=__GLeeLink_GL_ARB_transpose_matrix;
+    __GLeeGLLoadFunction[9]=__GLeeLink_GL_ARB_multisample;
+    __GLeeGLLoadFunction[10]=__GLeeLink_GL_ARB_texture_env_add;
+    __GLeeGLLoadFunction[11]=__GLeeLink_GL_ARB_texture_cube_map;
+    __GLeeGLLoadFunction[12]=__GLeeLink_GL_ARB_texture_compression;
+    __GLeeGLLoadFunction[13]=__GLeeLink_GL_ARB_texture_border_clamp;
+    __GLeeGLLoadFunction[14]=__GLeeLink_GL_ARB_point_parameters;
+    __GLeeGLLoadFunction[15]=__GLeeLink_GL_ARB_vertex_blend;
+    __GLeeGLLoadFunction[16]=__GLeeLink_GL_ARB_matrix_palette;
+    __GLeeGLLoadFunction[17]=__GLeeLink_GL_ARB_texture_env_combine;
+    __GLeeGLLoadFunction[18]=__GLeeLink_GL_ARB_texture_env_crossbar;
+    __GLeeGLLoadFunction[19]=__GLeeLink_GL_ARB_texture_env_dot3;
+    __GLeeGLLoadFunction[20]=__GLeeLink_GL_ARB_texture_mirrored_repeat;
+    __GLeeGLLoadFunction[21]=__GLeeLink_GL_ARB_depth_texture;
+    __GLeeGLLoadFunction[22]=__GLeeLink_GL_ARB_shadow;
+    __GLeeGLLoadFunction[23]=__GLeeLink_GL_ARB_shadow_ambient;
+    __GLeeGLLoadFunction[24]=__GLeeLink_GL_ARB_window_pos;
+    __GLeeGLLoadFunction[25]=__GLeeLink_GL_ARB_vertex_program;
+    __GLeeGLLoadFunction[26]=__GLeeLink_GL_ARB_fragment_program;
+    __GLeeGLLoadFunction[27]=__GLeeLink_GL_ARB_vertex_buffer_object;
+    __GLeeGLLoadFunction[28]=__GLeeLink_GL_ARB_occlusion_query;
+    __GLeeGLLoadFunction[29]=__GLeeLink_GL_ARB_shader_objects;
+    __GLeeGLLoadFunction[30]=__GLeeLink_GL_ARB_vertex_shader;
+    __GLeeGLLoadFunction[31]=__GLeeLink_GL_ARB_fragment_shader;
+    __GLeeGLLoadFunction[32]=__GLeeLink_GL_ARB_shading_language_100;
+    __GLeeGLLoadFunction[33]=__GLeeLink_GL_ARB_texture_non_power_of_two;
+    __GLeeGLLoadFunction[34]=__GLeeLink_GL_ARB_point_sprite;
+    __GLeeGLLoadFunction[35]=__GLeeLink_GL_ARB_fragment_program_shadow;
+    __GLeeGLLoadFunction[36]=__GLeeLink_GL_ARB_draw_buffers;
+    __GLeeGLLoadFunction[37]=__GLeeLink_GL_ARB_texture_rectangle;
+    __GLeeGLLoadFunction[38]=__GLeeLink_GL_ARB_color_buffer_float;
+    __GLeeGLLoadFunction[39]=__GLeeLink_GL_ARB_half_float_pixel;
+    __GLeeGLLoadFunction[40]=__GLeeLink_GL_ARB_texture_float;
+    __GLeeGLLoadFunction[41]=__GLeeLink_GL_ARB_pixel_buffer_object;
+    __GLeeGLLoadFunction[42]=__GLeeLink_GL_EXT_abgr;
+    __GLeeGLLoadFunction[43]=__GLeeLink_GL_EXT_blend_color;
+    __GLeeGLLoadFunction[44]=__GLeeLink_GL_EXT_polygon_offset;
+    __GLeeGLLoadFunction[45]=__GLeeLink_GL_EXT_texture;
+    __GLeeGLLoadFunction[46]=__GLeeLink_GL_EXT_texture3D;
+    __GLeeGLLoadFunction[47]=__GLeeLink_GL_SGIS_texture_filter4;
+    __GLeeGLLoadFunction[48]=__GLeeLink_GL_EXT_subtexture;
+    __GLeeGLLoadFunction[49]=__GLeeLink_GL_EXT_copy_texture;
+    __GLeeGLLoadFunction[50]=__GLeeLink_GL_EXT_histogram;
+    __GLeeGLLoadFunction[51]=__GLeeLink_GL_EXT_convolution;
+    __GLeeGLLoadFunction[52]=__GLeeLink_GL_SGI_color_matrix;
+    __GLeeGLLoadFunction[53]=__GLeeLink_GL_SGI_color_table;
+    __GLeeGLLoadFunction[54]=__GLeeLink_GL_SGIS_pixel_texture;
+    __GLeeGLLoadFunction[55]=__GLeeLink_GL_SGIX_pixel_texture;
+    __GLeeGLLoadFunction[56]=__GLeeLink_GL_SGIS_texture4D;
+    __GLeeGLLoadFunction[57]=__GLeeLink_GL_SGI_texture_color_table;
+    __GLeeGLLoadFunction[58]=__GLeeLink_GL_EXT_cmyka;
+    __GLeeGLLoadFunction[59]=__GLeeLink_GL_EXT_texture_object;
+    __GLeeGLLoadFunction[60]=__GLeeLink_GL_SGIS_detail_texture;
+    __GLeeGLLoadFunction[61]=__GLeeLink_GL_SGIS_sharpen_texture;
+    __GLeeGLLoadFunction[62]=__GLeeLink_GL_EXT_packed_pixels;
+    __GLeeGLLoadFunction[63]=__GLeeLink_GL_SGIS_texture_lod;
+    __GLeeGLLoadFunction[64]=__GLeeLink_GL_SGIS_multisample;
+    __GLeeGLLoadFunction[65]=__GLeeLink_GL_EXT_rescale_normal;
+    __GLeeGLLoadFunction[66]=__GLeeLink_GL_EXT_vertex_array;
+    __GLeeGLLoadFunction[67]=__GLeeLink_GL_EXT_misc_attribute;
+    __GLeeGLLoadFunction[68]=__GLeeLink_GL_SGIS_generate_mipmap;
+    __GLeeGLLoadFunction[69]=__GLeeLink_GL_SGIX_clipmap;
+    __GLeeGLLoadFunction[70]=__GLeeLink_GL_SGIX_shadow;
+    __GLeeGLLoadFunction[71]=__GLeeLink_GL_SGIS_texture_edge_clamp;
+    __GLeeGLLoadFunction[72]=__GLeeLink_GL_SGIS_texture_border_clamp;
+    __GLeeGLLoadFunction[73]=__GLeeLink_GL_EXT_blend_minmax;
+    __GLeeGLLoadFunction[74]=__GLeeLink_GL_EXT_blend_subtract;
+    __GLeeGLLoadFunction[75]=__GLeeLink_GL_EXT_blend_logic_op;
+    __GLeeGLLoadFunction[76]=__GLeeLink_GL_SGIX_interlace;
+    __GLeeGLLoadFunction[77]=__GLeeLink_GL_SGIX_pixel_tiles;
+    __GLeeGLLoadFunction[78]=__GLeeLink_GL_SGIS_texture_select;
+    __GLeeGLLoadFunction[79]=__GLeeLink_GL_SGIX_sprite;
+    __GLeeGLLoadFunction[80]=__GLeeLink_GL_SGIX_texture_multi_buffer;
+    __GLeeGLLoadFunction[81]=__GLeeLink_GL_EXT_point_parameters;
+    __GLeeGLLoadFunction[82]=__GLeeLink_GL_SGIS_point_parameters;
+    __GLeeGLLoadFunction[83]=__GLeeLink_GL_SGIX_instruments;
+    __GLeeGLLoadFunction[84]=__GLeeLink_GL_SGIX_texture_scale_bias;
+    __GLeeGLLoadFunction[85]=__GLeeLink_GL_SGIX_framezoom;
+    __GLeeGLLoadFunction[86]=__GLeeLink_GL_SGIX_tag_sample_buffer;
+    __GLeeGLLoadFunction[87]=__GLeeLink_GL_FfdMaskSGIX;
+    __GLeeGLLoadFunction[88]=__GLeeLink_GL_SGIX_polynomial_ffd;
+    __GLeeGLLoadFunction[89]=__GLeeLink_GL_SGIX_reference_plane;
+    __GLeeGLLoadFunction[90]=__GLeeLink_GL_SGIX_flush_raster;
+    __GLeeGLLoadFunction[91]=__GLeeLink_GL_SGIX_depth_texture;
+    __GLeeGLLoadFunction[92]=__GLeeLink_GL_SGIS_fog_function;
+    __GLeeGLLoadFunction[93]=__GLeeLink_GL_SGIX_fog_offset;
+    __GLeeGLLoadFunction[94]=__GLeeLink_GL_HP_image_transform;
+    __GLeeGLLoadFunction[95]=__GLeeLink_GL_HP_convolution_border_modes;
+    __GLeeGLLoadFunction[96]=__GLeeLink_GL_INGR_palette_buffer;
+    __GLeeGLLoadFunction[97]=__GLeeLink_GL_SGIX_texture_add_env;
+    __GLeeGLLoadFunction[98]=__GLeeLink_GL_EXT_color_subtable;
+    __GLeeGLLoadFunction[99]=__GLeeLink_GL_PGI_vertex_hints;
+    __GLeeGLLoadFunction[100]=__GLeeLink_GL_PGI_misc_hints;
+    __GLeeGLLoadFunction[101]=__GLeeLink_GL_EXT_paletted_texture;
+    __GLeeGLLoadFunction[102]=__GLeeLink_GL_EXT_clip_volume_hint;
+    __GLeeGLLoadFunction[103]=__GLeeLink_GL_SGIX_list_priority;
+    __GLeeGLLoadFunction[104]=__GLeeLink_GL_SGIX_ir_instrument1;
+    __GLeeGLLoadFunction[105]=__GLeeLink_GL_SGIX_calligraphic_fragment;
+    __GLeeGLLoadFunction[106]=__GLeeLink_GL_SGIX_texture_lod_bias;
+    __GLeeGLLoadFunction[107]=__GLeeLink_GL_SGIX_shadow_ambient;
+    __GLeeGLLoadFunction[108]=__GLeeLink_GL_EXT_index_texture;
+    __GLeeGLLoadFunction[109]=__GLeeLink_GL_EXT_index_material;
+    __GLeeGLLoadFunction[110]=__GLeeLink_GL_EXT_index_func;
+    __GLeeGLLoadFunction[111]=__GLeeLink_GL_EXT_index_array_formats;
+    __GLeeGLLoadFunction[112]=__GLeeLink_GL_EXT_compiled_vertex_array;
+    __GLeeGLLoadFunction[113]=__GLeeLink_GL_EXT_cull_vertex;
+    __GLeeGLLoadFunction[114]=__GLeeLink_GL_SGIX_ycrcb;
+    __GLeeGLLoadFunction[115]=__GLeeLink_GL_SGIX_fragment_lighting;
+    __GLeeGLLoadFunction[116]=__GLeeLink_GL_IBM_rasterpos_clip;
+    __GLeeGLLoadFunction[117]=__GLeeLink_GL_HP_texture_lighting;
+    __GLeeGLLoadFunction[118]=__GLeeLink_GL_EXT_draw_range_elements;
+    __GLeeGLLoadFunction[119]=__GLeeLink_GL_WIN_phong_shading;
+    __GLeeGLLoadFunction[120]=__GLeeLink_GL_WIN_specular_fog;
+    __GLeeGLLoadFunction[121]=__GLeeLink_GL_EXT_light_texture;
+    __GLeeGLLoadFunction[122]=__GLeeLink_GL_SGIX_blend_alpha_minmax;
+    __GLeeGLLoadFunction[123]=__GLeeLink_GL_SGIX_impact_pixel_texture;
+    __GLeeGLLoadFunction[124]=__GLeeLink_GL_EXT_bgra;
+    __GLeeGLLoadFunction[125]=__GLeeLink_GL_SGIX_async;
+    __GLeeGLLoadFunction[126]=__GLeeLink_GL_SGIX_async_pixel;
+    __GLeeGLLoadFunction[127]=__GLeeLink_GL_SGIX_async_histogram;
+    __GLeeGLLoadFunction[128]=__GLeeLink_GL_INTEL_texture_scissor;
+    __GLeeGLLoadFunction[129]=__GLeeLink_GL_INTEL_parallel_arrays;
+    __GLeeGLLoadFunction[130]=__GLeeLink_GL_HP_occlusion_test;
+    __GLeeGLLoadFunction[131]=__GLeeLink_GL_EXT_pixel_transform;
+    __GLeeGLLoadFunction[132]=__GLeeLink_GL_EXT_pixel_transform_color_table;
+    __GLeeGLLoadFunction[133]=__GLeeLink_GL_EXT_shared_texture_palette;
+    __GLeeGLLoadFunction[134]=__GLeeLink_GL_EXT_separate_specular_color;
+    __GLeeGLLoadFunction[135]=__GLeeLink_GL_EXT_secondary_color;
+    __GLeeGLLoadFunction[136]=__GLeeLink_GL_EXT_texture_perturb_normal;
+    __GLeeGLLoadFunction[137]=__GLeeLink_GL_EXT_multi_draw_arrays;
+    __GLeeGLLoadFunction[138]=__GLeeLink_GL_EXT_fog_coord;
+    __GLeeGLLoadFunction[139]=__GLeeLink_GL_REND_screen_coordinates;
+    __GLeeGLLoadFunction[140]=__GLeeLink_GL_EXT_coordinate_frame;
+    __GLeeGLLoadFunction[141]=__GLeeLink_GL_EXT_texture_env_combine;
+    __GLeeGLLoadFunction[142]=__GLeeLink_GL_APPLE_specular_vector;
+    __GLeeGLLoadFunction[143]=__GLeeLink_GL_APPLE_transform_hint;
+    __GLeeGLLoadFunction[144]=__GLeeLink_GL_SGIX_fog_scale;
+    __GLeeGLLoadFunction[145]=__GLeeLink_GL_SUNX_constant_data;
+    __GLeeGLLoadFunction[146]=__GLeeLink_GL_SUN_global_alpha;
+    __GLeeGLLoadFunction[147]=__GLeeLink_GL_SUN_triangle_list;
+    __GLeeGLLoadFunction[148]=__GLeeLink_GL_SUN_vertex;
+    __GLeeGLLoadFunction[149]=__GLeeLink_GL_EXT_blend_func_separate;
+    __GLeeGLLoadFunction[150]=__GLeeLink_GL_INGR_color_clamp;
+    __GLeeGLLoadFunction[151]=__GLeeLink_GL_INGR_interlace_read;
+    __GLeeGLLoadFunction[152]=__GLeeLink_GL_EXT_stencil_wrap;
+    __GLeeGLLoadFunction[153]=__GLeeLink_GL_EXT_422_pixels;
+    __GLeeGLLoadFunction[154]=__GLeeLink_GL_NV_texgen_reflection;
+    __GLeeGLLoadFunction[155]=__GLeeLink_GL_EXT_texture_cube_map;
+    __GLeeGLLoadFunction[156]=__GLeeLink_GL_SUN_convolution_border_modes;
+    __GLeeGLLoadFunction[157]=__GLeeLink_GL_EXT_texture_env_add;
+    __GLeeGLLoadFunction[158]=__GLeeLink_GL_EXT_texture_lod_bias;
+    __GLeeGLLoadFunction[159]=__GLeeLink_GL_EXT_texture_filter_anisotropic;
+    __GLeeGLLoadFunction[160]=__GLeeLink_GL_EXT_vertex_weighting;
+    __GLeeGLLoadFunction[161]=__GLeeLink_GL_NV_light_max_exponent;
+    __GLeeGLLoadFunction[162]=__GLeeLink_GL_NV_vertex_array_range;
+    __GLeeGLLoadFunction[163]=__GLeeLink_GL_NV_register_combiners;
+    __GLeeGLLoadFunction[164]=__GLeeLink_GL_NV_fog_distance;
+    __GLeeGLLoadFunction[165]=__GLeeLink_GL_NV_texgen_emboss;
+    __GLeeGLLoadFunction[166]=__GLeeLink_GL_NV_blend_square;
+    __GLeeGLLoadFunction[167]=__GLeeLink_GL_NV_texture_env_combine4;
+    __GLeeGLLoadFunction[168]=__GLeeLink_GL_MESA_resize_buffers;
+    __GLeeGLLoadFunction[169]=__GLeeLink_GL_MESA_window_pos;
+    __GLeeGLLoadFunction[170]=__GLeeLink_GL_EXT_texture_compression_s3tc;
+    __GLeeGLLoadFunction[171]=__GLeeLink_GL_IBM_cull_vertex;
+    __GLeeGLLoadFunction[172]=__GLeeLink_GL_IBM_multimode_draw_arrays;
+    __GLeeGLLoadFunction[173]=__GLeeLink_GL_IBM_vertex_array_lists;
+    __GLeeGLLoadFunction[174]=__GLeeLink_GL_SGIX_subsample;
+    __GLeeGLLoadFunction[175]=__GLeeLink_GL_SGIX_ycrcb_subsample;
+    __GLeeGLLoadFunction[176]=__GLeeLink_GL_SGIX_ycrcba;
+    __GLeeGLLoadFunction[177]=__GLeeLink_GL_SGI_depth_pass_instrument;
+    __GLeeGLLoadFunction[178]=__GLeeLink_GL_3DFX_texture_compression_FXT1;
+    __GLeeGLLoadFunction[179]=__GLeeLink_GL_3DFX_multisample;
+    __GLeeGLLoadFunction[180]=__GLeeLink_GL_3DFX_tbuffer;
+    __GLeeGLLoadFunction[181]=__GLeeLink_GL_EXT_multisample;
+    __GLeeGLLoadFunction[182]=__GLeeLink_GL_SGIX_vertex_preclip;
+    __GLeeGLLoadFunction[183]=__GLeeLink_GL_SGIX_convolution_accuracy;
+    __GLeeGLLoadFunction[184]=__GLeeLink_GL_SGIX_resample;
+    __GLeeGLLoadFunction[185]=__GLeeLink_GL_SGIS_point_line_texgen;
+    __GLeeGLLoadFunction[186]=__GLeeLink_GL_SGIS_texture_color_mask;
+    __GLeeGLLoadFunction[187]=__GLeeLink_GL_EXT_texture_env_dot3;
+    __GLeeGLLoadFunction[188]=__GLeeLink_GL_ATI_texture_mirror_once;
+    __GLeeGLLoadFunction[189]=__GLeeLink_GL_NV_fence;
+    __GLeeGLLoadFunction[190]=__GLeeLink_GL_IBM_texture_mirrored_repeat;
+    __GLeeGLLoadFunction[191]=__GLeeLink_GL_NV_evaluators;
+    __GLeeGLLoadFunction[192]=__GLeeLink_GL_NV_packed_depth_stencil;
+    __GLeeGLLoadFunction[193]=__GLeeLink_GL_NV_register_combiners2;
+    __GLeeGLLoadFunction[194]=__GLeeLink_GL_NV_texture_compression_vtc;
+    __GLeeGLLoadFunction[195]=__GLeeLink_GL_NV_texture_rectangle;
+    __GLeeGLLoadFunction[196]=__GLeeLink_GL_NV_texture_shader;
+    __GLeeGLLoadFunction[197]=__GLeeLink_GL_NV_texture_shader2;
+    __GLeeGLLoadFunction[198]=__GLeeLink_GL_NV_vertex_array_range2;
+    __GLeeGLLoadFunction[199]=__GLeeLink_GL_NV_vertex_program;
+    __GLeeGLLoadFunction[200]=__GLeeLink_GL_SGIX_texture_coordinate_clamp;
+    __GLeeGLLoadFunction[201]=__GLeeLink_GL_SGIX_scalebias_hint;
+    __GLeeGLLoadFunction[202]=__GLeeLink_GL_OML_interlace;
+    __GLeeGLLoadFunction[203]=__GLeeLink_GL_OML_subsample;
+    __GLeeGLLoadFunction[204]=__GLeeLink_GL_OML_resample;
+    __GLeeGLLoadFunction[205]=__GLeeLink_GL_NV_copy_depth_to_color;
+    __GLeeGLLoadFunction[206]=__GLeeLink_GL_ATI_envmap_bumpmap;
+    __GLeeGLLoadFunction[207]=__GLeeLink_GL_ATI_fragment_shader;
+    __GLeeGLLoadFunction[208]=__GLeeLink_GL_ATI_pn_triangles;
+    __GLeeGLLoadFunction[209]=__GLeeLink_GL_ATI_vertex_array_object;
+    __GLeeGLLoadFunction[210]=__GLeeLink_GL_EXT_vertex_shader;
+    __GLeeGLLoadFunction[211]=__GLeeLink_GL_ATI_vertex_streams;
+    __GLeeGLLoadFunction[212]=__GLeeLink_GL_ATI_element_array;
+    __GLeeGLLoadFunction[213]=__GLeeLink_GL_SUN_mesh_array;
+    __GLeeGLLoadFunction[214]=__GLeeLink_GL_SUN_slice_accum;
+    __GLeeGLLoadFunction[215]=__GLeeLink_GL_NV_multisample_filter_hint;
+    __GLeeGLLoadFunction[216]=__GLeeLink_GL_NV_depth_clamp;
+    __GLeeGLLoadFunction[217]=__GLeeLink_GL_NV_occlusion_query;
+    __GLeeGLLoadFunction[218]=__GLeeLink_GL_NV_point_sprite;
+    __GLeeGLLoadFunction[219]=__GLeeLink_GL_NV_texture_shader3;
+    __GLeeGLLoadFunction[220]=__GLeeLink_GL_NV_vertex_program1_1;
+    __GLeeGLLoadFunction[221]=__GLeeLink_GL_EXT_shadow_funcs;
+    __GLeeGLLoadFunction[222]=__GLeeLink_GL_EXT_stencil_two_side;
+    __GLeeGLLoadFunction[223]=__GLeeLink_GL_ATI_text_fragment_shader;
+    __GLeeGLLoadFunction[224]=__GLeeLink_GL_APPLE_client_storage;
+    __GLeeGLLoadFunction[225]=__GLeeLink_GL_APPLE_element_array;
+    __GLeeGLLoadFunction[226]=__GLeeLink_GL_APPLE_fence;
+    __GLeeGLLoadFunction[227]=__GLeeLink_GL_APPLE_vertex_array_object;
+    __GLeeGLLoadFunction[228]=__GLeeLink_GL_APPLE_vertex_array_range;
+    __GLeeGLLoadFunction[229]=__GLeeLink_GL_APPLE_ycbcr_422;
+    __GLeeGLLoadFunction[230]=__GLeeLink_GL_S3_s3tc;
+    __GLeeGLLoadFunction[231]=__GLeeLink_GL_ATI_draw_buffers;
+    __GLeeGLLoadFunction[232]=__GLeeLink_GL_ATI_pixel_format_float;
+    __GLeeGLLoadFunction[233]=__GLeeLink_GL_ATI_texture_env_combine3;
+    __GLeeGLLoadFunction[234]=__GLeeLink_GL_ATI_texture_float;
+    __GLeeGLLoadFunction[235]=__GLeeLink_GL_NV_float_buffer;
+    __GLeeGLLoadFunction[236]=__GLeeLink_GL_NV_fragment_program;
+    __GLeeGLLoadFunction[237]=__GLeeLink_GL_NV_half_float;
+    __GLeeGLLoadFunction[238]=__GLeeLink_GL_NV_pixel_data_range;
+    __GLeeGLLoadFunction[239]=__GLeeLink_GL_NV_primitive_restart;
+    __GLeeGLLoadFunction[240]=__GLeeLink_GL_NV_texture_expand_normal;
+    __GLeeGLLoadFunction[241]=__GLeeLink_GL_NV_vertex_program2;
+    __GLeeGLLoadFunction[242]=__GLeeLink_GL_ATI_map_object_buffer;
+    __GLeeGLLoadFunction[243]=__GLeeLink_GL_ATI_separate_stencil;
+    __GLeeGLLoadFunction[244]=__GLeeLink_GL_ATI_vertex_attrib_array_object;
+    __GLeeGLLoadFunction[245]=__GLeeLink_GL_OES_read_format;
+    __GLeeGLLoadFunction[246]=__GLeeLink_GL_EXT_depth_bounds_test;
+    __GLeeGLLoadFunction[247]=__GLeeLink_GL_EXT_texture_mirror_clamp;
+    __GLeeGLLoadFunction[248]=__GLeeLink_GL_EXT_blend_equation_separate;
+    __GLeeGLLoadFunction[249]=__GLeeLink_GL_MESA_pack_invert;
+    __GLeeGLLoadFunction[250]=__GLeeLink_GL_MESA_ycbcr_texture;
+    __GLeeGLLoadFunction[251]=__GLeeLink_GL_EXT_pixel_buffer_object;
+    __GLeeGLLoadFunction[252]=__GLeeLink_GL_NV_fragment_program_option;
+    __GLeeGLLoadFunction[253]=__GLeeLink_GL_NV_fragment_program2;
+    __GLeeGLLoadFunction[254]=__GLeeLink_GL_NV_vertex_program2_option;
+    __GLeeGLLoadFunction[255]=__GLeeLink_GL_NV_vertex_program3;
+    __GLeeGLLoadFunction[256]=__GLeeLink_GL_EXT_framebuffer_object;
+    __GLeeGLLoadFunction[257]=__GLeeLink_GL_GREMEDY_string_marker;
+    __GLeeGLLoadFunction[258]=__GLeeLink_GL_EXT_Cg_shader;
+    __GLeeGLLoadFunction[259]=__GLeeLink_GL_EXT_timer_query;
+    __GLeeGLLoadFunction[260]=__GLeeLink_GL_EXT_texture_buffer_object;
+    __GLeeGLLoadFunction[261]=__GLeeLink_GL_EXT_gpu_shader4;
+    __GLeeGLLoadFunction[262]=__GLeeLink_GL_EXT_geometry_shader4;
+    __GLeeGLLoadFunction[263]=__GLeeLink_GL_EXT_bindable_uniform;
+    __GLeeGLLoadFunction[264]=__GLeeLink_GL_EXT_framebuffer_sRGB;
+    __GLeeGLLoadFunction[265]=__GLeeLink_GL_EXT_texture_shared_exponent;
+    __GLeeGLLoadFunction[266]=__GLeeLink_GL_EXT_packed_float;
+    __GLeeGLLoadFunction[267]=__GLeeLink_GL_EXT_texture_array;
+    __GLeeGLLoadFunction[268]=__GLeeLink_GL_EXT_texture_integer;
+    __GLeeGLLoadFunction[269]=__GLeeLink_GL_NV_depth_buffer_float;
+    __GLeeGLLoadFunction[270]=__GLeeLink_GL_EXT_texture_compression_latc;
+    __GLeeGLLoadFunction[271]=__GLeeLink_GL_NV_transform_feedback;
+    __GLeeGLLoadFunction[272]=__GLeeLink_GL_NV_geometry_program4;
+    __GLeeGLLoadFunction[273]=__GLeeLink_GL_NV_gpu_program4;
+    __GLeeGLLoadFunction[274]=__GLeeLink_GL_NV_framebuffer_multisample_coverage;
+    __GLeeGLLoadFunction[275]=__GLeeLink_GL_EXT_framebuffer_multisample;
+    __GLeeGLLoadFunction[276]=__GLeeLink_GL_EXT_framebuffer_blit;
+    __GLeeGLLoadFunction[277]=__GLeeLink_GL_EXT_texture_compression_rgtc;
+    __GLeeGLLoadFunction[278]=__GLeeLink_GL_EXT_color_matrix;
+    __GLeeGLLoadFunction[279]=__GLeeLink_GL_SGIX_texture_select;
+    __GLeeGLLoadFunction[280]=__GLeeLink_GL_INGR_blend_func_separate;
+    __GLeeGLLoadFunction[281]=__GLeeLink_GL_SGIX_depth_pass_instrument;
+    __GLeeGLLoadFunction[282]=__GLeeLink_GL_SGIX_igloo_interface;
+    __GLeeGLLoadFunction[283]=__GLeeLink_GL_EXT_draw_buffers2;
+    __GLeeGLLoadFunction[284]=__GLeeLink_GL_NV_parameter_buffer_object;
+    __GLeeGLLoadFunction[285]=__GLeeLink_GL_EXT_draw_instanced;
+    __GLeeGLLoadFunction[286]=__GLeeLink_GL_EXT_fragment_lighting;
+    __GLeeGLLoadFunction[287]=__GLeeLink_GL_EXT_packed_depth_stencil;
+    __GLeeGLLoadFunction[288]=__GLeeLink_GL_EXT_scene_marker;
+    __GLeeGLLoadFunction[289]=__GLeeLink_GL_EXT_stencil_clear_tag;
+    __GLeeGLLoadFunction[290]=__GLeeLink_GL_EXT_texture_compression_dxt1;
+    __GLeeGLLoadFunction[291]=__GLeeLink_GL_EXT_texture_env;
+    __GLeeGLLoadFunction[292]=__GLeeLink_GL_EXT_texture_sRGB;
+    __GLeeGLLoadFunction[293]=__GLeeLink_GL_IBM_static_data;
+    __GLeeGLLoadFunction[294]=__GLeeLink_GL_MESAX_texture_stack;
+    __GLeeGLLoadFunction[295]=__GLeeLink_GL_OES_byte_coordinates;
+    __GLeeGLLoadFunction[296]=__GLeeLink_GL_OES_compressed_paletted_texture;
+    __GLeeGLLoadFunction[297]=__GLeeLink_GL_OES_single_precision;
+    __GLeeGLLoadFunction[298]=__GLeeLink_GL_SGIX_pixel_texture_bits;
+    __GLeeGLLoadFunction[299]=__GLeeLink_GL_SGIX_texture_range;
+}
+
+#ifdef WIN32
+GLuint __GLeeLink_WGL_ARB_buffer_region(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_buffer_region
+    if ((pwglCreateBufferRegionARB = (PFNWGLCREATEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglCreateBufferRegionARB"))!=0) nLinked++;
+    if ((pwglDeleteBufferRegionARB = (PFNWGLDELETEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglDeleteBufferRegionARB"))!=0) nLinked++;
+    if ((pwglSaveBufferRegionARB = (PFNWGLSAVEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglSaveBufferRegionARB"))!=0) nLinked++;
+    if ((pwglRestoreBufferRegionARB = (PFNWGLRESTOREBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglRestoreBufferRegionARB"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_ARB_extensions_string(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_extensions_string
+    if ((pwglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) __GLeeGetProcAddress("wglGetExtensionsStringARB"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_pixel_format(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_pixel_format
+    if ((pwglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribivARB"))!=0) nLinked++;
+    if ((pwglGetPixelFormatAttribfvARB = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribfvARB"))!=0) nLinked++;
+    if ((pwglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC) __GLeeGetProcAddress("wglChoosePixelFormatARB"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_make_current_read(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_make_current_read
+    if ((pwglMakeContextCurrentARB = (PFNWGLMAKECONTEXTCURRENTARBPROC) __GLeeGetProcAddress("wglMakeContextCurrentARB"))!=0) nLinked++;
+    if ((pwglGetCurrentReadDCARB = (PFNWGLGETCURRENTREADDCARBPROC) __GLeeGetProcAddress("wglGetCurrentReadDCARB"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_pbuffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_pbuffer
+    if ((pwglCreatePbufferARB = (PFNWGLCREATEPBUFFERARBPROC) __GLeeGetProcAddress("wglCreatePbufferARB"))!=0) nLinked++;
+    if ((pwglGetPbufferDCARB = (PFNWGLGETPBUFFERDCARBPROC) __GLeeGetProcAddress("wglGetPbufferDCARB"))!=0) nLinked++;
+    if ((pwglReleasePbufferDCARB = (PFNWGLRELEASEPBUFFERDCARBPROC) __GLeeGetProcAddress("wglReleasePbufferDCARB"))!=0) nLinked++;
+    if ((pwglDestroyPbufferARB = (PFNWGLDESTROYPBUFFERARBPROC) __GLeeGetProcAddress("wglDestroyPbufferARB"))!=0) nLinked++;
+    if ((pwglQueryPbufferARB = (PFNWGLQUERYPBUFFERARBPROC) __GLeeGetProcAddress("wglQueryPbufferARB"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_render_texture(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_ARB_render_texture
+    if ((pwglBindTexImageARB = (PFNWGLBINDTEXIMAGEARBPROC) __GLeeGetProcAddress("wglBindTexImageARB"))!=0) nLinked++;
+    if ((pwglReleaseTexImageARB = (PFNWGLRELEASETEXIMAGEARBPROC) __GLeeGetProcAddress("wglReleaseTexImageARB"))!=0) nLinked++;
+    if ((pwglSetPbufferAttribARB = (PFNWGLSETPBUFFERATTRIBARBPROC) __GLeeGetProcAddress("wglSetPbufferAttribARB"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_ARB_pixel_format_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_EXT_make_current_read(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_make_current_read
+    if ((pwglMakeContextCurrentEXT = (PFNWGLMAKECONTEXTCURRENTEXTPROC) __GLeeGetProcAddress("wglMakeContextCurrentEXT"))!=0) nLinked++;
+    if ((pwglGetCurrentReadDCEXT = (PFNWGLGETCURRENTREADDCEXTPROC) __GLeeGetProcAddress("wglGetCurrentReadDCEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_pixel_format(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_pixel_format
+    if ((pwglGetPixelFormatAttribivEXT = (PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribivEXT"))!=0) nLinked++;
+    if ((pwglGetPixelFormatAttribfvEXT = (PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribfvEXT"))!=0) nLinked++;
+    if ((pwglChoosePixelFormatEXT = (PFNWGLCHOOSEPIXELFORMATEXTPROC) __GLeeGetProcAddress("wglChoosePixelFormatEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==3) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_pbuffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_pbuffer
+    if ((pwglCreatePbufferEXT = (PFNWGLCREATEPBUFFEREXTPROC) __GLeeGetProcAddress("wglCreatePbufferEXT"))!=0) nLinked++;
+    if ((pwglGetPbufferDCEXT = (PFNWGLGETPBUFFERDCEXTPROC) __GLeeGetProcAddress("wglGetPbufferDCEXT"))!=0) nLinked++;
+    if ((pwglReleasePbufferDCEXT = (PFNWGLRELEASEPBUFFERDCEXTPROC) __GLeeGetProcAddress("wglReleasePbufferDCEXT"))!=0) nLinked++;
+    if ((pwglDestroyPbufferEXT = (PFNWGLDESTROYPBUFFEREXTPROC) __GLeeGetProcAddress("wglDestroyPbufferEXT"))!=0) nLinked++;
+    if ((pwglQueryPbufferEXT = (PFNWGLQUERYPBUFFEREXTPROC) __GLeeGetProcAddress("wglQueryPbufferEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_depth_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_EXT_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_I3D_digital_video_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_digital_video_control
+    if ((pwglGetDigitalVideoParametersI3D = (PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) __GLeeGetProcAddress("wglGetDigitalVideoParametersI3D"))!=0) nLinked++;
+    if ((pwglSetDigitalVideoParametersI3D = (PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) __GLeeGetProcAddress("wglSetDigitalVideoParametersI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_gamma(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_gamma
+    if ((pwglGetGammaTableParametersI3D = (PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) __GLeeGetProcAddress("wglGetGammaTableParametersI3D"))!=0) nLinked++;
+    if ((pwglSetGammaTableParametersI3D = (PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) __GLeeGetProcAddress("wglSetGammaTableParametersI3D"))!=0) nLinked++;
+    if ((pwglGetGammaTableI3D = (PFNWGLGETGAMMATABLEI3DPROC) __GLeeGetProcAddress("wglGetGammaTableI3D"))!=0) nLinked++;
+    if ((pwglSetGammaTableI3D = (PFNWGLSETGAMMATABLEI3DPROC) __GLeeGetProcAddress("wglSetGammaTableI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_genlock(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_genlock
+    if ((pwglEnableGenlockI3D = (PFNWGLENABLEGENLOCKI3DPROC) __GLeeGetProcAddress("wglEnableGenlockI3D"))!=0) nLinked++;
+    if ((pwglDisableGenlockI3D = (PFNWGLDISABLEGENLOCKI3DPROC) __GLeeGetProcAddress("wglDisableGenlockI3D"))!=0) nLinked++;
+    if ((pwglIsEnabledGenlockI3D = (PFNWGLISENABLEDGENLOCKI3DPROC) __GLeeGetProcAddress("wglIsEnabledGenlockI3D"))!=0) nLinked++;
+    if ((pwglGenlockSourceI3D = (PFNWGLGENLOCKSOURCEI3DPROC) __GLeeGetProcAddress("wglGenlockSourceI3D"))!=0) nLinked++;
+    if ((pwglGetGenlockSourceI3D = (PFNWGLGETGENLOCKSOURCEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceI3D"))!=0) nLinked++;
+    if ((pwglGenlockSourceEdgeI3D = (PFNWGLGENLOCKSOURCEEDGEI3DPROC) __GLeeGetProcAddress("wglGenlockSourceEdgeI3D"))!=0) nLinked++;
+    if ((pwglGetGenlockSourceEdgeI3D = (PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceEdgeI3D"))!=0) nLinked++;
+    if ((pwglGenlockSampleRateI3D = (PFNWGLGENLOCKSAMPLERATEI3DPROC) __GLeeGetProcAddress("wglGenlockSampleRateI3D"))!=0) nLinked++;
+    if ((pwglGetGenlockSampleRateI3D = (PFNWGLGETGENLOCKSAMPLERATEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSampleRateI3D"))!=0) nLinked++;
+    if ((pwglGenlockSourceDelayI3D = (PFNWGLGENLOCKSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglGenlockSourceDelayI3D"))!=0) nLinked++;
+    if ((pwglGetGenlockSourceDelayI3D = (PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceDelayI3D"))!=0) nLinked++;
+    if ((pwglQueryGenlockMaxSourceDelayI3D = (PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglQueryGenlockMaxSourceDelayI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==12) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_image_buffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_image_buffer
+    if ((pwglCreateImageBufferI3D = (PFNWGLCREATEIMAGEBUFFERI3DPROC) __GLeeGetProcAddress("wglCreateImageBufferI3D"))!=0) nLinked++;
+    if ((pwglDestroyImageBufferI3D = (PFNWGLDESTROYIMAGEBUFFERI3DPROC) __GLeeGetProcAddress("wglDestroyImageBufferI3D"))!=0) nLinked++;
+    if ((pwglAssociateImageBufferEventsI3D = (PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) __GLeeGetProcAddress("wglAssociateImageBufferEventsI3D"))!=0) nLinked++;
+    if ((pwglReleaseImageBufferEventsI3D = (PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) __GLeeGetProcAddress("wglReleaseImageBufferEventsI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_swap_frame_lock(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_swap_frame_lock
+    if ((pwglEnableFrameLockI3D = (PFNWGLENABLEFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglEnableFrameLockI3D"))!=0) nLinked++;
+    if ((pwglDisableFrameLockI3D = (PFNWGLDISABLEFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglDisableFrameLockI3D"))!=0) nLinked++;
+    if ((pwglIsEnabledFrameLockI3D = (PFNWGLISENABLEDFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglIsEnabledFrameLockI3D"))!=0) nLinked++;
+    if ((pwglQueryFrameLockMasterI3D = (PFNWGLQUERYFRAMELOCKMASTERI3DPROC) __GLeeGetProcAddress("wglQueryFrameLockMasterI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_NV_render_depth_texture(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_NV_render_texture_rectangle(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_ATI_pixel_format_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_WGL_EXT_display_color_table(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_display_color_table
+    if ((pwglCreateDisplayColorTableEXT = (PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglCreateDisplayColorTableEXT"))!=0) nLinked++;
+    if ((pwglLoadDisplayColorTableEXT = (PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglLoadDisplayColorTableEXT"))!=0) nLinked++;
+    if ((pwglBindDisplayColorTableEXT = (PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglBindDisplayColorTableEXT"))!=0) nLinked++;
+    if ((pwglDestroyDisplayColorTableEXT = (PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglDestroyDisplayColorTableEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_extensions_string(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_extensions_string
+    if ((pwglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC) __GLeeGetProcAddress("wglGetExtensionsStringEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_EXT_swap_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_EXT_swap_control
+    if ((pwglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) __GLeeGetProcAddress("wglSwapIntervalEXT"))!=0) nLinked++;
+    if ((pwglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC) __GLeeGetProcAddress("wglGetSwapIntervalEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_NV_vertex_array_range(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_NV_vertex_array_range
+    if ((pwglAllocateMemoryNV = (PFNWGLALLOCATEMEMORYNVPROC) __GLeeGetProcAddress("wglAllocateMemoryNV"))!=0) nLinked++;
+    if ((pwglFreeMemoryNV = (PFNWGLFREEMEMORYNVPROC) __GLeeGetProcAddress("wglFreeMemoryNV"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_OML_sync_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_OML_sync_control
+    if ((pwglGetSyncValuesOML = (PFNWGLGETSYNCVALUESOMLPROC) __GLeeGetProcAddress("wglGetSyncValuesOML"))!=0) nLinked++;
+    if ((pwglGetMscRateOML = (PFNWGLGETMSCRATEOMLPROC) __GLeeGetProcAddress("wglGetMscRateOML"))!=0) nLinked++;
+    if ((pwglSwapBuffersMscOML = (PFNWGLSWAPBUFFERSMSCOMLPROC) __GLeeGetProcAddress("wglSwapBuffersMscOML"))!=0) nLinked++;
+    if ((pwglSwapLayerBuffersMscOML = (PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) __GLeeGetProcAddress("wglSwapLayerBuffersMscOML"))!=0) nLinked++;
+    if ((pwglWaitForMscOML = (PFNWGLWAITFORMSCOMLPROC) __GLeeGetProcAddress("wglWaitForMscOML"))!=0) nLinked++;
+    if ((pwglWaitForSbcOML = (PFNWGLWAITFORSBCOMLPROC) __GLeeGetProcAddress("wglWaitForSbcOML"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_I3D_swap_frame_usage(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_I3D_swap_frame_usage
+    if ((pwglGetFrameUsageI3D = (PFNWGLGETFRAMEUSAGEI3DPROC) __GLeeGetProcAddress("wglGetFrameUsageI3D"))!=0) nLinked++;
+    if ((pwglBeginFrameTrackingI3D = (PFNWGLBEGINFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglBeginFrameTrackingI3D"))!=0) nLinked++;
+    if ((pwglEndFrameTrackingI3D = (PFNWGLENDFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglEndFrameTrackingI3D"))!=0) nLinked++;
+    if ((pwglQueryFrameTrackingI3D = (PFNWGLQUERYFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglQueryFrameTrackingI3D"))!=0) nLinked++;
+#endif
+    if (nLinked==4) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_WGL_3DL_stereo_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_WGL_3DL_stereo_control
+    if ((pwglSetStereoEmitterState3DL = (PFNWGLSETSTEREOEMITTERSTATE3DLPROC) __GLeeGetProcAddress("wglSetStereoEmitterState3DL"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLEE_LINK_FUNCTION __GLeeWGLLoadFunction[30];
+
+void initWGLLoadFunctions(void)
+{
+    __GLeeWGLLoadFunction[0]=__GLeeLink_WGL_ARB_buffer_region;
+    __GLeeWGLLoadFunction[1]=__GLeeLink_WGL_ARB_multisample;
+    __GLeeWGLLoadFunction[2]=__GLeeLink_WGL_ARB_extensions_string;
+    __GLeeWGLLoadFunction[3]=__GLeeLink_WGL_ARB_pixel_format;
+    __GLeeWGLLoadFunction[4]=__GLeeLink_WGL_ARB_make_current_read;
+    __GLeeWGLLoadFunction[5]=__GLeeLink_WGL_ARB_pbuffer;
+    __GLeeWGLLoadFunction[6]=__GLeeLink_WGL_ARB_render_texture;
+    __GLeeWGLLoadFunction[7]=__GLeeLink_WGL_ARB_pixel_format_float;
+    __GLeeWGLLoadFunction[8]=__GLeeLink_WGL_EXT_make_current_read;
+    __GLeeWGLLoadFunction[9]=__GLeeLink_WGL_EXT_pixel_format;
+    __GLeeWGLLoadFunction[10]=__GLeeLink_WGL_EXT_pbuffer;
+    __GLeeWGLLoadFunction[11]=__GLeeLink_WGL_EXT_depth_float;
+    __GLeeWGLLoadFunction[12]=__GLeeLink_WGL_3DFX_multisample;
+    __GLeeWGLLoadFunction[13]=__GLeeLink_WGL_EXT_multisample;
+    __GLeeWGLLoadFunction[14]=__GLeeLink_WGL_I3D_digital_video_control;
+    __GLeeWGLLoadFunction[15]=__GLeeLink_WGL_I3D_gamma;
+    __GLeeWGLLoadFunction[16]=__GLeeLink_WGL_I3D_genlock;
+    __GLeeWGLLoadFunction[17]=__GLeeLink_WGL_I3D_image_buffer;
+    __GLeeWGLLoadFunction[18]=__GLeeLink_WGL_I3D_swap_frame_lock;
+    __GLeeWGLLoadFunction[19]=__GLeeLink_WGL_NV_render_depth_texture;
+    __GLeeWGLLoadFunction[20]=__GLeeLink_WGL_NV_render_texture_rectangle;
+    __GLeeWGLLoadFunction[21]=__GLeeLink_WGL_ATI_pixel_format_float;
+    __GLeeWGLLoadFunction[22]=__GLeeLink_WGL_NV_float_buffer;
+    __GLeeWGLLoadFunction[23]=__GLeeLink_WGL_EXT_display_color_table;
+    __GLeeWGLLoadFunction[24]=__GLeeLink_WGL_EXT_extensions_string;
+    __GLeeWGLLoadFunction[25]=__GLeeLink_WGL_EXT_swap_control;
+    __GLeeWGLLoadFunction[26]=__GLeeLink_WGL_NV_vertex_array_range;
+    __GLeeWGLLoadFunction[27]=__GLeeLink_WGL_OML_sync_control;
+    __GLeeWGLLoadFunction[28]=__GLeeLink_WGL_I3D_swap_frame_usage;
+    __GLeeWGLLoadFunction[29]=__GLeeLink_WGL_3DL_stereo_control;
+}
+
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else /* Linux */
+GLuint __GLeeLink_GLX_VERSION_1_3(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_VERSION_1_3
+    if ((pglXGetFBConfigs = (PFNGLXGETFBCONFIGSPROC) __GLeeGetProcAddress("glXGetFBConfigs"))!=0) nLinked++;
+    if ((pglXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC) __GLeeGetProcAddress("glXChooseFBConfig"))!=0) nLinked++;
+    if ((pglXGetFBConfigAttrib = (PFNGLXGETFBCONFIGATTRIBPROC) __GLeeGetProcAddress("glXGetFBConfigAttrib"))!=0) nLinked++;
+    if ((pglXGetVisualFromFBConfig = (PFNGLXGETVISUALFROMFBCONFIGPROC) __GLeeGetProcAddress("glXGetVisualFromFBConfig"))!=0) nLinked++;
+    if ((pglXCreateWindow = (PFNGLXCREATEWINDOWPROC) __GLeeGetProcAddress("glXCreateWindow"))!=0) nLinked++;
+    if ((pglXDestroyWindow = (PFNGLXDESTROYWINDOWPROC) __GLeeGetProcAddress("glXDestroyWindow"))!=0) nLinked++;
+    if ((pglXCreatePixmap = (PFNGLXCREATEPIXMAPPROC) __GLeeGetProcAddress("glXCreatePixmap"))!=0) nLinked++;
+    if ((pglXDestroyPixmap = (PFNGLXDESTROYPIXMAPPROC) __GLeeGetProcAddress("glXDestroyPixmap"))!=0) nLinked++;
+    if ((pglXCreatePbuffer = (PFNGLXCREATEPBUFFERPROC) __GLeeGetProcAddress("glXCreatePbuffer"))!=0) nLinked++;
+    if ((pglXDestroyPbuffer = (PFNGLXDESTROYPBUFFERPROC) __GLeeGetProcAddress("glXDestroyPbuffer"))!=0) nLinked++;
+    if ((pglXQueryDrawable = (PFNGLXQUERYDRAWABLEPROC) __GLeeGetProcAddress("glXQueryDrawable"))!=0) nLinked++;
+    if ((pglXCreateNewContext = (PFNGLXCREATENEWCONTEXTPROC) __GLeeGetProcAddress("glXCreateNewContext"))!=0) nLinked++;
+    if ((pglXMakeContextCurrent = (PFNGLXMAKECONTEXTCURRENTPROC) __GLeeGetProcAddress("glXMakeContextCurrent"))!=0) nLinked++;
+    if ((pglXGetCurrentReadDrawable = (PFNGLXGETCURRENTREADDRAWABLEPROC) __GLeeGetProcAddress("glXGetCurrentReadDrawable"))!=0) nLinked++;
+    if ((pglXGetCurrentDisplay = (PFNGLXGETCURRENTDISPLAYPROC) __GLeeGetProcAddress("glXGetCurrentDisplay"))!=0) nLinked++;
+    if ((pglXQueryContext = (PFNGLXQUERYCONTEXTPROC) __GLeeGetProcAddress("glXQueryContext"))!=0) nLinked++;
+    if ((pglXSelectEvent = (PFNGLXSELECTEVENTPROC) __GLeeGetProcAddress("glXSelectEvent"))!=0) nLinked++;
+    if ((pglXGetSelectedEvent = (PFNGLXGETSELECTEDEVENTPROC) __GLeeGetProcAddress("glXGetSelectedEvent"))!=0) nLinked++;
+#endif
+    if (nLinked==18) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_VERSION_1_4(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_VERSION_1_4
+    if ((pglXGetProcAddress = (PFNGLXGETPROCADDRESSPROC) __GLeeGetProcAddress("glXGetProcAddress"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_ARB_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_ARB_fbconfig_float(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SGIS_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_EXT_visual_info(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SGI_swap_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGI_swap_control
+    if ((pglXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC) __GLeeGetProcAddress("glXSwapIntervalSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGI_video_sync(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGI_video_sync
+    if ((pglXGetVideoSyncSGI = (PFNGLXGETVIDEOSYNCSGIPROC) __GLeeGetProcAddress("glXGetVideoSyncSGI"))!=0) nLinked++;
+    if ((pglXWaitVideoSyncSGI = (PFNGLXWAITVIDEOSYNCSGIPROC) __GLeeGetProcAddress("glXWaitVideoSyncSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGI_make_current_read(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGI_make_current_read
+    if ((pglXMakeCurrentReadSGI = (PFNGLXMAKECURRENTREADSGIPROC) __GLeeGetProcAddress("glXMakeCurrentReadSGI"))!=0) nLinked++;
+    if ((pglXGetCurrentReadDrawableSGI = (PFNGLXGETCURRENTREADDRAWABLESGIPROC) __GLeeGetProcAddress("glXGetCurrentReadDrawableSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_EXT_visual_rating(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_EXT_import_context(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_EXT_import_context
+    if ((pglXGetCurrentDisplayEXT = (PFNGLXGETCURRENTDISPLAYEXTPROC) __GLeeGetProcAddress("glXGetCurrentDisplayEXT"))!=0) nLinked++;
+    if ((pglXQueryContextInfoEXT = (PFNGLXQUERYCONTEXTINFOEXTPROC) __GLeeGetProcAddress("glXQueryContextInfoEXT"))!=0) nLinked++;
+    if ((pglXGetContextIDEXT = (PFNGLXGETCONTEXTIDEXTPROC) __GLeeGetProcAddress("glXGetContextIDEXT"))!=0) nLinked++;
+    if ((pglXImportContextEXT = (PFNGLXIMPORTCONTEXTEXTPROC) __GLeeGetProcAddress("glXImportContextEXT"))!=0) nLinked++;
+    if ((pglXFreeContextEXT = (PFNGLXFREECONTEXTEXTPROC) __GLeeGetProcAddress("glXFreeContextEXT"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_fbconfig(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_fbconfig
+    if ((pglXGetFBConfigAttribSGIX = (PFNGLXGETFBCONFIGATTRIBSGIXPROC) __GLeeGetProcAddress("glXGetFBConfigAttribSGIX"))!=0) nLinked++;
+    if ((pglXChooseFBConfigSGIX = (PFNGLXCHOOSEFBCONFIGSGIXPROC) __GLeeGetProcAddress("glXChooseFBConfigSGIX"))!=0) nLinked++;
+    if ((pglXCreateGLXPixmapWithConfigSGIX = (PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) __GLeeGetProcAddress("glXCreateGLXPixmapWithConfigSGIX"))!=0) nLinked++;
+    if ((pglXCreateContextWithConfigSGIX = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) __GLeeGetProcAddress("glXCreateContextWithConfigSGIX"))!=0) nLinked++;
+    if ((pglXGetVisualFromFBConfigSGIX = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) __GLeeGetProcAddress("glXGetVisualFromFBConfigSGIX"))!=0) nLinked++;
+    if ((pglXGetFBConfigFromVisualSGIX = (PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) __GLeeGetProcAddress("glXGetFBConfigFromVisualSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==6) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_pbuffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_pbuffer
+    if ((pglXCreateGLXPbufferSGIX = (PFNGLXCREATEGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXCreateGLXPbufferSGIX"))!=0) nLinked++;
+    if ((pglXDestroyGLXPbufferSGIX = (PFNGLXDESTROYGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXDestroyGLXPbufferSGIX"))!=0) nLinked++;
+    if ((pglXQueryGLXPbufferSGIX = (PFNGLXQUERYGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXQueryGLXPbufferSGIX"))!=0) nLinked++;
+    if ((pglXSelectEventSGIX = (PFNGLXSELECTEVENTSGIXPROC) __GLeeGetProcAddress("glXSelectEventSGIX"))!=0) nLinked++;
+    if ((pglXGetSelectedEventSGIX = (PFNGLXGETSELECTEDEVENTSGIXPROC) __GLeeGetProcAddress("glXGetSelectedEventSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGI_cushion(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGI_cushion
+    if ((pglXCushionSGI = (PFNGLXCUSHIONSGIPROC) __GLeeGetProcAddress("glXCushionSGI"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_video_resize(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_video_resize
+    if ((pglXBindChannelToWindowSGIX = (PFNGLXBINDCHANNELTOWINDOWSGIXPROC) __GLeeGetProcAddress("glXBindChannelToWindowSGIX"))!=0) nLinked++;
+    if ((pglXChannelRectSGIX = (PFNGLXCHANNELRECTSGIXPROC) __GLeeGetProcAddress("glXChannelRectSGIX"))!=0) nLinked++;
+    if ((pglXQueryChannelRectSGIX = (PFNGLXQUERYCHANNELRECTSGIXPROC) __GLeeGetProcAddress("glXQueryChannelRectSGIX"))!=0) nLinked++;
+    if ((pglXQueryChannelDeltasSGIX = (PFNGLXQUERYCHANNELDELTASSGIXPROC) __GLeeGetProcAddress("glXQueryChannelDeltasSGIX"))!=0) nLinked++;
+    if ((pglXChannelRectSyncSGIX = (PFNGLXCHANNELRECTSYNCSGIXPROC) __GLeeGetProcAddress("glXChannelRectSyncSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_swap_group(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_swap_group
+    if ((pglXJoinSwapGroupSGIX = (PFNGLXJOINSWAPGROUPSGIXPROC) __GLeeGetProcAddress("glXJoinSwapGroupSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_swap_barrier(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_swap_barrier
+    if ((pglXBindSwapBarrierSGIX = (PFNGLXBINDSWAPBARRIERSGIXPROC) __GLeeGetProcAddress("glXBindSwapBarrierSGIX"))!=0) nLinked++;
+    if ((pglXQueryMaxSwapBarriersSGIX = (PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) __GLeeGetProcAddress("glXQueryMaxSwapBarriersSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==2) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIS_blended_overlay(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SGIS_shared_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SUN_get_transparent_index(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SUN_get_transparent_index
+    if ((pglXGetTransparentIndexSUN = (PFNGLXGETTRANSPARENTINDEXSUNPROC) __GLeeGetProcAddress("glXGetTransparentIndexSUN"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_MESA_copy_sub_buffer(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_copy_sub_buffer
+    if ((pglXCopySubBufferMESA = (PFNGLXCOPYSUBBUFFERMESAPROC) __GLeeGetProcAddress("glXCopySubBufferMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_MESA_pixmap_colormap(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_pixmap_colormap
+    if ((pglXCreateGLXPixmapMESA = (PFNGLXCREATEGLXPIXMAPMESAPROC) __GLeeGetProcAddress("glXCreateGLXPixmapMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_MESA_release_buffers(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_release_buffers
+    if ((pglXReleaseBuffersMESA = (PFNGLXRELEASEBUFFERSMESAPROC) __GLeeGetProcAddress("glXReleaseBuffersMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_MESA_set_3dfx_mode(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_set_3dfx_mode
+    if ((pglXSet3DfxModeMESA = (PFNGLXSET3DFXMODEMESAPROC) __GLeeGetProcAddress("glXSet3DfxModeMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_SGIX_visual_select_group(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_OML_swap_method(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_OML_sync_control(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_OML_sync_control
+    if ((pglXGetSyncValuesOML = (PFNGLXGETSYNCVALUESOMLPROC) __GLeeGetProcAddress("glXGetSyncValuesOML"))!=0) nLinked++;
+    if ((pglXGetMscRateOML = (PFNGLXGETMSCRATEOMLPROC) __GLeeGetProcAddress("glXGetMscRateOML"))!=0) nLinked++;
+    if ((pglXSwapBuffersMscOML = (PFNGLXSWAPBUFFERSMSCOMLPROC) __GLeeGetProcAddress("glXSwapBuffersMscOML"))!=0) nLinked++;
+    if ((pglXWaitForMscOML = (PFNGLXWAITFORMSCOMLPROC) __GLeeGetProcAddress("glXWaitForMscOML"))!=0) nLinked++;
+    if ((pglXWaitForSbcOML = (PFNGLXWAITFORSBCOMLPROC) __GLeeGetProcAddress("glXWaitForSbcOML"))!=0) nLinked++;
+#endif
+    if (nLinked==5) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;}
+
+GLuint __GLeeLink_GLX_SGIX_hyperpipe(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_SGIX_hyperpipe
+    if ((pglXQueryHyperpipeNetworkSGIX = (PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeNetworkSGIX"))!=0) nLinked++;
+    if ((pglXHyperpipeConfigSGIX = (PFNGLXHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXHyperpipeConfigSGIX"))!=0) nLinked++;
+    if ((pglXQueryHyperpipeConfigSGIX = (PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeConfigSGIX"))!=0) nLinked++;
+    if ((pglXDestroyHyperpipeConfigSGIX = (PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXDestroyHyperpipeConfigSGIX"))!=0) nLinked++;
+    if ((pglXBindHyperpipeSGIX = (PFNGLXBINDHYPERPIPESGIXPROC) __GLeeGetProcAddress("glXBindHyperpipeSGIX"))!=0) nLinked++;
+    if ((pglXQueryHyperpipeBestAttribSGIX = (PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeBestAttribSGIX"))!=0) nLinked++;
+    if ((pglXHyperpipeAttribSGIX = (PFNGLXHYPERPIPEATTRIBSGIXPROC) __GLeeGetProcAddress("glXHyperpipeAttribSGIX"))!=0) nLinked++;
+    if ((pglXQueryHyperpipeAttribSGIX = (PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeAttribSGIX"))!=0) nLinked++;
+#endif
+    if (nLinked==8) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_MESA_agp_offset(void)
+{
+    GLint nLinked=0;
+#ifdef __GLEE_GLX_MESA_agp_offset
+    if ((pglXGetAGPOffsetMESA = (PFNGLXGETAGPOFFSETMESAPROC) __GLeeGetProcAddress("glXGetAGPOffsetMESA"))!=0) nLinked++;
+#endif
+    if (nLinked==1) return GLEE_LINK_COMPLETE;
+    if (nLinked==0) return GLEE_LINK_FAIL;
+    return GLEE_LINK_PARTIAL;
+}
+
+GLuint __GLeeLink_GLX_EXT_scene_marker(void) {return GLEE_LINK_COMPLETE;}
+
+GLEE_LINK_FUNCTION __GLeeGLXLoadFunction[32];
+
+void initGLXLoadFunctions(void)
+{
+    __GLeeGLXLoadFunction[0]=__GLeeLink_GLX_VERSION_1_3;
+    __GLeeGLXLoadFunction[1]=__GLeeLink_GLX_VERSION_1_4;
+    __GLeeGLXLoadFunction[2]=__GLeeLink_GLX_ARB_multisample;
+    __GLeeGLXLoadFunction[3]=__GLeeLink_GLX_ARB_fbconfig_float;
+    __GLeeGLXLoadFunction[4]=__GLeeLink_GLX_SGIS_multisample;
+    __GLeeGLXLoadFunction[5]=__GLeeLink_GLX_EXT_visual_info;
+    __GLeeGLXLoadFunction[6]=__GLeeLink_GLX_SGI_swap_control;
+    __GLeeGLXLoadFunction[7]=__GLeeLink_GLX_SGI_video_sync;
+    __GLeeGLXLoadFunction[8]=__GLeeLink_GLX_SGI_make_current_read;
+    __GLeeGLXLoadFunction[9]=__GLeeLink_GLX_EXT_visual_rating;
+    __GLeeGLXLoadFunction[10]=__GLeeLink_GLX_EXT_import_context;
+    __GLeeGLXLoadFunction[11]=__GLeeLink_GLX_SGIX_fbconfig;
+    __GLeeGLXLoadFunction[12]=__GLeeLink_GLX_SGIX_pbuffer;
+    __GLeeGLXLoadFunction[13]=__GLeeLink_GLX_SGI_cushion;
+    __GLeeGLXLoadFunction[14]=__GLeeLink_GLX_SGIX_video_resize;
+    __GLeeGLXLoadFunction[15]=__GLeeLink_GLX_SGIX_swap_group;
+    __GLeeGLXLoadFunction[16]=__GLeeLink_GLX_SGIX_swap_barrier;
+    __GLeeGLXLoadFunction[17]=__GLeeLink_GLX_SGIS_blended_overlay;
+    __GLeeGLXLoadFunction[18]=__GLeeLink_GLX_SGIS_shared_multisample;
+    __GLeeGLXLoadFunction[19]=__GLeeLink_GLX_SUN_get_transparent_index;
+    __GLeeGLXLoadFunction[20]=__GLeeLink_GLX_3DFX_multisample;
+    __GLeeGLXLoadFunction[21]=__GLeeLink_GLX_MESA_copy_sub_buffer;
+    __GLeeGLXLoadFunction[22]=__GLeeLink_GLX_MESA_pixmap_colormap;
+    __GLeeGLXLoadFunction[23]=__GLeeLink_GLX_MESA_release_buffers;
+    __GLeeGLXLoadFunction[24]=__GLeeLink_GLX_MESA_set_3dfx_mode;
+    __GLeeGLXLoadFunction[25]=__GLeeLink_GLX_SGIX_visual_select_group;
+    __GLeeGLXLoadFunction[26]=__GLeeLink_GLX_OML_swap_method;
+    __GLeeGLXLoadFunction[27]=__GLeeLink_GLX_OML_sync_control;
+    __GLeeGLXLoadFunction[28]=__GLeeLink_GLX_NV_float_buffer;
+    __GLeeGLXLoadFunction[29]=__GLeeLink_GLX_SGIX_hyperpipe;
+    __GLeeGLXLoadFunction[30]=__GLeeLink_GLX_MESA_agp_offset;
+    __GLeeGLXLoadFunction[31]=__GLeeLink_GLX_EXT_scene_marker;
+}
+
+#endif /* end Linux */
+
+
+/*****************************************************************
+ * GLee internal types
+ *****************************************************************/
+typedef struct 
+{
+	char ** names;
+	int * lengths;
+	int numNames;
+}ExtensionList;
+
+
+/*****************************************************************
+ * GLee internal variables
+ *****************************************************************/
+char GLeeErrorString[256]="";
+
+
+/*****************************************************************
+ * GLee internal functions
+ *****************************************************************/
+
+void __GLeeExtList_init(ExtensionList *extList)
+{
+	extList->names=0;
+	extList->lengths=0;
+	extList->numNames=0;
+}
+
+void __GLeeExtList_clean(ExtensionList *extList)
+{
+	int a;
+	for (a=0;a<extList->numNames;a++)
+	{
+		if (extList->names[a]!=0) free((void *)extList->names[a]);
+	}
+	if (extList->names!=0) free((void *)extList->names);
+	if (extList->lengths!=0) free((void *)extList->lengths);
+	extList->names=0;
+	extList->lengths=0;
+	extList->numNames=0;
+}
+
+void __GLeeExtList_add(ExtensionList *extList, const char * extName)
+{
+	int length=(int)strlen(extName)+1;
+	int i=extList->numNames;
+	int n=i+1;
+	if (i==0)
+	{
+		extList->lengths=(int *)malloc(sizeof(int));
+		extList->names=(char **)malloc(sizeof(char *));
+	}else
+	{
+		extList->lengths=(int *)realloc((void *)extList->lengths, n*sizeof(int));
+		extList->names=(char **)realloc((void *)extList->names, n*sizeof(char *));
+	}
+	extList->names[i]=(char *)malloc(length*sizeof(char));
+	strcpy(extList->names[i],extName);
+	extList->lengths[i]=length;
+	extList->numNames++;
+}
+
+const char *__GLeeGetExtStrPlat()
+{
+#ifdef WIN32
+	if (!_GLEE_WGL_ARB_extensions_string)
+		pwglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB");
+
+	if (pwglGetExtensionsStringARB)
+		return (const char *)pwglGetExtensionsStringARB(wglGetCurrentDC());
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else
+	Display *dpy=glXGetCurrentDisplay();
+	if(dpy)
+	{
+		int dpynr=DefaultScreen(dpy);
+		return (const char*)glXQueryExtensionsString(dpy,dpynr);
+	}
+#endif
+	return 0;
+}
+
+void __GLeeWriteError(const char * errorStr)
+{
+	int a=0;
+	for (a=0;a<256;a++)
+	{
+		GLeeErrorString[a]=errorStr[a];
+	}
+	GLeeErrorString[255]='\0';
+}
+
+int __GLeeGetVersionNumber(char *versionStr)
+{
+	int major=(int)versionStr[0]-(int)'0';
+	int minor=(int)versionStr[2]-(int)'0';
+	return major<<8 | minor;
+}
+
+GLboolean __GLeeGetExtensions(ExtensionList* extList)
+{
+	const char * platExtStr;
+	const char * glExtStr;
+	char * extStr;
+	char emptyString[1]="";
+	char extensionName[1024];
+	int a,b;
+	int numExtensions;
+	int eNum;
+	
+	/* read the platform specific extension string */
+	platExtStr=__GLeeGetExtStrPlat(); 
+	if (!platExtStr) platExtStr=emptyString;
+
+	glExtStr=(const char *)glGetString(GL_EXTENSIONS);
+	if (glExtStr==0) 
+	{
+		__GLeeWriteError("glGetString(GL_EXTENSIONS) failed.");
+		return GL_FALSE;
+	}
+
+	/* allocate the extension string */
+	extStr=(char *)malloc( (strlen(platExtStr)+strlen(glExtStr)+1) * sizeof(char) );
+
+	/* concatenate the two extension strings */
+	sprintf(extStr,"%s%s",platExtStr,glExtStr);
+
+	/* count the extensions */
+	numExtensions=0;
+	for (a=0;extStr[a]!='\0';++a)
+	{
+		if (extStr[a]==' ') ++numExtensions;
+	}
+
+	/* extract the extensions */
+	eNum=0;
+	a=0;
+	while (extStr[a]!='\0')
+	{
+		b=0;
+		while (extStr[a]!=' ' && extStr[a]!='\0' && b<1022)
+		{
+			extensionName[b]=extStr[a];
+			b++; a++;
+		}
+		if (b==1023)
+		{
+			__GLeeWriteError("Extension name exceeds 1023 characters.");
+			free((void *)extStr);
+			return GL_FALSE;
+		}
+
+		extensionName[b]='\0'; 
+
+		/* add the extension */
+		__GLeeExtList_add(extList,extensionName);
+
+		eNum++;	a++; 
+	}
+	free((void *)extStr);
+	return GL_TRUE;
+}
+
+GLboolean __GLeeCheckExtension(const char * name, ExtensionList *extensionNames)
+{
+	int n=extensionNames->numNames;
+	int a;
+    for (a=0;a<n;a++)
+	{
+		if (strcmp(extensionNames->names[a],name)==0)
+			return GL_TRUE;
+	}
+	return GL_FALSE;
+}
+
+GLEE_EXTERN GLint __GLeeGetExtensionNumber(const char *extensionName, int type)
+{
+	int a;
+	switch (type)
+	{
+	case 0:
+		for (a=0;a<__GLeeGLNumExtensions;a++)
+			if (strcmp(extensionName,__GLeeGLExtensionNames[a])==0)	return a;
+		return -1;
+#ifdef WIN32
+	case 1:
+		for (a=0;a<__GLeeWGLNumExtensions;a++)
+			if (strcmp(extensionName,__GLeeWGLExtensionNames[a])==0) return a;
+		return -1;
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else
+	case 2:
+		for (a=0;a<__GLeeGLXNumExtensions;a++)
+			if (strcmp(extensionName,__GLeeGLXExtensionNames[a])==0) return a;
+		return -1;
+#endif
+	}
+	return -1;
+}
+
+/*****************************************************************
+ * GLee external functions 
+ *****************************************************************/
+
+#ifdef WIN32
+GLEE_EXTERN const char * GLeeGetExtStrWGL()
+{
+	return __GLeeGetExtStrPlat();
+}
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else
+GLEE_EXTERN const char * GLeeGetExtStrGLX()	
+{
+	return __GLeeGetExtStrPlat();
+}
+#endif
+
+GLEE_EXTERN const char * GLeeGetExtStrGL()
+{
+	return (const char *)glGetString(GL_EXTENSIONS);
+}
+
+GLEE_EXTERN const char * GLeeGetErrorString()
+{
+	return GLeeErrorString;
+}
+
+GLboolean __GLeeInitedLoadFunctions=GL_FALSE;
+
+GLEE_EXTERN GLint GLeeForceLink(const char * extensionName)
+{
+	int type=0; 
+	int extNum;
+	int len=(int)strlen(extensionName);
+	if (len<5) return GLEE_LINK_FAIL;
+	if (!__GLeeInitedLoadFunctions)
+	{
+		if (!__GLeeInited) GLeeInit();
+		initGLLoadFunctions();
+#ifdef WIN32
+		initWGLLoadFunctions();
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else
+		initGLXLoadFunctions();
+#endif
+		__GLeeInitedLoadFunctions=GL_TRUE;
+	}
+	if (extensionName[0]=='W') type=1;
+	else if (extensionName[2]=='X') type=2;	
+	extNum=__GLeeGetExtensionNumber(extensionName,type);
+	if (extNum==-1) return GLEE_LINK_FAIL;
+	if (type==0) return __GLeeGLLoadFunction[extNum]();
+#ifdef WIN32
+	if (type==1) return __GLeeWGLLoadFunction[extNum]();
+#elif defined(__APPLE__) || defined(__APPLE_CC__)	
+#else
+	if (type==2) return __GLeeGLXLoadFunction[extNum]();
+#endif
+	return GLEE_LINK_FAIL;
+}
+
+GLEE_EXTERN GLboolean GLeeEnabled(GLboolean * extensionQueryingVariable)
+{
+	if (!__GLeeInited) GLeeInit();
+	return *extensionQueryingVariable;	
+}
+
+GLEE_EXTERN GLboolean GLeeInit()
+{
+	int version;
+	ExtensionList extensionNames;
+	
+	if (__GLeeInited) 
+	{
+		return GL_FALSE;
+	}
+
+	__GLeeExtList_init(&extensionNames);
+	if (!__GLeeGetExtensions(&extensionNames)) 
+	{
+		__GLeeWriteError("GL extension querying failed.");
+		__GLeeExtList_clean(&extensionNames);
+		return GL_FALSE;
+	}
+
+	version=__GLeeGetVersionNumber((char *)glGetString(GL_VERSION));
+
+	__GLeeInited = GL_TRUE;
+
+
+/*****************************************************************
+ * Autogenerated linking functions
+ *****************************************************************/
+    if (version>=258)
+    {
+        _GLEE_VERSION_1_2 = GL_TRUE;
+        __GLeeLink_GL_VERSION_1_2();
+    }
+    if (__GLeeCheckExtension("GL_ARB_imaging", &extensionNames) )
+    {
+        _GLEE_ARB_imaging = GL_TRUE;
+        __GLeeLink_GL_ARB_imaging();
+    }
+    if (version>=259)
+    {
+        _GLEE_VERSION_1_3 = GL_TRUE;
+        __GLeeLink_GL_VERSION_1_3();
+    }
+    if (version>=260)
+    {
+        _GLEE_VERSION_1_4 = GL_TRUE;
+        __GLeeLink_GL_VERSION_1_4();
+    }
+    if (version>=261)
+    {
+        _GLEE_VERSION_1_5 = GL_TRUE;
+        __GLeeLink_GL_VERSION_1_5();
+    }
+    if (version>=512)
+    {
+        _GLEE_VERSION_2_0 = GL_TRUE;
+        __GLeeLink_GL_VERSION_2_0();
+    }
+    if (version>=513)
+    {
+        _GLEE_VERSION_2_1 = GL_TRUE;
+        __GLeeLink_GL_VERSION_2_1();
+    }
+    if (__GLeeCheckExtension("GL_ARB_multitexture", &extensionNames) )
+    {
+        _GLEE_ARB_multitexture = GL_TRUE;
+        __GLeeLink_GL_ARB_multitexture();
+    }
+    if (__GLeeCheckExtension("GL_ARB_transpose_matrix", &extensionNames) )
+    {
+        _GLEE_ARB_transpose_matrix = GL_TRUE;
+        __GLeeLink_GL_ARB_transpose_matrix();
+    }
+    if (__GLeeCheckExtension("GL_ARB_multisample", &extensionNames) )
+    {
+        _GLEE_ARB_multisample = GL_TRUE;
+        __GLeeLink_GL_ARB_multisample();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_env_add", &extensionNames) )
+    {
+        _GLEE_ARB_texture_env_add = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_env_add();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_cube_map", &extensionNames) )
+    {
+        _GLEE_ARB_texture_cube_map = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_cube_map();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_compression", &extensionNames) )
+    {
+        _GLEE_ARB_texture_compression = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_compression();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_border_clamp", &extensionNames) )
+    {
+        _GLEE_ARB_texture_border_clamp = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_border_clamp();
+    }
+    if (__GLeeCheckExtension("GL_ARB_point_parameters", &extensionNames) )
+    {
+        _GLEE_ARB_point_parameters = GL_TRUE;
+        __GLeeLink_GL_ARB_point_parameters();
+    }
+    if (__GLeeCheckExtension("GL_ARB_vertex_blend", &extensionNames) )
+    {
+        _GLEE_ARB_vertex_blend = GL_TRUE;
+        __GLeeLink_GL_ARB_vertex_blend();
+    }
+    if (__GLeeCheckExtension("GL_ARB_matrix_palette", &extensionNames) )
+    {
+        _GLEE_ARB_matrix_palette = GL_TRUE;
+        __GLeeLink_GL_ARB_matrix_palette();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_env_combine", &extensionNames) )
+    {
+        _GLEE_ARB_texture_env_combine = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_env_combine();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_env_crossbar", &extensionNames) )
+    {
+        _GLEE_ARB_texture_env_crossbar = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_env_crossbar();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_env_dot3", &extensionNames) )
+    {
+        _GLEE_ARB_texture_env_dot3 = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_env_dot3();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_mirrored_repeat", &extensionNames) )
+    {
+        _GLEE_ARB_texture_mirrored_repeat = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_mirrored_repeat();
+    }
+    if (__GLeeCheckExtension("GL_ARB_depth_texture", &extensionNames) )
+    {
+        _GLEE_ARB_depth_texture = GL_TRUE;
+        __GLeeLink_GL_ARB_depth_texture();
+    }
+    if (__GLeeCheckExtension("GL_ARB_shadow", &extensionNames) )
+    {
+        _GLEE_ARB_shadow = GL_TRUE;
+        __GLeeLink_GL_ARB_shadow();
+    }
+    if (__GLeeCheckExtension("GL_ARB_shadow_ambient", &extensionNames) )
+    {
+        _GLEE_ARB_shadow_ambient = GL_TRUE;
+        __GLeeLink_GL_ARB_shadow_ambient();
+    }
+    if (__GLeeCheckExtension("GL_ARB_window_pos", &extensionNames) )
+    {
+        _GLEE_ARB_window_pos = GL_TRUE;
+        __GLeeLink_GL_ARB_window_pos();
+    }
+    if (__GLeeCheckExtension("GL_ARB_vertex_program", &extensionNames) )
+    {
+        _GLEE_ARB_vertex_program = GL_TRUE;
+        __GLeeLink_GL_ARB_vertex_program();
+    }
+    if (__GLeeCheckExtension("GL_ARB_fragment_program", &extensionNames) )
+    {
+        _GLEE_ARB_fragment_program = GL_TRUE;
+        __GLeeLink_GL_ARB_fragment_program();
+    }
+    if (__GLeeCheckExtension("GL_ARB_vertex_buffer_object", &extensionNames) )
+    {
+        _GLEE_ARB_vertex_buffer_object = GL_TRUE;
+        __GLeeLink_GL_ARB_vertex_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_ARB_occlusion_query", &extensionNames) )
+    {
+        _GLEE_ARB_occlusion_query = GL_TRUE;
+        __GLeeLink_GL_ARB_occlusion_query();
+    }
+    if (__GLeeCheckExtension("GL_ARB_shader_objects", &extensionNames) )
+    {
+        _GLEE_ARB_shader_objects = GL_TRUE;
+        __GLeeLink_GL_ARB_shader_objects();
+    }
+    if (__GLeeCheckExtension("GL_ARB_vertex_shader", &extensionNames) )
+    {
+        _GLEE_ARB_vertex_shader = GL_TRUE;
+        __GLeeLink_GL_ARB_vertex_shader();
+    }
+    if (__GLeeCheckExtension("GL_ARB_fragment_shader", &extensionNames) )
+    {
+        _GLEE_ARB_fragment_shader = GL_TRUE;
+        __GLeeLink_GL_ARB_fragment_shader();
+    }
+    if (__GLeeCheckExtension("GL_ARB_shading_language_100", &extensionNames) )
+    {
+        _GLEE_ARB_shading_language_100 = GL_TRUE;
+        __GLeeLink_GL_ARB_shading_language_100();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_non_power_of_two", &extensionNames) )
+    {
+        _GLEE_ARB_texture_non_power_of_two = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_non_power_of_two();
+    }
+    if (__GLeeCheckExtension("GL_ARB_point_sprite", &extensionNames) )
+    {
+        _GLEE_ARB_point_sprite = GL_TRUE;
+        __GLeeLink_GL_ARB_point_sprite();
+    }
+    if (__GLeeCheckExtension("GL_ARB_fragment_program_shadow", &extensionNames) )
+    {
+        _GLEE_ARB_fragment_program_shadow = GL_TRUE;
+        __GLeeLink_GL_ARB_fragment_program_shadow();
+    }
+    if (__GLeeCheckExtension("GL_ARB_draw_buffers", &extensionNames) )
+    {
+        _GLEE_ARB_draw_buffers = GL_TRUE;
+        __GLeeLink_GL_ARB_draw_buffers();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_rectangle", &extensionNames) )
+    {
+        _GLEE_ARB_texture_rectangle = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_rectangle();
+    }
+    if (__GLeeCheckExtension("GL_ARB_color_buffer_float", &extensionNames) )
+    {
+        _GLEE_ARB_color_buffer_float = GL_TRUE;
+        __GLeeLink_GL_ARB_color_buffer_float();
+    }
+    if (__GLeeCheckExtension("GL_ARB_half_float_pixel", &extensionNames) )
+    {
+        _GLEE_ARB_half_float_pixel = GL_TRUE;
+        __GLeeLink_GL_ARB_half_float_pixel();
+    }
+    if (__GLeeCheckExtension("GL_ARB_texture_float", &extensionNames) )
+    {
+        _GLEE_ARB_texture_float = GL_TRUE;
+        __GLeeLink_GL_ARB_texture_float();
+    }
+    if (__GLeeCheckExtension("GL_ARB_pixel_buffer_object", &extensionNames) )
+    {
+        _GLEE_ARB_pixel_buffer_object = GL_TRUE;
+        __GLeeLink_GL_ARB_pixel_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_EXT_abgr", &extensionNames) )
+    {
+        _GLEE_EXT_abgr = GL_TRUE;
+        __GLeeLink_GL_EXT_abgr();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_color", &extensionNames) )
+    {
+        _GLEE_EXT_blend_color = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_color();
+    }
+    if (__GLeeCheckExtension("GL_EXT_polygon_offset", &extensionNames) )
+    {
+        _GLEE_EXT_polygon_offset = GL_TRUE;
+        __GLeeLink_GL_EXT_polygon_offset();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture", &extensionNames) )
+    {
+        _GLEE_EXT_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture3D", &extensionNames) )
+    {
+        _GLEE_EXT_texture3D = GL_TRUE;
+        __GLeeLink_GL_EXT_texture3D();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_filter4", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_filter4 = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_filter4();
+    }
+    if (__GLeeCheckExtension("GL_EXT_subtexture", &extensionNames) )
+    {
+        _GLEE_EXT_subtexture = GL_TRUE;
+        __GLeeLink_GL_EXT_subtexture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_copy_texture", &extensionNames) )
+    {
+        _GLEE_EXT_copy_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_copy_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_histogram", &extensionNames) )
+    {
+        _GLEE_EXT_histogram = GL_TRUE;
+        __GLeeLink_GL_EXT_histogram();
+    }
+    if (__GLeeCheckExtension("GL_EXT_convolution", &extensionNames) )
+    {
+        _GLEE_EXT_convolution = GL_TRUE;
+        __GLeeLink_GL_EXT_convolution();
+    }
+    if (__GLeeCheckExtension("GL_SGI_color_matrix", &extensionNames) )
+    {
+        _GLEE_SGI_color_matrix = GL_TRUE;
+        __GLeeLink_GL_SGI_color_matrix();
+    }
+    if (__GLeeCheckExtension("GL_SGI_color_table", &extensionNames) )
+    {
+        _GLEE_SGI_color_table = GL_TRUE;
+        __GLeeLink_GL_SGI_color_table();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_pixel_texture", &extensionNames) )
+    {
+        _GLEE_SGIS_pixel_texture = GL_TRUE;
+        __GLeeLink_GL_SGIS_pixel_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_pixel_texture", &extensionNames) )
+    {
+        _GLEE_SGIX_pixel_texture = GL_TRUE;
+        __GLeeLink_GL_SGIX_pixel_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture4D", &extensionNames) )
+    {
+        _GLEE_SGIS_texture4D = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture4D();
+    }
+    if (__GLeeCheckExtension("GL_SGI_texture_color_table", &extensionNames) )
+    {
+        _GLEE_SGI_texture_color_table = GL_TRUE;
+        __GLeeLink_GL_SGI_texture_color_table();
+    }
+    if (__GLeeCheckExtension("GL_EXT_cmyka", &extensionNames) )
+    {
+        _GLEE_EXT_cmyka = GL_TRUE;
+        __GLeeLink_GL_EXT_cmyka();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_object", &extensionNames) )
+    {
+        _GLEE_EXT_texture_object = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_object();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_detail_texture", &extensionNames) )
+    {
+        _GLEE_SGIS_detail_texture = GL_TRUE;
+        __GLeeLink_GL_SGIS_detail_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_sharpen_texture", &extensionNames) )
+    {
+        _GLEE_SGIS_sharpen_texture = GL_TRUE;
+        __GLeeLink_GL_SGIS_sharpen_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_packed_pixels", &extensionNames) )
+    {
+        _GLEE_EXT_packed_pixels = GL_TRUE;
+        __GLeeLink_GL_EXT_packed_pixels();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_lod", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_lod = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_lod();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_multisample", &extensionNames) )
+    {
+        _GLEE_SGIS_multisample = GL_TRUE;
+        __GLeeLink_GL_SGIS_multisample();
+    }
+    if (__GLeeCheckExtension("GL_EXT_rescale_normal", &extensionNames) )
+    {
+        _GLEE_EXT_rescale_normal = GL_TRUE;
+        __GLeeLink_GL_EXT_rescale_normal();
+    }
+    if (__GLeeCheckExtension("GL_EXT_vertex_array", &extensionNames) )
+    {
+        _GLEE_EXT_vertex_array = GL_TRUE;
+        __GLeeLink_GL_EXT_vertex_array();
+    }
+    if (__GLeeCheckExtension("GL_EXT_misc_attribute", &extensionNames) )
+    {
+        _GLEE_EXT_misc_attribute = GL_TRUE;
+        __GLeeLink_GL_EXT_misc_attribute();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_generate_mipmap", &extensionNames) )
+    {
+        _GLEE_SGIS_generate_mipmap = GL_TRUE;
+        __GLeeLink_GL_SGIS_generate_mipmap();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_clipmap", &extensionNames) )
+    {
+        _GLEE_SGIX_clipmap = GL_TRUE;
+        __GLeeLink_GL_SGIX_clipmap();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_shadow", &extensionNames) )
+    {
+        _GLEE_SGIX_shadow = GL_TRUE;
+        __GLeeLink_GL_SGIX_shadow();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_edge_clamp", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_edge_clamp = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_edge_clamp();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_border_clamp", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_border_clamp = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_border_clamp();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_minmax", &extensionNames) )
+    {
+        _GLEE_EXT_blend_minmax = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_minmax();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_subtract", &extensionNames) )
+    {
+        _GLEE_EXT_blend_subtract = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_subtract();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_logic_op", &extensionNames) )
+    {
+        _GLEE_EXT_blend_logic_op = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_logic_op();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_interlace", &extensionNames) )
+    {
+        _GLEE_SGIX_interlace = GL_TRUE;
+        __GLeeLink_GL_SGIX_interlace();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_pixel_tiles", &extensionNames) )
+    {
+        _GLEE_SGIX_pixel_tiles = GL_TRUE;
+        __GLeeLink_GL_SGIX_pixel_tiles();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_select", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_select = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_select();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_sprite", &extensionNames) )
+    {
+        _GLEE_SGIX_sprite = GL_TRUE;
+        __GLeeLink_GL_SGIX_sprite();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_multi_buffer", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_multi_buffer = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_multi_buffer();
+    }
+    if (__GLeeCheckExtension("GL_EXT_point_parameters", &extensionNames) )
+    {
+        _GLEE_EXT_point_parameters = GL_TRUE;
+        __GLeeLink_GL_EXT_point_parameters();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_point_parameters", &extensionNames) )
+    {
+        _GLEE_SGIS_point_parameters = GL_TRUE;
+        __GLeeLink_GL_SGIS_point_parameters();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_instruments", &extensionNames) )
+    {
+        _GLEE_SGIX_instruments = GL_TRUE;
+        __GLeeLink_GL_SGIX_instruments();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_scale_bias", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_scale_bias = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_scale_bias();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_framezoom", &extensionNames) )
+    {
+        _GLEE_SGIX_framezoom = GL_TRUE;
+        __GLeeLink_GL_SGIX_framezoom();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_tag_sample_buffer", &extensionNames) )
+    {
+        _GLEE_SGIX_tag_sample_buffer = GL_TRUE;
+        __GLeeLink_GL_SGIX_tag_sample_buffer();
+    }
+    if (__GLeeCheckExtension("GL_FfdMaskSGIX", &extensionNames) )
+    {
+        _GLEE_FfdMaskSGIX = GL_TRUE;
+        __GLeeLink_GL_FfdMaskSGIX();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_polynomial_ffd", &extensionNames) )
+    {
+        _GLEE_SGIX_polynomial_ffd = GL_TRUE;
+        __GLeeLink_GL_SGIX_polynomial_ffd();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_reference_plane", &extensionNames) )
+    {
+        _GLEE_SGIX_reference_plane = GL_TRUE;
+        __GLeeLink_GL_SGIX_reference_plane();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_flush_raster", &extensionNames) )
+    {
+        _GLEE_SGIX_flush_raster = GL_TRUE;
+        __GLeeLink_GL_SGIX_flush_raster();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_depth_texture", &extensionNames) )
+    {
+        _GLEE_SGIX_depth_texture = GL_TRUE;
+        __GLeeLink_GL_SGIX_depth_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_fog_function", &extensionNames) )
+    {
+        _GLEE_SGIS_fog_function = GL_TRUE;
+        __GLeeLink_GL_SGIS_fog_function();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_fog_offset", &extensionNames) )
+    {
+        _GLEE_SGIX_fog_offset = GL_TRUE;
+        __GLeeLink_GL_SGIX_fog_offset();
+    }
+    if (__GLeeCheckExtension("GL_HP_image_transform", &extensionNames) )
+    {
+        _GLEE_HP_image_transform = GL_TRUE;
+        __GLeeLink_GL_HP_image_transform();
+    }
+    if (__GLeeCheckExtension("GL_HP_convolution_border_modes", &extensionNames) )
+    {
+        _GLEE_HP_convolution_border_modes = GL_TRUE;
+        __GLeeLink_GL_HP_convolution_border_modes();
+    }
+    if (__GLeeCheckExtension("GL_INGR_palette_buffer", &extensionNames) )
+    {
+        _GLEE_INGR_palette_buffer = GL_TRUE;
+        __GLeeLink_GL_INGR_palette_buffer();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_add_env", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_add_env = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_add_env();
+    }
+    if (__GLeeCheckExtension("GL_EXT_color_subtable", &extensionNames) )
+    {
+        _GLEE_EXT_color_subtable = GL_TRUE;
+        __GLeeLink_GL_EXT_color_subtable();
+    }
+    if (__GLeeCheckExtension("GL_PGI_vertex_hints", &extensionNames) )
+    {
+        _GLEE_PGI_vertex_hints = GL_TRUE;
+        __GLeeLink_GL_PGI_vertex_hints();
+    }
+    if (__GLeeCheckExtension("GL_PGI_misc_hints", &extensionNames) )
+    {
+        _GLEE_PGI_misc_hints = GL_TRUE;
+        __GLeeLink_GL_PGI_misc_hints();
+    }
+    if (__GLeeCheckExtension("GL_EXT_paletted_texture", &extensionNames) )
+    {
+        _GLEE_EXT_paletted_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_paletted_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_clip_volume_hint", &extensionNames) )
+    {
+        _GLEE_EXT_clip_volume_hint = GL_TRUE;
+        __GLeeLink_GL_EXT_clip_volume_hint();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_list_priority", &extensionNames) )
+    {
+        _GLEE_SGIX_list_priority = GL_TRUE;
+        __GLeeLink_GL_SGIX_list_priority();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_ir_instrument1", &extensionNames) )
+    {
+        _GLEE_SGIX_ir_instrument1 = GL_TRUE;
+        __GLeeLink_GL_SGIX_ir_instrument1();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_calligraphic_fragment", &extensionNames) )
+    {
+        _GLEE_SGIX_calligraphic_fragment = GL_TRUE;
+        __GLeeLink_GL_SGIX_calligraphic_fragment();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_lod_bias", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_lod_bias = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_lod_bias();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_shadow_ambient", &extensionNames) )
+    {
+        _GLEE_SGIX_shadow_ambient = GL_TRUE;
+        __GLeeLink_GL_SGIX_shadow_ambient();
+    }
+    if (__GLeeCheckExtension("GL_EXT_index_texture", &extensionNames) )
+    {
+        _GLEE_EXT_index_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_index_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_index_material", &extensionNames) )
+    {
+        _GLEE_EXT_index_material = GL_TRUE;
+        __GLeeLink_GL_EXT_index_material();
+    }
+    if (__GLeeCheckExtension("GL_EXT_index_func", &extensionNames) )
+    {
+        _GLEE_EXT_index_func = GL_TRUE;
+        __GLeeLink_GL_EXT_index_func();
+    }
+    if (__GLeeCheckExtension("GL_EXT_index_array_formats", &extensionNames) )
+    {
+        _GLEE_EXT_index_array_formats = GL_TRUE;
+        __GLeeLink_GL_EXT_index_array_formats();
+    }
+    if (__GLeeCheckExtension("GL_EXT_compiled_vertex_array", &extensionNames) )
+    {
+        _GLEE_EXT_compiled_vertex_array = GL_TRUE;
+        __GLeeLink_GL_EXT_compiled_vertex_array();
+    }
+    if (__GLeeCheckExtension("GL_EXT_cull_vertex", &extensionNames) )
+    {
+        _GLEE_EXT_cull_vertex = GL_TRUE;
+        __GLeeLink_GL_EXT_cull_vertex();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_ycrcb", &extensionNames) )
+    {
+        _GLEE_SGIX_ycrcb = GL_TRUE;
+        __GLeeLink_GL_SGIX_ycrcb();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_fragment_lighting", &extensionNames) )
+    {
+        _GLEE_SGIX_fragment_lighting = GL_TRUE;
+        __GLeeLink_GL_SGIX_fragment_lighting();
+    }
+    if (__GLeeCheckExtension("GL_IBM_rasterpos_clip", &extensionNames) )
+    {
+        _GLEE_IBM_rasterpos_clip = GL_TRUE;
+        __GLeeLink_GL_IBM_rasterpos_clip();
+    }
+    if (__GLeeCheckExtension("GL_HP_texture_lighting", &extensionNames) )
+    {
+        _GLEE_HP_texture_lighting = GL_TRUE;
+        __GLeeLink_GL_HP_texture_lighting();
+    }
+    if (__GLeeCheckExtension("GL_EXT_draw_range_elements", &extensionNames) )
+    {
+        _GLEE_EXT_draw_range_elements = GL_TRUE;
+        __GLeeLink_GL_EXT_draw_range_elements();
+    }
+    if (__GLeeCheckExtension("GL_WIN_phong_shading", &extensionNames) )
+    {
+        _GLEE_WIN_phong_shading = GL_TRUE;
+        __GLeeLink_GL_WIN_phong_shading();
+    }
+    if (__GLeeCheckExtension("GL_WIN_specular_fog", &extensionNames) )
+    {
+        _GLEE_WIN_specular_fog = GL_TRUE;
+        __GLeeLink_GL_WIN_specular_fog();
+    }
+    if (__GLeeCheckExtension("GL_EXT_light_texture", &extensionNames) )
+    {
+        _GLEE_EXT_light_texture = GL_TRUE;
+        __GLeeLink_GL_EXT_light_texture();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_blend_alpha_minmax", &extensionNames) )
+    {
+        _GLEE_SGIX_blend_alpha_minmax = GL_TRUE;
+        __GLeeLink_GL_SGIX_blend_alpha_minmax();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_impact_pixel_texture", &extensionNames) )
+    {
+        _GLEE_SGIX_impact_pixel_texture = GL_TRUE;
+        __GLeeLink_GL_SGIX_impact_pixel_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_bgra", &extensionNames) )
+    {
+        _GLEE_EXT_bgra = GL_TRUE;
+        __GLeeLink_GL_EXT_bgra();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_async", &extensionNames) )
+    {
+        _GLEE_SGIX_async = GL_TRUE;
+        __GLeeLink_GL_SGIX_async();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_async_pixel", &extensionNames) )
+    {
+        _GLEE_SGIX_async_pixel = GL_TRUE;
+        __GLeeLink_GL_SGIX_async_pixel();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_async_histogram", &extensionNames) )
+    {
+        _GLEE_SGIX_async_histogram = GL_TRUE;
+        __GLeeLink_GL_SGIX_async_histogram();
+    }
+    if (__GLeeCheckExtension("GL_INTEL_texture_scissor", &extensionNames) )
+    {
+        _GLEE_INTEL_texture_scissor = GL_TRUE;
+        __GLeeLink_GL_INTEL_texture_scissor();
+    }
+    if (__GLeeCheckExtension("GL_INTEL_parallel_arrays", &extensionNames) )
+    {
+        _GLEE_INTEL_parallel_arrays = GL_TRUE;
+        __GLeeLink_GL_INTEL_parallel_arrays();
+    }
+    if (__GLeeCheckExtension("GL_HP_occlusion_test", &extensionNames) )
+    {
+        _GLEE_HP_occlusion_test = GL_TRUE;
+        __GLeeLink_GL_HP_occlusion_test();
+    }
+    if (__GLeeCheckExtension("GL_EXT_pixel_transform", &extensionNames) )
+    {
+        _GLEE_EXT_pixel_transform = GL_TRUE;
+        __GLeeLink_GL_EXT_pixel_transform();
+    }
+    if (__GLeeCheckExtension("GL_EXT_pixel_transform_color_table", &extensionNames) )
+    {
+        _GLEE_EXT_pixel_transform_color_table = GL_TRUE;
+        __GLeeLink_GL_EXT_pixel_transform_color_table();
+    }
+    if (__GLeeCheckExtension("GL_EXT_shared_texture_palette", &extensionNames) )
+    {
+        _GLEE_EXT_shared_texture_palette = GL_TRUE;
+        __GLeeLink_GL_EXT_shared_texture_palette();
+    }
+    if (__GLeeCheckExtension("GL_EXT_separate_specular_color", &extensionNames) )
+    {
+        _GLEE_EXT_separate_specular_color = GL_TRUE;
+        __GLeeLink_GL_EXT_separate_specular_color();
+    }
+    if (__GLeeCheckExtension("GL_EXT_secondary_color", &extensionNames) )
+    {
+        _GLEE_EXT_secondary_color = GL_TRUE;
+        __GLeeLink_GL_EXT_secondary_color();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_perturb_normal", &extensionNames) )
+    {
+        _GLEE_EXT_texture_perturb_normal = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_perturb_normal();
+    }
+    if (__GLeeCheckExtension("GL_EXT_multi_draw_arrays", &extensionNames) )
+    {
+        _GLEE_EXT_multi_draw_arrays = GL_TRUE;
+        __GLeeLink_GL_EXT_multi_draw_arrays();
+    }
+    if (__GLeeCheckExtension("GL_EXT_fog_coord", &extensionNames) )
+    {
+        _GLEE_EXT_fog_coord = GL_TRUE;
+        __GLeeLink_GL_EXT_fog_coord();
+    }
+    if (__GLeeCheckExtension("GL_REND_screen_coordinates", &extensionNames) )
+    {
+        _GLEE_REND_screen_coordinates = GL_TRUE;
+        __GLeeLink_GL_REND_screen_coordinates();
+    }
+    if (__GLeeCheckExtension("GL_EXT_coordinate_frame", &extensionNames) )
+    {
+        _GLEE_EXT_coordinate_frame = GL_TRUE;
+        __GLeeLink_GL_EXT_coordinate_frame();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_env_combine", &extensionNames) )
+    {
+        _GLEE_EXT_texture_env_combine = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_env_combine();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_specular_vector", &extensionNames) )
+    {
+        _GLEE_APPLE_specular_vector = GL_TRUE;
+        __GLeeLink_GL_APPLE_specular_vector();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_transform_hint", &extensionNames) )
+    {
+        _GLEE_APPLE_transform_hint = GL_TRUE;
+        __GLeeLink_GL_APPLE_transform_hint();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_fog_scale", &extensionNames) )
+    {
+        _GLEE_SGIX_fog_scale = GL_TRUE;
+        __GLeeLink_GL_SGIX_fog_scale();
+    }
+    if (__GLeeCheckExtension("GL_SUNX_constant_data", &extensionNames) )
+    {
+        _GLEE_SUNX_constant_data = GL_TRUE;
+        __GLeeLink_GL_SUNX_constant_data();
+    }
+    if (__GLeeCheckExtension("GL_SUN_global_alpha", &extensionNames) )
+    {
+        _GLEE_SUN_global_alpha = GL_TRUE;
+        __GLeeLink_GL_SUN_global_alpha();
+    }
+    if (__GLeeCheckExtension("GL_SUN_triangle_list", &extensionNames) )
+    {
+        _GLEE_SUN_triangle_list = GL_TRUE;
+        __GLeeLink_GL_SUN_triangle_list();
+    }
+    if (__GLeeCheckExtension("GL_SUN_vertex", &extensionNames) )
+    {
+        _GLEE_SUN_vertex = GL_TRUE;
+        __GLeeLink_GL_SUN_vertex();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_func_separate", &extensionNames) )
+    {
+        _GLEE_EXT_blend_func_separate = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_func_separate();
+    }
+    if (__GLeeCheckExtension("GL_INGR_color_clamp", &extensionNames) )
+    {
+        _GLEE_INGR_color_clamp = GL_TRUE;
+        __GLeeLink_GL_INGR_color_clamp();
+    }
+    if (__GLeeCheckExtension("GL_INGR_interlace_read", &extensionNames) )
+    {
+        _GLEE_INGR_interlace_read = GL_TRUE;
+        __GLeeLink_GL_INGR_interlace_read();
+    }
+    if (__GLeeCheckExtension("GL_EXT_stencil_wrap", &extensionNames) )
+    {
+        _GLEE_EXT_stencil_wrap = GL_TRUE;
+        __GLeeLink_GL_EXT_stencil_wrap();
+    }
+    if (__GLeeCheckExtension("GL_EXT_422_pixels", &extensionNames) )
+    {
+        _GLEE_EXT_422_pixels = GL_TRUE;
+        __GLeeLink_GL_EXT_422_pixels();
+    }
+    if (__GLeeCheckExtension("GL_NV_texgen_reflection", &extensionNames) )
+    {
+        _GLEE_NV_texgen_reflection = GL_TRUE;
+        __GLeeLink_GL_NV_texgen_reflection();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_cube_map", &extensionNames) )
+    {
+        _GLEE_EXT_texture_cube_map = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_cube_map();
+    }
+    if (__GLeeCheckExtension("GL_SUN_convolution_border_modes", &extensionNames) )
+    {
+        _GLEE_SUN_convolution_border_modes = GL_TRUE;
+        __GLeeLink_GL_SUN_convolution_border_modes();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_env_add", &extensionNames) )
+    {
+        _GLEE_EXT_texture_env_add = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_env_add();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_lod_bias", &extensionNames) )
+    {
+        _GLEE_EXT_texture_lod_bias = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_lod_bias();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_filter_anisotropic", &extensionNames) )
+    {
+        _GLEE_EXT_texture_filter_anisotropic = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_filter_anisotropic();
+    }
+    if (__GLeeCheckExtension("GL_EXT_vertex_weighting", &extensionNames) )
+    {
+        _GLEE_EXT_vertex_weighting = GL_TRUE;
+        __GLeeLink_GL_EXT_vertex_weighting();
+    }
+    if (__GLeeCheckExtension("GL_NV_light_max_exponent", &extensionNames) )
+    {
+        _GLEE_NV_light_max_exponent = GL_TRUE;
+        __GLeeLink_GL_NV_light_max_exponent();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_array_range", &extensionNames) )
+    {
+        _GLEE_NV_vertex_array_range = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_array_range();
+    }
+    if (__GLeeCheckExtension("GL_NV_register_combiners", &extensionNames) )
+    {
+        _GLEE_NV_register_combiners = GL_TRUE;
+        __GLeeLink_GL_NV_register_combiners();
+    }
+    if (__GLeeCheckExtension("GL_NV_fog_distance", &extensionNames) )
+    {
+        _GLEE_NV_fog_distance = GL_TRUE;
+        __GLeeLink_GL_NV_fog_distance();
+    }
+    if (__GLeeCheckExtension("GL_NV_texgen_emboss", &extensionNames) )
+    {
+        _GLEE_NV_texgen_emboss = GL_TRUE;
+        __GLeeLink_GL_NV_texgen_emboss();
+    }
+    if (__GLeeCheckExtension("GL_NV_blend_square", &extensionNames) )
+    {
+        _GLEE_NV_blend_square = GL_TRUE;
+        __GLeeLink_GL_NV_blend_square();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_env_combine4", &extensionNames) )
+    {
+        _GLEE_NV_texture_env_combine4 = GL_TRUE;
+        __GLeeLink_GL_NV_texture_env_combine4();
+    }
+    if (__GLeeCheckExtension("GL_MESA_resize_buffers", &extensionNames) )
+    {
+        _GLEE_MESA_resize_buffers = GL_TRUE;
+        __GLeeLink_GL_MESA_resize_buffers();
+    }
+    if (__GLeeCheckExtension("GL_MESA_window_pos", &extensionNames) )
+    {
+        _GLEE_MESA_window_pos = GL_TRUE;
+        __GLeeLink_GL_MESA_window_pos();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_compression_s3tc", &extensionNames) )
+    {
+        _GLEE_EXT_texture_compression_s3tc = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_compression_s3tc();
+    }
+    if (__GLeeCheckExtension("GL_IBM_cull_vertex", &extensionNames) )
+    {
+        _GLEE_IBM_cull_vertex = GL_TRUE;
+        __GLeeLink_GL_IBM_cull_vertex();
+    }
+    if (__GLeeCheckExtension("GL_IBM_multimode_draw_arrays", &extensionNames) )
+    {
+        _GLEE_IBM_multimode_draw_arrays = GL_TRUE;
+        __GLeeLink_GL_IBM_multimode_draw_arrays();
+    }
+    if (__GLeeCheckExtension("GL_IBM_vertex_array_lists", &extensionNames) )
+    {
+        _GLEE_IBM_vertex_array_lists = GL_TRUE;
+        __GLeeLink_GL_IBM_vertex_array_lists();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_subsample", &extensionNames) )
+    {
+        _GLEE_SGIX_subsample = GL_TRUE;
+        __GLeeLink_GL_SGIX_subsample();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_ycrcb_subsample", &extensionNames) )
+    {
+        _GLEE_SGIX_ycrcb_subsample = GL_TRUE;
+        __GLeeLink_GL_SGIX_ycrcb_subsample();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_ycrcba", &extensionNames) )
+    {
+        _GLEE_SGIX_ycrcba = GL_TRUE;
+        __GLeeLink_GL_SGIX_ycrcba();
+    }
+    if (__GLeeCheckExtension("GL_SGI_depth_pass_instrument", &extensionNames) )
+    {
+        _GLEE_SGI_depth_pass_instrument = GL_TRUE;
+        __GLeeLink_GL_SGI_depth_pass_instrument();
+    }
+    if (__GLeeCheckExtension("GL_3DFX_texture_compression_FXT1", &extensionNames) )
+    {
+        _GLEE_3DFX_texture_compression_FXT1 = GL_TRUE;
+        __GLeeLink_GL_3DFX_texture_compression_FXT1();
+    }
+    if (__GLeeCheckExtension("GL_3DFX_multisample", &extensionNames) )
+    {
+        _GLEE_3DFX_multisample = GL_TRUE;
+        __GLeeLink_GL_3DFX_multisample();
+    }
+    if (__GLeeCheckExtension("GL_3DFX_tbuffer", &extensionNames) )
+    {
+        _GLEE_3DFX_tbuffer = GL_TRUE;
+        __GLeeLink_GL_3DFX_tbuffer();
+    }
+    if (__GLeeCheckExtension("GL_EXT_multisample", &extensionNames) )
+    {
+        _GLEE_EXT_multisample = GL_TRUE;
+        __GLeeLink_GL_EXT_multisample();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_vertex_preclip", &extensionNames) )
+    {
+        _GLEE_SGIX_vertex_preclip = GL_TRUE;
+        __GLeeLink_GL_SGIX_vertex_preclip();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_convolution_accuracy", &extensionNames) )
+    {
+        _GLEE_SGIX_convolution_accuracy = GL_TRUE;
+        __GLeeLink_GL_SGIX_convolution_accuracy();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_resample", &extensionNames) )
+    {
+        _GLEE_SGIX_resample = GL_TRUE;
+        __GLeeLink_GL_SGIX_resample();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_point_line_texgen", &extensionNames) )
+    {
+        _GLEE_SGIS_point_line_texgen = GL_TRUE;
+        __GLeeLink_GL_SGIS_point_line_texgen();
+    }
+    if (__GLeeCheckExtension("GL_SGIS_texture_color_mask", &extensionNames) )
+    {
+        _GLEE_SGIS_texture_color_mask = GL_TRUE;
+        __GLeeLink_GL_SGIS_texture_color_mask();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_env_dot3", &extensionNames) )
+    {
+        _GLEE_EXT_texture_env_dot3 = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_env_dot3();
+    }
+    if (__GLeeCheckExtension("GL_ATI_texture_mirror_once", &extensionNames) )
+    {
+        _GLEE_ATI_texture_mirror_once = GL_TRUE;
+        __GLeeLink_GL_ATI_texture_mirror_once();
+    }
+    if (__GLeeCheckExtension("GL_NV_fence", &extensionNames) )
+    {
+        _GLEE_NV_fence = GL_TRUE;
+        __GLeeLink_GL_NV_fence();
+    }
+    if (__GLeeCheckExtension("GL_IBM_texture_mirrored_repeat", &extensionNames) )
+    {
+        _GLEE_IBM_texture_mirrored_repeat = GL_TRUE;
+        __GLeeLink_GL_IBM_texture_mirrored_repeat();
+    }
+    if (__GLeeCheckExtension("GL_NV_evaluators", &extensionNames) )
+    {
+        _GLEE_NV_evaluators = GL_TRUE;
+        __GLeeLink_GL_NV_evaluators();
+    }
+    if (__GLeeCheckExtension("GL_NV_packed_depth_stencil", &extensionNames) )
+    {
+        _GLEE_NV_packed_depth_stencil = GL_TRUE;
+        __GLeeLink_GL_NV_packed_depth_stencil();
+    }
+    if (__GLeeCheckExtension("GL_NV_register_combiners2", &extensionNames) )
+    {
+        _GLEE_NV_register_combiners2 = GL_TRUE;
+        __GLeeLink_GL_NV_register_combiners2();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_compression_vtc", &extensionNames) )
+    {
+        _GLEE_NV_texture_compression_vtc = GL_TRUE;
+        __GLeeLink_GL_NV_texture_compression_vtc();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_rectangle", &extensionNames) )
+    {
+        _GLEE_NV_texture_rectangle = GL_TRUE;
+        __GLeeLink_GL_NV_texture_rectangle();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_shader", &extensionNames) )
+    {
+        _GLEE_NV_texture_shader = GL_TRUE;
+        __GLeeLink_GL_NV_texture_shader();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_shader2", &extensionNames) )
+    {
+        _GLEE_NV_texture_shader2 = GL_TRUE;
+        __GLeeLink_GL_NV_texture_shader2();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_array_range2", &extensionNames) )
+    {
+        _GLEE_NV_vertex_array_range2 = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_array_range2();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_coordinate_clamp", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_coordinate_clamp = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_coordinate_clamp();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_scalebias_hint", &extensionNames) )
+    {
+        _GLEE_SGIX_scalebias_hint = GL_TRUE;
+        __GLeeLink_GL_SGIX_scalebias_hint();
+    }
+    if (__GLeeCheckExtension("GL_OML_interlace", &extensionNames) )
+    {
+        _GLEE_OML_interlace = GL_TRUE;
+        __GLeeLink_GL_OML_interlace();
+    }
+    if (__GLeeCheckExtension("GL_OML_subsample", &extensionNames) )
+    {
+        _GLEE_OML_subsample = GL_TRUE;
+        __GLeeLink_GL_OML_subsample();
+    }
+    if (__GLeeCheckExtension("GL_OML_resample", &extensionNames) )
+    {
+        _GLEE_OML_resample = GL_TRUE;
+        __GLeeLink_GL_OML_resample();
+    }
+    if (__GLeeCheckExtension("GL_NV_copy_depth_to_color", &extensionNames) )
+    {
+        _GLEE_NV_copy_depth_to_color = GL_TRUE;
+        __GLeeLink_GL_NV_copy_depth_to_color();
+    }
+    if (__GLeeCheckExtension("GL_ATI_envmap_bumpmap", &extensionNames) )
+    {
+        _GLEE_ATI_envmap_bumpmap = GL_TRUE;
+        __GLeeLink_GL_ATI_envmap_bumpmap();
+    }
+    if (__GLeeCheckExtension("GL_ATI_fragment_shader", &extensionNames) )
+    {
+        _GLEE_ATI_fragment_shader = GL_TRUE;
+        __GLeeLink_GL_ATI_fragment_shader();
+    }
+    if (__GLeeCheckExtension("GL_ATI_pn_triangles", &extensionNames) )
+    {
+        _GLEE_ATI_pn_triangles = GL_TRUE;
+        __GLeeLink_GL_ATI_pn_triangles();
+    }
+    if (__GLeeCheckExtension("GL_ATI_vertex_array_object", &extensionNames) )
+    {
+        _GLEE_ATI_vertex_array_object = GL_TRUE;
+        __GLeeLink_GL_ATI_vertex_array_object();
+    }
+    if (__GLeeCheckExtension("GL_EXT_vertex_shader", &extensionNames) )
+    {
+        _GLEE_EXT_vertex_shader = GL_TRUE;
+        __GLeeLink_GL_EXT_vertex_shader();
+    }
+    if (__GLeeCheckExtension("GL_ATI_vertex_streams", &extensionNames) )
+    {
+        _GLEE_ATI_vertex_streams = GL_TRUE;
+        __GLeeLink_GL_ATI_vertex_streams();
+    }
+    if (__GLeeCheckExtension("GL_ATI_element_array", &extensionNames) )
+    {
+        _GLEE_ATI_element_array = GL_TRUE;
+        __GLeeLink_GL_ATI_element_array();
+    }
+    if (__GLeeCheckExtension("GL_SUN_mesh_array", &extensionNames) )
+    {
+        _GLEE_SUN_mesh_array = GL_TRUE;
+        __GLeeLink_GL_SUN_mesh_array();
+    }
+    if (__GLeeCheckExtension("GL_SUN_slice_accum", &extensionNames) )
+    {
+        _GLEE_SUN_slice_accum = GL_TRUE;
+        __GLeeLink_GL_SUN_slice_accum();
+    }
+    if (__GLeeCheckExtension("GL_NV_multisample_filter_hint", &extensionNames) )
+    {
+        _GLEE_NV_multisample_filter_hint = GL_TRUE;
+        __GLeeLink_GL_NV_multisample_filter_hint();
+    }
+    if (__GLeeCheckExtension("GL_NV_depth_clamp", &extensionNames) )
+    {
+        _GLEE_NV_depth_clamp = GL_TRUE;
+        __GLeeLink_GL_NV_depth_clamp();
+    }
+    if (__GLeeCheckExtension("GL_NV_occlusion_query", &extensionNames) )
+    {
+        _GLEE_NV_occlusion_query = GL_TRUE;
+        __GLeeLink_GL_NV_occlusion_query();
+    }
+    if (__GLeeCheckExtension("GL_NV_point_sprite", &extensionNames) )
+    {
+        _GLEE_NV_point_sprite = GL_TRUE;
+        __GLeeLink_GL_NV_point_sprite();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_shader3", &extensionNames) )
+    {
+        _GLEE_NV_texture_shader3 = GL_TRUE;
+        __GLeeLink_GL_NV_texture_shader3();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program1_1", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program1_1 = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program1_1();
+    }
+    if (__GLeeCheckExtension("GL_EXT_shadow_funcs", &extensionNames) )
+    {
+        _GLEE_EXT_shadow_funcs = GL_TRUE;
+        __GLeeLink_GL_EXT_shadow_funcs();
+    }
+    if (__GLeeCheckExtension("GL_EXT_stencil_two_side", &extensionNames) )
+    {
+        _GLEE_EXT_stencil_two_side = GL_TRUE;
+        __GLeeLink_GL_EXT_stencil_two_side();
+    }
+    if (__GLeeCheckExtension("GL_ATI_text_fragment_shader", &extensionNames) )
+    {
+        _GLEE_ATI_text_fragment_shader = GL_TRUE;
+        __GLeeLink_GL_ATI_text_fragment_shader();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_client_storage", &extensionNames) )
+    {
+        _GLEE_APPLE_client_storage = GL_TRUE;
+        __GLeeLink_GL_APPLE_client_storage();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_element_array", &extensionNames) )
+    {
+        _GLEE_APPLE_element_array = GL_TRUE;
+        __GLeeLink_GL_APPLE_element_array();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_fence", &extensionNames) )
+    {
+        _GLEE_APPLE_fence = GL_TRUE;
+        __GLeeLink_GL_APPLE_fence();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_vertex_array_object", &extensionNames) )
+    {
+        _GLEE_APPLE_vertex_array_object = GL_TRUE;
+        __GLeeLink_GL_APPLE_vertex_array_object();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_vertex_array_range", &extensionNames) )
+    {
+        _GLEE_APPLE_vertex_array_range = GL_TRUE;
+        __GLeeLink_GL_APPLE_vertex_array_range();
+    }
+    if (__GLeeCheckExtension("GL_APPLE_ycbcr_422", &extensionNames) )
+    {
+        _GLEE_APPLE_ycbcr_422 = GL_TRUE;
+        __GLeeLink_GL_APPLE_ycbcr_422();
+    }
+    if (__GLeeCheckExtension("GL_S3_s3tc", &extensionNames) )
+    {
+        _GLEE_S3_s3tc = GL_TRUE;
+        __GLeeLink_GL_S3_s3tc();
+    }
+    if (__GLeeCheckExtension("GL_ATI_draw_buffers", &extensionNames) )
+    {
+        _GLEE_ATI_draw_buffers = GL_TRUE;
+        __GLeeLink_GL_ATI_draw_buffers();
+    }
+    if (__GLeeCheckExtension("GL_ATI_pixel_format_float", &extensionNames) )
+    {
+        _GLEE_ATI_pixel_format_float = GL_TRUE;
+        __GLeeLink_GL_ATI_pixel_format_float();
+    }
+    if (__GLeeCheckExtension("GL_ATI_texture_env_combine3", &extensionNames) )
+    {
+        _GLEE_ATI_texture_env_combine3 = GL_TRUE;
+        __GLeeLink_GL_ATI_texture_env_combine3();
+    }
+    if (__GLeeCheckExtension("GL_ATI_texture_float", &extensionNames) )
+    {
+        _GLEE_ATI_texture_float = GL_TRUE;
+        __GLeeLink_GL_ATI_texture_float();
+    }
+    if (__GLeeCheckExtension("GL_NV_float_buffer", &extensionNames) )
+    {
+        _GLEE_NV_float_buffer = GL_TRUE;
+        __GLeeLink_GL_NV_float_buffer();
+    }
+    if (__GLeeCheckExtension("GL_NV_fragment_program", &extensionNames) )
+    {
+        _GLEE_NV_fragment_program = GL_TRUE;
+        __GLeeLink_GL_NV_fragment_program();
+    }
+    if (__GLeeCheckExtension("GL_NV_half_float", &extensionNames) )
+    {
+        _GLEE_NV_half_float = GL_TRUE;
+        __GLeeLink_GL_NV_half_float();
+    }
+    if (__GLeeCheckExtension("GL_NV_pixel_data_range", &extensionNames) )
+    {
+        _GLEE_NV_pixel_data_range = GL_TRUE;
+        __GLeeLink_GL_NV_pixel_data_range();
+    }
+    if (__GLeeCheckExtension("GL_NV_primitive_restart", &extensionNames) )
+    {
+        _GLEE_NV_primitive_restart = GL_TRUE;
+        __GLeeLink_GL_NV_primitive_restart();
+    }
+    if (__GLeeCheckExtension("GL_NV_texture_expand_normal", &extensionNames) )
+    {
+        _GLEE_NV_texture_expand_normal = GL_TRUE;
+        __GLeeLink_GL_NV_texture_expand_normal();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program2", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program2 = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program2();
+    }
+    if (__GLeeCheckExtension("GL_ATI_map_object_buffer", &extensionNames) )
+    {
+        _GLEE_ATI_map_object_buffer = GL_TRUE;
+        __GLeeLink_GL_ATI_map_object_buffer();
+    }
+    if (__GLeeCheckExtension("GL_ATI_separate_stencil", &extensionNames) )
+    {
+        _GLEE_ATI_separate_stencil = GL_TRUE;
+        __GLeeLink_GL_ATI_separate_stencil();
+    }
+    if (__GLeeCheckExtension("GL_ATI_vertex_attrib_array_object", &extensionNames) )
+    {
+        _GLEE_ATI_vertex_attrib_array_object = GL_TRUE;
+        __GLeeLink_GL_ATI_vertex_attrib_array_object();
+    }
+    if (__GLeeCheckExtension("GL_OES_read_format", &extensionNames) )
+    {
+        _GLEE_OES_read_format = GL_TRUE;
+        __GLeeLink_GL_OES_read_format();
+    }
+    if (__GLeeCheckExtension("GL_EXT_depth_bounds_test", &extensionNames) )
+    {
+        _GLEE_EXT_depth_bounds_test = GL_TRUE;
+        __GLeeLink_GL_EXT_depth_bounds_test();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_mirror_clamp", &extensionNames) )
+    {
+        _GLEE_EXT_texture_mirror_clamp = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_mirror_clamp();
+    }
+    if (__GLeeCheckExtension("GL_EXT_blend_equation_separate", &extensionNames) )
+    {
+        _GLEE_EXT_blend_equation_separate = GL_TRUE;
+        __GLeeLink_GL_EXT_blend_equation_separate();
+    }
+    if (__GLeeCheckExtension("GL_MESA_pack_invert", &extensionNames) )
+    {
+        _GLEE_MESA_pack_invert = GL_TRUE;
+        __GLeeLink_GL_MESA_pack_invert();
+    }
+    if (__GLeeCheckExtension("GL_MESA_ycbcr_texture", &extensionNames) )
+    {
+        _GLEE_MESA_ycbcr_texture = GL_TRUE;
+        __GLeeLink_GL_MESA_ycbcr_texture();
+    }
+    if (__GLeeCheckExtension("GL_EXT_pixel_buffer_object", &extensionNames) )
+    {
+        _GLEE_EXT_pixel_buffer_object = GL_TRUE;
+        __GLeeLink_GL_EXT_pixel_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_NV_fragment_program_option", &extensionNames) )
+    {
+        _GLEE_NV_fragment_program_option = GL_TRUE;
+        __GLeeLink_GL_NV_fragment_program_option();
+    }
+    if (__GLeeCheckExtension("GL_NV_fragment_program2", &extensionNames) )
+    {
+        _GLEE_NV_fragment_program2 = GL_TRUE;
+        __GLeeLink_GL_NV_fragment_program2();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program2_option", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program2_option = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program2_option();
+    }
+    if (__GLeeCheckExtension("GL_NV_vertex_program3", &extensionNames) )
+    {
+        _GLEE_NV_vertex_program3 = GL_TRUE;
+        __GLeeLink_GL_NV_vertex_program3();
+    }
+    if (__GLeeCheckExtension("GL_EXT_framebuffer_object", &extensionNames) )
+    {
+        _GLEE_EXT_framebuffer_object = GL_TRUE;
+        __GLeeLink_GL_EXT_framebuffer_object();
+    }
+    if (__GLeeCheckExtension("GL_GREMEDY_string_marker", &extensionNames) )
+    {
+        _GLEE_GREMEDY_string_marker = GL_TRUE;
+        __GLeeLink_GL_GREMEDY_string_marker();
+    }
+    if (__GLeeCheckExtension("GL_EXT_Cg_shader", &extensionNames) )
+    {
+        _GLEE_EXT_Cg_shader = GL_TRUE;
+        __GLeeLink_GL_EXT_Cg_shader();
+    }
+    if (__GLeeCheckExtension("GL_EXT_timer_query", &extensionNames) )
+    {
+        _GLEE_EXT_timer_query = GL_TRUE;
+        __GLeeLink_GL_EXT_timer_query();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_buffer_object", &extensionNames) )
+    {
+        _GLEE_EXT_texture_buffer_object = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_EXT_gpu_shader4", &extensionNames) )
+    {
+        _GLEE_EXT_gpu_shader4 = GL_TRUE;
+        __GLeeLink_GL_EXT_gpu_shader4();
+    }
+    if (__GLeeCheckExtension("GL_EXT_geometry_shader4", &extensionNames) )
+    {
+        _GLEE_EXT_geometry_shader4 = GL_TRUE;
+        __GLeeLink_GL_EXT_geometry_shader4();
+    }
+    if (__GLeeCheckExtension("GL_EXT_bindable_uniform", &extensionNames) )
+    {
+        _GLEE_EXT_bindable_uniform = GL_TRUE;
+        __GLeeLink_GL_EXT_bindable_uniform();
+    }
+    if (__GLeeCheckExtension("GL_EXT_framebuffer_sRGB", &extensionNames) )
+    {
+        _GLEE_EXT_framebuffer_sRGB = GL_TRUE;
+        __GLeeLink_GL_EXT_framebuffer_sRGB();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_shared_exponent", &extensionNames) )
+    {
+        _GLEE_EXT_texture_shared_exponent = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_shared_exponent();
+    }
+    if (__GLeeCheckExtension("GL_EXT_packed_float", &extensionNames) )
+    {
+        _GLEE_EXT_packed_float = GL_TRUE;
+        __GLeeLink_GL_EXT_packed_float();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_array", &extensionNames) )
+    {
+        _GLEE_EXT_texture_array = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_array();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_integer", &extensionNames) )
+    {
+        _GLEE_EXT_texture_integer = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_integer();
+    }
+    if (__GLeeCheckExtension("GL_NV_depth_buffer_float", &extensionNames) )
+    {
+        _GLEE_NV_depth_buffer_float = GL_TRUE;
+        __GLeeLink_GL_NV_depth_buffer_float();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_compression_latc", &extensionNames) )
+    {
+        _GLEE_EXT_texture_compression_latc = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_compression_latc();
+    }
+    if (__GLeeCheckExtension("GL_NV_transform_feedback", &extensionNames) )
+    {
+        _GLEE_NV_transform_feedback = GL_TRUE;
+        __GLeeLink_GL_NV_transform_feedback();
+    }
+    if (__GLeeCheckExtension("GL_NV_geometry_program4", &extensionNames) )
+    {
+        _GLEE_NV_geometry_program4 = GL_TRUE;
+        __GLeeLink_GL_NV_geometry_program4();
+    }
+    if (__GLeeCheckExtension("GL_NV_gpu_program4", &extensionNames) )
+    {
+        _GLEE_NV_gpu_program4 = GL_TRUE;
+        __GLeeLink_GL_NV_gpu_program4();
+    }
+    if (__GLeeCheckExtension("GL_NV_framebuffer_multisample_coverage", &extensionNames) )
+    {
+        _GLEE_NV_framebuffer_multisample_coverage = GL_TRUE;
+        __GLeeLink_GL_NV_framebuffer_multisample_coverage();
+    }
+    if (__GLeeCheckExtension("GL_EXT_framebuffer_multisample", &extensionNames) )
+    {
+        _GLEE_EXT_framebuffer_multisample = GL_TRUE;
+        __GLeeLink_GL_EXT_framebuffer_multisample();
+    }
+    if (__GLeeCheckExtension("GL_EXT_framebuffer_blit", &extensionNames) )
+    {
+        _GLEE_EXT_framebuffer_blit = GL_TRUE;
+        __GLeeLink_GL_EXT_framebuffer_blit();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_compression_rgtc", &extensionNames) )
+    {
+        _GLEE_EXT_texture_compression_rgtc = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_compression_rgtc();
+    }
+    if (__GLeeCheckExtension("GL_EXT_color_matrix", &extensionNames) )
+    {
+        _GLEE_EXT_color_matrix = GL_TRUE;
+        __GLeeLink_GL_EXT_color_matrix();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_select", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_select = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_select();
+    }
+    if (__GLeeCheckExtension("GL_INGR_blend_func_separate", &extensionNames) )
+    {
+        _GLEE_INGR_blend_func_separate = GL_TRUE;
+        __GLeeLink_GL_INGR_blend_func_separate();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_depth_pass_instrument", &extensionNames) )
+    {
+        _GLEE_SGIX_depth_pass_instrument = GL_TRUE;
+        __GLeeLink_GL_SGIX_depth_pass_instrument();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_igloo_interface", &extensionNames) )
+    {
+        _GLEE_SGIX_igloo_interface = GL_TRUE;
+        __GLeeLink_GL_SGIX_igloo_interface();
+    }
+    if (__GLeeCheckExtension("GL_EXT_draw_buffers2", &extensionNames) )
+    {
+        _GLEE_EXT_draw_buffers2 = GL_TRUE;
+        __GLeeLink_GL_EXT_draw_buffers2();
+    }
+    if (__GLeeCheckExtension("GL_NV_parameter_buffer_object", &extensionNames) )
+    {
+        _GLEE_NV_parameter_buffer_object = GL_TRUE;
+        __GLeeLink_GL_NV_parameter_buffer_object();
+    }
+    if (__GLeeCheckExtension("GL_EXT_draw_instanced", &extensionNames) )
+    {
+        _GLEE_EXT_draw_instanced = GL_TRUE;
+        __GLeeLink_GL_EXT_draw_instanced();
+    }
+    if (__GLeeCheckExtension("GL_EXT_fragment_lighting", &extensionNames) )
+    {
+        _GLEE_EXT_fragment_lighting = GL_TRUE;
+        __GLeeLink_GL_EXT_fragment_lighting();
+    }
+    if (__GLeeCheckExtension("GL_EXT_packed_depth_stencil", &extensionNames) )
+    {
+        _GLEE_EXT_packed_depth_stencil = GL_TRUE;
+        __GLeeLink_GL_EXT_packed_depth_stencil();
+    }
+    if (__GLeeCheckExtension("GL_EXT_scene_marker", &extensionNames) )
+    {
+        _GLEE_EXT_scene_marker = GL_TRUE;
+        __GLeeLink_GL_EXT_scene_marker();
+    }
+    if (__GLeeCheckExtension("GL_EXT_stencil_clear_tag", &extensionNames) )
+    {
+        _GLEE_EXT_stencil_clear_tag = GL_TRUE;
+        __GLeeLink_GL_EXT_stencil_clear_tag();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_compression_dxt1", &extensionNames) )
+    {
+        _GLEE_EXT_texture_compression_dxt1 = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_compression_dxt1();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_env", &extensionNames) )
+    {
+        _GLEE_EXT_texture_env = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_env();
+    }
+    if (__GLeeCheckExtension("GL_EXT_texture_sRGB", &extensionNames) )
+    {
+        _GLEE_EXT_texture_sRGB = GL_TRUE;
+        __GLeeLink_GL_EXT_texture_sRGB();
+    }
+    if (__GLeeCheckExtension("GL_IBM_static_data", &extensionNames) )
+    {
+        _GLEE_IBM_static_data = GL_TRUE;
+        __GLeeLink_GL_IBM_static_data();
+    }
+    if (__GLeeCheckExtension("GL_MESAX_texture_stack", &extensionNames) )
+    {
+        _GLEE_MESAX_texture_stack = GL_TRUE;
+        __GLeeLink_GL_MESAX_texture_stack();
+    }
+    if (__GLeeCheckExtension("GL_OES_byte_coordinates", &extensionNames) )
+    {
+        _GLEE_OES_byte_coordinates = GL_TRUE;
+        __GLeeLink_GL_OES_byte_coordinates();
+    }
+    if (__GLeeCheckExtension("GL_OES_compressed_paletted_texture", &extensionNames) )
+    {
+        _GLEE_OES_compressed_paletted_texture = GL_TRUE;
+        __GLeeLink_GL_OES_compressed_paletted_texture();
+    }
+    if (__GLeeCheckExtension("GL_OES_single_precision", &extensionNames) )
+    {
+        _GLEE_OES_single_precision = GL_TRUE;
+        __GLeeLink_GL_OES_single_precision();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_pixel_texture_bits", &extensionNames) )
+    {
+        _GLEE_SGIX_pixel_texture_bits = GL_TRUE;
+        __GLeeLink_GL_SGIX_pixel_texture_bits();
+    }
+    if (__GLeeCheckExtension("GL_SGIX_texture_range", &extensionNames) )
+    {
+        _GLEE_SGIX_texture_range = GL_TRUE;
+        __GLeeLink_GL_SGIX_texture_range();
+    }
+#ifdef WIN32
+    if (__GLeeCheckExtension("WGL_ARB_buffer_region", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_buffer_region = GL_TRUE;
+        __GLeeLink_WGL_ARB_buffer_region();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_multisample", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_multisample = GL_TRUE;
+        __GLeeLink_WGL_ARB_multisample();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_extensions_string", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_extensions_string = GL_TRUE;
+        __GLeeLink_WGL_ARB_extensions_string();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_pixel_format", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_pixel_format = GL_TRUE;
+        __GLeeLink_WGL_ARB_pixel_format();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_make_current_read", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_make_current_read = GL_TRUE;
+        __GLeeLink_WGL_ARB_make_current_read();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_pbuffer", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_pbuffer = GL_TRUE;
+        __GLeeLink_WGL_ARB_pbuffer();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_render_texture", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_render_texture = GL_TRUE;
+        __GLeeLink_WGL_ARB_render_texture();
+    }
+    if (__GLeeCheckExtension("WGL_ARB_pixel_format_float", &extensionNames) )
+    {
+        _GLEE_WGL_ARB_pixel_format_float = GL_TRUE;
+        __GLeeLink_WGL_ARB_pixel_format_float();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_make_current_read", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_make_current_read = GL_TRUE;
+        __GLeeLink_WGL_EXT_make_current_read();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_pixel_format", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_pixel_format = GL_TRUE;
+        __GLeeLink_WGL_EXT_pixel_format();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_pbuffer", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_pbuffer = GL_TRUE;
+        __GLeeLink_WGL_EXT_pbuffer();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_depth_float", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_depth_float = GL_TRUE;
+        __GLeeLink_WGL_EXT_depth_float();
+    }
+    if (__GLeeCheckExtension("WGL_3DFX_multisample", &extensionNames) )
+    {
+        _GLEE_WGL_3DFX_multisample = GL_TRUE;
+        __GLeeLink_WGL_3DFX_multisample();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_multisample", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_multisample = GL_TRUE;
+        __GLeeLink_WGL_EXT_multisample();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_digital_video_control", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_digital_video_control = GL_TRUE;
+        __GLeeLink_WGL_I3D_digital_video_control();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_gamma", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_gamma = GL_TRUE;
+        __GLeeLink_WGL_I3D_gamma();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_genlock", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_genlock = GL_TRUE;
+        __GLeeLink_WGL_I3D_genlock();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_image_buffer", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_image_buffer = GL_TRUE;
+        __GLeeLink_WGL_I3D_image_buffer();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_swap_frame_lock", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_swap_frame_lock = GL_TRUE;
+        __GLeeLink_WGL_I3D_swap_frame_lock();
+    }
+    if (__GLeeCheckExtension("WGL_NV_render_depth_texture", &extensionNames) )
+    {
+        _GLEE_WGL_NV_render_depth_texture = GL_TRUE;
+        __GLeeLink_WGL_NV_render_depth_texture();
+    }
+    if (__GLeeCheckExtension("WGL_NV_render_texture_rectangle", &extensionNames) )
+    {
+        _GLEE_WGL_NV_render_texture_rectangle = GL_TRUE;
+        __GLeeLink_WGL_NV_render_texture_rectangle();
+    }
+    if (__GLeeCheckExtension("WGL_ATI_pixel_format_float", &extensionNames) )
+    {
+        _GLEE_WGL_ATI_pixel_format_float = GL_TRUE;
+        __GLeeLink_WGL_ATI_pixel_format_float();
+    }
+    if (__GLeeCheckExtension("WGL_NV_float_buffer", &extensionNames) )
+    {
+        _GLEE_WGL_NV_float_buffer = GL_TRUE;
+        __GLeeLink_WGL_NV_float_buffer();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_display_color_table", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_display_color_table = GL_TRUE;
+        __GLeeLink_WGL_EXT_display_color_table();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_extensions_string", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_extensions_string = GL_TRUE;
+        __GLeeLink_WGL_EXT_extensions_string();
+    }
+    if (__GLeeCheckExtension("WGL_EXT_swap_control", &extensionNames) )
+    {
+        _GLEE_WGL_EXT_swap_control = GL_TRUE;
+        __GLeeLink_WGL_EXT_swap_control();
+    }
+    if (__GLeeCheckExtension("WGL_NV_vertex_array_range", &extensionNames) )
+    {
+        _GLEE_WGL_NV_vertex_array_range = GL_TRUE;
+        __GLeeLink_WGL_NV_vertex_array_range();
+    }
+    if (__GLeeCheckExtension("WGL_OML_sync_control", &extensionNames) )
+    {
+        _GLEE_WGL_OML_sync_control = GL_TRUE;
+        __GLeeLink_WGL_OML_sync_control();
+    }
+    if (__GLeeCheckExtension("WGL_I3D_swap_frame_usage", &extensionNames) )
+    {
+        _GLEE_WGL_I3D_swap_frame_usage = GL_TRUE;
+        __GLeeLink_WGL_I3D_swap_frame_usage();
+    }
+    if (__GLeeCheckExtension("WGL_3DL_stereo_control", &extensionNames) )
+    {
+        _GLEE_WGL_3DL_stereo_control = GL_TRUE;
+        __GLeeLink_WGL_3DL_stereo_control();
+    }
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else /* GLX */
+    if (__GLeeCheckExtension("GLX_VERSION_1_3", &extensionNames) )
+    {
+        _GLEE_GLX_VERSION_1_3 = GL_TRUE;
+        __GLeeLink_GLX_VERSION_1_3();
+    }
+    if (__GLeeCheckExtension("GLX_VERSION_1_4", &extensionNames) )
+    {
+        _GLEE_GLX_VERSION_1_4 = GL_TRUE;
+        __GLeeLink_GLX_VERSION_1_4();
+    }
+    if (__GLeeCheckExtension("GLX_ARB_multisample", &extensionNames) )
+    {
+        _GLEE_GLX_ARB_multisample = GL_TRUE;
+        __GLeeLink_GLX_ARB_multisample();
+    }
+    if (__GLeeCheckExtension("GLX_ARB_fbconfig_float", &extensionNames) )
+    {
+        _GLEE_GLX_ARB_fbconfig_float = GL_TRUE;
+        __GLeeLink_GLX_ARB_fbconfig_float();
+    }
+    if (__GLeeCheckExtension("GLX_SGIS_multisample", &extensionNames) )
+    {
+        _GLEE_GLX_SGIS_multisample = GL_TRUE;
+        __GLeeLink_GLX_SGIS_multisample();
+    }
+    if (__GLeeCheckExtension("GLX_EXT_visual_info", &extensionNames) )
+    {
+        _GLEE_GLX_EXT_visual_info = GL_TRUE;
+        __GLeeLink_GLX_EXT_visual_info();
+    }
+    if (__GLeeCheckExtension("GLX_SGI_swap_control", &extensionNames) )
+    {
+        _GLEE_GLX_SGI_swap_control = GL_TRUE;
+        __GLeeLink_GLX_SGI_swap_control();
+    }
+    if (__GLeeCheckExtension("GLX_SGI_video_sync", &extensionNames) )
+    {
+        _GLEE_GLX_SGI_video_sync = GL_TRUE;
+        __GLeeLink_GLX_SGI_video_sync();
+    }
+    if (__GLeeCheckExtension("GLX_SGI_make_current_read", &extensionNames) )
+    {
+        _GLEE_GLX_SGI_make_current_read = GL_TRUE;
+        __GLeeLink_GLX_SGI_make_current_read();
+    }
+    if (__GLeeCheckExtension("GLX_EXT_visual_rating", &extensionNames) )
+    {
+        _GLEE_GLX_EXT_visual_rating = GL_TRUE;
+        __GLeeLink_GLX_EXT_visual_rating();
+    }
+    if (__GLeeCheckExtension("GLX_EXT_import_context", &extensionNames) )
+    {
+        _GLEE_GLX_EXT_import_context = GL_TRUE;
+        __GLeeLink_GLX_EXT_import_context();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_fbconfig", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_fbconfig = GL_TRUE;
+        __GLeeLink_GLX_SGIX_fbconfig();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_pbuffer", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_pbuffer = GL_TRUE;
+        __GLeeLink_GLX_SGIX_pbuffer();
+    }
+    if (__GLeeCheckExtension("GLX_SGI_cushion", &extensionNames) )
+    {
+        _GLEE_GLX_SGI_cushion = GL_TRUE;
+        __GLeeLink_GLX_SGI_cushion();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_video_resize", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_video_resize = GL_TRUE;
+        __GLeeLink_GLX_SGIX_video_resize();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_swap_group", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_swap_group = GL_TRUE;
+        __GLeeLink_GLX_SGIX_swap_group();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_swap_barrier", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_swap_barrier = GL_TRUE;
+        __GLeeLink_GLX_SGIX_swap_barrier();
+    }
+    if (__GLeeCheckExtension("GLX_SGIS_blended_overlay", &extensionNames) )
+    {
+        _GLEE_GLX_SGIS_blended_overlay = GL_TRUE;
+        __GLeeLink_GLX_SGIS_blended_overlay();
+    }
+    if (__GLeeCheckExtension("GLX_SGIS_shared_multisample", &extensionNames) )
+    {
+        _GLEE_GLX_SGIS_shared_multisample = GL_TRUE;
+        __GLeeLink_GLX_SGIS_shared_multisample();
+    }
+    if (__GLeeCheckExtension("GLX_SUN_get_transparent_index", &extensionNames) )
+    {
+        _GLEE_GLX_SUN_get_transparent_index = GL_TRUE;
+        __GLeeLink_GLX_SUN_get_transparent_index();
+    }
+    if (__GLeeCheckExtension("GLX_3DFX_multisample", &extensionNames) )
+    {
+        _GLEE_GLX_3DFX_multisample = GL_TRUE;
+        __GLeeLink_GLX_3DFX_multisample();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_copy_sub_buffer", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_copy_sub_buffer = GL_TRUE;
+        __GLeeLink_GLX_MESA_copy_sub_buffer();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_pixmap_colormap", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_pixmap_colormap = GL_TRUE;
+        __GLeeLink_GLX_MESA_pixmap_colormap();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_release_buffers", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_release_buffers = GL_TRUE;
+        __GLeeLink_GLX_MESA_release_buffers();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_set_3dfx_mode", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_set_3dfx_mode = GL_TRUE;
+        __GLeeLink_GLX_MESA_set_3dfx_mode();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_visual_select_group", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_visual_select_group = GL_TRUE;
+        __GLeeLink_GLX_SGIX_visual_select_group();
+    }
+    if (__GLeeCheckExtension("GLX_OML_swap_method", &extensionNames) )
+    {
+        _GLEE_GLX_OML_swap_method = GL_TRUE;
+        __GLeeLink_GLX_OML_swap_method();
+    }
+    if (__GLeeCheckExtension("GLX_OML_sync_control", &extensionNames) )
+    {
+        _GLEE_GLX_OML_sync_control = GL_TRUE;
+        __GLeeLink_GLX_OML_sync_control();
+    }
+    if (__GLeeCheckExtension("GLX_NV_float_buffer", &extensionNames) )
+    {
+        _GLEE_GLX_NV_float_buffer = GL_TRUE;
+        __GLeeLink_GLX_NV_float_buffer();
+    }
+    if (__GLeeCheckExtension("GLX_SGIX_hyperpipe", &extensionNames) )
+    {
+        _GLEE_GLX_SGIX_hyperpipe = GL_TRUE;
+        __GLeeLink_GLX_SGIX_hyperpipe();
+    }
+    if (__GLeeCheckExtension("GLX_MESA_agp_offset", &extensionNames) )
+    {
+        _GLEE_GLX_MESA_agp_offset = GL_TRUE;
+        __GLeeLink_GLX_MESA_agp_offset();
+    }
+    if (__GLeeCheckExtension("GLX_EXT_scene_marker", &extensionNames) )
+    {
+        _GLEE_GLX_EXT_scene_marker = GL_TRUE;
+        __GLeeLink_GLX_EXT_scene_marker();
+    }
+#endif /* end GLX */
+
+    __GLeeExtList_clean(&extensionNames);
+    return GL_TRUE;
+}
diff --git a/debian/control b/.svn/pristine/92/928025fcf166eeb36a443617313fe81367ee1c81.svn-base
similarity index 98%
rename from debian/control
rename to .svn/pristine/92/928025fcf166eeb36a443617313fe81367ee1c81.svn-base
index b15a51c..770d0d1 100644
--- a/debian/control
+++ b/.svn/pristine/92/928025fcf166eeb36a443617313fe81367ee1c81.svn-base
@@ -2,7 +2,7 @@ Source: libvd
 Priority: extra
 Maintainer: D Haley <mycae at gmx.com> 
 Build-Depends: debhelper (>=9)
-Standards-Version: 4.0.0
+Standards-Version: 3.9.7
 Section: libs
 Homepage: http://cim.mcgill.ca/~lombaert/libvd-doc/
 Vcs-Svn: https://svn.code.sf.net/p/libvd/code/trunk
diff --git a/.svn/pristine/94/94995cc13ff54de3197fee3206c735f9398d694d.svn-base b/.svn/pristine/94/94995cc13ff54de3197fee3206c735f9398d694d.svn-base
new file mode 100644
index 0000000..a74c0a1
--- /dev/null
+++ b/.svn/pristine/94/94995cc13ff54de3197fee3206c735f9398d694d.svn-base
@@ -0,0 +1,15 @@
+P5
+# CREATOR: The GIMP's PNM Filter Version 1.0
+256 256
+255
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
U��������������������������������������������������������������������������������������������������������������������i        i�����������������������������������������������������������������������������������������������������������������+            
i������������������������������������������������������������������������������������������������������������������U
          
U���������������������������������������������������������������������������������������������������������������)               �����������������������������������������������������������������������������������������������������������������h
            
h����������������������������������������������������������������������������������������������������������� [...]
                           ��������������������������������������������������������������������������������������������������������������������������������������H                     +�������������������������������������������������������������������R                           #����������������������������������������������������������������������������������������������������������������������������������������+                     B�������������������������������������������������� [...]
���������������������������������������������������������o                          <��������������������������������������������������������������������������������������������������������������������������������������������������	                      
�������������������������������������������������������K                          x���������������������������������������������������������������������������������������������������������������������������������������������������g   [...]
+i���������������������������������������������������������������������������������������������������������������������������������������������������������������6                       i���������������������������������������2                           ������������������������������������������������������������������������������������������������������������������������������������������������������������������                       ��������������������������������������
            [...]
������������������������������������                           +���������������������������������������������������������������������������������������������������������������������������������������������������������������������y	                       
����������������������������������
                           /�����������������������������������������������������������������������������������������������������������������������������������������������������������������������g
+                       /�������������������������������                           <�������������������������������������������������������������������������������������������������������������������������������������������������������������������������b                      >�����������������������������y
+                           Z���������������������������������������������������������������������������������������������������������������������������������������������������������������������������d                      N���������������������������d                          x�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������U                      a��������� [...]
+g����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������1                                 	y��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/               [...]
                       E������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������                       7�������                       K����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������&               [...]
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5                       "����������������1                       
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/                       
������������������*    [...]
+                       �����������������������������������������������������������������������������������������������������������������������������������������������������������������������U                      .��������������������������������������b                       ���������������������������������������������������������������������������������������������������������������������������������������������������������������������x
+                      5����������������������������������������d                       ��������������������������������������������������������������������������������������������������������������������������������������������������������������������                      /������������������������������������������U                       !������������������������������������������������������������������������������������������������������������������������������������������������� [...]
+                      9������������������������������������������������*                        #�����������������������������������������������������������������������������������������������������������������������������������������������������������f                      1��������������������������������������������������#                       C����������������������������������������������������������������������������������������������������������������������������������������� [...]
+b�����������������������������������������������������������������]                       c������������������������������������������������������������������������������������������������������������������������������������������*                      g�������������������������������������������������������������������C                       �����������������������������������������������������������������������������������������������������������������������������������������=      [...]
+������������������������������������������������������������������������������                      c���������������������������������������������������������������������������������������������������������������������������������                     �������������������������������������������������������������������������������m                      
n�������������������������������������������������������������������������������������������������������������������������������     [...]
+��������������������������������������������������������������������������������������������1                      ��������������������������������������������������������������������������������������������������������������������                   n���������������������������������������������������������������������������������������������$                     5������������������������������������������������������������������������������������������������������������������� [...]
                      �����������������������������������������������������������������������������������������������������������������[               !����������������������������������������������������������������������������������������������������
                      5�����������������������������������������������������������������������������������������������������������������             ���������������������������������������������������������������������������������� [...]
\ No newline at end of file
diff --git a/debian/patches/install_dir.patch b/.svn/pristine/94/94bfbaaadc7f791eabd79d7232fa72188d35ff77.svn-base
similarity index 100%
rename from debian/patches/install_dir.patch
rename to .svn/pristine/94/94bfbaaadc7f791eabd79d7232fa72188d35ff77.svn-base
diff --git a/.svn/pristine/98/9873689f12e79083d84b99dfc48fea5d78bb7a5b.svn-base b/.svn/pristine/98/9873689f12e79083d84b99dfc48fea5d78bb7a5b.svn-base
new file mode 100644
index 0000000..9a75ae4
--- /dev/null
+++ b/.svn/pristine/98/9873689f12e79083d84b99dfc48fea5d78bb7a5b.svn-base
@@ -0,0 +1,106 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	displaycolor.h
+ * @author	Herve Lombaert
+ * @date	November 14th, 2006
+ */
+
+#ifndef DISPLAYCOLOR_H
+#define DISPLAYCOLOR_H
+
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+#include <error.h>
+
+
+namespace Tools { namespace TransferFunction
+{
+	/**
+	 * Display a color palette, a unit box is drawn with
+	 * different colors. With a mouse position (normalized
+	 * with the box) it is possible to query what color has
+	 * been selected.
+	 *
+	 * \image html displaycolor.png
+	 * \image latex displaycolor.png
+	 *
+	 * This can be used as a color selector in a transfer
+	 * function editor.
+	 *
+	 * To draw the colors, this model is used:
+	 *
+	 * \verbatim
+	 *      ---------------------- white (1,1,1)
+	 *      |                    |
+	 *      |                    |
+	 *      R      G      B      R
+	 *      |------|------|------|
+	 *    (100)  (010)  (001)  (100)
+	 *      |                    |
+	 *      |                    |
+	 *      ---------------------- black (0,0,0)
+	 * \endverbatim
+	 *
+	 * Internally, a 128x128 texture is created.
+	 *
+	 * @see TransferFunction
+	 *
+	 */
+
+
+	class DisplayColor
+	{
+	public:
+		DisplayColor();
+		~DisplayColor();
+
+		/** display the colors in a centered 1x1 square */
+		void display() const;
+
+		/** get rgb for a normalized position (0..1)
+		 * @param x,y (in) mouse position normalized with the box size (0..1)
+		 * @param r,g,b (out) color selected at position x,y */
+		void getRGB(float x, float y, float &r, float &g, float &b) const;
+
+		/** place a cursor at color rgb */
+		void mark(float r, float g, float b);
+
+	private:
+		void initTexture() const; ///< init texture
+
+	private:
+		mutable GLuint m_textureName; ///< texture name
+		float m_mark_r; ///< rgb of marked color
+		float m_mark_g; ///< rgb of marked color
+		float m_mark_b; ///< rgb of marked color
+		float m_mark_u; ///< position of marker
+		float m_mark_v; ///< position of marker
+	};
+
+
+}} // namespaces
+
+#endif
diff --git a/debian/libvd1.dirs b/.svn/pristine/98/98a74fe8ac00cd1860e6db3b06ff1c50daa07286.svn-base
similarity index 100%
rename from debian/libvd1.dirs
rename to .svn/pristine/98/98a74fe8ac00cd1860e6db3b06ff1c50daa07286.svn-base
diff --git a/.svn/pristine/99/9935a686d1a1037ffc32059fc265c076e6bf15d5.svn-base b/.svn/pristine/99/9935a686d1a1037ffc32059fc265c076e6bf15d5.svn-base
new file mode 100644
index 0000000..a6576c9
--- /dev/null
+++ b/.svn/pristine/99/9935a686d1a1037ffc32059fc265c076e6bf15d5.svn-base
@@ -0,0 +1,203 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#include <iostream>
+#include <cmath>
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <tools/manipworld.h>
+#include <tools/transferfunction/editor.h>
+#include <tools/transferfunction/ramp.h>
+#include <display/display3d.h>
+
+/**
+ * @test Testing transfer function manipulation
+ */
+
+namespace TestTransferFunction
+{
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static MouseButton gButton = NONE;
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+	int winh = 0;
+
+	Tools::ManipWorld manipWorld;
+	Tools::TransferFunction::Editor tfe;
+	Display::Volume displayVolume;
+	unsigned short* volume;
+	unsigned int size[3];
+
+
+	void init()
+	{
+		glClearColor (0.0, 0.0, 0.5, 1.0);
+
+		manipWorld.init();
+		manipWorld.translate(0,0,-3.6);
+
+		displayVolume.update(volume, size[0], size[1], size[2]);
+
+		tfe.update(volume, size[0]*size[1]*size[2]);
+		tfe.add(new Tools::TransferFunction::Ramp(30,125));
+		tfe.clamp(0,125);
+
+		displayVolume.updateLut(tfe);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+		glMatrixMode(GL_MODELVIEW);
+
+		tfe.place(0,0, 200,100, w,h);
+		winh = h;
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		
+		/* Rotate volume with mouse movement */
+		manipWorld.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(2,2,2);
+
+		glEnable(GL_DEPTH_TEST);
+		displayVolume.display();
+		glDisable(GL_DEPTH_TEST);
+
+		glPopMatrix();
+		
+		tfe.display();
+
+		glutSwapBuffers();
+	}
+
+	void mouse(int button, int state, int x, int y)
+	{
+		/* degrade the volume when moving the mouse, so the rendering is interactive */
+		if(state == GLUT_DOWN) displayVolume.setQuality(0.50);                         // low resolution (interactive)
+		else                 { displayVolume.setQuality(1.0f); glutPostRedisplay(); }  // full resolution
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				tfe.mouse(x,winh-y);
+				break;
+			case GLUT_RIGHT_BUTTON:
+				gButton = RIGHT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				if(tfe.mouse(x,winh-y))
+				{
+					tfe.colorMode();
+					glutPostRedisplay();
+				}
+				break;
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+				if(tfe.motion(x,winh-y))
+				{
+					if(tfe.lutchanged())
+						displayVolume.updateLut(tfe);
+				}
+				else
+				{
+					int dx = (x - gPrevMouse[0]);
+					int dy = (gPrevMouse[1] - y);
+					manipWorld.rotateYAxis((float)dx);
+					manipWorld.rotateXAxis((float)dy);
+				}
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				glutPostRedisplay();
+				break;
+			case RIGHT:
+			{
+				int dy = (gPrevMouse[1] - y);
+				gPrevMouse[1] = y;
+
+				float deltaZoom = 1.0f + dy / 100.0f;
+
+				manipWorld.zoom(deltaZoom);
+				glutPostRedisplay();
+				break;
+			}
+			default:
+				break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		switch(key)
+		{
+			case 'q':
+				glutDestroyWindow(winid); // close window, terminate glut loop
+				exit(0); // on OSX for some reason the program does not terminate
+			default:
+				break;
+		}
+	}
+
+	int main_init()
+	{
+		try
+		{
+			size[0] = 128,
+			size[1] = 128,
+			size[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", volume, size[0]*size[1]*size[2]);
+			
+			glutInitWindowSize(250, 250);
+			winid = glutCreateWindow("transfer function");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+		
+			
+			return 0;
+		}
+		catch(const Error &e) {
+			e.print();
+		}
+
+		return 1;
+	}
+
+} // namespace
diff --git a/.svn/pristine/9a/9a4d7493a6aaa6dded99c544a893df3abd122fa9.svn-base b/.svn/pristine/9a/9a4d7493a6aaa6dded99c544a893df3abd122fa9.svn-base
new file mode 100644
index 0000000..1c41a17
--- /dev/null
+++ b/.svn/pristine/9a/9a4d7493a6aaa6dded99c544a893df3abd122fa9.svn-base
@@ -0,0 +1,4 @@
+if [ "$1" = "remove" ]; then
+	ldconfig
+fi
+#DEBHELPER#
diff --git a/.svn/pristine/9c/9c24a909116e5ca2778d12a0e6e89107f40ec615.svn-base b/.svn/pristine/9c/9c24a909116e5ca2778d12a0e6e89107f40ec615.svn-base
new file mode 100644
index 0000000..a7768c6
--- /dev/null
+++ b/.svn/pristine/9c/9c24a909116e5ca2778d12a0e6e89107f40ec615.svn-base
@@ -0,0 +1,205 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <io/ioraw.h>
+#include <tools/manipworld.h>
+#include <tools/stereo.h>
+#include <display/display3d.h>
+
+/**
+ * @test Testing stereoscopic renderer
+ */
+
+namespace TestStereo
+{
+
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static int gModifiers = 0; // ctrl,alt,shift
+	static MouseButton gButton = NONE;
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+	int winh = 0;
+
+
+	Tools::Stereo stereo;
+	Tools::ManipWorld manipWorld;
+	Display::Volume displayVolume;
+	unsigned short* volume;
+	unsigned int size[3];
+
+
+	void init()
+	{
+		glClearColor (0.25, 0.4, 0.6, 1.0);
+
+		manipWorld.init();
+		manipWorld.translate(0,0,-3.6);
+
+		displayVolume.update(volume, size[0], size[1], size[2]);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+		glMatrixMode(GL_MODELVIEW);
+
+		winh = h;
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		
+		/* Rotate volume with mouse movement */
+		manipWorld.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(2,2,2);
+
+		glEnable(GL_DEPTH_TEST);
+
+		stereo.enable();
+		displayVolume.display();
+		stereo.disable();
+
+		glDisable(GL_DEPTH_TEST);
+
+		glPopMatrix();
+		
+		glutSwapBuffers();
+	}
+
+	void mouse(int button, int state, int x, int y)
+	{
+		gModifiers = glutGetModifiers();
+
+		/* degrade the volume when moving the mouse, so the rendering is interactive */
+		if(state == GLUT_DOWN) displayVolume.setQuality(0.50);                         // low resolution (interactive)
+		else                 { displayVolume.setQuality(1.0f); glutPostRedisplay(); }  // full resolution
+
+		/* pick if shift is pressed */
+		if(gModifiers == GLUT_ACTIVE_SHIFT && button == GLUT_LEFT_BUTTON)
+		{
+		}
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				break;
+
+			case GLUT_RIGHT_BUTTON:
+				gButton = RIGHT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				break;
+
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+			{
+				float dx = (x - gPrevMouse[0]);
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				manipWorld.rotateYAxis(dx);
+				manipWorld.rotateXAxis(dy);
+				glutPostRedisplay();
+				break;
+			}
+			case RIGHT:
+			{
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[1] = y;
+
+				float deltaZoom = 1.0f + dy / 100.0f;
+				manipWorld.zoom(deltaZoom);
+				glutPostRedisplay();
+				break;
+			}
+			default:
+				break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		bool refresh = true;
+
+		switch(key)
+		{
+		case '1': displayVolume.setMode(Display::Volume::VRT); break;
+		case '2': displayVolume.setMode(Display::Volume::MIP); break;
+		case '3': displayVolume.setMode(Display::Volume::MPR); break;
+
+		case 'q':
+			glutDestroyWindow(winid); // close window, terminate glut loop
+			exit(0); // on OSX for some reason the program does not terminate
+		default:
+			break;
+		}
+
+		if(refresh) glutPostRedisplay();
+	}
+
+	int main_init()
+	{
+		try
+		{
+			size[0] = 128,
+			size[1] = 128,
+			size[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", volume, size[0]*size[1]*size[2]);
+			
+			glutInitWindowSize(250, 250);
+			//glutInitWindowPosition(100, 100);
+			winid = glutCreateWindow("display3d");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+		
+			//glutMainLoop();
+			
+			return 0;
+		}
+		catch(const Error &e) { e.print(); }
+		catch(...) { printf("unknown error\n"); }
+
+		return 1;
+	}
+
+} // namespace
diff --git a/.svn/pristine/9c/9c6cae4d6b0baaed564f3fd3703ad8d09fb4c3e4.svn-base b/.svn/pristine/9c/9c6cae4d6b0baaed564f3fd3703ad8d09fb4c3e4.svn-base
new file mode 100644
index 0000000..0d2ed92
--- /dev/null
+++ b/.svn/pristine/9c/9c6cae4d6b0baaed564f3fd3703ad8d09fb4c3e4.svn-base
@@ -0,0 +1,269 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	isosurface.h
+ * @author	Herve Lombaert
+ * @date	Oct 28th, 2006
+ */
+
+#ifndef ISOSURFACE_H
+#define ISOSURFACE_H
+
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+#include <cmath>
+#include <error.h>
+
+
+namespace libvdDisplay
+{
+	/**
+	 * @class IsoSurface
+	 * @brief Mesh generator with the marching cube algorithm
+	 *
+	 * Display an isosurface of a 3D image. It uses the marching cube algorithm
+	 * to display the isosurface mesh.
+	 *
+	 * \image html displayisosurface.png
+	 * \image latex displayisosurface.png
+	 *
+	 * To compute the normal of the mesh two options are available.
+	 * The first method uses the triangle normals. The resulting mesh is
+	 * blocky as the normal is identical on the whole triangle.
+	 * The second method uses the data gradient. The resulting mesh is
+	 * smoother as the normal is different on the triangle.
+	 * The default is to use the gradient method as it gives a nicer mesh.
+	 *
+	 * It the isosurface to be displayed is showing a darker region,
+	 * the surface normals must be changed as they normally points from
+	 * bright to dark regions.
+	 *
+	 * For better results use the following OpenGL initialization:
+	 *
+	 * \code
+	 *   glShadeModel(GL_SMOOTH);
+	 *   glEnable(GL_DEPTH_TEST);
+	 *   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+	 * \endcode
+	 *
+	 * The Marching Cube code is adapted from Paul Bourke code which can be found at:
+	 * http://local.wasp.uwa.edu.au/~pbourke/modelling/polygonise/
+	 */
+
+
+	class IsoSurface
+	{
+	public:
+		IsoSurface();
+		~IsoSurface();
+
+		/** display the isosurface mesh */
+		void display() const;
+
+		/** create a new mesh
+		 * @param data   3D image to extract the isovalue
+		 * @param width  width of the data
+		 * @param height height of the data
+		 * @param depth  depth of the data
+		 * @param isovalue isovalue to extract
+		 * @param from_bright_to_dark is the surface enclosing a bright (true) or dark (false) surface
+		 * @param use_gradient compute the surface normals from the image gradient (smoother) rather than using triangle normals (produces facets) */
+		template <typename DataType>
+		void update(const DataType* data,
+					unsigned int width,
+					unsigned int height,
+					unsigned depth,
+					float isovalue,
+					bool from_bright_to_dark = true,
+					bool use_gradient = true);
+
+	private:
+		/** march all cubes */
+		template <typename DataType>
+		void march_cubes(const DataType* data,
+						 unsigned int width,
+						 unsigned int height,
+						 unsigned int depth,
+						 float isovalue,
+						 bool from_bright_to_dark,
+						 bool use_gradient);
+
+		/** Marching a single cube
+		 * Code from Paul Bourke (http://local.wasp.uwa.edu.au/~pbourke/modelling/polygonise/) */
+		struct XYZ { double x,y,z; };
+		struct TRIANGLE { XYZ p[3]; };
+		struct GRIDCELL { XYZ p[8]; double val[8]; };
+		static XYZ VertexInterp(double isolevel, XYZ p1, XYZ p2, double valp1, double valp2);
+		static int Polygonise(GRIDCELL grid,double isolevel,TRIANGLE *triangles);
+
+	private:
+		GLuint m_meshid; ///< mesh display list
+	};
+
+
+	template <typename DataType>
+	void IsoSurface::update(const DataType* data,
+							unsigned int width,
+							unsigned int height,
+							unsigned depth,
+							float isovalue,
+							bool from_bright_to_dark,
+							bool use_gradient)
+	{
+		/* Create a new display list */
+		if(glIsList(m_meshid)) glDeleteLists(m_meshid,1);
+		m_meshid = glGenLists(1);
+		glNewList(m_meshid, GL_COMPILE);
+
+		/* Scale to volume space */
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glTranslatef(-0.5,-0.5,-0.5);
+		glScalef(1.0f/width, 1.0f/height, 1.0f/depth);
+
+		/* Nice coloring for the mesh */
+		glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+		glEnable(GL_COLOR_MATERIAL);
+
+		/* Lighting helps visualization of the mesh */
+		glEnable(GL_LIGHTING);
+		glEnable(GL_LIGHT0);
+
+		/* Create mesh */
+		march_cubes(data, width, height, depth, isovalue, from_bright_to_dark, use_gradient);
+
+		/* Leaving function */
+		glDisable(GL_LIGHT0);
+		glDisable(GL_LIGHTING);
+		glDisable(GL_COLOR_MATERIAL);
+
+		/* End list */
+		glPopMatrix();
+		glEndList();
+	}
+
+
+	/* march all voxel of the volume, we want all isosurfaces */
+	template <typename DataType>
+	void IsoSurface::march_cubes(const DataType* data,
+								 unsigned int width,
+								 unsigned int height,
+								 unsigned int depth,
+								 float isovalue,
+								 bool from_bright_to_dark,
+								 bool use_gradient)
+	{
+		try
+		{
+			for(unsigned int k=0; k<depth-1; ++k)
+				for(unsigned int j=0; j<height-1; ++j)
+					for(unsigned int i=0; i<width-1; ++i)
+			{
+				GRIDCELL cell;
+				cell.p[0].x = i+0; cell.p[0].y = j+0; cell.p[0].z = k+0; cell.val[0] = data[((k+0)*height+(j+0))*width+(i+0)];
+				cell.p[1].x = i+1; cell.p[1].y = j+0; cell.p[1].z = k+0; cell.val[1] = data[((k+0)*height+(j+0))*width+(i+1)];
+				cell.p[2].x = i+1; cell.p[2].y = j+1; cell.p[2].z = k+0; cell.val[2] = data[((k+0)*height+(j+1))*width+(i+1)];
+				cell.p[3].x = i+0; cell.p[3].y = j+1; cell.p[3].z = k+0; cell.val[3] = data[((k+0)*height+(j+1))*width+(i+0)];
+				cell.p[4].x = i+0; cell.p[4].y = j+0; cell.p[4].z = k+1; cell.val[4] = data[((k+1)*height+(j+0))*width+(i+0)];
+				cell.p[5].x = i+1; cell.p[5].y = j+0; cell.p[5].z = k+1; cell.val[5] = data[((k+1)*height+(j+0))*width+(i+1)];
+				cell.p[6].x = i+1; cell.p[6].y = j+1; cell.p[6].z = k+1; cell.val[6] = data[((k+1)*height+(j+1))*width+(i+1)];
+				cell.p[7].x = i+0; cell.p[7].y = j+1; cell.p[7].z = k+1; cell.val[7] = data[((k+1)*height+(j+1))*width+(i+0)];
+		
+				TRIANGLE triangles[5];
+				int nbTriangles = 0;
+		
+				nbTriangles = Polygonise(cell,isovalue,triangles);
+		
+				/* First version: uses triangle normals, no smooth surface
+				   Second version: use volume gradient, smoother surface */
+				if(!use_gradient)
+				{
+					for(int m=0; m<nbTriangles; ++m)
+					{
+						/* triangle points */
+						float x1 = triangles[m].p[0].x; float y1 = triangles[m].p[0].y; float z1 = triangles[m].p[0].z;
+						float x2 = triangles[m].p[1].x; float y2 = triangles[m].p[1].y; float z2 = triangles[m].p[1].z;
+						float x3 = triangles[m].p[2].x; float y3 = triangles[m].p[2].y; float z3 = triangles[m].p[2].z;
+
+						/* normal is (x1->x2) cross (x2->x3) */
+						float u[3] = {x2-x1, y2-y1, z2-z1};
+						float v[3] = {x3-x2, y3-y2, z3-z2};
+						float gx = + (u[1]*v[2] - v[1]*u[2]);
+						float gy = - (u[0]*v[2] - v[0]*u[2]);
+						float gz = + (u[0]*v[1] - v[0]*u[1]);
+
+						/* draw opengl triangle */
+						glBegin(GL_TRIANGLES);
+							glNormal3f(gx,gy,gz);
+							glVertex3f(x1,y1,z1);
+							glVertex3f(x2,y2,z2);
+							glVertex3f(x3,y3,z3);
+						glEnd();
+					}
+				}
+				else
+				{
+					for(int m=0; m<nbTriangles; ++m)
+					{
+						glBegin(GL_TRIANGLES);
+						for(unsigned int p=0; p<3; ++p)
+						{
+							/* get vertex coordinate and gradient (central difference) */
+							float x = triangles[m].p[p].x; float y = triangles[m].p[p].y; float z = triangles[m].p[p].z;
+							int xp = (int)((x>0) ? x-1 : x);                // previous point (x+1)
+							int xn = (int)((x<width-1) ? x+1 : x); // next point     (x-1)
+							int yp = (int)((y>0) ? y-1 : y);
+							int yn = (int)((y<height-1) ? y+1 : y);
+							int zp = (int)((z>0) ? z-1 : z);
+							int zn = (int)((z<depth-1) ? z+1 : z);
+
+							/* compute volume gradient and normalize it */
+							float gx = data[(((int)z)*height+((int)y))*width+(xn)] - data[(((int)z)*height+((int)y))*width+(xp)];
+							float gy = data[(((int)z)*height+(yn))*width+((int)x)] - data[(((int)z)*height+(yp))*width+((int)x)];
+							float gz = data[((zn)*height+((int)y))*width+((int)x)] - data[((zp)*height+((int)y))*width+((int)x)];
+							float g = sqrt(gx*gx + gy*gy + gz*gz); // norm
+							gx = gx/g; gy = gy/g; gz = gz/g; // normalize
+
+							/* if the normal points from bright to dark, use the opposite of the gradient */
+							if(from_bright_to_dark)
+								gx = -gx,
+								gy = -gy,
+								gz = -gz;
+
+							/* draw triangle */
+							glNormal3f(gx,gy,gz); // normal
+							glVertex3f(x,y,z);    // vertex
+						}
+						glEnd();
+					}
+				}
+			}
+		}
+		catch(Error &e) { e.tag("IsoSurface::march_cubes"); throw e; }
+	}
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/9c/9cd7a5725953b2e11a3aa0610aaf9676d1b0c5be.svn-base b/.svn/pristine/9c/9cd7a5725953b2e11a3aa0610aaf9676d1b0c5be.svn-base
new file mode 100644
index 0000000..4f26aeb
--- /dev/null
+++ b/.svn/pristine/9c/9cd7a5725953b2e11a3aa0610aaf9676d1b0c5be.svn-base
@@ -0,0 +1,79 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	display2d_drawpixels.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <display/display2d_drawpixels.h>
+#include <cstdlib>
+
+namespace libvdDisplay
+{
+
+	ImageDrawPixels::ImageDrawPixels()
+	:	m_frame(0)
+	{
+	}
+
+
+	ImageDrawPixels::~ImageDrawPixels()
+	{
+		if(m_frame) free(m_frame);
+	}
+
+
+	void ImageDrawPixels::display() const
+	{
+		if(m_frame)
+		{
+			// Draw pixels on frame buffer
+			glDrawPixels(m_size[0],
+					 m_size[1],
+					 m_format,
+					 m_type,
+					 m_frame);
+		}
+	}
+
+
+	// specialization for image type
+	template <> GLenum ImageDrawPixels::DrawPixelsArgs<unsigned char> ::type = GL_UNSIGNED_BYTE;
+	template <> GLenum ImageDrawPixels::DrawPixelsArgs<unsigned short>::type = GL_UNSIGNED_SHORT;
+	template <> GLenum ImageDrawPixels::DrawPixelsArgs<unsigned int>  ::type = GL_UNSIGNED_INT;
+	template <> GLenum ImageDrawPixels::DrawPixelsArgs<char>          ::type = GL_BYTE;
+	template <> GLenum ImageDrawPixels::DrawPixelsArgs<short>         ::type = GL_SHORT;
+	template <> GLenum ImageDrawPixels::DrawPixelsArgs<int>           ::type = GL_INT;
+	template <> GLenum ImageDrawPixels::DrawPixelsArgs<float>         ::type = GL_FLOAT;
+	template <> GLenum ImageDrawPixels::DrawPixelsArgs<double>        ::type = GL_FLOAT;
+
+
+} // namespace
diff --git a/.svn/pristine/9e/9e8db4e754137bd3e5ee757eb954ed3a07e7a456.svn-base b/.svn/pristine/9e/9e8db4e754137bd3e5ee757eb954ed3a07e7a456.svn-base
new file mode 100644
index 0000000..9138232
--- /dev/null
+++ b/.svn/pristine/9e/9e8db4e754137bd3e5ee757eb954ed3a07e7a456.svn-base
@@ -0,0 +1,58 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	iobmp.h
+ * @author	Herve Lombaert
+ * @date	Tue Jun 6 2006
+ *
+ * Read and write a BMP file in a 2D image. BMP need to be raw 24 bit data
+ */
+
+
+#ifndef IO_BMP_H
+#define IO_BMP_H
+
+
+#include <color.h>
+
+
+namespace IO
+{
+	/** Read a 2D image from a BMP file */
+	void readBMP(const char* filename, color<unsigned char>* &image, unsigned int &width, unsigned int &height);
+		
+	
+	/** Write a 2D image in a BMP file */
+	void writeBMP(const char* filename, const color<unsigned char>* image, unsigned int width, unsigned int height);
+	
+	
+	/** BMP reader */
+	class BMP { // implements IO for 2D color image
+	public:
+		static void read(const char* filename, color<unsigned char>* &image, unsigned int &width, unsigned int &height); ///< read a 2D BMP image
+		static void write(const char* filename, const color<unsigned char>* image, unsigned int width, unsigned int height); ///< write a 2D BMP image
+	};
+
+
+} // namespace
+
+
+#endif
diff --git a/.svn/pristine/9e/9e9f8b9a6f4b84ade9709677d4556616c1deba17.svn-base b/.svn/pristine/9e/9e9f8b9a6f4b84ade9709677d4556616c1deba17.svn-base
new file mode 100644
index 0000000..b4b4066
--- /dev/null
+++ b/.svn/pristine/9e/9e9f8b9a6f4b84ade9709677d4556616c1deba17.svn-base
@@ -0,0 +1,522 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	trapezoid.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <tools/transferfunction/trapezoid.h>
+#include <cmath>
+
+namespace Tools { namespace TransferFunction
+{
+	Trapezoid::Trapezoid()
+	:	m_low0(0),
+		m_low1(0),
+		m_high0(0),
+		m_high1(0),
+		m_opacity(1),
+		m_left(0),
+		m_right(0),
+		m_low0_u(0),
+		m_low1_u(0),
+		m_high0_u(0),
+		m_high1_u(0),
+		m_aspectratio(1),
+		m_feature(NONE)
+	{
+		// black/white trapezoid by default
+		m_low0_color[0] = m_low0_color[1] = m_low0_color[2] = 0;
+		m_low1_color[0] = m_low1_color[1] = m_low1_color[2] = 0;
+		m_high0_color[0] = m_high0_color[1] = m_high0_color[2] = 1;
+		m_high1_color[0] = m_high1_color[1] = m_high1_color[2] = 1;
+		m_middle0_color[0] = m_middle0_color[1] = m_middle0_color[2] = 0.5;
+		m_middle1_color[0] = m_middle1_color[1] = m_middle1_color[2] = 0.5;
+	}
+
+
+	Trapezoid::Trapezoid(float low0, float high0, float high1, float low1, float opacity)
+	:	m_low0(low0),
+		m_low1(low1),
+		m_high0(high0),
+		m_high1(high1),
+		m_opacity(opacity),
+		m_left(0),
+		m_right(0),
+		m_low0_u(0),
+		m_low1_u(0),
+		m_high0_u(0),
+		m_high1_u(0),
+		m_aspectratio(1),
+		m_feature(NONE)
+	{
+		// black/white trapezoid by default
+		m_low0_color[0] = m_low0_color[1] = m_low0_color[2] = 0;
+		m_low1_color[0] = m_low1_color[1] = m_low1_color[2] = 0;
+		m_high0_color[0] = m_high0_color[1] = m_high0_color[2] = 1;
+		m_high1_color[0] = m_high1_color[1] = m_high1_color[2] = 1;
+		m_middle0_color[0] = m_middle0_color[1] = m_middle0_color[2] = 0.5;
+		m_middle1_color[0] = m_middle1_color[1] = m_middle1_color[2] = 0.5;
+	}
+
+
+	Trapezoid::~Trapezoid()
+	{}
+
+
+	void Trapezoid::update(float low0, float high0, float high1, float low1, float opacity)
+	{
+		/* update ramp */
+		m_low0 = low0;
+		m_low1 = low1;
+		m_high0 = high0;
+		m_high1 = high1;
+		m_opacity = opacity;
+
+		/* update ramp position for its visualization */
+		m_low0_u  = (m_low0-m_left)  / (m_right-m_left);
+		m_low1_u  = (m_low1-m_left)  / (m_right-m_left);
+		m_high0_u = (m_high0-m_left) / (m_right-m_left);
+		m_high1_u = (m_high1-m_left) / (m_right-m_left);
+	}
+
+
+	void Trapezoid::clamp(float left, float right)
+	{
+		/* update visualization limits */
+		m_left  = left;
+		m_right = right;
+
+		/* update ramp position for its visualization */
+		m_low0_u  = (m_low0-m_left)  / (m_right-m_left);
+		m_low1_u  = (m_low1-m_left)  / (m_right-m_left);
+		m_high0_u = (m_high0-m_left) / (m_right-m_left);
+		m_high1_u = (m_high1-m_left) / (m_right-m_left);
+	}
+
+
+	void Trapezoid::display() const
+	{
+		/* draw ramp */
+		glColor3f(1,0,0);
+
+		glBegin(GL_LINE_STRIP);
+
+		/* display low0 */
+		if(m_low0_u>=0 && m_low0_u<=1)
+		{
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(m_low0_u-0.5f,-0.5f,0);
+		}
+
+		else if(m_low0_u<0 && m_high0_u>=0)
+		{
+			float intersec = - m_low0_u / (m_high0_u-m_low0_u);
+			glVertex3f(-0.5f,intersec*m_opacity-0.5f,0);
+		}
+		else if(m_high1_u<0 && m_low1_u>0)
+		{
+			float intersec = m_low1_u / (m_low1_u-m_high1_u);
+			glVertex3f(-0.5f,intersec*m_opacity-0.5f,0);
+		}
+
+		/* display high0 */
+		if(m_high0_u>=0 && m_high0_u<=1)
+			glVertex3f(m_high0_u-0.5f,m_opacity-0.5f,0);
+
+		else if(m_high0_u<0 && m_high1_u>=0)
+			glVertex3f(-0.5f,m_opacity-0.5f,0);
+
+		/* display high1 */
+		if(m_high1_u>=0 && m_high1_u<=1)
+			glVertex3f(m_high1_u-0.5f,m_opacity-0.5f,0);
+
+		else if(m_high1_u>1 && m_high0_u<=1)
+			glVertex3f(+0.5f,m_opacity-0.5f,0);
+
+		/* display low1 */
+		if(m_low1_u>=0 && m_low1_u<=1)
+		{
+			glVertex3f(m_low1_u-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+		}
+
+		else if(m_high1_u<=1 && m_low1_u>1)
+		{
+			float intersec = (m_low1_u-1)/ (m_low1_u-m_high1_u);
+			glVertex3f(+0.5f,intersec*m_opacity-0.5f,0);
+		}
+		else if(m_low0_u<1 && m_high0_u>1)
+		{
+			float intersec = (1-m_low0_u) / (m_high0_u-m_low0_u);
+			glVertex3f(+0.5f,intersec*m_opacity-0.5f,0);
+		}
+
+		/* flat ramp if trapezoid is not seen */
+		if((m_low0_u<0 && m_low1_u<0) || (m_low0_u>1 && m_low1_u>1))
+		{
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+		}
+
+		glEnd();
+
+		float scale = 0.05f; // square size
+
+		/* lower square of first ramp */
+		if(m_low0_u>=0 && m_low0_u<=1)
+		{
+			glColor3f(m_low0_color[0], m_low0_color[1], m_low0_color[2]);
+
+			glPushMatrix();
+			glTranslatef(m_low0_u-0.5f,-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+
+		/* higher square of first ramp */
+		if(m_high0_u>=0 && m_high0_u<=1)
+		{
+			glColor3f(m_high0_color[0], m_high0_color[1], m_high0_color[2]);
+
+			glPushMatrix();
+			glTranslatef(m_high0_u-0.5f,m_opacity-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+
+		/* center square of first ramp */
+		if((m_low0_u+m_high0_u)/2>=0 && (m_low0_u+m_high0_u)/2<=1)
+		{
+			glColor3f(m_middle0_color[0], m_middle0_color[1], m_middle0_color[2]);
+
+			glPushMatrix();
+			glTranslatef((m_low0_u+m_high0_u)/2-0.5f,m_opacity/2-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+
+		/* lower square of second ramp */
+		if(m_low1_u>=0 && m_low1_u<=1)
+		{
+			glColor3f(m_low1_color[0], m_low1_color[1], m_low1_color[2]);
+
+			glPushMatrix();
+			glTranslatef(m_low1_u-0.5f,-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+
+		/* higher square of second ramp */
+		if(m_high1_u>=0 && m_high1_u<=1)
+		{
+			glColor3f(m_high1_color[0], m_high1_color[1], m_high1_color[2]);
+
+			glPushMatrix();
+			glTranslatef(m_high1_u-0.5f,m_opacity-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+
+		/* center square of second ramp */
+		if((m_low1_u+m_high1_u)/2>=0 && (m_low1_u+m_high1_u)/2<=1)
+		{
+			glColor3f(m_middle1_color[0], m_middle1_color[1], m_middle1_color[2]);
+
+			glPushMatrix();
+			glTranslatef((m_low1_u+m_high1_u)/2-0.5f,m_opacity/2-0.5f,0);
+			glScalef(scale/m_aspectratio, scale, scale);
+
+			glBegin(GL_QUADS);
+			glVertex3f(-0.5f,-0.5f,0);
+			glVertex3f(+0.5f,-0.5f,0);
+			glVertex3f(+0.5f,+0.5f,0);
+			glVertex3f(-0.5f,+0.5f,0);
+			glEnd();
+
+			glPopMatrix();
+		}
+	}
+
+
+	void Trapezoid::reshape(int w, int h)
+	{
+		m_aspectratio = (float)w/h;
+	}
+
+
+	bool Trapezoid::mouse(float x, float y)
+	{
+		float tolerance = 0.1f;
+
+		// NB: mouse coordinates are normalized (0..1)
+
+		/* assume no feature is selected */
+		m_feature = NONE;
+
+		if(x>=0 && x<=1 && y>=0 && y<=1)
+		{
+			/* lower corner of first ramp */
+			if(fabs(x-m_low0_u) < 0.1 && fabs(y-0) < tolerance)
+				m_feature = LOW0;
+
+			/* middle of first ramp */
+			else if(fabs(x-(m_low0_u+m_high0_u)/2) < 0.1 && fabs(y-m_opacity/2) < tolerance)
+				m_feature = MIDDLE0;
+
+			/* higher corner of first ramp */
+			else if(fabs(x-m_high0_u) < 0.1 && fabs(y-m_opacity) < tolerance)
+				m_feature = HIGH0;
+
+			/* lower corner of second ramp */
+			else if(fabs(x-m_low1_u) < 0.1 && fabs(y-0) < tolerance)
+				m_feature = LOW1;
+
+			/* middle of second ramp */
+			else if(fabs(x-(m_low1_u+m_high1_u)/2) < 0.1 && fabs(y-m_opacity/2) < tolerance)
+				m_feature = MIDDLE1;
+
+			/* higher corner of second ramp */
+			else if(fabs(x-m_high1_u) < 0.1 && fabs(y-m_opacity) < tolerance)
+				m_feature = HIGH1;
+		}
+
+		/* if a feature is selected, return true */
+		if(m_feature != NONE) return true;
+		else                  return false;
+	}
+
+
+	bool Trapezoid::motion(float x, float y)
+	{
+		// NB: mouse coordinates are normalized (0..1)
+
+		bool eventCaught = false;
+
+		/* what intensity is x */
+		float i = x*(m_right-m_left) + m_left;
+
+		/* change feature with new position */
+		switch(m_feature)
+		{
+		case LOW0: // move lower corner of first ramp
+			{
+				if(i>=m_high0) i = m_high0-1; // avoid inverse ramp (not handled in this code)
+				update(i,m_high0,m_high1,m_low1,m_opacity);
+				eventCaught = true;
+				break;
+			}
+		case HIGH0: // move higher corner of the first ramp
+			{
+				if(i<=m_low0) i = m_low0+1; // avoid inverse ramp (not handled in this code)
+				if(i>=m_high1) i = m_high1-1; // avoid inverse ramp (not handled in this code)
+				if(y>=0 && y<=1) m_opacity = y; // opacity is between 0 and 1
+				update(m_low0,i,m_high1,m_low1,m_opacity);
+				eventCaught = true;
+				break;
+			}
+		case HIGH1: // move higher corner of the second ramp
+			{
+				if(i>=m_low1) i = m_low1-1; // avoid inverse ramp (not handled in this code)
+				if(i<=m_high0) i = m_high0+1; // avoid inverse ramp (not handled in this code)
+				if(y>=0 && y<=1) m_opacity = y; // opacity is between 0 and 1
+				update(m_low0,m_high0,i,m_low1,m_opacity);
+				eventCaught = true;
+				break;
+			}
+		case LOW1: // move higher corner of the second ramp
+			{
+				if(i<=m_high1) i = m_high1+1; // avoid inverse ramp (not handled in this code)
+				update(m_low0,m_high0,m_high1,i,m_opacity);
+				eventCaught = true;
+				break;
+			}
+		case MIDDLE0: // translate first ramp
+			{
+				// i is the new ramp center
+				float hwindow = (m_high0-m_low0)/2;
+				if(i+hwindow>=m_high1)
+					update(m_high1-2*hwindow-1, m_high1-1, m_high1, m_low1,m_opacity);
+				else
+					update(i-hwindow, i+hwindow, m_high1, m_low1,m_opacity);
+				eventCaught = true;
+				break;
+			}
+		case MIDDLE1: // translate second ramp
+			{
+				// i is the new ramp center
+				float hwindow = (m_low1-m_high1)/2;
+				if(i-hwindow<=m_high0)
+					update(m_low0, m_high0, m_high0+1, m_high0+2*hwindow+1,m_opacity);
+				else
+					update(m_low0, m_high0, i-hwindow, i+hwindow,m_opacity);
+				eventCaught = true;
+				break;
+			}
+		default: break;
+		}
+
+		return eventCaught;
+	}
+
+
+	void Trapezoid::get(float i, float &r, float &g, float &b, float &a) const
+	{
+		/* lower flat portion of trapezoid */
+		if(i <= m_low0 || i >= m_low1)
+		{
+			r=0, g=0, b=0, a=0;
+		}
+		/* higher flat portion of trapezoid */
+		else if(i >= m_high0 && i <= m_high1)
+		{
+			float v = (i-m_high0) / (m_high1-m_high0);
+			r = (1-v)*m_high0_color[0] + (v)*m_high1_color[0];
+			g = (1-v)*m_high0_color[1] + (v)*m_high1_color[1];
+			b = (1-v)*m_high0_color[2] + (v)*m_high1_color[2];
+			a = m_opacity;
+		}
+		/* on the first ramp */
+		else if(i > m_low0 && i < (m_low0+m_high0)/2)
+		{
+			float v = 2 * (i-m_low0) / (m_high0-m_low0);
+			r = (1-v)*m_low0_color[0] + (v)*m_middle0_color[0];
+			g = (1-v)*m_low0_color[1] + (v)*m_middle0_color[1];
+			b = (1-v)*m_low0_color[2] + (v)*m_middle0_color[2];
+			a = v/2 * m_opacity;
+		}
+		else if(i >= (m_low0+m_high0)/2 && i < m_high1)
+		{
+			float v = 2 * ((i-m_low0) / (m_high0-m_low0) - 0.5f);
+			r = (1-v)*m_middle0_color[0] + (v)*m_high0_color[0];
+			g = (1-v)*m_middle0_color[1] + (v)*m_high0_color[1];
+			b = (1-v)*m_middle0_color[2] + (v)*m_high0_color[2];
+			a = (v/2+0.5f) * m_opacity;
+		}
+		/* on the second ramp */
+		else if(i > m_high1 && i <= (m_low1+m_high1)/2)
+		{
+			float v = 2 * (i-m_high1) / (m_low1-m_high1);
+			r = (v)*m_high1_color[0] + (1-v)*m_middle1_color[0];
+			g = (v)*m_high1_color[1] + (1-v)*m_middle1_color[1];
+			b = (v)*m_high1_color[2] + (1-v)*m_middle1_color[2];
+			a = v/2 * m_opacity;
+		}
+		else if(i > m_high1 && i < m_low1)
+		{
+			float v = 2 * ((i-m_high1) / (m_low1-m_high1) - 0.5f);
+			r = (v)*m_middle1_color[0] + (1-v)*m_low1_color[0];
+			g = (v)*m_middle1_color[1] + (1-v)*m_low1_color[1];
+			b = (v)*m_middle1_color[2] + (1-v)*m_low1_color[2];
+			a = (v/2+0.5f) * m_opacity;
+		}
+	}
+
+
+	void Trapezoid::setColor(float r, float g, float b)
+	{
+		switch(m_feature)
+		{
+		case LOW0:
+			m_low0_color[0] = r,
+			m_low0_color[1] = g,
+			m_low0_color[2] = b;
+			break;
+		case LOW1:
+			m_low1_color[0] = r,
+			m_low1_color[1] = g,
+			m_low1_color[2] = b;
+			break;
+		case HIGH0:
+			m_high0_color[0] = r,
+			m_high0_color[1] = g,
+			m_high0_color[2] = b;
+			break;
+		case HIGH1:
+			m_high1_color[0] = r,
+			m_high1_color[1] = g,
+			m_high1_color[2] = b;
+			break;
+		case MIDDLE0:
+			m_middle0_color[0] = r,
+			m_middle0_color[1] = g,
+			m_middle0_color[2] = b;
+			break;
+		case MIDDLE1:
+			m_middle1_color[0] = r,
+			m_middle1_color[1] = g,
+			m_middle1_color[2] = b;
+			break;
+		default: break;
+		}
+	}
+
+}} // namespace
diff --git a/.svn/pristine/a2/a2832fdaa638799e8bf927952e8226d4b1003a7e.svn-base b/.svn/pristine/a2/a2832fdaa638799e8bf927952e8226d4b1003a7e.svn-base
new file mode 100644
index 0000000..96ae72c
Binary files /dev/null and b/.svn/pristine/a2/a2832fdaa638799e8bf927952e8226d4b1003a7e.svn-base differ
diff --git a/.svn/pristine/a4/a4a0fa44a38d627c74ee0d95555619ee5abeb8df.svn-base b/.svn/pristine/a4/a4a0fa44a38d627c74ee0d95555619ee5abeb8df.svn-base
new file mode 100644
index 0000000..431e5d6
--- /dev/null
+++ b/.svn/pristine/a4/a4a0fa44a38d627c74ee0d95555619ee5abeb8df.svn-base
@@ -0,0 +1,96 @@
+/*****************************************************************************
+ * Copyright (C) 2009 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**	@file   glprintf.h
+ *	@author Herve Lombaert
+ *	@date   July 31st, 2008
+ *	@brief  glPrintf, prints in 3D a la printf()
+ *              NB: this file does rely on glut to load the used font
+ */
+
+#ifndef GLPRINTF_H
+#define GLPRINTF_H
+
+#if _WIN32
+# include <windows.h>
+#endif
+
+#ifdef __APPLE__
+# include <OpenGL/gl.h>
+# include <GLUT/glut.h>
+#else
+# include <GL/gl.h>
+# include <GL/glut.h>
+#endif
+
+#include <cstring>
+#include <cstdarg>
+#include <cstdio>
+
+#if _WIN32
+# pragma warning(disable:4996)
+#endif
+
+/** prints in 3D a la printf
+ *  Position the text with \c glTranslate()
+ *  Currently, bitmaps are displayed, \c glScale() does not work
+ *  NB: this file does rely on glut to load the used font
+ *
+ * \code
+ *   glColor3f(1,1,1);
+ *   glTranslatef(10,10,0);
+ *   glPrintf("value: %f\n", value);
+ * \endcode
+ */
+void glPrintf(const char* msg, ...)
+{
+	static GLuint fontBase = 0;
+	if(!glIsList(fontBase))
+	{
+		fontBase = glGenLists(127);
+		for(unsigned int i=0; i!=127; ++i)
+		{
+			// create a display list for each letter
+			glNewList(fontBase + i, GL_COMPILE);
+			glutBitmapCharacter(GLUT_BITMAP_8_BY_13, i);
+			glEndList();
+		}
+	}
+
+	// prepare the string
+	char str[256];
+	va_list arg;
+	va_start(arg, msg);
+	vsnprintf(str, 256, msg, arg);
+	va_end(arg);
+
+	// position and display the string
+	glRasterPos3f(0,0,0);
+	glListBase(fontBase);
+	glCallLists(strlen(str), GL_UNSIGNED_BYTE, str);
+}
+
+#if _WIN32
+# pragma warning(default:4996)
+#endif
+
+
+#endif
+
diff --git a/.svn/pristine/a9/a9476b7330311e644b49a764e5ac307a9f55445e.svn-base b/.svn/pristine/a9/a9476b7330311e644b49a764e5ac307a9f55445e.svn-base
new file mode 100644
index 0000000..43be651
--- /dev/null
+++ b/.svn/pristine/a9/a9476b7330311e644b49a764e5ac307a9f55445e.svn-base
@@ -0,0 +1,71 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#if WIN32
+#include <windows.h>
+#include "msvc/glee.h"
+#endif
+
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <error.h>
+
+#include "test_io.h"
+#include "test_display2d.h"
+#include "test_display3d.h"
+#include "test_display4d.h"
+#include "test_mask3d.h"
+#include "test_display3d_clip.h"
+#include "test_isosurface.h"
+#include "test_3dpick.h"
+#include "test_transferfunction.h"
+#include "test_point3d.h"
+#include "test_stereo.h"
+#include "test_multi.h"
+
+
+int main(int argc, char** argv)
+{
+	try
+	{
+		printf("*** libVD tests\n");
+		printf("*** wait until all windows open\n");
+		printf("***\n");
+		printf("*** begin tests:\n");
+
+		glutInit(&argc, (char**)argv);
+		glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
+		
+		TestIO::main_init();
+		TestDisplay2D::main_init();
+		TestDisplay3D::main_init();
+		TestDisplay4D::main_init();
+		TestDisplay3DClip::main_init();
+		TestDisplayIsoSurface::main_init();
+		Test3DPick::main_init();
+		TestTransferFunction::main_init();
+		TestDisplayMask3D::main_init();
+		TestPoint3D::main_init();
+		TestStereo::main_init();
+		TestMulti3D::main_init();
+
+		printf("*** end tests:\n");
+
+		glutMainLoop();
+		return 0;
+	}
+	catch(const Error &e) { e.print(); }
+	catch(...) { printf("unknown error\n"); }
+
+	return 1;
+}
+
diff --git a/.svn/pristine/ab/ab0f2a24cd4dbca28d330e1d80607fd43aa851e6.svn-base b/.svn/pristine/ab/ab0f2a24cd4dbca28d330e1d80607fd43aa851e6.svn-base
new file mode 100644
index 0000000..ad94186
--- /dev/null
+++ b/.svn/pristine/ab/ab0f2a24cd4dbca28d330e1d80607fd43aa851e6.svn-base
@@ -0,0 +1,241 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/** @file mask3d.h
+ *  @author Herve Lombaert
+ *  @date January 17th, 2006
+ *
+ */
+
+#ifndef MASK3D_H
+#define MASK3D_H
+
+#include <error.h>
+
+namespace libvdDisplay
+{
+	/**
+	 * @class Mask3D
+	 * @brief Display an orthogonal mesh for a 3D mask
+	 *
+	 * Display a mesh for a mask. It is made of tiny small cubes
+	 * showing where the boundary of the mask is.
+	 *
+	 * This classes uses a binary mask of any type. Possible values
+	 * of the masks are 0 and anything but 0.
+	 *
+	 * For better results use the following OpenGL initialization:
+	 *
+	 * \code
+	 *   glShadeModel(GL_SMOOTH);
+	 *   glEnable(GL_DEPTH_TEST);
+	 *   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+	 * \endcode
+	 *
+	 * To use it, use:
+	 *
+	 * \code
+	 *   unsigned char* mask; // e.g., [512*512*512] fill mask
+	 *   Display::Mask3D displayMask;
+	 *
+	 *   displayMask.update(mask, 512,512,512);
+	 *
+	 *   glColor3f(0.8,0,0); // color of the mask
+	 *   displayMask.display();
+	 * \endcode
+	 *
+	 */
+
+	class Mask3D
+	{
+	public:
+		Mask3D();
+		~Mask3D();
+
+		/** update the visualizer with a new mask
+		 *  internally creates or update the display list */
+		template <typename DataType>
+		void update(const DataType* data,
+		            unsigned int width,
+		            unsigned int height,
+		            unsigned int depth);
+
+		/** display the display list */
+		void display();
+
+		/** display directly the mask without using a display list
+		 *  this can be used when the mask is interactively updated */
+		template <typename DataType>
+		void display(const DataType* data,
+		             unsigned int width,
+		             unsigned int height,
+		             unsigned int depth);
+
+		/** clear the mask, remove any display list */
+		void clear();
+
+	private:
+		GLuint m_id;
+	};
+
+
+	template <typename DataType>
+	void Mask3D::update(const DataType* data,
+	                    unsigned int width,
+	                    unsigned int height,
+	                    unsigned int depth)
+	{
+		/* Create a new display list */
+		if(glIsList(m_id)) glDeleteLists(m_id,1);
+		m_id = glGenLists(1); glCheckError();
+		glNewList(m_id, GL_COMPILE); glCheckError();
+
+		/* Create mesh */
+		display(data, width, height, depth);
+
+		/* End list */
+		glEndList();
+	}
+
+
+	template <typename DataType>
+	void Mask3D::display(const DataType* data,
+	                     unsigned int width,
+	                     unsigned int height,
+	                     unsigned int depth)
+	{
+		int neighbors[6][3] = { {-1,0,0},{+1,0,0},{0,-1,0},{0,+1,0},{0,0,-1},{0,0,+1} };
+
+		/* cube
+		 *
+		 *      4----------5
+		 *      |\         |\
+		 *      | \        | \
+		 *      |  7----------6
+		 *      |  |       |  |
+		 *      0--|-------1  |
+		 *       \ |        \ |
+		 *        \|         \|
+		 *         3----------2
+		 *
+		 */
+
+		// list of face points and normals
+		// 4 first triplets are counter clockwise face point
+		// last triplet is the face normal
+		float offset[6][5][3] = {
+		{	{-0.5,+0.5,+0.5}, // 74033047
+			{-0.5,-0.5,+0.5},
+			{-0.5,-0.5,-0.5},
+			{-0.5,+0.5,-0.5},
+			{-1,0,0}	},
+		{	{+0.5,-0.5,+0.5}, // 56211265
+			{+0.5,+0.5,+0.5},
+			{+0.5,+0.5,-0.5},
+			{+0.5,-0.5,-0.5},
+			{+1,0,0}	},
+		{	{-0.5,-0.5,+0.5}, // 45100154
+			{+0.5,-0.5,+0.5},
+			{+0.5,-0.5,-0.5},
+			{-0.5,-0.5,-0.5},
+			{0,-1,0}	},
+		{	{+0.5,+0.5,+0.5}, // 67322376
+			{-0.5,+0.5,+0.5},
+			{-0.5,+0.5,-0.5},
+			{+0.5,+0.5,-0.5},
+			{0,+1,0}	},
+		{	{-0.5,-0.5,-0.5}, // 01233210
+			{+0.5,-0.5,-0.5},
+			{+0.5,+0.5,-0.5},
+			{-0.5,+0.5,-0.5},
+			{0,0,-1}	},
+		{	{-0.5,+0.5,+0.5}, // 76544567
+			{+0.5,+0.5,+0.5},
+			{+0.5,-0.5,+0.5},
+			{-0.5,-0.5,+0.5},
+			{0,0,+1}	}	};
+  
+		/* Scale to volume space */
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glTranslatef(-0.5,-0.5,-0.5);                  // offset half the volume
+		glScalef(1.0f/width, 1.0f/height, 1.0f/depth); // unit is voxel
+		glTranslatef(+0.5,+0.5,+0.5);                  // offset half voxel size
+
+		/* Lighting helps visualization of the mesh */
+		/* Nice coloring for the mesh */
+		glPushAttrib(GL_ENABLE_BIT);
+		glEnable(GL_COLOR_MATERIAL);
+		glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+
+		glEnable(GL_LIGHTING);
+		glEnable(GL_LIGHT0);
+
+		/* start lists of quads */
+		glBegin(GL_QUADS);
+
+		for(unsigned int k=0; k<depth; ++k)
+			for(unsigned int j=0; j<height; ++j)
+				for(unsigned int i=0; i<width; ++i)
+		{
+			if(data[(k*height+j)*width+i] != 0)
+			{
+				for(int m=0; m<6; ++m)
+				{
+					bool drawFace = false;
+
+					int ni = i+neighbors[m][0];
+					int nj = j+neighbors[m][1];
+					int nk = k+neighbors[m][2];
+
+					if(ni>=0 && ni<(int)width &&
+					   nj>=0 && nj<(int)height &&
+					   nk>=0 && nk<(int)depth)
+					{
+						if(data[(nk*height+nj)*width+ni] == 0)
+							drawFace = true;
+					}
+					else
+						drawFace = true;
+
+					if(drawFace)
+					{
+						/* Draw one face (outward), the interface of the mask */
+						glNormal3f(offset[m][4][0], offset[m][4][1], offset[m][4][2]);
+						glVertex3f(i+offset[m][0][0], j+offset[m][0][1], k+offset[m][0][2]);
+						glVertex3f(i+offset[m][1][0], j+offset[m][1][1], k+offset[m][1][2]);
+						glVertex3f(i+offset[m][2][0], j+offset[m][2][1], k+offset[m][2][2]);
+						glVertex3f(i+offset[m][3][0], j+offset[m][3][1], k+offset[m][3][2]);
+					}
+				}
+			}
+		}
+
+		glEnd();
+
+		glPopMatrix();
+
+		/* Leaving function */
+		glPopAttrib();
+  	}
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/af/af8a00f4e179140077c31120fea88ae43a9d1b43.svn-base b/.svn/pristine/af/af8a00f4e179140077c31120fea88ae43a9d1b43.svn-base
new file mode 100644
index 0000000..f71122b
--- /dev/null
+++ b/.svn/pristine/af/af8a00f4e179140077c31120fea88ae43a9d1b43.svn-base
@@ -0,0 +1,76 @@
+# Makefile
+# template makefile,
+# Herve J. Lombaert, Oct. 2001
+
+### FILES #
+
+EXEC    = tests
+CCFILES = $(wildcard *.cpp)
+HFILES  = $(wildcard *.h)
+OBJECTS = $(CCFILES:.cpp=.o)
+DEP     = Dep.mk
+
+
+### ARGUMENTS #
+
+CC        = g++
+FLAGS     = -O3 -Wall
+LIBS      = -L../lib -lvd
+INCLUDES  = -I..
+
+PLATFORM  = $(shell uname)
+ifeq  "$(PLATFORM)" "Darwin"
+LIBS      += -framework OpenGL -framework GLUT
+else
+LIBS      += -lglut -lGL
+endif
+
+
+### MAKEFILES RULES #
+
+%.o : %.cpp
+	$(CC) -c -o $@ $< $(FLAGS) $(INCLUDES)
+%.o : %.C
+	$(CC) -c -o $@ $< $(FLAGS) $(INCLUDES)
+%.o : %.cc
+	$(CC) -c -o $@ $< $(FLAGS) $(INCLUDES)
+%.o : %.c
+	$(CC) -c -o $@ $< $(FLAGS) $(INCLUDES)
+
+.PHONY : all clean depend tar
+
+all : $(EXEC)
+
+$(EXEC) : $(OBJECTS)
+	$(CC) -o $@ $+ $(FLAGS) $(LIBS)
+	@echo "Compilation is finised"
+
+ifeq ($(findstring depend,$(MAKECMDGOALS)),)
+include $(DEP)
+endif
+
+$(DEP) : Makefile
+	make depend
+
+clean :
+	rm -f $(EXEC) $(DEP) $(OBJECTS) *~
+	@echo "Project is now clean"
+
+depend :
+ifneq "$(shell which makedepend)" ""
+	@makedepend -f- $(CCFILES) $(HFILES) 2>/dev/null \
+	| grep -v /usr/ > $(DEP)
+	@echo "PRJDIR=`pwd | sed 's/^.*\///'`" >> $(DEP)
+	@echo "Dependence is done"
+else
+	@echo "Warning: no dependance done (cannot find makedepend)"
+endif
+
+tar: clean depend
+	@cd .. && tar -cf $(PRJDIR).tar $(PRJDIR)
+	@gzip ../$(PRJDIR).tar
+	@echo "Compression done, check parent directory"
+
+zip: clean depend
+	@cd .. && zip -r $(PRJDIR).zip $(PRJDIR)
+	@echo "Compression done, check parent directory"
diff --git a/.svn/pristine/b0/b0051e612a0af3910f032a035a8acfe571ed7004.svn-base b/.svn/pristine/b0/b0051e612a0af3910f032a035a8acfe571ed7004.svn-base
new file mode 100644
index 0000000..55dc533
--- /dev/null
+++ b/.svn/pristine/b0/b0051e612a0af3910f032a035a8acfe571ed7004.svn-base
@@ -0,0 +1,202 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <io/ioraw.h>
+#include <tools/manipworld.h>
+
+#include <display/display3d.h>
+
+/**
+ * @test Testing 3D volume renderer
+ */
+
+namespace TestDisplay3D
+{
+
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static int gModifiers = 0; // ctrl,alt,shift
+	static MouseButton gButton = NONE;
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+	int winh = 0;
+
+
+	Tools::ManipWorld manipWorld;
+	Display::Volume displayVolume;
+	unsigned short* volume;
+	unsigned int size[3];
+
+
+	void init()
+	{
+		glClearColor (0.25, 0.4, 0.6, 1.0);
+
+		manipWorld.init();
+		manipWorld.translate(0,0,-3.6);
+
+		displayVolume.update(volume, size[0], size[1], size[2]);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+		glMatrixMode(GL_MODELVIEW);
+
+		winh = h;
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		
+		/* Rotate volume with mouse movement */
+		manipWorld.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(2,2,2);
+
+		glEnable(GL_DEPTH_TEST);
+
+		displayVolume.display();
+
+		glDisable(GL_DEPTH_TEST);
+
+		glPopMatrix();
+		
+		glutSwapBuffers();
+	}
+
+	void mouse(int button, int state, int x, int y)
+	{
+		gModifiers = glutGetModifiers();
+
+		/* degrade the volume when moving the mouse, so the rendering is interactive */
+		if(state == GLUT_DOWN) displayVolume.setQuality(0.50);                         // low resolution (interactive)
+		else                 { displayVolume.setQuality(1.0f); glutPostRedisplay(); }  // full resolution
+
+		/* pick if shift is pressed */
+		if(gModifiers == GLUT_ACTIVE_SHIFT && button == GLUT_LEFT_BUTTON)
+		{
+		}
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				break;
+
+			case GLUT_RIGHT_BUTTON:
+				gButton = RIGHT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				break;
+
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+			{
+				float dx = (x - gPrevMouse[0]);
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				manipWorld.rotateYAxis(dx);
+				manipWorld.rotateXAxis(dy);
+				glutPostRedisplay();
+				break;
+			}
+			case RIGHT:
+			{
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[1] = y;
+
+				float deltaZoom = 1.0f + dy / 100.0f;
+				manipWorld.zoom(deltaZoom);
+				glutPostRedisplay();
+				break;
+			}
+			default:
+				break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		bool refresh = true;
+
+		switch(key)
+		{
+		case '1': displayVolume.setMode(Display::Volume::VRT); break;
+		case '2': displayVolume.setMode(Display::Volume::MIP); break;
+		case '3': displayVolume.setMode(Display::Volume::MPR); break;
+
+		case 'q':
+			glutDestroyWindow(winid); // close window, terminate glut loop
+			exit(0); // on OSX for some reason the program does not terminate
+		default:
+			break;
+		}
+
+		if(refresh) glutPostRedisplay();
+	}
+
+	int main_init()
+	{
+		try
+		{
+			size[0] = 128,
+			size[1] = 128,
+			size[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", volume, size[0]*size[1]*size[2]);
+			
+			glutInitWindowSize(250, 250);
+			//glutInitWindowPosition(100, 100);
+			winid = glutCreateWindow("display3d");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+		
+			//glutMainLoop();
+			
+			return 0;
+		}
+		catch(const Error &e) { e.print(); }
+		catch(...) { printf("unknown error\n"); }
+
+		return 1;
+	}
+
+} // namespace
diff --git a/.svn/pristine/b0/b04e977e96e1b38bdbfa82b14a032bfe500027ee.svn-base b/.svn/pristine/b0/b04e977e96e1b38bdbfa82b14a032bfe500027ee.svn-base
new file mode 100644
index 0000000..7a25bcc
--- /dev/null
+++ b/.svn/pristine/b0/b04e977e96e1b38bdbfa82b14a032bfe500027ee.svn-base
@@ -0,0 +1,1078 @@
+# Doxyfile 1.3.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = libvd
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = .
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, 
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en 
+# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, 
+# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
+# members of a class in the documentation of that class as if those members were 
+# ordinary class members. Constructors, destructors and assignment operators of 
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. It is allowed to use relative paths in the argument list.
+
+STRIP_FROM_PATH        = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explict @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = YES
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# reimplements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
+# only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text.
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = warning.log
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  =  ..
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
+# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc
+
+FILE_PATTERNS          = 
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = ../lib ../src ../test
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories.
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = images
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.
+
+INPUT_FILTER           = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output dir.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = letter
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimised for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assigments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse the 
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
+# super classes. Setting the tag to NO turns the diagrams off. Note that this 
+# option is superceded by the HAVE_DOT option below. This is only a fallback. It is 
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similiar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes that 
+# lay further from the root node will be omitted. Note that setting this option to 
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
+# note that a graph may be further truncated if the graph's image dimensions are 
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/.svn/pristine/b5/b505db2e680e576b9d5eb959395229147f07dd01.svn-base b/.svn/pristine/b5/b505db2e680e576b9d5eb959395229147f07dd01.svn-base
new file mode 100644
index 0000000..7843e31
Binary files /dev/null and b/.svn/pristine/b5/b505db2e680e576b9d5eb959395229147f07dd01.svn-base differ
diff --git a/debian/compat b/.svn/pristine/b6/b6abd567fa79cbe0196d093a067271361dc6ca8b.svn-base
similarity index 100%
rename from debian/compat
rename to .svn/pristine/b6/b6abd567fa79cbe0196d093a067271361dc6ca8b.svn-base
diff --git a/.svn/pristine/ba/ba01086567c830aa84681bf2bc5420e1b60dc713.svn-base b/.svn/pristine/ba/ba01086567c830aa84681bf2bc5420e1b60dc713.svn-base
new file mode 100644
index 0000000..77f4a68
--- /dev/null
+++ b/.svn/pristine/ba/ba01086567c830aa84681bf2bc5420e1b60dc713.svn-base
@@ -0,0 +1,473 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/** @file	smoothmask3d.h
+ *	@author	Herve Lombaert
+ *	@date	March 1st, 2007
+ *
+ *	From a orthogonal mask, create a smooth mesh, and display it
+ */
+
+#ifndef SMOOTHMASK3D_H
+#define SMOOTHMASK3D_H
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+#include <queue>
+#include <cmath>
+#include <error.h>
+
+namespace libvdDisplay
+{
+	/**
+	 * @class SmoothMask3D
+	 * @brief Display an smoothed mesh for a 3D mask
+	 *
+	 * Display a mesh for a mask. It is an isosurface whose isovalue
+	 * represents the boundary of the mask.
+	 *
+	 * This classes uses a binary mask of any type. Possible values
+	 * of the masks are 0 and anything but 0.
+	 *
+	 * For better results use the following OpenGL initialization:
+	 *
+	 * \code
+	 *   glShadeModel(GL_SMOOTH);
+	 *   glEnable(GL_DEPTH_TEST);
+	 *   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+	 * \endcode
+	 *
+	 * To use it, use:
+	 *
+	 * \code
+	 *   unsigned char* volume; // e.g., [512*512*512] volume
+	 *   unsigned char* mask;   // e.g., [512*512*512] fill mask
+	 *   Display::SmoothMask3D displayMask;
+	 *
+	 *   displayMask.update(volume, mask, 512,512,512);
+	 *
+	 *   glColor3f(0.8,0,0); // color of the mask
+	 *   displayMask.display();
+	 * \endcode
+	 *
+	 */
+
+	class SmoothMask3D
+	{
+	public:
+		SmoothMask3D();
+		~SmoothMask3D();
+
+		/** update the visualizer with a new mask
+		 *  internally creates or update the display list
+		 * @param data  volume data (we will get its gradient for the surface normal
+		 * @param mask  binary mask (either 0 or else)
+		 */
+		template <typename DataType, typename MaskType>
+		void update(const DataType* data,
+					const MaskType* mask,
+		            unsigned int width,
+		            unsigned int height,
+		            unsigned int depth);
+
+		/** display the display list */
+		void display() const;
+
+		/** clear the mask, remove any display list */
+		void clear();
+
+	private:
+		template <typename DataType>
+		void distanceTransform(const DataType* data,
+							  unsigned char* phi,
+							  std::vector<int> &band_index,
+							  unsigned int width,
+							  unsigned int height,
+							  unsigned int depth);
+
+		/** march all cubes */
+		template <typename DataType>
+		void march_cubes(const DataType* data, // volume data
+						 const unsigned char* mask, // band
+						 std::vector<int> &band_index, // voxels in band
+						 unsigned int width,
+						 unsigned int height,
+						 unsigned int depth);
+
+		/** Marching a single cube
+		 * Code from Paul Bourke (http://local.wasp.uwa.edu.au/~pbourke/modelling/polygonise/) */
+		struct XYZ { double x,y,z; };
+		struct TRIANGLE { XYZ p[3]; };
+		struct GRIDCELL { XYZ p[8]; double val[8]; };
+		static XYZ VertexInterp(double isolevel, XYZ p1, XYZ p2, double valp1, double valp2);
+		static int Polygonise(GRIDCELL grid,double isolevel,TRIANGLE *triangles);
+
+	private:
+		GLuint m_meshid; ///< mesh display list
+	};
+
+} // namespace
+
+
+
+namespace libvdDisplay
+{
+
+	template <typename DataType, typename MaskType>
+	void SmoothMask3D::update(const DataType* data,
+							  const MaskType* mask,
+							  unsigned int width,
+							  unsigned int height,
+							  unsigned int depth)
+	{
+		/* Create a new display list */
+		if(glIsList(m_meshid)) glDeleteLists(m_meshid,1);
+		m_meshid = glGenLists(1);
+		glNewList(m_meshid, GL_COMPILE);
+
+		/* Scale to volume space */
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glTranslatef(-0.5f,-0.5f,-0.5f);
+		glScalef(1.0f/width, 1.0f/height, 1.0f/depth);
+
+		/* Nice coloring for the mesh */
+		glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+		glEnable(GL_COLOR_MATERIAL);
+
+		/* Lighting helps visualization of the mesh */
+		glEnable(GL_LIGHTING);
+		glEnable(GL_LIGHT0);
+
+		/* create smoothed mask */
+		std::vector<int> band_index;
+		unsigned char* phi = new unsigned char [width*height*depth];
+		distanceTransform(mask, phi, band_index, width, height, depth);
+
+		/* Create mesh */
+		if(data)
+			march_cubes(data, phi, band_index, width, height, depth);
+		else
+			march_cubes(mask, phi, band_index, width, height, depth);
+		delete [] phi;
+
+		/* Leaving function */
+		glDisable(GL_LIGHT0);
+		glDisable(GL_LIGHTING);
+		glDisable(GL_COLOR_MATERIAL);
+
+		/* End list */
+		glPopMatrix();
+		glEndList();
+	}
+
+
+	template <typename DataType>
+	void SmoothMask3D::distanceTransform(const DataType* mask,
+										unsigned char* phi,
+										std::vector<int> &band_index, // voxels in band (only inner layers)
+										unsigned int width,
+										unsigned int height,
+										unsigned int depth)
+	{
+		int neighbors[][3] = {
+			{0,0,-1}, {0,-1,0}, {-1,0,0},
+			{0,0,+1}, {0,+1,0}, {+1,0,0}
+		};
+
+		/////////////////////////////////////////////////
+		// Build a distance transform within a small band
+
+		// ping-pong boundaries
+		std::queue<int> inner_boundary[2];
+		std::queue<int> outer_boundary[2];
+		bool current_list = 0;
+		unsigned char zero = 128;
+		const int max_radius = 5; // narrow band radius
+
+		// empty phi
+		for(unsigned int i=0; i<width*height*depth; ++i) phi[i] = zero;
+
+		// find boundary and place +1 inside mask
+		for(unsigned int k=0; k<depth; ++k)
+			for(unsigned int j=0; j<height; ++j)
+				for(unsigned int i=0; i<width; ++i)
+		{
+			int index = (k*height+j)*width+i;
+			if(mask[index] != 0)
+			{
+				for(unsigned int m=0; m<6; ++m)
+				{
+					int ii = i + neighbors[m][0];
+					int jj = j + neighbors[m][1];
+					int kk = k + neighbors[m][2];
+
+					if(ii >=0 && ii < (int)width && jj >= 0 && jj < (int)height && kk>=0 && kk<(int)depth)
+					{
+						// if on boundary inside mask
+						if(mask[(kk*height+jj)*width+ii] == 0)
+						{
+							phi[index] = zero+1;
+							inner_boundary[current_list].push(index); // inside
+							break;
+						}
+					}
+				}
+			}
+		}
+		
+		// find boundary and place -1 outside mask
+		for(unsigned int k=0; k<depth; ++k)
+			for(unsigned int j=0; j<height; ++j)
+				for(unsigned int i=0; i<width; ++i)
+		{
+			int index = (k*height+j)*width+i;
+			if(mask[index] == 0)
+			{
+				for(unsigned int m=0; m<6; ++m)
+				{
+					int ii = i + neighbors[m][0];
+					int jj = j + neighbors[m][1];
+					int kk = k + neighbors[m][2];
+
+					if(ii >=0 && ii < (int)width && jj >= 0 && jj < (int)height && kk>=0 && kk<(int)depth)
+					{
+						// if on boundary outside mask
+						if(mask[(kk*height+jj)*width+ii] != 0)
+						{
+							phi[index] = zero-1;
+							outer_boundary[current_list].push(index); // outside
+							break;
+						}
+					}
+				}
+			}
+		}
+
+		// grow inner layer until it is done
+		current_list = 0;
+		int layer = 1;
+		while(!inner_boundary[current_list].empty() && layer < max_radius)
+		{
+			// get neighbors
+			while(!inner_boundary[current_list].empty())
+			{
+				// get point
+				int index = inner_boundary[current_list].front();
+				inner_boundary[current_list].pop();
+
+				// mark point
+				if(phi[index] == zero+layer)
+				{
+					// put in list of voxels in band
+					if(layer < max_radius-1)
+						band_index.push_back(index);
+
+					int k = index / (width*height);
+					int j = (index - k*width*height) / width;
+					int i = index - (k*height+j)*width;
+
+					// push all neighbors
+					for(unsigned int m=0; m<6; ++m)
+					{
+						int ii = i + neighbors[m][0];
+						int jj = j + neighbors[m][1];
+						int kk = k + neighbors[m][2];
+
+						if(ii >=0 && ii < (int)width && jj >= 0 && jj < (int)height && kk>=0 && kk<(int)depth)
+						{
+							int nindex = (kk*height+jj)*width+ii;
+							if(phi[nindex] == zero)
+							{
+								phi[(kk*height+jj)*width+ii] = zero+layer+1;
+								inner_boundary[!current_list].push((kk*height+jj)*width+ii);
+							}
+						}
+					}
+				}
+			}
+
+			// switch list
+			current_list = !current_list;
+			++layer;
+		}
+		
+		// grow outer layer until it is done
+		current_list = 0;
+		layer = 1;
+		while(!outer_boundary[current_list].empty() && layer < max_radius)
+		{
+			// get neighbors
+			while(!outer_boundary[current_list].empty())
+			{
+				// get point
+				int index = outer_boundary[current_list].front();
+				outer_boundary[current_list].pop();
+
+				// mark point
+				if(phi[index] == zero-layer)
+				{
+					// put in list of voxels in band
+					if(layer < max_radius-1)
+						band_index.push_back(index);
+
+					int k = index / (width*height);
+					int j = (index - k*width*height) / width;
+					int i = index - (k*height+j)*width;
+
+					// push all neighbors
+					for(unsigned int m=0; m<6; ++m)
+					{
+						int ii = i + neighbors[m][0];
+						int jj = j + neighbors[m][1];
+						int kk = k + neighbors[m][2];
+
+						if(ii >=0 && ii < (int)width && jj >= 0 && jj < (int)height && kk>=0 && kk<(int)depth)
+						{
+							int nindex = (kk*height+jj)*width+ii;
+
+							if(phi[nindex] == zero)
+							{
+								phi[nindex] = zero-layer-1;
+								outer_boundary[!current_list].push(nindex);
+							}
+						}
+					}
+				}
+			}
+
+			// switch list
+			current_list = !current_list;
+			++layer;
+		}
+	}
+
+	/* march all voxel of the volume, we want all isosurfaces */
+	template <typename DataType>
+	void SmoothMask3D::march_cubes(const DataType* data, // volume data
+								   const unsigned char* mask, // band
+								   std::vector<int> &band_index, // voxels in band
+								   unsigned int width,
+								   unsigned int height,
+								   unsigned int depth)
+	{
+		try
+		{
+			float isovalue = 128; // zero in the unsigned char distance transform
+
+			// iterate in the band
+			for(std::vector<int>::const_iterator it = band_index.begin(); it != band_index.end(); ++it)
+			{
+				int k = *it / (width*height);
+				int j = (*it - k*width*height) / width;
+				int i = *it - (k*height+j)*width;
+
+				if(i == (int)width-1 || j == (int)height-1 || k == (int)depth-1) continue; // cannot march cube in this case
+
+				GRIDCELL cell;
+				cell.p[0].x = i+0; cell.p[0].y = j+0; cell.p[0].z = k+0; cell.val[0] = mask[((k+0)*height+(j+0))*width+(i+0)];
+				cell.p[1].x = i+1; cell.p[1].y = j+0; cell.p[1].z = k+0; cell.val[1] = mask[((k+0)*height+(j+0))*width+(i+1)];
+				cell.p[2].x = i+1; cell.p[2].y = j+1; cell.p[2].z = k+0; cell.val[2] = mask[((k+0)*height+(j+1))*width+(i+1)];
+				cell.p[3].x = i+0; cell.p[3].y = j+1; cell.p[3].z = k+0; cell.val[3] = mask[((k+0)*height+(j+1))*width+(i+0)];
+				cell.p[4].x = i+0; cell.p[4].y = j+0; cell.p[4].z = k+1; cell.val[4] = mask[((k+1)*height+(j+0))*width+(i+0)];
+				cell.p[5].x = i+1; cell.p[5].y = j+0; cell.p[5].z = k+1; cell.val[5] = mask[((k+1)*height+(j+0))*width+(i+1)];
+				cell.p[6].x = i+1; cell.p[6].y = j+1; cell.p[6].z = k+1; cell.val[6] = mask[((k+1)*height+(j+1))*width+(i+1)];
+				cell.p[7].x = i+0; cell.p[7].y = j+1; cell.p[7].z = k+1; cell.val[7] = mask[((k+1)*height+(j+1))*width+(i+0)];
+		
+				TRIANGLE triangles[5];
+				int nbTriangles = 0;
+		
+				nbTriangles = Polygonise(cell,isovalue,triangles);
+
+				/* use triangle normal to check if the volume gradient has to be inverted or not */
+				for(int m=0; m<nbTriangles; ++m)
+				{
+					/* triangle points */
+					float x1 = triangles[m].p[0].x; float y1 = triangles[m].p[0].y; float z1 = triangles[m].p[0].z;
+					float x2 = triangles[m].p[1].x; float y2 = triangles[m].p[1].y; float z2 = triangles[m].p[1].z;
+					float x3 = triangles[m].p[2].x; float y3 = triangles[m].p[2].y; float z3 = triangles[m].p[2].z;
+
+					/* normal is (x1->x2) cross (x2->x3) */
+					float u[3] = {x2-x1, y2-y1, z2-z1};
+					float v[3] = {x3-x2, y3-y2, z3-z2};
+					float nx = + (u[1]*v[2] - v[1]*u[2]);
+					float ny = - (u[0]*v[2] - v[0]*u[2]);
+					float nz = + (u[0]*v[1] - v[0]*u[1]);
+
+					/* draw opengl triangle */
+					if(!data)
+					{
+						glBegin(GL_TRIANGLES);
+							glNormal3f(nx,ny,nz);
+							glVertex3f(x1,y1,z1);
+							glVertex3f(x2,y2,z2);
+							glVertex3f(x3,y3,z3);
+						glEnd();
+					}
+
+					/* if a volume is provided, use data gradient for normals */
+					else
+					{
+						glBegin(GL_TRIANGLES);
+						for(unsigned int p=0; p<3; ++p)
+						{
+							/* get vertex coordinate and gradient (central difference) */
+							float x = triangles[m].p[p].x; float y = triangles[m].p[p].y; float z = triangles[m].p[p].z;
+							int xp = (int)((x>0) ? x-1 : x);       // previous point (x+1)
+							int xn = (int)((x<width-1) ? x+1 : x); // next point     (x-1)
+							int yp = (int)((y>0) ? y-1 : y);
+							int yn = (int)((y<height-1) ? y+1 : y);
+							int zp = (int)((z>0) ? z-1 : z);
+							int zn = (int)((z<depth-1) ? z+1 : z);
+
+							/* compute volume gradient and normalize it */
+							float gx = data[(((int)z)*height+((int)y))*width+(xn)] - data[(((int)z)*height+((int)y))*width+(xp)];
+							float gy = data[(((int)z)*height+(yn))*width+((int)x)] - data[(((int)z)*height+(yp))*width+((int)x)];
+							float gz = data[((zn)*height+((int)y))*width+((int)x)] - data[((zp)*height+((int)y))*width+((int)x)];
+							float g = sqrt(gx*gx + gy*gy + gz*gz); // norm
+							gx = gx/g; gy = gy/g; gz = gz/g; // normalize
+
+							/* check if gradient points to the same direction as the triangle normal */
+							float cos_theta = nx*gx + ny*gy + nz*gz;
+							if(cos_theta < 0) // revert gradient
+							{
+								gx = -gx,
+								gy = -gy,
+								gz = -gz;
+							}
+
+							/* draw triangle */
+							glNormal3f(gx,gy,gz); // normal
+							glVertex3f(x,y,z);    // vertex
+						}
+						glEnd();
+					}
+				} // end for
+			} // end band iteration
+		}
+		catch(Error &e) { e.tag("IsoSurface::march_cubes"); throw e; }
+	}
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/bf/bfd4ef31de7004790bf77e4f3cf1373480d650ea.svn-base b/.svn/pristine/bf/bfd4ef31de7004790bf77e4f3cf1373480d650ea.svn-base
new file mode 100644
index 0000000..0b345e1
--- /dev/null
+++ b/.svn/pristine/bf/bfd4ef31de7004790bf77e4f3cf1373480d650ea.svn-base
@@ -0,0 +1,309 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ *	@file	multidisplay.h
+ *	@author	Herve Lombaert
+ *	@date	March 23rd, 2007
+ *
+ */
+
+#ifndef MULTIDISPLAY_H
+#define MULTIDISPLAY_H
+
+#include <vector>
+#include <algorithm>
+
+namespace libvdDisplay
+{
+	/**
+	 * @class MultiDisplay
+	 * @brief Display multiple volume renderer, blends them for visualisation
+	 *
+	 * This class renders multiple volume in the same scene. Display
+	 * each renderer separately is difficult since the rendering planes
+	 * needs to be display with the back-to-front constraint. This class
+	 * handles this constraint.
+	 *
+	 * Here is an example of code:
+	 *
+	 * \code
+	 *	Display::Volume disp1;
+	 *	Display::Volume disp2;
+	 *
+	 *  Display::MultiDisplay blend;
+	 *
+	 *  blend.add(&disp1);
+	 *  blend.add(&disp2);
+	 *
+	 *  blend.display();
+	 * \endcode
+	 *
+	 */
+
+	template <typename Renderer>
+	class Multi
+	{
+	public:
+		Multi();
+		~Multi();
+
+		/** Add a new renderer
+		 * @param ren Renderer to use
+		 * @param scalingX pixel scaling in X direction (between 0.0 and 1.0)
+		 * @param scalingY pixel scaling in Y direction (between 0.0 and 1.0)
+		 * @param scalingZ pixel scaling in Z direction (between 0.0 and 1.0)
+		 */
+		void add(Renderer* ren, float scalingX, float scalingY, float scalingZ);
+
+		/** Remove a renderer */
+		void remove(Renderer* ren);
+
+		/** Display all renderers */
+		void display() const;
+
+	private:
+		/** Derive a class, so we can access
+		 *  protected members of each renderer */
+		class Display : public Renderer
+		{
+			/** setup the current renderer */
+			void tearUp() const;
+
+			/** free handles of the current renderer */
+			void tearDown() const;
+
+			/** calls the right glBind(), 3D or 4D version */
+			void bind3Dtexture() const;
+
+			friend class Multi;
+		};
+
+		/** Pixel scaling associated with a renderer */
+		struct PixelScaling
+		{
+			PixelScaling(float x,float y,float z) : x(x),y(y),z(z) {}
+			float x,y,z; ///< pixel scaling (between 0 and 1)
+		};
+
+	private:
+		std::vector<Display*> m_renderers; ///< Renderers
+		std::vector<PixelScaling> m_scalings; ///< Pixel scaling for each renderer
+	};
+};
+
+namespace libvdDisplay
+{
+	template <typename Renderer>
+	Multi<Renderer>::Multi()
+	{
+	}
+
+	template <typename Renderer>
+	Multi<Renderer>::~Multi()
+	{
+	}
+
+	template <typename Renderer>
+	void Multi<Renderer>::add(Renderer* ren, float scalingX, float scalingY, float scalingZ)
+	{
+		Display* ptr = static_cast<Display*>(ren);
+
+		// check if renderer is already in the list
+		if(std::find(m_renderers.begin(), m_renderers.end(), ptr) == m_renderers.end())
+		{
+			m_renderers.push_back(ptr);
+			m_scalings.push_back(PixelScaling(scalingX, scalingY, scalingZ));
+		}
+	}
+
+	template <typename Renderer>
+	void Multi<Renderer>::remove(Renderer* ren)
+	{
+		Display* ptr = static_cast<Display*>(ren);
+
+		// check if renderer is already in the list
+		typename std::vector<PixelScaling>::iterator pit = m_scalings.begin();
+		for(typename std::vector<Display*>::iterator it = m_renderers.begin(); it != m_renderers.end(); ++it, ++pit)
+		{
+			if(*it == ptr)
+			{
+				it = m_renderers.erase(it);
+				pit = m_scalings.erase(pit);
+			}
+		}
+	}
+
+	template <typename Renderer>
+	void Multi<Renderer>::display() const
+	{
+		/* our plane is parallel to the screen
+		   its rotation is the inverse rotation part of the modelview matrix */
+		glMatrixMode(GL_MODELVIEW);
+		float plane_matrix[16];
+		glGetFloatv(GL_MODELVIEW_MATRIX, plane_matrix);
+		Renderer::transp(plane_matrix); // invert modelview matrix, ignore translation
+		plane_matrix[12] = plane_matrix[13] = plane_matrix[14] = 0;
+		Renderer::normalize(plane_matrix);
+
+		/* compute the number of planes */
+		float nbPlanes = 0;
+		for(typename std::vector<Display*>::const_iterator it = m_renderers.begin(); it != m_renderers.end(); ++it)
+		{
+			float nb = (*it)->getNbRenderingPlanes() * (*it)->m_quality;
+			if(nb > nbPlanes)
+				nbPlanes = nb;
+		}
+		float step = 1.73f / nbPlanes;
+
+		/* loop and use a different rendering plane
+		   move plane by step at each iteration
+		   sqrt(3) is the maximum size of our plane (the diagonal of the cube)
+		   0.87 is half of sqrt(3) */
+		float epsilon = step * 0.1;
+		for(float d=-0.87f; d<0.87f; d+=step)
+		{
+			float offset = 0;
+			for(unsigned int r=0; r<m_renderers.size(); ++r)
+			{
+				/* scale the texture */
+				float scaling[3] = {
+					m_scalings[r].x,
+					m_scalings[r].y,
+					m_scalings[r].z,
+				};
+
+				glMatrixMode(GL_TEXTURE);
+				glPushMatrix();
+				glTranslatef(+0.5f,+0.5f,+0.5f); // center it
+				glScalef(1.0f/scaling[0],
+				         1.0f/scaling[1],
+					 1.0f/scaling[2]); // change pixel spacing
+				glTranslatef(-0.5f,-0.5f,-0.5f);
+				glMatrixMode(GL_MODELVIEW);
+
+
+				/* set the plane translation in the Z screen axis */
+				plane_matrix[12] = (d+offset)*plane_matrix[8];
+				plane_matrix[13] = (d+offset)*plane_matrix[9];
+				plane_matrix[14] = (d+offset)*plane_matrix[10];
+
+				/* use the right renderer */
+				m_renderers[r]->tearUp();
+
+				/* render one slice for this renderer */
+				m_renderers[r]->renderSlice(plane_matrix);
+
+				/* stop using renderer */
+				m_renderers[r]->tearDown();
+
+				/* offset next plane */
+				offset += epsilon;
+
+				glMatrixMode(GL_TEXTURE);
+				glPopMatrix();
+				glMatrixMode(GL_MODELVIEW);
+			}
+		}
+	}
+
+	template <typename Renderer>
+	void Multi<Renderer>::Display::tearUp() const
+	{
+		/* check if the display has been initialized */
+		if(!this->m_gpu_program) return;
+
+		/* start using GPU program */
+		glUseProgram(this->m_gpu_program);
+
+		/* Use 1D texture for the lookup table */
+		glActiveTexture(GL_TEXTURE1);
+		glEnable(GL_TEXTURE_2D);
+		glBindTexture(GL_TEXTURE_2D, this->m_lut_texture); glCheckError();
+		glDisable(GL_TEXTURE_2D); // LUT is now in graphic memory
+
+		/* Use 3D texture */
+		glActiveTexture(GL_TEXTURE0);
+		glEnable(GL_TEXTURE_3D);
+		bind3Dtexture();
+
+		/* Position texture */
+		glMatrixMode(GL_TEXTURE);
+		glPushMatrix();
+		glScalef(this->m_texture_scale[0], this->m_texture_scale[1], this->m_texture_scale[2]);
+		glTranslatef(0.5,0.5,0.5);   // center volume texture at (0,0,0)
+
+		/* Decide which rendering mode to use */
+		switch(this->m_rendering_mode)
+		{
+		case Display::VRT:
+			/* accumulate intensities from all rendered planes */
+			glEnable(GL_BLEND);
+			glBlendEquation(GL_FUNC_ADD);
+			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+			break;
+
+		case Display::MIP:
+			/* display the maximum intensity from all rendered planes */
+			glEnable(GL_BLEND);
+			glBlendEquation(GL_MAX); // MIP, Maximum Intensity Projection
+			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+			break;
+		default: break;
+		};
+	}
+
+	template <typename Renderer>
+	void Multi<Renderer>::Display::tearDown() const
+	{
+		/* check if the display has been initialized */
+		if(!this->m_gpu_program) return;
+
+		glMatrixMode(GL_TEXTURE);
+		glPopMatrix(); // texture
+
+		glDisable(GL_TEXTURE_3D);
+
+		/* stop using the program for further drawing */
+		glUseProgram(0);
+
+		glMatrixMode(GL_MODELVIEW);
+	}
+
+	template <typename Renderer>
+	void Multi<Renderer>::Display::bind3Dtexture() const
+	{
+		glBindTexture(GL_TEXTURE_3D, this->m_data_texture); glCheckError();
+	}
+}
+
+#include <display/display4d.h>
+
+namespace libvdDisplay
+{
+
+	template <>
+	void Multi<Volume4D>::Display::bind3Dtexture() const
+	{
+		glBindTexture(GL_TEXTURE_3D, this->m_data_texture[m_frame]); glCheckError();
+	}
+};
+
+#endif
diff --git a/.svn/pristine/c0/c001f1fdbcc33ce5ffb6e80473b7bda0906b8c91.svn-base b/.svn/pristine/c0/c001f1fdbcc33ce5ffb6e80473b7bda0906b8c91.svn-base
new file mode 100644
index 0000000..b318e22
--- /dev/null
+++ b/.svn/pristine/c0/c001f1fdbcc33ce5ffb6e80473b7bda0906b8c91.svn-base
@@ -0,0 +1,117 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	pick.h
+ * @author	Herve Lombaert
+ * @date	November 15th, 2006
+ */
+
+#ifndef PICK_H
+#define PICK_H
+
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+
+namespace Tools
+{
+	/**
+	 * @class Pick
+	 * @brief Pick 3D coordinates
+	 *
+	 * Pick some objects and returns the 3D coordinates from the mouse position.
+	 *
+	 * \image html pick.png "Picking the tip of the left ventricle"
+	 * \image latex pick.png "Picking the tip of the left ventricle"
+	 *
+	 * Uses the Z buffer to get the 3D coordinate. Renders the objects with alpha
+	 * testing so transparent part of the object are not selected.
+	 *
+	 * Object to be picked are defined with "enable()" and "disable()"
+	 *
+	 * \code
+	 *	// to define selection
+	 *	glPushMatrix();
+	 *	glTranslate/Rotate(...);
+	 *
+	 *	pick.enable();
+	 *	// ... draw scene ...
+	 *	pick.disable();
+	 *
+	 *	glPopMatrix();
+	 *
+	 *	// to pick
+	 *	pick.get(mouse_x, mouse_y, x,y,z);
+	 * \endcode
+	 *
+	 * This object creates a display list between \c enable() and \c disable()
+	 * The picking is done by drawing the display list in the back buffer
+	 * and reading the Z buffer
+	 *
+	 * Note that the \c GL_SELECT rendering mode is not used because it only pick
+	 * primitives and can not do fragment picking. Using the Z buffer allows to
+	 * detect transparent fragments.
+	 */
+
+
+	class Pick
+	{
+	public:
+		Pick();
+		~Pick();
+
+		/** save modelview/projection matrices
+		 * place this function right before drawing your object */
+		void saveMatrices();
+
+		/** pick objects
+		 * @param mouse_x,mouse_y (in) mouse position where (0,0) is at the lower left corner
+		 * @param x,y,z (out) 3D world coordinates x,y,z from mouse position
+		 * @return true when an object has been hit */
+		bool get(int mouse_x, int mouse_y, float &x, float &y, float &z) const;
+
+		/** start defining objects to be picked */
+		void enable() const;
+
+		/** stop defining objects to be picked */
+		void disable() const;
+
+		/** set max transparent alpha (default 0.2)
+		 *  @param max picking will not occur on element with alpha<max
+		 *             if max is 0, everything will be picked */
+		void setMaxAlpha(float max);
+
+	private:
+		mutable GLdouble m_modelview[16];  ///< modelview matrix
+		mutable GLdouble m_projection[16]; ///< projection matrix
+		float            m_maxalpha;       ///< maximum alpha allowed when rendering object
+		mutable GLuint m_displayId;        ///< display of objects to be picked
+		mutable bool   m_displayCreated;   ///< check if this object created the display list or not
+	};
+
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/c0/c00406cc6fc614ccd05b94d95c30008e753fb69c.svn-base b/.svn/pristine/c0/c00406cc6fc614ccd05b94d95c30008e753fb69c.svn-base
new file mode 100644
index 0000000..f9e4fc4
--- /dev/null
+++ b/.svn/pristine/c0/c00406cc6fc614ccd05b94d95c30008e753fb69c.svn-base
@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="libvd"
+	ProjectGUID="{CFAFC92C-1D8A-48A2-9F6A-1AC361A50A81}"
+	RootNamespace="libvd"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="4"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="..\..\lib\$(ProjectName)d.lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="4"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="..\..\lib\$(ProjectName).lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\GLee.c"
+				>
+			</File>
+			<Filter
+				Name="Display"
+				>
+				<File
+					RelativePath="..\..\src\display2d.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\display2d_drawpixels.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\display3d.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\display4d.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\isosurface.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\mask3d.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\mask4d.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\point3d.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\smoothmask3d.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\smoothmask4d.cpp"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="IO"
+				>
+				<File
+					RelativePath="..\..\src\ioavi.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\iobmp.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\iopgm.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\ioscreenshot.cpp"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="Tools"
+				>
+				<File
+					RelativePath="..\..\src\clip.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\manipworld.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\pick.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\slidebar.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\stereo.cpp"
+					>
+				</File>
+				<Filter
+					Name="TransferFunction"
+					>
+					<File
+						RelativePath="..\..\src\displaycolor.cpp"
+						>
+					</File>
+					<File
+						RelativePath="..\..\src\displayhistogram.cpp"
+						>
+					</File>
+					<File
+						RelativePath="..\..\src\editor.cpp"
+						>
+					</File>
+					<File
+						RelativePath="..\..\src\ramp.cpp"
+						>
+					</File>
+					<File
+						RelativePath="..\..\src\trapezoid.cpp"
+						>
+					</File>
+				</Filter>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\color.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\error.h"
+				>
+			</File>
+			<File
+				RelativePath=".\GLee.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\image.h"
+				>
+			</File>
+			<Filter
+				Name="Display"
+				>
+				<File
+					RelativePath="..\..\display\display2d.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\display2d_drawpixels.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\display3d.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\display4d.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\isosurface.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\mask3d.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\mask4d.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\multidisplay.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\point3d.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\smoothmask3d.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\display\smoothmask4d.h"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="IO"
+				>
+				<File
+					RelativePath="..\..\io\ioavi.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\io\iobmp.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\io\iopgm.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\io\ioraw.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\io\ioscreenshot.h"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="Tools"
+				>
+				<File
+					RelativePath="..\..\tools\clip.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\glprintf.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\tools\manipworld.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\tools\pick.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\tools\slidebar.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\tools\stereo.h"
+					>
+				</File>
+				<Filter
+					Name="TransferFunction"
+					>
+					<File
+						RelativePath="..\..\tools\transferfunction\displaycolor.h"
+						>
+					</File>
+					<File
+						RelativePath="..\..\tools\transferfunction\displayhistogram.h"
+						>
+					</File>
+					<File
+						RelativePath="..\..\tools\transferfunction\editor.h"
+						>
+					</File>
+					<File
+						RelativePath="..\..\tools\transferfunction\ramp.h"
+						>
+					</File>
+					<File
+						RelativePath="..\..\tools\transferfunction\trapezoid.h"
+						>
+					</File>
+				</Filter>
+			</Filter>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/.svn/pristine/c0/c02e050e5104b2f64952a1e2be0ae7c5b0e0fc1b.svn-base b/.svn/pristine/c0/c02e050e5104b2f64952a1e2be0ae7c5b0e0fc1b.svn-base
new file mode 100644
index 0000000..d352b9d
--- /dev/null
+++ b/.svn/pristine/c0/c02e050e5104b2f64952a1e2be0ae7c5b0e0fc1b.svn-base
@@ -0,0 +1,114 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	stereo.cpp
+ * @author	Herve Lombaert
+ * @date	March 19th 2007
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#endif
+#include <tools/stereo.h>
+
+namespace Tools
+{
+	Stereo::Stereo()
+	:	m_id(0),
+		m_listcreated(false),
+		m_eye_shift(0.025f)
+	{
+		m_modelview[0]  = 1; m_modelview[1]  = 0; m_modelview[2]  = 0; m_modelview[3]  = 0;
+		m_modelview[4]  = 0; m_modelview[5]  = 1; m_modelview[6]  = 0; m_modelview[7]  = 0;
+		m_modelview[8]  = 0; m_modelview[9]  = 0; m_modelview[10] = 1; m_modelview[11] = 0;
+		m_modelview[12] = 0; m_modelview[13] = 0; m_modelview[14] = 0; m_modelview[15] = 1;
+	}
+
+	Stereo::~Stereo()
+	{
+		if(m_listcreated && glIsList(m_id)) glDeleteLists(m_id,1);
+	}
+
+	void Stereo::enable()
+	{
+		/* get the modelview matrix, used to move the
+		 * camera for the stereo view */
+		glGetDoublev(GL_MODELVIEW_MATRIX, m_modelview);
+
+		/* remove any drawing, and put a green (neutral) background */
+		glClearColor(0, 0.5, 0, 1);
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		/* render on the blue canal */
+		glColorMask(0,0,1,1);
+		
+		/* check if display list has already been created */
+		GLint mode;
+		GLint id;
+		glGetIntegerv(GL_LIST_MODE, &mode);
+		glGetIntegerv(GL_LIST_INDEX, &id);
+		if(glIsList(id) && (mode == GL_COMPILE || mode == GL_COMPILE_AND_EXECUTE))
+		{
+			m_id = id;
+			m_listcreated = false;
+		}
+		else
+		{
+			if(!glIsList(m_id))
+			{
+				m_id = glGenLists(1);
+			}
+
+			/* define the list, all further commands will be
+			 * executed, later the recorded scene can be used
+			 * to generate the stereo view */
+			glNewList(m_id, GL_COMPILE_AND_EXECUTE);
+			m_listcreated = true;
+			glCheckError();
+		}
+
+		/* render right eye */
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glTranslated(-m_eye_shift*m_modelview[0], -+m_eye_shift*m_modelview[4], -m_eye_shift*m_modelview[8]);
+	}
+
+	void Stereo::disable()
+	{
+		/* stop rendering the right eye */
+		glMatrixMode(GL_MODELVIEW);
+		glPopMatrix();
+		if(m_listcreated)
+			glEndList();
+		glCheckError();
+
+		/* render left eye on the red canal */
+		glColorMask(1,0,0,1);
+		glClear(GL_DEPTH_BUFFER_BIT); // remove any previous blending
+		glPushMatrix();
+		glLoadMatrixd(m_modelview);
+		glTranslated(+2*m_eye_shift*m_modelview[0], +2*m_eye_shift*m_modelview[4], +2*m_eye_shift*m_modelview[8]);
+		glCallList(m_id);
+		glPopMatrix();
+
+		glColorMask(1,1,1,1); // reset masks
+	}
+};
diff --git a/.svn/pristine/c0/c0fcb28f640205654df5517b608954de768bb749.svn-base b/.svn/pristine/c0/c0fcb28f640205654df5517b608954de768bb749.svn-base
new file mode 100644
index 0000000..843999a
--- /dev/null
+++ b/.svn/pristine/c0/c0fcb28f640205654df5517b608954de768bb749.svn-base
@@ -0,0 +1,322 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	editor.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <tools/transferfunction/editor.h>
+
+namespace Tools { namespace TransferFunction
+{
+	Editor::Editor()
+	:	m_min(0),
+		m_max(0),
+		m_left(0),
+		m_right(0),
+		m_posx(0),
+		m_posy(0),
+		m_width(0),
+		m_height(0),
+		m_win_width(0),
+		m_win_height(0),
+		m_lutchanged(false),
+		m_contrast(1.0),
+		m_brightness(0.0),
+		m_colorMode(false),
+		m_colorSize(0),
+		m_hide(false)
+	{}
+
+
+	Editor::~Editor()
+	{
+		for(std::list<TFEobject*>::iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+		{
+			(*it)->destroy();
+			delete (*it);
+		}
+	}
+
+
+	void Editor::clamp(float left, float right)
+	{
+		m_histogram.clamp(left, right);
+		for(std::list<TFEobject*>::iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+			(*it)->clamp(left, right);
+	}
+
+
+	void Editor::place(int x, int y, int w, int h, int ww, int wh) 
+	{
+		m_posx = x,
+		m_posy = y,
+		m_width = w,
+		m_height = h,
+		m_win_width = ww,
+		m_win_height = wh;
+		m_colorSize = m_height*0.8f; // color selector is one heighth of the histogram height
+
+		// update object shapes
+		for(std::list<TFEobject*>::iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+			(*it)->reshape(w, h);
+	}
+
+
+	void Editor::clear()
+	{
+		m_manips.clear();
+	}
+
+
+	bool Editor::mouse(int x, int y)
+	{
+		// if hidden, do nothing with the mouse
+		if(m_hide) return false;
+
+		// check if we are in the color mode, leave it if necessary
+		if(m_colorMode)
+		{
+			// assume lut does not change
+			m_lutchanged = false;
+
+			// is mouse inside the color selector
+			float l0 = m_posx + (m_height-m_colorSize)/2; // low corner x
+			float l1 = m_posy + (m_height-m_colorSize)/2; // low corner y
+			float h0 = m_posx + (m_height-m_colorSize)/2 + m_colorSize; // high corner x
+			float h1 = m_posy + (m_height-m_colorSize)/2 + m_colorSize; // high corner y
+
+			if(x>=l0 && x<=h1 && y>=l1 && y<=h1) // inside selector
+			{
+				// what is the selected color
+				float xx = (x-l0)/(h0-l0);
+				float yy = (y-l1)/(h1-l1);
+				float r=0,g=0,b=0;
+				m_color.getRGB(xx,yy, r,g,b);
+				m_color.mark(r,g,b);
+		
+				// propagate color to transfer function manipulators
+				for(std::list<TFEobject*>::iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+					(*it)->setColor(r,g,b);
+
+				// lut has changed
+				m_lutchanged = true;
+		
+				// stop mouse handling here
+				return true;
+			}
+			else
+			{
+				// mouse is outside selector, leave color mode
+				m_colorMode = false;
+			}
+		}
+
+		// normalize mouse position with transfer function size
+		float xx = (float)(x-m_posx) / m_width;
+		float yy = (float)(y-m_posy) / m_height;
+
+		// give mouse event to all objects until one catch it
+		for(std::list<TFEobject*>::iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+			if((*it)->mouse(xx,yy)) return true; // if an object caught event stop event propagation
+
+		// if none has caught it, play with histogram
+		return m_histogram.mouse(xx,yy);
+	}
+
+
+	bool Editor::motion(int x, int y)
+	{
+		// if hidden, do nothing with the mouse
+		if(m_hide) return false;
+
+		// check if we are in the color mode, leave it if necessary
+		if(m_colorMode)
+		{
+			// assume lut does not change
+			m_lutchanged = false;
+
+			// is mouse inside the color selector
+			float l0 = m_posx + (m_height-m_colorSize)/2; // low corner x
+			float l1 = m_posy + (m_height-m_colorSize)/2; // low corner y
+			float h0 = l0 + m_colorSize; // high corner x
+			float h1 = l1 + m_colorSize; // high corner y
+
+			if(x>=l0 && x<=h0 && y>=l1 && y<=h1) // inside selector
+			{
+				// what is the selected color
+				float xx = (x-l0)/(h0-l0);
+				float yy = (y-l1)/(h1-l1);
+				float r=0,g=0,b=0;
+				m_color.getRGB(xx,yy, r,g,b);
+				m_color.mark(r,g,b);
+		
+				// propagate color to transfer function manipulators
+				for(std::list<TFEobject*>::iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+					(*it)->setColor(r,g,b);
+
+				// lut has changed
+				m_lutchanged = true;
+			}
+			
+			// stop mouse handling here
+			return true;
+		}
+
+		// normalize mouse position with transfer function size
+		float xx = (float)(x-m_posx) / m_width;
+		float yy = (float)(y-m_posy) / m_height;
+
+		// assume lut has not changed
+		m_lutchanged = false;
+
+		// propagate mouse event to all TFE object
+		for(std::list<TFEobject*>::iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+		{
+			// if an object caught event stop event propagation
+			if((*it)->motion(xx,yy))
+			{
+				m_lutchanged = true; // object modified lut
+				return true;
+			}
+		}
+
+		// if none has caught it, play with histogram
+		if(m_histogram.motion(xx,yy))
+		{
+			// update other objects visible area
+			for(std::list<TFEobject*>::iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+				(*it)->clamp(m_histogram.getLeft(),m_histogram.getRight());
+
+			// histogram setup has changed
+			return true;
+		}
+		else
+			return false;
+	}
+
+
+	void Editor::colorMode()
+	{
+		m_colorMode = true;
+	}
+
+
+	void Editor::display() const
+	{
+		if(!m_hide)
+		{
+			/* overlay on screen */
+			glMatrixMode(GL_PROJECTION);
+			glPushMatrix();
+			glLoadIdentity();
+			glOrtho(-0.5,+0.5,-0.5,+0.5,-1,+1);
+		
+			glMatrixMode(GL_MODELVIEW);
+			glPushMatrix();
+			glLoadIdentity();
+		
+			/* place TFE on screen with (0,0) beeing the lowest left corner */
+			glScalef(1.0f/m_win_width, 1.0f/m_win_height, 1);
+			glTranslatef((float)(m_posx-m_win_width/2+m_width/2), (float)(m_posy-m_win_height/2+m_height/2), 0);
+			glScalef((float)m_width, (float)m_height, 1);
+		
+			/* draw a border */
+			glColor3f(1,1,1);
+			glBegin(GL_LINE_LOOP);
+				glVertex3f(-0.5,-0.5,0);
+				glVertex3f(+0.5,-0.5,0);
+				glVertex3f(+0.5,+0.5,0);
+				glVertex3f(-0.5,+0.5,0);
+			glEnd();
+
+			/* draw histogram */
+			m_histogram.display();
+		
+			/* draw TFE objects (ramp trapezoids) */
+			for(std::list<TFEobject*>::const_iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+				(*it)->display();
+
+			/* draw the color selector is in color mode */
+			if(m_colorMode)
+			{
+				float colorSize = m_height*0.8f;
+				float colorOffset = m_height*0.1f;
+				glLoadIdentity();
+				glScalef(1.0f/m_win_width, 1.0f/m_win_height, 1);
+				glTranslatef((float)(m_posx+colorOffset-m_win_width/2+colorSize/2), (float)(m_posy+colorOffset-m_win_height/2+colorSize/2), 0);
+				glScalef(colorSize, colorSize, 1);
+				
+				m_color.display();
+			}
+
+			/* pop some matrices */
+			glMatrixMode(GL_PROJECTION);
+			glPopMatrix();
+		
+			glMatrixMode(GL_MODELVIEW);
+			glPopMatrix();
+		}
+	}
+
+
+	void Editor::get(float i, float &r, float &g, float &b, float &a) const
+	{
+		/* final rgba is the rgba returned by the object with the highest opacity (a) */
+		float max_a = 0;
+
+		for(std::list<TFEobject*>::const_iterator it=m_manips.begin(); it!=m_manips.end(); ++it)
+		{
+			/* get rgba of current manip */
+			float rr,gg,bb,aa;
+			(*it)->get(i, rr,gg,bb,aa);
+
+			/* check if this object will update final rgba */
+			if(aa >= max_a)
+				r = rr,
+				g = gg,
+				b = bb,
+				a = aa,
+				max_a = aa;
+		}
+
+		/* change contrast, scale color */
+		r = r * m_contrast; if(r<0) r=0; else if(r>1) r=1;
+		g = g * m_contrast; if(g<0) g=0; else if(g>1) g=1;
+		b = b * m_contrast; if(b<0) b=0; else if(b>1) b=1;
+
+		/* change brithness, offset color */
+		r = r + m_brightness; if(r<0) r=0; else if(r>1) r=1;
+		g = g + m_brightness; if(g<0) g=0; else if(g>1) g=1;
+		b = b + m_brightness; if(b<0) b=0; else if(b>1) b=1;
+	}
+
+}} // namespace
diff --git a/.svn/pristine/c1/c14a9fd7e32532c2fd886e963271c898f23a358b.svn-base b/.svn/pristine/c1/c14a9fd7e32532c2fd886e963271c898f23a358b.svn-base
new file mode 100644
index 0000000..aad6123
--- /dev/null
+++ b/.svn/pristine/c1/c14a9fd7e32532c2fd886e963271c898f23a358b.svn-base
@@ -0,0 +1,120 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	ramp.h
+ * @author	Herve Lombaert
+ * @date	November 8th, 2006
+ */
+
+#ifndef DISPLAYRAMP_H
+#define DISPLAYRAMP_H
+
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+
+namespace Tools { namespace TransferFunction
+{
+	/**
+	 * Display and manipulate a Ramp.
+	 *
+	 * \image html ramp.png
+	 * \image latex ramp.png
+	 *
+	 * \verbatim
+	 *                 |               /-----------|
+	 * left border     |             /             | right border
+	 *                 |-----------/               |
+	 *            ---------------------------------------
+	 *               left       low    high      right
+	 * \endverbatim
+	 *
+	 * Here data intensities between low and high as well as data intensities
+	 * beyond high will appear as bright pixels. Everything below low will
+	 * not appear. Top controls the opacity.
+	 *
+	 * Color transition is from black to low color to high color.
+	 *
+	 * As with the histogram, it is possible to visualize only a portion
+	 * of the ramp, and to zoom and pan it.
+	 *
+	 */
+
+
+	class Ramp
+	{
+	public:
+		Ramp();
+		Ramp(float low, float high, float opacity=1);
+		~Ramp();
+
+		/** update ramp */
+		void update(float low, float high, float opacity);
+
+		/** update border (visualize only portion of the ramp) */
+		void clamp(float left, float right);
+
+		/** display ramp line and squares */
+		void display() const;
+
+		/** did mouse pick a ramp feature (xy normalized 0..1) */
+		bool mouse(float x, float y);
+
+		/** handle mouse motion after a mouse pick (xy normalized 0..1) */
+		bool motion(float x, float y);
+
+		/** get the ramp value (rgba 0..1) for a given intensity */
+		void get(float i, float &r, float &g, float &b, float &a) const;
+
+		/** set color of the selected feature */
+		void setColor(float r, float g, float b);
+
+		/** update aspect ratio (w/h) so square appears as square */
+		void reshape(int w, int h);
+
+	private:
+		float m_low;    ///< ramp low value
+		float m_high;   ///< ramp high value
+		float m_opacity;///< ramp opacity
+		float m_left;   ///< left border of visualization
+		float m_right;  ///< right border of visualization
+		float m_low_u;  ///< ramp low position (0..1)
+		float m_high_u; ///< ramp high position (0..1)
+		float m_aspectratio;     ///< aspect ratio so squares appear as squares
+		float m_low_color[3];    ///< color or low cornder
+		float m_middle_color[3]; ///< color or middle cornder
+		float m_high_color[3];   ///< color or lower cornder
+
+		/// ramp features
+		/// LOW/HIGH is the low/high ramp corner
+		/// MIDDLE is a dragrable square, change translate the ramp
+		enum feature { NONE, LOW, MIDDLE, HIGH };
+		feature m_feature; ///< selected ramp feature
+	};
+
+
+}} // namespaces
+
+#endif
diff --git a/.svn/pristine/c4/c46a6823f3e1fc69772f720b10507ab83a13aa1e.svn-base b/.svn/pristine/c4/c46a6823f3e1fc69772f720b10507ab83a13aa1e.svn-base
new file mode 100644
index 0000000..f6fc536
--- /dev/null
+++ b/.svn/pristine/c4/c46a6823f3e1fc69772f720b10507ab83a13aa1e.svn-base
@@ -0,0 +1,222 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#include <iostream>
+#include <cmath>
+#include <vector>
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <tools/manipworld.h>
+#include <display/display3d.h>
+#include <display/point3d.h>
+#include <tools/pick.h>
+#include <io/ioraw.h>
+
+/**
+ * @test Testing point list display
+ */
+
+namespace TestPoint3D
+{
+
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static MouseButton gButton = NONE;
+	static int gModifiers = 0; // ctrl,alt,shift
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+	unsigned int winw = 0;
+	unsigned int winh = 0;
+
+	Tools::Pick pick;
+	Tools::ManipWorld manip;
+	Display::Volume displayVolume;
+	unsigned short* volume;
+	unsigned int volumeSize[3];
+	Display::Point3D displayPoints;
+	std::vector<float> points; // triplets of (x,y,z) for point coordinates
+
+
+	void convertVolumeToVoxel(float x, float y, float z,
+	                          unsigned int &xx, unsigned int &yy, unsigned int &zz)
+	{
+		xx = static_cast<unsigned int>((x+0.5f)*volumeSize[0]+0.5f);
+		yy = static_cast<unsigned int>((y+0.5f)*volumeSize[1]+0.5f);
+		zz = static_cast<unsigned int>((z+0.5f)*volumeSize[2]+0.5f);
+	}
+
+
+	void init()
+	{
+		glClearColor (0.0, 0.0, 0.5, 1.0);
+
+		manip.init();
+		manip.translate(0,0,-3.6);
+
+		displayVolume.update(volume,volumeSize[0],volumeSize[1],volumeSize[2]);
+		displayVolume.setMode(Display::Volume::MPR);
+		pick.setMaxAlpha(0);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+
+		glMatrixMode(GL_MODELVIEW);
+
+		winw = w;
+		winh = h;
+	}
+
+	void display(void)
+	{
+		try
+		{
+			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+	
+			glMatrixMode(GL_MODELVIEW);
+			glPushMatrix();
+			
+			/* Rotate volume with mouse movement */
+			manip.loadModelViewMatrix();
+	
+			/* zoom a little bit */
+			glScalef(2,2,2);
+	
+			/* display the volume */
+			glEnable(GL_DEPTH_TEST);
+
+			glPushMatrix();
+			glTranslatef(-0.5f,-0.5f,-0.5f);
+			glScalef(1.0f/volumeSize[0],1.0f/volumeSize[1],1.0f/volumeSize[2]);
+			displayPoints.display();
+			glPopMatrix();
+	
+			pick.enable(); // every object between enable and disable can be picked
+			displayVolume.display();
+			pick.disable(); // stop defining the selection
+	
+			glDisable(GL_DEPTH_TEST);
+	
+			glPopMatrix();
+	
+			glutSwapBuffers();
+		}
+		catch(const Error& e) { e.print(); }
+	}
+
+
+	void mouse(int button, int state, int x, int y)
+	{
+		gModifiers = glutGetModifiers();
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+			{
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				
+				break;
+			}
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+				if(gModifiers != GLUT_ACTIVE_SHIFT)
+				{
+					manip.rotateYAxis(x-gPrevMouse[0]);
+					manip.rotateXAxis(gPrevMouse[1]-y);
+
+					glutPostRedisplay();
+				}
+				else
+				{
+					float xx,yy,zz; // volume coordinate (-0.5..0.5)
+					if(pick.get(x,winh-y, xx,yy,zz))
+					{
+						unsigned int vx,vy,vz; // voxel coordinate (0..volsize)
+						convertVolumeToVoxel(xx,yy,zz, vx,vy,vz);
+			
+						/* add point to list of point */
+						points.push_back((float)vx);
+						points.push_back((float)vy);
+						points.push_back((float)vz);
+
+						float* p = &(*points.begin());
+						displayPoints.update(p, (int)points.size()/3);
+
+						glutPostRedisplay();
+					}
+				}
+
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				break;
+			default:
+				break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		switch(key)
+		{
+			case 'q':
+				glutDestroyWindow(winid); // close window, terminate glut loop
+				exit(0); // on OSX for some reason the program does not terminate
+			default:
+				break;
+		}
+	}
+
+	int main_init()
+	{
+		try
+		{
+			volumeSize[0] = 128,
+			volumeSize[1] = 128,
+			volumeSize[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", volume, volumeSize[0]*volumeSize[1]*volumeSize[2]);
+			
+			glutInitWindowSize(250, 250);
+			winid = glutCreateWindow("point 3D");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+		
+			//glutMainLoop();
+			
+			return 0;
+		}
+		catch(const Error &e) {
+			e.print();
+		}
+
+		return 1;
+	}
+} // namespace
diff --git a/.svn/pristine/c4/c4770a7c79fa957914d2e42ce9dc293097590db9.svn-base b/.svn/pristine/c4/c4770a7c79fa957914d2e42ce9dc293097590db9.svn-base
new file mode 100644
index 0000000..0134091
--- /dev/null
+++ b/.svn/pristine/c4/c4770a7c79fa957914d2e42ce9dc293097590db9.svn-base
@@ -0,0 +1,881 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	display4d.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include "msvc/GLee.h"
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+//This file uses prototypes that are only avilable in opengl 2.0. 
+// to use this, we must use the opengl extensions file, where
+// these prototypes are DISABLED unless GL_GLEXT_PROTOTYPES is defined
+#define GL_GLEXT_PROTOTYPES 1
+#include <GL/gl.h>
+#include <GL/glext.h>
+#endif
+
+#include <display/display4d.h>
+#include <cmath>
+#include <vector>
+#include <map>
+#include <utility>
+
+//////////////////////////////////////////////////////////////////////////////
+// Implementation
+//////////////////////////////////////////////////////////////////////////////
+
+namespace libvdDisplay
+{
+	Volume4D::Volume4D()
+	:	m_rendering_mode(VRT), // default mode is volume rendering
+		m_quality(1),
+		m_interpolation(GL_LINEAR),
+		m_data_texture(0),
+		m_nb_frames(0),
+		m_frame(0),
+		m_gpu_program(0),
+		m_fragment_shader(0),
+		m_internal_lut(0),
+		m_lut_texture(0)
+	{
+		/* default maximum texture size is 256^3 */
+		m_max_texture_size[0] = m_max_texture_size[1] = m_max_texture_size[2] = 256;
+
+		/* min and max intensities of data */
+		m_intensity_range[0] = m_intensity_range[1] = 0;
+
+		/* set a default plane */
+		m_mpr_matrix[0]  = 1, m_mpr_matrix[1]  = 0, m_mpr_matrix[2]  = 0, m_mpr_matrix[3]  = 0;
+		m_mpr_matrix[4]  = 0, m_mpr_matrix[5]  = 1, m_mpr_matrix[6]  = 0, m_mpr_matrix[7]  = 0;
+		m_mpr_matrix[8]  = 0, m_mpr_matrix[9]  = 0, m_mpr_matrix[10] = 1, m_mpr_matrix[11] = 0;
+		m_mpr_matrix[12] = 0, m_mpr_matrix[13] = 0, m_mpr_matrix[14] = 0, m_mpr_matrix[15] = 1;
+	}
+
+
+	Volume4D::~Volume4D()
+	{
+		if(m_internal_lut) delete [] m_internal_lut;
+
+		// If this is called after the display has been destroyed, this call will be undefined
+		if(m_data_texture)
+		{
+			glDeleteTextures(m_nb_frames, m_data_texture);
+			delete [] m_data_texture;
+		}
+		if(glIsTexture(m_lut_texture))
+			glDeleteTextures(1, &m_lut_texture);
+	}
+
+
+	void Volume4D::display() const
+	{
+		/* check if the display has been initialized */
+		if(!m_gpu_program) return;
+
+		/* start using GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* Use 1D texture for the lookup table */
+		glActiveTexture(GL_TEXTURE1);
+		glEnable(GL_TEXTURE_2D);
+		glBindTexture(GL_TEXTURE_2D, m_lut_texture); glCheckError();
+		glDisable(GL_TEXTURE_2D); // LUT is now in graphic memory
+
+		/* Use 3D texture */
+		glActiveTexture(GL_TEXTURE0);
+		glEnable(GL_TEXTURE_3D);
+		glBindTexture(GL_TEXTURE_3D, m_data_texture[m_frame]); glCheckError();
+
+		/* Position texture */
+		glMatrixMode(GL_TEXTURE);
+		glPushMatrix();
+		glScalef(m_texture_scale[0], m_texture_scale[1], m_texture_scale[2]);
+		glTranslatef(0.5,0.5,0.5);   // center volume texture at (0,0,0)
+
+		/* Decide which rendering mode to use */
+		switch(m_rendering_mode)
+		{
+		case VRT:
+			/* accumulate intensities from all rendered planes */
+			glEnable(GL_BLEND);
+			glBlendEquation(GL_FUNC_ADD);
+			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+			render();                // render the 3D textures on the planes
+			glDisable(GL_BLEND);
+			break;
+
+		case MIP:
+			/* display the maximum intensity from all rendered planes */
+			glEnable(GL_BLEND);
+			glBlendEquation(GL_MAX); // MIP, Maximum Intensity Projection
+			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+			render();                // render the 3D textures on the planes
+			glDisable(GL_BLEND);
+			break;
+
+		case MPR:
+			/* render a single plane */
+			renderSlice(m_mpr_matrix);
+			break;
+		};
+
+		glMatrixMode(GL_TEXTURE);
+		glPopMatrix(); // texture
+
+		glDisable(GL_TEXTURE_3D);
+
+		/* stop using the program for further drawing */
+		glUseProgram(0);
+
+		glMatrixMode(GL_MODELVIEW);
+	}
+
+
+	void Volume4D::setInterpolation(int interpolation)
+	{
+		if(interpolation == 0)
+			m_interpolation = GL_NEAREST;
+		else
+			m_interpolation = GL_LINEAR;
+	}
+
+
+	void Volume4D::setFrame(unsigned int frame)
+	{
+		CHECKRANGE("frame number invalid", frame, 0, m_nb_frames);
+		m_frame = frame;
+	}
+
+	
+	unsigned int Volume4D::getFrame() const
+	{
+		return m_frame;
+	}
+
+	
+	unsigned int Volume4D::getNbFrames() const
+	{
+		return m_nb_frames;
+	}
+
+
+	void Volume4D::nextFrame()
+	{
+		++m_frame;
+		if(m_frame == m_nb_frames)
+			m_frame = 0;
+	}
+
+
+	void Volume4D::setMode(Mode mode)
+	{
+		if(mode > MPR) throw LOCATE(Error("Unknown rendering mode: %d", m_rendering_mode));
+		m_rendering_mode = mode;
+	}
+
+
+	Volume4D::Mode Volume4D::getMode() const
+	{
+		return m_rendering_mode;
+	}
+
+
+	void Volume4D::setMprMatrix(const float matrix[])
+	{
+		for(unsigned int i=0; i<16; ++i) m_mpr_matrix[i] = matrix[i];
+	}
+
+
+	void Volume4D::render() const
+	{
+		/* our plane is parallel to the screen
+		   its rotation is the inverse rotation part of the modelview matrix */
+		glMatrixMode(GL_MODELVIEW);
+		float plane_matrix[16];
+		glGetFloatv(GL_MODELVIEW_MATRIX, plane_matrix);
+		transp(plane_matrix); // invert modelview matrix, ignore translation
+		plane_matrix[12] = plane_matrix[13] = plane_matrix[14] = 0;
+		normalize(plane_matrix);
+
+		/* compute the number of planes */
+		float nbPlanes = getNbRenderingPlanes() * m_quality;
+		float step = 1.73f / nbPlanes;
+
+		/* loop and use a different rendering plane
+		   move plane by step at each iteration
+		   sqrt(3) is the maximum size of our plane (the diagonal of the cube)
+		   0.87 is half of sqrt(3) */
+		for(float d=-0.87f; d<0.87f; d+=step)
+		{
+			/* set the plane translation in the Z screen axis */
+			plane_matrix[12] = d*plane_matrix[8];
+			plane_matrix[13] = d*plane_matrix[9];
+			plane_matrix[14] = d*plane_matrix[10];
+
+			/* render plane */
+			renderSlice(plane_matrix);
+		}
+	}
+
+
+	void Volume4D::renderSlice(const float m[]) const
+	{
+/* Two versions here
+ * First method displays stacked squares
+ *   simple code, but as squares must be large in order to fit the cube's cross section
+ *   more texture computation is required
+ * Second method displays stacked cross-section
+ *   uglier code in order to compute the cross-section (sorting of crossing edges)
+ *   however only the cross-section is displayed, no unnecessary rendering is done outside the cube
+ */
+#if 0
+		/* NB: sqrt(3) is the maximum size of our plane (the diagonal of the cube)
+			   0.87 is half of sqrt(3) */
+
+		/* a3 ---- a2
+		    |      |
+		   a0 ---- a1 */
+
+		/* flat plane parallel to the screen in camera coordinate */
+		float p0[3] = { -0.87f,-0.87f,0 };
+		float p1[3] = { +0.87f,-0.87f,0 };
+		float p2[3] = { +0.87f,+0.87f,0 };
+		float p3[3] = { -0.87f,+0.87f,0 };
+
+		/* convert a plane from camera to world coordinate */
+		float a0[3]; transf(p0,m,a0);
+		float a1[3]; transf(p1,m,a1);
+		float a2[3]; transf(p2,m,a2);
+		float a3[3]; transf(p3,m,a3);
+
+		/* Display a quad in the world */
+		glColor3f(1,1,1);
+		glBegin(GL_QUADS);
+		glTexCoord3fv(a0); glVertex3fv(a0);
+		glTexCoord3fv(a1); glVertex3fv(a1);
+		glTexCoord3fv(a2); glVertex3fv(a2);
+		glTexCoord3fv(a3); glVertex3fv(a3);
+		glEnd();
+#else
+
+		/* cube
+		 *
+		 *      4----------7
+		 *      |\         |\
+		 *      | \        | \
+		 *      |  5----------6
+		 *      |  |       |  |
+		 *      0--|-------3  |
+		 *       \ |        \ |
+		 *        \|         \|
+		 *         1----------2
+		 *
+		 * edges are: (01) (12) (23) (30)
+		 *            (45) (56) (67) (74)
+		 *            (04) (15) (26) (37)
+		 *
+		 */
+
+		/*
+		 *          ^
+		 *      (n) |   \ c[e[i][0]]
+		 *          |    \
+		 *         +------\----------+
+		 *       /  |      o       /
+		 *     /    O       .    /
+		 *   +-----------------+
+		 *                    . c[e[i][1]]
+		 *
+		 * Edge intersecting the plane
+		 * Vector (v) start at the plane origin and ends at a cube corner
+		 */
+		
+
+		/* Where the cube corners are */
+		float c[8][3] = { // cuber corners
+			{-0.5f, -0.5f, -0.5f},
+			{-0.5f, +0.5f, -0.5f},
+			{+0.5f, +0.5f, -0.5f},
+			{+0.5f, -0.5f, -0.5f},
+			{-0.5f, -0.5f, +0.5f},
+			{-0.5f, +0.5f, +0.5f},
+			{+0.5f, +0.5f, +0.5f},
+			{+0.5f, -0.5f, +0.5f},
+		};
+
+		/* Edges of the cube */
+		int e[12][2] = { // edges
+			{0,1}, {1,2}, {2,3}, {3,0},
+			{4,5}, {5,6}, {6,7}, {7,4},
+			{0,4}, {1,5}, {2,6}, {3,7}
+		};
+
+		/* Vector (v): from plane origin to cube corners */
+		float v[8][3] = { // cuber corners relative to plane origin
+			{-0.5f-m[12], -0.5f-m[13], -0.5f-m[14]},
+			{-0.5f-m[12], +0.5f-m[13], -0.5f-m[14]},
+			{+0.5f-m[12], +0.5f-m[13], -0.5f-m[14]},
+			{+0.5f-m[12], -0.5f-m[13], -0.5f-m[14]},
+			{-0.5f-m[12], -0.5f-m[13], +0.5f-m[14]},
+			{-0.5f-m[12], +0.5f-m[13], +0.5f-m[14]},
+			{+0.5f-m[12], +0.5f-m[13], +0.5f-m[14]},
+			{+0.5f-m[12], -0.5f-m[13], +0.5f-m[14]},
+		};
+
+		/* Signed distance from cube corners to the plane
+		 * it is the dot-product of plane up vector (n) with (v) */
+		float nv[8] = {
+			m[8]*v[0][0]+m[9]*v[0][1]+m[10]*v[0][2],
+			m[8]*v[1][0]+m[9]*v[1][1]+m[10]*v[1][2],
+			m[8]*v[2][0]+m[9]*v[2][1]+m[10]*v[2][2],
+			m[8]*v[3][0]+m[9]*v[3][1]+m[10]*v[3][2],
+			m[8]*v[4][0]+m[9]*v[4][1]+m[10]*v[4][2],
+			m[8]*v[5][0]+m[9]*v[5][1]+m[10]*v[5][2],
+			m[8]*v[6][0]+m[9]*v[6][1]+m[10]*v[6][2],
+			m[8]*v[7][0]+m[9]*v[7][1]+m[10]*v[7][2],
+		};
+
+		/* If edge ends have a different sign, the edge crosses the plane */
+		int cross[12]; // is edge[i] crossing plane
+
+		for(unsigned int i=0; i<12; ++i)
+		{
+			if(nv[e[i][0]]*nv[e[i][1]]<0)
+				cross[i] = 1;
+			else
+				cross[i] = 0;
+		}
+
+		/* Compute the intersection points on each crossing edge */
+		std::vector<float> points;
+		for(unsigned int i=0; i<12; ++i)
+		{
+			if(cross[i])
+			{
+				float u[3] = {
+					c[e[i][1]][0]-c[e[i][0]][0],
+					c[e[i][1]][1]-c[e[i][0]][1],
+					c[e[i][1]][2]-c[e[i][0]][2]
+				};
+
+				float nu = m[8]*u[0]+m[9]*u[1]+m[10]*u[2];
+
+				float t = - nv[e[i][0]] / nu;
+
+				float inters[3] = {
+					c[e[i][0]][0]+t*u[0],
+					c[e[i][0]][1]+t*u[1],
+					c[e[i][0]][2]+t*u[2]
+				};
+
+				points.push_back(inters[0]);
+				points.push_back(inters[1]);
+				points.push_back(inters[2]);
+			}
+		}
+
+		/* If we have more than two points, we can draw a polygon */
+		if(points.size()>6) // if more than two points
+		{
+			/* Sort these points so we can correctly draw a polygon */
+			std::multimap<float,int> map;
+			float u[3] = { points[3]-points[0], points[4]-points[1], points[5]-points[2] };
+			float lul = sqrt(u[0]*u[0]+u[1]*u[1]+u[2]*u[2]);
+			for(unsigned int i=2; i<points.size()/3; ++i)
+			{
+				float v[3] = { points[i*3+0]-points[0],points[i*3+1]-points[1],points[i*3+2]-points[2] };
+				float lvl = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
+	
+				float cos_angle = (v[0]*u[0]+v[1]*u[1]+v[2]*u[2])/(lul*lvl);
+				map.insert(std::pair<float,int>(cos_angle,i));
+			}
+	
+			/* Draw the cube cross-section with a texture on it */
+			glColor3f(1,1,1);
+			glBegin(GL_TRIANGLE_FAN);
+			glTexCoord3f(points[0],points[1],points[2]);
+			glVertex3f  (points[0],points[1],points[2]);
+			glTexCoord3f(points[3],points[4],points[5]);
+			glVertex3f  (points[3],points[4],points[5]);
+			for(std::multimap<float,int>::reverse_iterator it = map.rbegin(); it != map.rend(); ++it)
+			{
+				glTexCoord3f(points[it->second*3+0],points[it->second*3+1],points[it->second*3+2]);
+				glVertex3f  (points[it->second*3+0],points[it->second*3+1],points[it->second*3+2]);
+			}
+			glEnd();
+		} // if more than 2 points
+#endif
+	}
+
+
+	void Volume4D::alignWithScreen() const
+	{
+		/* get the modelview matrix */
+		float modelview[16]; glGetFloatv(GL_MODELVIEW_MATRIX, modelview);
+		glMatrixMode(GL_MODELVIEW);
+		glLoadIdentity(); // reset, first, we align the view with the screen
+
+		/* get the current transformation */
+		glPushMatrix();
+		glMultMatrixf(m_mpr_matrix); // how the plane is positioned
+		glMultMatrixf(modelview); // scale it
+		float m[16]; glGetFloatv(GL_MODELVIEW_MATRIX, m); // how the plane is with the scaling factors
+		glPopMatrix();
+
+		/* get the scaling matrix */
+		float sx = sqrt(m[0]*m[0] + m[1]*m[1] + m[2] *m[2]);
+		float sy = sqrt(m[4]*m[4] + m[5]*m[5] + m[6] *m[6]);
+		float sz = sqrt(m[8]*m[8] + m[9]*m[9] + m[10]*m[10]);
+
+		/* get the rotation matrix */
+		float rot[16] = { 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 };
+		rot[0] = m[0]/sx; rot[1] = m[1]/sy; rot[2] = m[2] /sz;
+		rot[4] = m[4]/sx; rot[5] = m[5]/sy; rot[6] = m[6] /sz;
+		rot[8] = m[8]/sx; rot[9] = m[9]/sy; rot[10]= m[10]/sz;
+		normalize(rot);
+
+		/* invert plane matrix
+		 * so we can make the plane appear parallel to the screen if required */
+		float inv_m[16];
+		for(unsigned int i=0; i<16; ++i) inv_m[i] = rot[i];
+		transp(inv_m);
+		inv_m[3]  = inv_m[7]  = inv_m[11] = 0; // should be zero anyway
+		inv_m[12] = inv_m[13] = inv_m[14] = 0; // remove translation for now
+
+		/* invert the model view matrix 
+		 * M^-1 = (RS)^-1 = S^-1 R^-1 = R/(sx,sy,sz)^T */
+		inv_m[0] = inv_m[0] / sx; inv_m[1] = inv_m[1] / sy; inv_m[2]  = inv_m[2]  / sz;
+		inv_m[4] = inv_m[4] / sx; inv_m[5] = inv_m[5] / sy; inv_m[6]  = inv_m[6]  / sz;
+		inv_m[8] = inv_m[8] / sx; inv_m[9] = inv_m[9] / sy; inv_m[10] = inv_m[10] / sz;
+
+		/* revert any translation, so the plane crosses the origin
+		 * convert the plane translation into the screen coordinate (use the inverse of the rotation part)
+		 * multiply translation by inv_rot (rot^T) */
+		inv_m[12] = -( rot[0]*m[12]*sx + rot[1]*m[13]*sy + rot[2] *m[14]*sz ) / sx;
+		inv_m[13] = -( rot[4]*m[12]*sx + rot[5]*m[13]*sy + rot[6] *m[14]*sz ) / sy;
+		inv_m[14] = -( rot[8]*m[12]*sx + rot[9]*m[13]*sy + rot[10]*m[14]*sz ) / sz;
+
+		/* change modelview matrix so all further object (eg. plane) will be parallel to the screen */
+		glMatrixMode(GL_MODELVIEW);
+		glMultMatrixf(inv_m); // rotate screen, aligning it with the screen
+		
+		/* now the correction (align with the screen) has been done,
+		 * use the modelview as previously expected */
+		glMultMatrixf(modelview);
+	}
+
+
+	void Volume4D::updateRamp(float min, float max)
+	{
+		/* check if the display has been initialized */
+		if(!m_gpu_program) throw LOCATE(Error("updating lut before setting data"));
+
+		/* use the GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* internal lut is normalized (maximum texture size)
+		   lut[0] corresponds to the lowest data value and
+		   lut[size-1] corresponds to the highest data value */
+		GLint size; // typically 4096
+		glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); // query what the graphic card max texture size
+
+		/* set lookup table */
+		if(!m_internal_lut) m_internal_lut = new float [size*4];
+
+		/* find where the min and max value should be in the internal lut */
+		if(m_intensity_range[1] == m_intensity_range[0])
+			min = m_intensity_range[0],
+			max = m_intensity_range[1];
+		else
+			min = (min-m_intensity_range[0]) * (size-1) / (m_intensity_range[1]-m_intensity_range[0]),
+			max = (max-m_intensity_range[0]) * (size-1) / (m_intensity_range[1]-m_intensity_range[0]);
+
+		int low  = (min<0)    ?  0   : ((min>size) ? size : (int)min);
+		int high = (max>size) ? size : ((max<0)    ? 0    : (int)max);
+
+		/* fill in lut flat parts */
+		for(int i=0; i<low; ++i)
+		{
+			m_internal_lut[i*4+0] = 0,
+			m_internal_lut[i*4+1] = 0,
+			m_internal_lut[i*4+2] = 0,
+			m_internal_lut[i*4+3] = 0;
+		}
+		for(int i=high; i<size; ++i)
+		{
+			m_internal_lut[i*4+0] = 1,
+			m_internal_lut[i*4+1] = 1,
+			m_internal_lut[i*4+2] = 1,
+			m_internal_lut[i*4+3] = 1;
+		}
+
+		/* fill ramp */
+		for(int i=low; i<high; ++i)
+		{
+			m_internal_lut[i*4+0] = (i-min)/(max-min),
+			//m_internal_lut[i*4+1] = (i-min)/(max-min)*(i-min)/(max-min)*(i-min)/(max-min), // G and
+			//m_internal_lut[i*4+2] = (i-min)/(max-min)*(i-min)/(max-min)*(i-min)/(max-min), // B increases slower than R -> gives a redish color to the volume
+			m_internal_lut[i*4+1] = (i-min)/(max-min),
+			m_internal_lut[i*4+2] = (i-min)/(max-min),
+			m_internal_lut[i*4+3] = (i-min)/(max-min); // from transparent to opage
+		}
+
+		/* Create 1D texture for lookup table */
+		if(!glIsTexture(m_lut_texture)) glGenTextures(1, &m_lut_texture);
+		glBindTexture(GL_TEXTURE_2D, m_lut_texture); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+		glTexImage2D(GL_TEXTURE_2D,
+					 0,
+					 GL_RGBA8,
+					 size, // lut size
+					 1,
+					 0,
+					 GL_RGBA, // color lookup table
+					 GL_FLOAT,
+					 m_internal_lut);
+		glCheckError();
+
+		/* NB: we do not delete the lut, we keep it there
+			   so when updating it the next time, no time will be lost in memory allocation/deallocation */
+		//delete [] m_internal_lut; m_internal_lut = 0;
+
+		/* stop using the GPU program until requested */
+		glUseProgram(0);
+	}
+
+
+	void Volume4D::updateLut(const float* lut, unsigned int lutSize)
+	{
+		/* check inputs */
+		if(!lut || !lutSize) throw LOCATE(Error("wrong inputs"));
+
+		/* check if the display has been initialized */
+		if(!m_gpu_program) throw LOCATE(Error("updating lut before setting data"));
+
+		/* use the GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* internal lut is normalized (maximum texture size)
+		   lut[0] is the lowest volume value and
+		   lut[size-1] is the highest voluem value */
+		GLint size; // typically 4096
+		glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); // query what the graphic card max texture size
+
+		/* set lookup table */
+		if(!m_internal_lut) m_internal_lut = new float [size*4];
+
+		/* copy lut */
+		float scale = (float)(m_intensity_range[1]-m_intensity_range[0])/size;
+		for(int i=0; i<size; ++i)
+		{
+			/* find where i should be in the given lut
+			   need to convert i which ranges from 0..size, but corresponds
+			   to values ranging in m_intensity_range[2] */
+			unsigned int intensity = (unsigned int)(i*scale + m_intensity_range[0]);
+
+			if(intensity < lutSize)
+			{
+				m_internal_lut[i*4+0] = lut[intensity*4+0];
+				m_internal_lut[i*4+1] = lut[intensity*4+1];
+				m_internal_lut[i*4+2] = lut[intensity*4+2];
+				m_internal_lut[i*4+3] = lut[intensity*4+3];
+			}
+			else
+			{
+				/* assume no intensity if lut is not defined */
+				m_internal_lut[i*4+0] = 1;
+				m_internal_lut[i*4+1] = 1;
+				m_internal_lut[i*4+2] = 1;
+				m_internal_lut[i*4+3] = 1;
+			}
+		}
+
+		/* Create 1D texture for lookup table */
+		if(!glIsTexture(m_lut_texture)) glGenTextures(1, &m_lut_texture);
+		glBindTexture(GL_TEXTURE_2D, m_lut_texture); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+		glTexImage2D(GL_TEXTURE_2D,
+					 0,
+					 GL_RGBA8,
+					 size, // lut size
+					 1,
+					 0,
+					 GL_RGBA, // color lookup table
+					 GL_FLOAT,
+					 m_internal_lut);
+		glCheckError();
+
+		/* NB: instead of freeing this unused memory, keep it there
+			   so when updating it the next time, no time will be lost in memory allocation/deallocation */
+		//delete [] m_internal_lut; m_internal_lut = 0;
+
+		/* stop using the GPU program until requested */
+		glUseProgram(0);
+	}
+
+
+	void Volume4D::setQuality(float quality)
+	{
+		if(quality<=0) throw LOCATE(Error("using an invalid quality: %f", quality));
+
+		m_quality = quality;
+	}
+
+
+	void Volume4D::setMaxTextureSize(unsigned int w, unsigned int h, unsigned int d)
+	{
+		m_max_texture_size[0] = w;
+		m_max_texture_size[1] = h;
+		m_max_texture_size[2] = d;
+	}
+
+
+	void Volume4D::getIntensityRange(float &min, float &max) const
+	{
+		min = m_intensity_range[0];
+		max = m_intensity_range[1];
+	}
+
+
+	void Volume4D::initShader()
+	{
+		/* Fragment shader source code
+		   It is a simple lookup table that returns an RGBA value
+		   for a given voxel intensity */
+		char source[] = "uniform sampler3D tex;								\n\
+						 uniform sampler2D lut;								\n\
+						 void main()										\n\
+						 {													\n\
+							 vec4 c = texture3D(tex, vec3(gl_TexCoord[0]));	\n\
+							 vec4 i = texture2D(lut, c.xx);					\n\
+							 gl_FragColor = i; 								\n\
+						 }\n\0";
+
+		/* Create and compile shader */
+		const char* source_pointer = source;
+		m_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
+		glShaderSource(m_fragment_shader, 1, &source_pointer, NULL);
+		glCompileShader(m_fragment_shader);
+
+		/* display any error if required */
+		char infolog[1024];
+		GLsizei infologlength = 0;
+		glGetShaderInfoLog(m_fragment_shader, 1024, &infologlength, infolog);
+		CHECK(infolog,infologlength==0);
+		
+		/* Attach shader to program */
+		m_gpu_program = glCreateProgram();
+		glAttachShader(m_gpu_program, m_fragment_shader);
+		glLinkProgram(m_gpu_program);
+
+		/* Use the program */
+		glUseProgram(m_gpu_program);
+
+		/* Bind shader texture variable */
+		int texLoc = glGetUniformLocation(m_gpu_program, "tex");
+		CHECK("Error in 3D texture location",texLoc!=-1);
+		glUniform1i(texLoc, 0); /* bind volume texture to GL_TEXTURE0 */
+
+		/* Bind shader lut variable */
+		int lutLoc = glGetUniformLocation(m_gpu_program, "lut");
+		CHECK("Error in lookup table location",lutLoc!=-1);
+		glUniform1i(lutLoc, 1); /* bind lookup table texture to GL_TEXTURE1 */
+
+		/* Stop using the program until next use */
+		glUseProgram(0);
+	}
+
+
+	void Volume4D::getTextureSize(const unsigned int data_size[],
+						        unsigned int texture_size[],
+						        const unsigned int max_texture_size[])
+	{
+		/* what is the texture size (compatible with opengl) */
+		for(unsigned int m=0; m<3; ++m)
+		{
+			/* shift until it is greater than the volume size */
+			texture_size[m] = 1;
+			while(texture_size[m] < data_size[m] && texture_size[m] < max_texture_size[m])
+				texture_size[m] = texture_size[m]<<1;
+		}
+	}
+
+
+	int Volume4D::getNbRenderingPlanes() const
+	{
+		/* NB: need to call it in Display (or when the modelview/projection matrices are set) */
+
+		/* Get all visualization matrices */
+		GLdouble modelview[16];
+		GLdouble projection[16];
+		GLint    viewport[4];
+
+		glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
+		glGetDoublev(GL_PROJECTION_MATRIX, projection);
+		glGetIntegerv(GL_VIEWPORT, viewport);
+
+		/* project some point to the screen
+		 *
+		 *    u2(001)  +-------+
+		 *             |\      |\
+		 *             | \     | \
+		 *             |  +-------+ u1(1111)
+		 *    u0(000)  +--|----+  |
+		 *              \ |     \ |
+		 *               \|      \|
+		 *                +-------+ u3(110)
+		 *
+		 * measure the max distance between u0-u1 and u2-u3
+		 * the max will evaluate the number of pixel of the volume
+		 */
+		double u0_x, u0_y, u0_z;
+		double u1_x, u1_y, u1_z;
+		double u2_x, u2_y, u2_z;
+		double u3_x, u3_y, u3_z;
+
+		gluProject(-0.5,-0.5,-0.5, modelview, projection, viewport, &u0_x, &u0_y, &u0_z);
+		gluProject(+0.5,+0.5,+0.5, modelview, projection, viewport, &u1_x, &u1_y, &u1_z);
+		gluProject(-0.5,-0.5,+0.5, modelview, projection, viewport, &u2_x, &u2_y, &u2_z);
+		gluProject(+0.5,+0.5,-0.5, modelview, projection, viewport, &u3_x, &u3_y, &u3_z);
+
+#if 0
+		/* what is the farthest rendering plane */
+		double min = u0_z;
+		if(u1_z < min ) min = u1_z;
+		if(u2_z < min ) min = u2_z;
+		if(u3_z < min ) min = u3_z;
+
+		/* what is the closest rendering plane */
+		double max = u0_z;
+		if(u1_z > max ) max = u1_z;
+		if(u2_z > max ) max = u2_z;
+		if(u3_z > max ) max = u3_z;
+		//if(max > 0) max = 0;
+
+		/* how many rendering planes are required */
+		double n = max - min;
+		printf("%f %f\n", min, max);
+		return static_cast<unsigned int>(n);
+
+#else
+
+		/* what is the max distance (rough evaluation, avoid more computation) */
+		float u01_x = (float)fabs(u1_x-u0_x);
+		float u01_y = (float)fabs(u1_y-u0_y);
+		float u23_x = (float)fabs(u3_x-u2_x);
+		float u23_y = (float)fabs(u3_y-u2_y);
+
+		float max = u01_x;
+		if(u01_y > max ) max = u01_y;
+		if(u23_x > max ) max = u23_x;
+		if(u23_y > max ) max = u23_y;
+
+		/* do not use more than a certain number of planes */
+		if(max > viewport[2]) max = (float)viewport[2];
+		if(max > viewport[3]) max = (float)viewport[3];
+
+		/* use maximum 200 planes */
+		if(max > 200) max = 200;
+
+		return static_cast<unsigned int>(max);
+#endif
+	}
+
+
+	void Volume4D::transf(const float p[], const float m[], float pp[])
+	{
+		/* pp is the transformed point with matrix m */
+		pp[0] = p[0]*m[0] + p[1]*m[4] + p[2]*m[8] + m[12];
+		pp[1] = p[0]*m[1] + p[1]*m[5] + p[2]*m[9] + m[13];
+		pp[2] = p[0]*m[2] + p[1]*m[6] + p[2]*m[10] + m[14];
+	}
+
+
+	void Volume4D::transp(float m[])
+	{
+		/* transpose matrix */
+		for(unsigned int j=0; j<4; ++j)
+			for(unsigned int i=0; i<j; ++i)
+		{
+			float a = m[j*4+i];
+			m[j*4+i] = m[i*4+j];
+			m[i*4+j] = a;
+		}
+
+		/* keep translation where it should be */
+		m[12] = -m[3];
+		m[13] = -m[7];
+		m[14] = -m[11];
+		m[3] = m[7] = m[11] = 0;
+	}
+
+
+	void Volume4D::normalize(float m[])
+	{
+		/* normalize each row of the rotation matrix */
+		for(unsigned int j=0; j<3; ++j)
+		{
+			float d = sqrt(m[j*4+0]*m[j*4+0] + m[j*4+1]*m[j*4+1] + m[j*4+2]*m[j*4+2]);
+			m[j*4+0] = m[j*4+0] / d;
+			m[j*4+1] = m[j*4+1] / d;
+			m[j*4+2] = m[j*4+2] / d;
+		}
+	}
+
+
+	// Define OpenGL types
+	template <> GLenum Volume4D::OpenGLArgs<float> ::type = GL_FLOAT;
+	template <> GLenum Volume4D::OpenGLArgs<double>::type = GL_FLOAT;
+	template <> GLenum Volume4D::OpenGLArgs<char>  ::type = GL_BYTE;
+	template <> GLenum Volume4D::OpenGLArgs<short> ::type = GL_SHORT;
+	template <> GLenum Volume4D::OpenGLArgs<unsigned char> ::type = GL_UNSIGNED_BYTE;
+	template <> GLenum Volume4D::OpenGLArgs<unsigned short>::type = GL_UNSIGNED_SHORT;
+
+
+	// Define min and max intensity values for standard types (floating type are assumed to range from 0.0f to 1.0f)
+	template <>          float  Volume4D::OpenGLArgs<float> ::min = 0;
+	template <>          float  Volume4D::OpenGLArgs<float> ::max = 1;
+	template <>          double Volume4D::OpenGLArgs<double>::min = 0;
+	template <>          double Volume4D::OpenGLArgs<double>::max = 1;
+	template <>          char   Volume4D::OpenGLArgs<char>  ::min = -128;
+	template <>          char   Volume4D::OpenGLArgs<char>  ::max = 127;
+	template <>          short  Volume4D::OpenGLArgs<short> ::min = -32768;
+	template <>          short  Volume4D::OpenGLArgs<short> ::max = 32767;
+	template <> unsigned char   Volume4D::OpenGLArgs<unsigned char> ::min = 0;
+	template <> unsigned char   Volume4D::OpenGLArgs<unsigned char> ::max = 255;
+	template <> unsigned short  Volume4D::OpenGLArgs<unsigned short>::min = 0;
+	template <> unsigned short  Volume4D::OpenGLArgs<unsigned short>::max = 65535;
+
+
+} // namespace
diff --git a/.svn/pristine/c6/c6528e3830878d48611cf35212532d896f2d9edd.svn-base b/.svn/pristine/c6/c6528e3830878d48611cf35212532d896f2d9edd.svn-base
new file mode 100644
index 0000000..26d1dc7
--- /dev/null
+++ b/.svn/pristine/c6/c6528e3830878d48611cf35212532d896f2d9edd.svn-base
@@ -0,0 +1,111 @@
+/cygdrive/c/home/svn/libvd/trunk/display/mask4d.h:21: Warning: the name `Mask4D.h' supplied as the second argument in the \file statement is not an input file
+/cygdrive/c/home/svn/libvd/trunk/display/smoothmask4d.h:1: Warning: the name `SmoothMask4D.h' supplied as the second argument in the \file statement is not an input file
+/cygdrive/c/home/svn/libvd/trunk/glprintf.h:21: Warning: the name `glprintf.cpp' supplied as the second argument in the \file statement is not an input file
+Error opening map file clip_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file color_8h__dep__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file display2d_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file display2d__drawpixels_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file display3d_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file display4d_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file display4d_8h__dep__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file displaycolor_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file displaycolor_8h__dep__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file displayhistogram_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file displayhistogram_8h__dep__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file editor_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file error_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file error_8h__dep__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file glprintf_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file image_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file ioavi_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file iobmp_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file ioraw_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file ioscreenshot_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file isosurface_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file manipworld_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file mask3d_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file mask4d_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file multidisplay_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file pick_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file point3d_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file ramp_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file smoothmask3d_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file smoothmask4d_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file stereo_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file trapezoid_8h__incl.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file structcolor__coll__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file structError__inherit__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file classImage__coll__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file structRangeError__inherit__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file structRangeError__coll__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Problems running dot: exit code=127, command='dot', arguments='"inherit__graph__0.dot" -Tpng -o "inherit__graph__0.png"'
+/cygdrive/c/home/svn/libvd/trunk/display/display3d.h:378: Warning: The following parameters of Display::Volume::createTextureData(const DataType *data, const unsigned int data_size[], DataType &min, DataType &max, const unsigned int texture_size[]) are not documented:
+  parameter data
+  parameter data_size
+  parameter texture_size
+Error opening map file structDisplay_1_1Volume_1_1OpenGLArgs__coll__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+/cygdrive/c/home/svn/libvd/trunk/display/display4d.h:442: Warning: The following parameters of Display::Volume4D::createTextureData(const DataType *data, const unsigned int data_size[], DataType &min, DataType &max, const unsigned int texture_size[]) are not documented:
+  parameter data
+  parameter data_size
+  parameter texture_size
+Error opening map file structDisplay_1_1Volume4D_1_1OpenGLArgs__coll__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+/cygdrive/c/home/svn/libvd/trunk/display/smoothmask3d.h:81: Warning: The following parameters of Display::SmoothMask3D::update(const DataType *data, const MaskType *mask, unsigned int width, unsigned int height, unsigned int depth) are not documented:
+  parameter width
+  parameter height
+  parameter depth
+/cygdrive/c/home/svn/libvd/trunk/display/smoothmask4d.h:61: Warning: The following parameters of Display::SmoothMask4D::update(const DataType *data, const MaskType *mask, unsigned int width, unsigned int height, unsigned int depth, unsigned int nb_frames) are not documented:
+  parameter width
+  parameter height
+  parameter depth
+  parameter nb_frames
+Error opening map file classIO_1_1AVI__coll__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+Error opening map file classTools_1_1Clip__coll__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+/cygdrive/c/home/svn/libvd/trunk/tools/transferfunction/displayhistogram.h:68: Warning: argument `image' of command @param is not found in the argument list of Tools::TransferFunction::DisplayHistogram::update(const DataType *data, unsigned int data_size, float min, float max, unsigned int nbBins)
+/cygdrive/c/home/svn/libvd/trunk/tools/transferfunction/displayhistogram.h:68: Warning: The following parameters of Tools::TransferFunction::DisplayHistogram::update(const DataType *data, unsigned int data_size, float min, float max, unsigned int nbBins) are not documented:
+  parameter data
+Error opening map file classTools_1_1TransferFunction_1_1Editor__coll__graph.map for inclusion in the docs!
+Error: Could not extract bounding box from .eps!
+/cygdrive/c/home/svn/libvd/trunk/tools/transferfunction/editor.h:49: Warning: image file Editor.png is not found in IMAGE_PATH: assuming external image.
+/cygdrive/c/home/svn/libvd/trunk/tools/transferfunction/editor.h:50: Warning: image file Editor.png is not found in IMAGE_PATH: assuming external image.
+Problems running dot: exit code=127, command='dot', arguments='"graph_legend.dot" -Tpng -o "graph_legend.png"'
diff --git a/.svn/pristine/c6/c6573a6af30162e5cc33adfb00d5918c10dd3d74.svn-base b/.svn/pristine/c6/c6573a6af30162e5cc33adfb00d5918c10dd3d74.svn-base
new file mode 100644
index 0000000..89894c5
--- /dev/null
+++ b/.svn/pristine/c6/c6573a6af30162e5cc33adfb00d5918c10dd3d74.svn-base
@@ -0,0 +1,10797 @@
+/***************************************************************************
+*
+* GLee.h 
+* GLee (OpenGL Easy Extension library)        
+* Version : 5.21
+*
+* Copyright (c)2006  Ben Woodhouse  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are 
+* met:
+* 1. Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer as
+* the first lines of this file unmodified.
+* 2. Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY BEN WOODHOUSE ``AS IS'' AND ANY EXPRESS OR
+* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL BEN WOODHOUSE BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Web: http://elf-stone.com/glee.php
+*
+* [This file was automatically generated by GLeeGen 5.21
+*
+***************************************************************************/
+
+#ifndef __glee_h_
+#define __glee_h_
+
+#ifdef __gl_h_
+	#error gl.h included before glee.h
+#endif
+
+#ifdef __glext_h_
+	#error glext.h included before glee.h
+#endif
+
+#ifdef __wglext_h_
+	#error wglext.h included before glee.h
+#endif
+
+#ifdef __glxext_h_
+	#error glxext.h included before glee.h
+#endif
+
+#ifdef WIN32
+	#define WIN32_LEAN_AND_MEAN
+	#include <windows.h>
+	#include <GL/gl.h>
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+	#include <OpenGL/gl.h>
+#else // GLX
+	#define __glext_h_  /* prevent glext.h from being included  */
+	#define __glxext_h_ /* prevent glxext.h from being included */
+	#define GLX_GLXEXT_PROTOTYPES
+	#include <GL/gl.h>
+	#include <GL/glx.h>
+#endif
+
+#ifndef APIENTRY
+	#define APIENTRY
+#endif
+
+#ifndef APIENTRYP
+	#define APIENTRYP APIENTRY *
+#endif
+
+#define GLEE_EXTERN extern
+
+#ifdef __cplusplus 
+	extern "C" {		/* begin C linkage */
+#endif
+
+#define GLEE_LINK_FAIL 0
+#define GLEE_LINK_PARTIAL 1
+#define GLEE_LINK_COMPLETE 2
+
+/* Extension querying variables */
+
+GLEE_EXTERN GLboolean _GLEE_VERSION_1_2;
+GLEE_EXTERN GLboolean _GLEE_ARB_imaging;
+GLEE_EXTERN GLboolean _GLEE_VERSION_1_3;
+GLEE_EXTERN GLboolean _GLEE_VERSION_1_4;
+GLEE_EXTERN GLboolean _GLEE_VERSION_1_5;
+GLEE_EXTERN GLboolean _GLEE_VERSION_2_0;
+GLEE_EXTERN GLboolean _GLEE_VERSION_2_1;
+GLEE_EXTERN GLboolean _GLEE_ARB_multitexture;
+GLEE_EXTERN GLboolean _GLEE_ARB_transpose_matrix;
+GLEE_EXTERN GLboolean _GLEE_ARB_multisample;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_env_add;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_cube_map;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_compression;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_border_clamp;
+GLEE_EXTERN GLboolean _GLEE_ARB_point_parameters;
+GLEE_EXTERN GLboolean _GLEE_ARB_vertex_blend;
+GLEE_EXTERN GLboolean _GLEE_ARB_matrix_palette;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_env_combine;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_env_crossbar;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_env_dot3;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_mirrored_repeat;
+GLEE_EXTERN GLboolean _GLEE_ARB_depth_texture;
+GLEE_EXTERN GLboolean _GLEE_ARB_shadow;
+GLEE_EXTERN GLboolean _GLEE_ARB_shadow_ambient;
+GLEE_EXTERN GLboolean _GLEE_ARB_window_pos;
+GLEE_EXTERN GLboolean _GLEE_ARB_vertex_program;
+GLEE_EXTERN GLboolean _GLEE_ARB_fragment_program;
+GLEE_EXTERN GLboolean _GLEE_ARB_vertex_buffer_object;
+GLEE_EXTERN GLboolean _GLEE_ARB_occlusion_query;
+GLEE_EXTERN GLboolean _GLEE_ARB_shader_objects;
+GLEE_EXTERN GLboolean _GLEE_ARB_vertex_shader;
+GLEE_EXTERN GLboolean _GLEE_ARB_fragment_shader;
+GLEE_EXTERN GLboolean _GLEE_ARB_shading_language_100;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_non_power_of_two;
+GLEE_EXTERN GLboolean _GLEE_ARB_point_sprite;
+GLEE_EXTERN GLboolean _GLEE_ARB_fragment_program_shadow;
+GLEE_EXTERN GLboolean _GLEE_ARB_draw_buffers;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_rectangle;
+GLEE_EXTERN GLboolean _GLEE_ARB_color_buffer_float;
+GLEE_EXTERN GLboolean _GLEE_ARB_half_float_pixel;
+GLEE_EXTERN GLboolean _GLEE_ARB_texture_float;
+GLEE_EXTERN GLboolean _GLEE_ARB_pixel_buffer_object;
+GLEE_EXTERN GLboolean _GLEE_EXT_abgr;
+GLEE_EXTERN GLboolean _GLEE_EXT_blend_color;
+GLEE_EXTERN GLboolean _GLEE_EXT_polygon_offset;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture3D;
+GLEE_EXTERN GLboolean _GLEE_SGIS_texture_filter4;
+GLEE_EXTERN GLboolean _GLEE_EXT_subtexture;
+GLEE_EXTERN GLboolean _GLEE_EXT_copy_texture;
+GLEE_EXTERN GLboolean _GLEE_EXT_histogram;
+GLEE_EXTERN GLboolean _GLEE_EXT_convolution;
+GLEE_EXTERN GLboolean _GLEE_SGI_color_matrix;
+GLEE_EXTERN GLboolean _GLEE_SGI_color_table;
+GLEE_EXTERN GLboolean _GLEE_SGIS_pixel_texture;
+GLEE_EXTERN GLboolean _GLEE_SGIX_pixel_texture;
+GLEE_EXTERN GLboolean _GLEE_SGIS_texture4D;
+GLEE_EXTERN GLboolean _GLEE_SGI_texture_color_table;
+GLEE_EXTERN GLboolean _GLEE_EXT_cmyka;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_object;
+GLEE_EXTERN GLboolean _GLEE_SGIS_detail_texture;
+GLEE_EXTERN GLboolean _GLEE_SGIS_sharpen_texture;
+GLEE_EXTERN GLboolean _GLEE_EXT_packed_pixels;
+GLEE_EXTERN GLboolean _GLEE_SGIS_texture_lod;
+GLEE_EXTERN GLboolean _GLEE_SGIS_multisample;
+GLEE_EXTERN GLboolean _GLEE_EXT_rescale_normal;
+GLEE_EXTERN GLboolean _GLEE_EXT_vertex_array;
+GLEE_EXTERN GLboolean _GLEE_EXT_misc_attribute;
+GLEE_EXTERN GLboolean _GLEE_SGIS_generate_mipmap;
+GLEE_EXTERN GLboolean _GLEE_SGIX_clipmap;
+GLEE_EXTERN GLboolean _GLEE_SGIX_shadow;
+GLEE_EXTERN GLboolean _GLEE_SGIS_texture_edge_clamp;
+GLEE_EXTERN GLboolean _GLEE_SGIS_texture_border_clamp;
+GLEE_EXTERN GLboolean _GLEE_EXT_blend_minmax;
+GLEE_EXTERN GLboolean _GLEE_EXT_blend_subtract;
+GLEE_EXTERN GLboolean _GLEE_EXT_blend_logic_op;
+GLEE_EXTERN GLboolean _GLEE_SGIX_interlace;
+GLEE_EXTERN GLboolean _GLEE_SGIX_pixel_tiles;
+GLEE_EXTERN GLboolean _GLEE_SGIS_texture_select;
+GLEE_EXTERN GLboolean _GLEE_SGIX_sprite;
+GLEE_EXTERN GLboolean _GLEE_SGIX_texture_multi_buffer;
+GLEE_EXTERN GLboolean _GLEE_EXT_point_parameters;
+GLEE_EXTERN GLboolean _GLEE_SGIS_point_parameters;
+GLEE_EXTERN GLboolean _GLEE_SGIX_instruments;
+GLEE_EXTERN GLboolean _GLEE_SGIX_texture_scale_bias;
+GLEE_EXTERN GLboolean _GLEE_SGIX_framezoom;
+GLEE_EXTERN GLboolean _GLEE_SGIX_tag_sample_buffer;
+GLEE_EXTERN GLboolean _GLEE_FfdMaskSGIX;
+GLEE_EXTERN GLboolean _GLEE_SGIX_polynomial_ffd;
+GLEE_EXTERN GLboolean _GLEE_SGIX_reference_plane;
+GLEE_EXTERN GLboolean _GLEE_SGIX_flush_raster;
+GLEE_EXTERN GLboolean _GLEE_SGIX_depth_texture;
+GLEE_EXTERN GLboolean _GLEE_SGIS_fog_function;
+GLEE_EXTERN GLboolean _GLEE_SGIX_fog_offset;
+GLEE_EXTERN GLboolean _GLEE_HP_image_transform;
+GLEE_EXTERN GLboolean _GLEE_HP_convolution_border_modes;
+GLEE_EXTERN GLboolean _GLEE_INGR_palette_buffer;
+GLEE_EXTERN GLboolean _GLEE_SGIX_texture_add_env;
+GLEE_EXTERN GLboolean _GLEE_EXT_color_subtable;
+GLEE_EXTERN GLboolean _GLEE_PGI_vertex_hints;
+GLEE_EXTERN GLboolean _GLEE_PGI_misc_hints;
+GLEE_EXTERN GLboolean _GLEE_EXT_paletted_texture;
+GLEE_EXTERN GLboolean _GLEE_EXT_clip_volume_hint;
+GLEE_EXTERN GLboolean _GLEE_SGIX_list_priority;
+GLEE_EXTERN GLboolean _GLEE_SGIX_ir_instrument1;
+GLEE_EXTERN GLboolean _GLEE_SGIX_calligraphic_fragment;
+GLEE_EXTERN GLboolean _GLEE_SGIX_texture_lod_bias;
+GLEE_EXTERN GLboolean _GLEE_SGIX_shadow_ambient;
+GLEE_EXTERN GLboolean _GLEE_EXT_index_texture;
+GLEE_EXTERN GLboolean _GLEE_EXT_index_material;
+GLEE_EXTERN GLboolean _GLEE_EXT_index_func;
+GLEE_EXTERN GLboolean _GLEE_EXT_index_array_formats;
+GLEE_EXTERN GLboolean _GLEE_EXT_compiled_vertex_array;
+GLEE_EXTERN GLboolean _GLEE_EXT_cull_vertex;
+GLEE_EXTERN GLboolean _GLEE_SGIX_ycrcb;
+GLEE_EXTERN GLboolean _GLEE_SGIX_fragment_lighting;
+GLEE_EXTERN GLboolean _GLEE_IBM_rasterpos_clip;
+GLEE_EXTERN GLboolean _GLEE_HP_texture_lighting;
+GLEE_EXTERN GLboolean _GLEE_EXT_draw_range_elements;
+GLEE_EXTERN GLboolean _GLEE_WIN_phong_shading;
+GLEE_EXTERN GLboolean _GLEE_WIN_specular_fog;
+GLEE_EXTERN GLboolean _GLEE_EXT_light_texture;
+GLEE_EXTERN GLboolean _GLEE_SGIX_blend_alpha_minmax;
+GLEE_EXTERN GLboolean _GLEE_SGIX_impact_pixel_texture;
+GLEE_EXTERN GLboolean _GLEE_EXT_bgra;
+GLEE_EXTERN GLboolean _GLEE_SGIX_async;
+GLEE_EXTERN GLboolean _GLEE_SGIX_async_pixel;
+GLEE_EXTERN GLboolean _GLEE_SGIX_async_histogram;
+GLEE_EXTERN GLboolean _GLEE_INTEL_texture_scissor;
+GLEE_EXTERN GLboolean _GLEE_INTEL_parallel_arrays;
+GLEE_EXTERN GLboolean _GLEE_HP_occlusion_test;
+GLEE_EXTERN GLboolean _GLEE_EXT_pixel_transform;
+GLEE_EXTERN GLboolean _GLEE_EXT_pixel_transform_color_table;
+GLEE_EXTERN GLboolean _GLEE_EXT_shared_texture_palette;
+GLEE_EXTERN GLboolean _GLEE_EXT_separate_specular_color;
+GLEE_EXTERN GLboolean _GLEE_EXT_secondary_color;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_perturb_normal;
+GLEE_EXTERN GLboolean _GLEE_EXT_multi_draw_arrays;
+GLEE_EXTERN GLboolean _GLEE_EXT_fog_coord;
+GLEE_EXTERN GLboolean _GLEE_REND_screen_coordinates;
+GLEE_EXTERN GLboolean _GLEE_EXT_coordinate_frame;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_env_combine;
+GLEE_EXTERN GLboolean _GLEE_APPLE_specular_vector;
+GLEE_EXTERN GLboolean _GLEE_APPLE_transform_hint;
+GLEE_EXTERN GLboolean _GLEE_SGIX_fog_scale;
+GLEE_EXTERN GLboolean _GLEE_SUNX_constant_data;
+GLEE_EXTERN GLboolean _GLEE_SUN_global_alpha;
+GLEE_EXTERN GLboolean _GLEE_SUN_triangle_list;
+GLEE_EXTERN GLboolean _GLEE_SUN_vertex;
+GLEE_EXTERN GLboolean _GLEE_EXT_blend_func_separate;
+GLEE_EXTERN GLboolean _GLEE_INGR_color_clamp;
+GLEE_EXTERN GLboolean _GLEE_INGR_interlace_read;
+GLEE_EXTERN GLboolean _GLEE_EXT_stencil_wrap;
+GLEE_EXTERN GLboolean _GLEE_EXT_422_pixels;
+GLEE_EXTERN GLboolean _GLEE_NV_texgen_reflection;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_cube_map;
+GLEE_EXTERN GLboolean _GLEE_SUN_convolution_border_modes;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_env_add;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_lod_bias;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_filter_anisotropic;
+GLEE_EXTERN GLboolean _GLEE_EXT_vertex_weighting;
+GLEE_EXTERN GLboolean _GLEE_NV_light_max_exponent;
+GLEE_EXTERN GLboolean _GLEE_NV_vertex_array_range;
+GLEE_EXTERN GLboolean _GLEE_NV_register_combiners;
+GLEE_EXTERN GLboolean _GLEE_NV_fog_distance;
+GLEE_EXTERN GLboolean _GLEE_NV_texgen_emboss;
+GLEE_EXTERN GLboolean _GLEE_NV_blend_square;
+GLEE_EXTERN GLboolean _GLEE_NV_texture_env_combine4;
+GLEE_EXTERN GLboolean _GLEE_MESA_resize_buffers;
+GLEE_EXTERN GLboolean _GLEE_MESA_window_pos;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_compression_s3tc;
+GLEE_EXTERN GLboolean _GLEE_IBM_cull_vertex;
+GLEE_EXTERN GLboolean _GLEE_IBM_multimode_draw_arrays;
+GLEE_EXTERN GLboolean _GLEE_IBM_vertex_array_lists;
+GLEE_EXTERN GLboolean _GLEE_SGIX_subsample;
+GLEE_EXTERN GLboolean _GLEE_SGIX_ycrcb_subsample;
+GLEE_EXTERN GLboolean _GLEE_SGIX_ycrcba;
+GLEE_EXTERN GLboolean _GLEE_SGI_depth_pass_instrument;
+GLEE_EXTERN GLboolean _GLEE_3DFX_texture_compression_FXT1;
+GLEE_EXTERN GLboolean _GLEE_3DFX_multisample;
+GLEE_EXTERN GLboolean _GLEE_3DFX_tbuffer;
+GLEE_EXTERN GLboolean _GLEE_EXT_multisample;
+GLEE_EXTERN GLboolean _GLEE_SGIX_vertex_preclip;
+GLEE_EXTERN GLboolean _GLEE_SGIX_convolution_accuracy;
+GLEE_EXTERN GLboolean _GLEE_SGIX_resample;
+GLEE_EXTERN GLboolean _GLEE_SGIS_point_line_texgen;
+GLEE_EXTERN GLboolean _GLEE_SGIS_texture_color_mask;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_env_dot3;
+GLEE_EXTERN GLboolean _GLEE_ATI_texture_mirror_once;
+GLEE_EXTERN GLboolean _GLEE_NV_fence;
+GLEE_EXTERN GLboolean _GLEE_IBM_texture_mirrored_repeat;
+GLEE_EXTERN GLboolean _GLEE_NV_evaluators;
+GLEE_EXTERN GLboolean _GLEE_NV_packed_depth_stencil;
+GLEE_EXTERN GLboolean _GLEE_NV_register_combiners2;
+GLEE_EXTERN GLboolean _GLEE_NV_texture_compression_vtc;
+GLEE_EXTERN GLboolean _GLEE_NV_texture_rectangle;
+GLEE_EXTERN GLboolean _GLEE_NV_texture_shader;
+GLEE_EXTERN GLboolean _GLEE_NV_texture_shader2;
+GLEE_EXTERN GLboolean _GLEE_NV_vertex_array_range2;
+GLEE_EXTERN GLboolean _GLEE_NV_vertex_program;
+GLEE_EXTERN GLboolean _GLEE_SGIX_texture_coordinate_clamp;
+GLEE_EXTERN GLboolean _GLEE_SGIX_scalebias_hint;
+GLEE_EXTERN GLboolean _GLEE_OML_interlace;
+GLEE_EXTERN GLboolean _GLEE_OML_subsample;
+GLEE_EXTERN GLboolean _GLEE_OML_resample;
+GLEE_EXTERN GLboolean _GLEE_NV_copy_depth_to_color;
+GLEE_EXTERN GLboolean _GLEE_ATI_envmap_bumpmap;
+GLEE_EXTERN GLboolean _GLEE_ATI_fragment_shader;
+GLEE_EXTERN GLboolean _GLEE_ATI_pn_triangles;
+GLEE_EXTERN GLboolean _GLEE_ATI_vertex_array_object;
+GLEE_EXTERN GLboolean _GLEE_EXT_vertex_shader;
+GLEE_EXTERN GLboolean _GLEE_ATI_vertex_streams;
+GLEE_EXTERN GLboolean _GLEE_ATI_element_array;
+GLEE_EXTERN GLboolean _GLEE_SUN_mesh_array;
+GLEE_EXTERN GLboolean _GLEE_SUN_slice_accum;
+GLEE_EXTERN GLboolean _GLEE_NV_multisample_filter_hint;
+GLEE_EXTERN GLboolean _GLEE_NV_depth_clamp;
+GLEE_EXTERN GLboolean _GLEE_NV_occlusion_query;
+GLEE_EXTERN GLboolean _GLEE_NV_point_sprite;
+GLEE_EXTERN GLboolean _GLEE_NV_texture_shader3;
+GLEE_EXTERN GLboolean _GLEE_NV_vertex_program1_1;
+GLEE_EXTERN GLboolean _GLEE_EXT_shadow_funcs;
+GLEE_EXTERN GLboolean _GLEE_EXT_stencil_two_side;
+GLEE_EXTERN GLboolean _GLEE_ATI_text_fragment_shader;
+GLEE_EXTERN GLboolean _GLEE_APPLE_client_storage;
+GLEE_EXTERN GLboolean _GLEE_APPLE_element_array;
+GLEE_EXTERN GLboolean _GLEE_APPLE_fence;
+GLEE_EXTERN GLboolean _GLEE_APPLE_vertex_array_object;
+GLEE_EXTERN GLboolean _GLEE_APPLE_vertex_array_range;
+GLEE_EXTERN GLboolean _GLEE_APPLE_ycbcr_422;
+GLEE_EXTERN GLboolean _GLEE_S3_s3tc;
+GLEE_EXTERN GLboolean _GLEE_ATI_draw_buffers;
+GLEE_EXTERN GLboolean _GLEE_ATI_pixel_format_float;
+GLEE_EXTERN GLboolean _GLEE_ATI_texture_env_combine3;
+GLEE_EXTERN GLboolean _GLEE_ATI_texture_float;
+GLEE_EXTERN GLboolean _GLEE_NV_float_buffer;
+GLEE_EXTERN GLboolean _GLEE_NV_fragment_program;
+GLEE_EXTERN GLboolean _GLEE_NV_half_float;
+GLEE_EXTERN GLboolean _GLEE_NV_pixel_data_range;
+GLEE_EXTERN GLboolean _GLEE_NV_primitive_restart;
+GLEE_EXTERN GLboolean _GLEE_NV_texture_expand_normal;
+GLEE_EXTERN GLboolean _GLEE_NV_vertex_program2;
+GLEE_EXTERN GLboolean _GLEE_ATI_map_object_buffer;
+GLEE_EXTERN GLboolean _GLEE_ATI_separate_stencil;
+GLEE_EXTERN GLboolean _GLEE_ATI_vertex_attrib_array_object;
+GLEE_EXTERN GLboolean _GLEE_OES_read_format;
+GLEE_EXTERN GLboolean _GLEE_EXT_depth_bounds_test;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_mirror_clamp;
+GLEE_EXTERN GLboolean _GLEE_EXT_blend_equation_separate;
+GLEE_EXTERN GLboolean _GLEE_MESA_pack_invert;
+GLEE_EXTERN GLboolean _GLEE_MESA_ycbcr_texture;
+GLEE_EXTERN GLboolean _GLEE_EXT_pixel_buffer_object;
+GLEE_EXTERN GLboolean _GLEE_NV_fragment_program_option;
+GLEE_EXTERN GLboolean _GLEE_NV_fragment_program2;
+GLEE_EXTERN GLboolean _GLEE_NV_vertex_program2_option;
+GLEE_EXTERN GLboolean _GLEE_NV_vertex_program3;
+GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_object;
+GLEE_EXTERN GLboolean _GLEE_GREMEDY_string_marker;
+GLEE_EXTERN GLboolean _GLEE_EXT_Cg_shader;
+GLEE_EXTERN GLboolean _GLEE_EXT_timer_query;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_buffer_object;
+GLEE_EXTERN GLboolean _GLEE_EXT_gpu_shader4;
+GLEE_EXTERN GLboolean _GLEE_EXT_geometry_shader4;
+GLEE_EXTERN GLboolean _GLEE_EXT_bindable_uniform;
+GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_sRGB;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_shared_exponent;
+GLEE_EXTERN GLboolean _GLEE_EXT_packed_float;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_array;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_integer;
+GLEE_EXTERN GLboolean _GLEE_NV_depth_buffer_float;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_compression_latc;
+GLEE_EXTERN GLboolean _GLEE_NV_transform_feedback;
+GLEE_EXTERN GLboolean _GLEE_NV_geometry_program4;
+GLEE_EXTERN GLboolean _GLEE_NV_gpu_program4;
+GLEE_EXTERN GLboolean _GLEE_NV_framebuffer_multisample_coverage;
+GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_multisample;
+GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_blit;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_compression_rgtc;
+GLEE_EXTERN GLboolean _GLEE_EXT_color_matrix;
+GLEE_EXTERN GLboolean _GLEE_SGIX_texture_select;
+GLEE_EXTERN GLboolean _GLEE_INGR_blend_func_separate;
+GLEE_EXTERN GLboolean _GLEE_SGIX_depth_pass_instrument;
+GLEE_EXTERN GLboolean _GLEE_SGIX_igloo_interface;
+GLEE_EXTERN GLboolean _GLEE_EXT_draw_buffers2;
+GLEE_EXTERN GLboolean _GLEE_NV_parameter_buffer_object;
+GLEE_EXTERN GLboolean _GLEE_EXT_draw_instanced;
+GLEE_EXTERN GLboolean _GLEE_EXT_fragment_lighting;
+GLEE_EXTERN GLboolean _GLEE_EXT_packed_depth_stencil;
+GLEE_EXTERN GLboolean _GLEE_EXT_scene_marker;
+GLEE_EXTERN GLboolean _GLEE_EXT_stencil_clear_tag;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_compression_dxt1;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_env;
+GLEE_EXTERN GLboolean _GLEE_EXT_texture_sRGB;
+GLEE_EXTERN GLboolean _GLEE_IBM_static_data;
+GLEE_EXTERN GLboolean _GLEE_MESAX_texture_stack;
+GLEE_EXTERN GLboolean _GLEE_OES_byte_coordinates;
+GLEE_EXTERN GLboolean _GLEE_OES_compressed_paletted_texture;
+GLEE_EXTERN GLboolean _GLEE_OES_single_precision;
+GLEE_EXTERN GLboolean _GLEE_SGIX_pixel_texture_bits;
+GLEE_EXTERN GLboolean _GLEE_SGIX_texture_range;
+
+/* Aliases for extension querying variables */
+
+#define GLEE_VERSION_1_2     GLeeEnabled(&_GLEE_VERSION_1_2)
+#define GLEE_ARB_imaging     GLeeEnabled(&_GLEE_ARB_imaging)
+#define GLEE_VERSION_1_3     GLeeEnabled(&_GLEE_VERSION_1_3)
+#define GLEE_VERSION_1_4     GLeeEnabled(&_GLEE_VERSION_1_4)
+#define GLEE_VERSION_1_5     GLeeEnabled(&_GLEE_VERSION_1_5)
+#define GLEE_VERSION_2_0     GLeeEnabled(&_GLEE_VERSION_2_0)
+#define GLEE_VERSION_2_1     GLeeEnabled(&_GLEE_VERSION_2_1)
+#define GLEE_ARB_multitexture     GLeeEnabled(&_GLEE_ARB_multitexture)
+#define GLEE_ARB_transpose_matrix     GLeeEnabled(&_GLEE_ARB_transpose_matrix)
+#define GLEE_ARB_multisample     GLeeEnabled(&_GLEE_ARB_multisample)
+#define GLEE_ARB_texture_env_add     GLeeEnabled(&_GLEE_ARB_texture_env_add)
+#define GLEE_ARB_texture_cube_map     GLeeEnabled(&_GLEE_ARB_texture_cube_map)
+#define GLEE_ARB_texture_compression     GLeeEnabled(&_GLEE_ARB_texture_compression)
+#define GLEE_ARB_texture_border_clamp     GLeeEnabled(&_GLEE_ARB_texture_border_clamp)
+#define GLEE_ARB_point_parameters     GLeeEnabled(&_GLEE_ARB_point_parameters)
+#define GLEE_ARB_vertex_blend     GLeeEnabled(&_GLEE_ARB_vertex_blend)
+#define GLEE_ARB_matrix_palette     GLeeEnabled(&_GLEE_ARB_matrix_palette)
+#define GLEE_ARB_texture_env_combine     GLeeEnabled(&_GLEE_ARB_texture_env_combine)
+#define GLEE_ARB_texture_env_crossbar     GLeeEnabled(&_GLEE_ARB_texture_env_crossbar)
+#define GLEE_ARB_texture_env_dot3     GLeeEnabled(&_GLEE_ARB_texture_env_dot3)
+#define GLEE_ARB_texture_mirrored_repeat     GLeeEnabled(&_GLEE_ARB_texture_mirrored_repeat)
+#define GLEE_ARB_depth_texture     GLeeEnabled(&_GLEE_ARB_depth_texture)
+#define GLEE_ARB_shadow     GLeeEnabled(&_GLEE_ARB_shadow)
+#define GLEE_ARB_shadow_ambient     GLeeEnabled(&_GLEE_ARB_shadow_ambient)
+#define GLEE_ARB_window_pos     GLeeEnabled(&_GLEE_ARB_window_pos)
+#define GLEE_ARB_vertex_program     GLeeEnabled(&_GLEE_ARB_vertex_program)
+#define GLEE_ARB_fragment_program     GLeeEnabled(&_GLEE_ARB_fragment_program)
+#define GLEE_ARB_vertex_buffer_object     GLeeEnabled(&_GLEE_ARB_vertex_buffer_object)
+#define GLEE_ARB_occlusion_query     GLeeEnabled(&_GLEE_ARB_occlusion_query)
+#define GLEE_ARB_shader_objects     GLeeEnabled(&_GLEE_ARB_shader_objects)
+#define GLEE_ARB_vertex_shader     GLeeEnabled(&_GLEE_ARB_vertex_shader)
+#define GLEE_ARB_fragment_shader     GLeeEnabled(&_GLEE_ARB_fragment_shader)
+#define GLEE_ARB_shading_language_100     GLeeEnabled(&_GLEE_ARB_shading_language_100)
+#define GLEE_ARB_texture_non_power_of_two     GLeeEnabled(&_GLEE_ARB_texture_non_power_of_two)
+#define GLEE_ARB_point_sprite     GLeeEnabled(&_GLEE_ARB_point_sprite)
+#define GLEE_ARB_fragment_program_shadow     GLeeEnabled(&_GLEE_ARB_fragment_program_shadow)
+#define GLEE_ARB_draw_buffers     GLeeEnabled(&_GLEE_ARB_draw_buffers)
+#define GLEE_ARB_texture_rectangle     GLeeEnabled(&_GLEE_ARB_texture_rectangle)
+#define GLEE_ARB_color_buffer_float     GLeeEnabled(&_GLEE_ARB_color_buffer_float)
+#define GLEE_ARB_half_float_pixel     GLeeEnabled(&_GLEE_ARB_half_float_pixel)
+#define GLEE_ARB_texture_float     GLeeEnabled(&_GLEE_ARB_texture_float)
+#define GLEE_ARB_pixel_buffer_object     GLeeEnabled(&_GLEE_ARB_pixel_buffer_object)
+#define GLEE_EXT_abgr     GLeeEnabled(&_GLEE_EXT_abgr)
+#define GLEE_EXT_blend_color     GLeeEnabled(&_GLEE_EXT_blend_color)
+#define GLEE_EXT_polygon_offset     GLeeEnabled(&_GLEE_EXT_polygon_offset)
+#define GLEE_EXT_texture     GLeeEnabled(&_GLEE_EXT_texture)
+#define GLEE_EXT_texture3D     GLeeEnabled(&_GLEE_EXT_texture3D)
+#define GLEE_SGIS_texture_filter4     GLeeEnabled(&_GLEE_SGIS_texture_filter4)
+#define GLEE_EXT_subtexture     GLeeEnabled(&_GLEE_EXT_subtexture)
+#define GLEE_EXT_copy_texture     GLeeEnabled(&_GLEE_EXT_copy_texture)
+#define GLEE_EXT_histogram     GLeeEnabled(&_GLEE_EXT_histogram)
+#define GLEE_EXT_convolution     GLeeEnabled(&_GLEE_EXT_convolution)
+#define GLEE_SGI_color_matrix     GLeeEnabled(&_GLEE_SGI_color_matrix)
+#define GLEE_SGI_color_table     GLeeEnabled(&_GLEE_SGI_color_table)
+#define GLEE_SGIS_pixel_texture     GLeeEnabled(&_GLEE_SGIS_pixel_texture)
+#define GLEE_SGIX_pixel_texture     GLeeEnabled(&_GLEE_SGIX_pixel_texture)
+#define GLEE_SGIS_texture4D     GLeeEnabled(&_GLEE_SGIS_texture4D)
+#define GLEE_SGI_texture_color_table     GLeeEnabled(&_GLEE_SGI_texture_color_table)
+#define GLEE_EXT_cmyka     GLeeEnabled(&_GLEE_EXT_cmyka)
+#define GLEE_EXT_texture_object     GLeeEnabled(&_GLEE_EXT_texture_object)
+#define GLEE_SGIS_detail_texture     GLeeEnabled(&_GLEE_SGIS_detail_texture)
+#define GLEE_SGIS_sharpen_texture     GLeeEnabled(&_GLEE_SGIS_sharpen_texture)
+#define GLEE_EXT_packed_pixels     GLeeEnabled(&_GLEE_EXT_packed_pixels)
+#define GLEE_SGIS_texture_lod     GLeeEnabled(&_GLEE_SGIS_texture_lod)
+#define GLEE_SGIS_multisample     GLeeEnabled(&_GLEE_SGIS_multisample)
+#define GLEE_EXT_rescale_normal     GLeeEnabled(&_GLEE_EXT_rescale_normal)
+#define GLEE_EXT_vertex_array     GLeeEnabled(&_GLEE_EXT_vertex_array)
+#define GLEE_EXT_misc_attribute     GLeeEnabled(&_GLEE_EXT_misc_attribute)
+#define GLEE_SGIS_generate_mipmap     GLeeEnabled(&_GLEE_SGIS_generate_mipmap)
+#define GLEE_SGIX_clipmap     GLeeEnabled(&_GLEE_SGIX_clipmap)
+#define GLEE_SGIX_shadow     GLeeEnabled(&_GLEE_SGIX_shadow)
+#define GLEE_SGIS_texture_edge_clamp     GLeeEnabled(&_GLEE_SGIS_texture_edge_clamp)
+#define GLEE_SGIS_texture_border_clamp     GLeeEnabled(&_GLEE_SGIS_texture_border_clamp)
+#define GLEE_EXT_blend_minmax     GLeeEnabled(&_GLEE_EXT_blend_minmax)
+#define GLEE_EXT_blend_subtract     GLeeEnabled(&_GLEE_EXT_blend_subtract)
+#define GLEE_EXT_blend_logic_op     GLeeEnabled(&_GLEE_EXT_blend_logic_op)
+#define GLEE_SGIX_interlace     GLeeEnabled(&_GLEE_SGIX_interlace)
+#define GLEE_SGIX_pixel_tiles     GLeeEnabled(&_GLEE_SGIX_pixel_tiles)
+#define GLEE_SGIS_texture_select     GLeeEnabled(&_GLEE_SGIS_texture_select)
+#define GLEE_SGIX_sprite     GLeeEnabled(&_GLEE_SGIX_sprite)
+#define GLEE_SGIX_texture_multi_buffer     GLeeEnabled(&_GLEE_SGIX_texture_multi_buffer)
+#define GLEE_EXT_point_parameters     GLeeEnabled(&_GLEE_EXT_point_parameters)
+#define GLEE_SGIS_point_parameters     GLeeEnabled(&_GLEE_SGIS_point_parameters)
+#define GLEE_SGIX_instruments     GLeeEnabled(&_GLEE_SGIX_instruments)
+#define GLEE_SGIX_texture_scale_bias     GLeeEnabled(&_GLEE_SGIX_texture_scale_bias)
+#define GLEE_SGIX_framezoom     GLeeEnabled(&_GLEE_SGIX_framezoom)
+#define GLEE_SGIX_tag_sample_buffer     GLeeEnabled(&_GLEE_SGIX_tag_sample_buffer)
+#define GLEE_FfdMaskSGIX     GLeeEnabled(&_GLEE_FfdMaskSGIX)
+#define GLEE_SGIX_polynomial_ffd     GLeeEnabled(&_GLEE_SGIX_polynomial_ffd)
+#define GLEE_SGIX_reference_plane     GLeeEnabled(&_GLEE_SGIX_reference_plane)
+#define GLEE_SGIX_flush_raster     GLeeEnabled(&_GLEE_SGIX_flush_raster)
+#define GLEE_SGIX_depth_texture     GLeeEnabled(&_GLEE_SGIX_depth_texture)
+#define GLEE_SGIS_fog_function     GLeeEnabled(&_GLEE_SGIS_fog_function)
+#define GLEE_SGIX_fog_offset     GLeeEnabled(&_GLEE_SGIX_fog_offset)
+#define GLEE_HP_image_transform     GLeeEnabled(&_GLEE_HP_image_transform)
+#define GLEE_HP_convolution_border_modes     GLeeEnabled(&_GLEE_HP_convolution_border_modes)
+#define GLEE_INGR_palette_buffer     GLeeEnabled(&_GLEE_INGR_palette_buffer)
+#define GLEE_SGIX_texture_add_env     GLeeEnabled(&_GLEE_SGIX_texture_add_env)
+#define GLEE_EXT_color_subtable     GLeeEnabled(&_GLEE_EXT_color_subtable)
+#define GLEE_PGI_vertex_hints     GLeeEnabled(&_GLEE_PGI_vertex_hints)
+#define GLEE_PGI_misc_hints     GLeeEnabled(&_GLEE_PGI_misc_hints)
+#define GLEE_EXT_paletted_texture     GLeeEnabled(&_GLEE_EXT_paletted_texture)
+#define GLEE_EXT_clip_volume_hint     GLeeEnabled(&_GLEE_EXT_clip_volume_hint)
+#define GLEE_SGIX_list_priority     GLeeEnabled(&_GLEE_SGIX_list_priority)
+#define GLEE_SGIX_ir_instrument1     GLeeEnabled(&_GLEE_SGIX_ir_instrument1)
+#define GLEE_SGIX_calligraphic_fragment     GLeeEnabled(&_GLEE_SGIX_calligraphic_fragment)
+#define GLEE_SGIX_texture_lod_bias     GLeeEnabled(&_GLEE_SGIX_texture_lod_bias)
+#define GLEE_SGIX_shadow_ambient     GLeeEnabled(&_GLEE_SGIX_shadow_ambient)
+#define GLEE_EXT_index_texture     GLeeEnabled(&_GLEE_EXT_index_texture)
+#define GLEE_EXT_index_material     GLeeEnabled(&_GLEE_EXT_index_material)
+#define GLEE_EXT_index_func     GLeeEnabled(&_GLEE_EXT_index_func)
+#define GLEE_EXT_index_array_formats     GLeeEnabled(&_GLEE_EXT_index_array_formats)
+#define GLEE_EXT_compiled_vertex_array     GLeeEnabled(&_GLEE_EXT_compiled_vertex_array)
+#define GLEE_EXT_cull_vertex     GLeeEnabled(&_GLEE_EXT_cull_vertex)
+#define GLEE_SGIX_ycrcb     GLeeEnabled(&_GLEE_SGIX_ycrcb)
+#define GLEE_SGIX_fragment_lighting     GLeeEnabled(&_GLEE_SGIX_fragment_lighting)
+#define GLEE_IBM_rasterpos_clip     GLeeEnabled(&_GLEE_IBM_rasterpos_clip)
+#define GLEE_HP_texture_lighting     GLeeEnabled(&_GLEE_HP_texture_lighting)
+#define GLEE_EXT_draw_range_elements     GLeeEnabled(&_GLEE_EXT_draw_range_elements)
+#define GLEE_WIN_phong_shading     GLeeEnabled(&_GLEE_WIN_phong_shading)
+#define GLEE_WIN_specular_fog     GLeeEnabled(&_GLEE_WIN_specular_fog)
+#define GLEE_EXT_light_texture     GLeeEnabled(&_GLEE_EXT_light_texture)
+#define GLEE_SGIX_blend_alpha_minmax     GLeeEnabled(&_GLEE_SGIX_blend_alpha_minmax)
+#define GLEE_SGIX_impact_pixel_texture     GLeeEnabled(&_GLEE_SGIX_impact_pixel_texture)
+#define GLEE_EXT_bgra     GLeeEnabled(&_GLEE_EXT_bgra)
+#define GLEE_SGIX_async     GLeeEnabled(&_GLEE_SGIX_async)
+#define GLEE_SGIX_async_pixel     GLeeEnabled(&_GLEE_SGIX_async_pixel)
+#define GLEE_SGIX_async_histogram     GLeeEnabled(&_GLEE_SGIX_async_histogram)
+#define GLEE_INTEL_texture_scissor     GLeeEnabled(&_GLEE_INTEL_texture_scissor)
+#define GLEE_INTEL_parallel_arrays     GLeeEnabled(&_GLEE_INTEL_parallel_arrays)
+#define GLEE_HP_occlusion_test     GLeeEnabled(&_GLEE_HP_occlusion_test)
+#define GLEE_EXT_pixel_transform     GLeeEnabled(&_GLEE_EXT_pixel_transform)
+#define GLEE_EXT_pixel_transform_color_table     GLeeEnabled(&_GLEE_EXT_pixel_transform_color_table)
+#define GLEE_EXT_shared_texture_palette     GLeeEnabled(&_GLEE_EXT_shared_texture_palette)
+#define GLEE_EXT_separate_specular_color     GLeeEnabled(&_GLEE_EXT_separate_specular_color)
+#define GLEE_EXT_secondary_color     GLeeEnabled(&_GLEE_EXT_secondary_color)
+#define GLEE_EXT_texture_perturb_normal     GLeeEnabled(&_GLEE_EXT_texture_perturb_normal)
+#define GLEE_EXT_multi_draw_arrays     GLeeEnabled(&_GLEE_EXT_multi_draw_arrays)
+#define GLEE_EXT_fog_coord     GLeeEnabled(&_GLEE_EXT_fog_coord)
+#define GLEE_REND_screen_coordinates     GLeeEnabled(&_GLEE_REND_screen_coordinates)
+#define GLEE_EXT_coordinate_frame     GLeeEnabled(&_GLEE_EXT_coordinate_frame)
+#define GLEE_EXT_texture_env_combine     GLeeEnabled(&_GLEE_EXT_texture_env_combine)
+#define GLEE_APPLE_specular_vector     GLeeEnabled(&_GLEE_APPLE_specular_vector)
+#define GLEE_APPLE_transform_hint     GLeeEnabled(&_GLEE_APPLE_transform_hint)
+#define GLEE_SGIX_fog_scale     GLeeEnabled(&_GLEE_SGIX_fog_scale)
+#define GLEE_SUNX_constant_data     GLeeEnabled(&_GLEE_SUNX_constant_data)
+#define GLEE_SUN_global_alpha     GLeeEnabled(&_GLEE_SUN_global_alpha)
+#define GLEE_SUN_triangle_list     GLeeEnabled(&_GLEE_SUN_triangle_list)
+#define GLEE_SUN_vertex     GLeeEnabled(&_GLEE_SUN_vertex)
+#define GLEE_EXT_blend_func_separate     GLeeEnabled(&_GLEE_EXT_blend_func_separate)
+#define GLEE_INGR_color_clamp     GLeeEnabled(&_GLEE_INGR_color_clamp)
+#define GLEE_INGR_interlace_read     GLeeEnabled(&_GLEE_INGR_interlace_read)
+#define GLEE_EXT_stencil_wrap     GLeeEnabled(&_GLEE_EXT_stencil_wrap)
+#define GLEE_EXT_422_pixels     GLeeEnabled(&_GLEE_EXT_422_pixels)
+#define GLEE_NV_texgen_reflection     GLeeEnabled(&_GLEE_NV_texgen_reflection)
+#define GLEE_EXT_texture_cube_map     GLeeEnabled(&_GLEE_EXT_texture_cube_map)
+#define GLEE_SUN_convolution_border_modes     GLeeEnabled(&_GLEE_SUN_convolution_border_modes)
+#define GLEE_EXT_texture_env_add     GLeeEnabled(&_GLEE_EXT_texture_env_add)
+#define GLEE_EXT_texture_lod_bias     GLeeEnabled(&_GLEE_EXT_texture_lod_bias)
+#define GLEE_EXT_texture_filter_anisotropic     GLeeEnabled(&_GLEE_EXT_texture_filter_anisotropic)
+#define GLEE_EXT_vertex_weighting     GLeeEnabled(&_GLEE_EXT_vertex_weighting)
+#define GLEE_NV_light_max_exponent     GLeeEnabled(&_GLEE_NV_light_max_exponent)
+#define GLEE_NV_vertex_array_range     GLeeEnabled(&_GLEE_NV_vertex_array_range)
+#define GLEE_NV_register_combiners     GLeeEnabled(&_GLEE_NV_register_combiners)
+#define GLEE_NV_fog_distance     GLeeEnabled(&_GLEE_NV_fog_distance)
+#define GLEE_NV_texgen_emboss     GLeeEnabled(&_GLEE_NV_texgen_emboss)
+#define GLEE_NV_blend_square     GLeeEnabled(&_GLEE_NV_blend_square)
+#define GLEE_NV_texture_env_combine4     GLeeEnabled(&_GLEE_NV_texture_env_combine4)
+#define GLEE_MESA_resize_buffers     GLeeEnabled(&_GLEE_MESA_resize_buffers)
+#define GLEE_MESA_window_pos     GLeeEnabled(&_GLEE_MESA_window_pos)
+#define GLEE_EXT_texture_compression_s3tc     GLeeEnabled(&_GLEE_EXT_texture_compression_s3tc)
+#define GLEE_IBM_cull_vertex     GLeeEnabled(&_GLEE_IBM_cull_vertex)
+#define GLEE_IBM_multimode_draw_arrays     GLeeEnabled(&_GLEE_IBM_multimode_draw_arrays)
+#define GLEE_IBM_vertex_array_lists     GLeeEnabled(&_GLEE_IBM_vertex_array_lists)
+#define GLEE_SGIX_subsample     GLeeEnabled(&_GLEE_SGIX_subsample)
+#define GLEE_SGIX_ycrcb_subsample     GLeeEnabled(&_GLEE_SGIX_ycrcb_subsample)
+#define GLEE_SGIX_ycrcba     GLeeEnabled(&_GLEE_SGIX_ycrcba)
+#define GLEE_SGI_depth_pass_instrument     GLeeEnabled(&_GLEE_SGI_depth_pass_instrument)
+#define GLEE_3DFX_texture_compression_FXT1     GLeeEnabled(&_GLEE_3DFX_texture_compression_FXT1)
+#define GLEE_3DFX_multisample     GLeeEnabled(&_GLEE_3DFX_multisample)
+#define GLEE_3DFX_tbuffer     GLeeEnabled(&_GLEE_3DFX_tbuffer)
+#define GLEE_EXT_multisample     GLeeEnabled(&_GLEE_EXT_multisample)
+#define GLEE_SGIX_vertex_preclip     GLeeEnabled(&_GLEE_SGIX_vertex_preclip)
+#define GLEE_SGIX_convolution_accuracy     GLeeEnabled(&_GLEE_SGIX_convolution_accuracy)
+#define GLEE_SGIX_resample     GLeeEnabled(&_GLEE_SGIX_resample)
+#define GLEE_SGIS_point_line_texgen     GLeeEnabled(&_GLEE_SGIS_point_line_texgen)
+#define GLEE_SGIS_texture_color_mask     GLeeEnabled(&_GLEE_SGIS_texture_color_mask)
+#define GLEE_EXT_texture_env_dot3     GLeeEnabled(&_GLEE_EXT_texture_env_dot3)
+#define GLEE_ATI_texture_mirror_once     GLeeEnabled(&_GLEE_ATI_texture_mirror_once)
+#define GLEE_NV_fence     GLeeEnabled(&_GLEE_NV_fence)
+#define GLEE_IBM_texture_mirrored_repeat     GLeeEnabled(&_GLEE_IBM_texture_mirrored_repeat)
+#define GLEE_NV_evaluators     GLeeEnabled(&_GLEE_NV_evaluators)
+#define GLEE_NV_packed_depth_stencil     GLeeEnabled(&_GLEE_NV_packed_depth_stencil)
+#define GLEE_NV_register_combiners2     GLeeEnabled(&_GLEE_NV_register_combiners2)
+#define GLEE_NV_texture_compression_vtc     GLeeEnabled(&_GLEE_NV_texture_compression_vtc)
+#define GLEE_NV_texture_rectangle     GLeeEnabled(&_GLEE_NV_texture_rectangle)
+#define GLEE_NV_texture_shader     GLeeEnabled(&_GLEE_NV_texture_shader)
+#define GLEE_NV_texture_shader2     GLeeEnabled(&_GLEE_NV_texture_shader2)
+#define GLEE_NV_vertex_array_range2     GLeeEnabled(&_GLEE_NV_vertex_array_range2)
+#define GLEE_NV_vertex_program     GLeeEnabled(&_GLEE_NV_vertex_program)
+#define GLEE_SGIX_texture_coordinate_clamp     GLeeEnabled(&_GLEE_SGIX_texture_coordinate_clamp)
+#define GLEE_SGIX_scalebias_hint     GLeeEnabled(&_GLEE_SGIX_scalebias_hint)
+#define GLEE_OML_interlace     GLeeEnabled(&_GLEE_OML_interlace)
+#define GLEE_OML_subsample     GLeeEnabled(&_GLEE_OML_subsample)
+#define GLEE_OML_resample     GLeeEnabled(&_GLEE_OML_resample)
+#define GLEE_NV_copy_depth_to_color     GLeeEnabled(&_GLEE_NV_copy_depth_to_color)
+#define GLEE_ATI_envmap_bumpmap     GLeeEnabled(&_GLEE_ATI_envmap_bumpmap)
+#define GLEE_ATI_fragment_shader     GLeeEnabled(&_GLEE_ATI_fragment_shader)
+#define GLEE_ATI_pn_triangles     GLeeEnabled(&_GLEE_ATI_pn_triangles)
+#define GLEE_ATI_vertex_array_object     GLeeEnabled(&_GLEE_ATI_vertex_array_object)
+#define GLEE_EXT_vertex_shader     GLeeEnabled(&_GLEE_EXT_vertex_shader)
+#define GLEE_ATI_vertex_streams     GLeeEnabled(&_GLEE_ATI_vertex_streams)
+#define GLEE_ATI_element_array     GLeeEnabled(&_GLEE_ATI_element_array)
+#define GLEE_SUN_mesh_array     GLeeEnabled(&_GLEE_SUN_mesh_array)
+#define GLEE_SUN_slice_accum     GLeeEnabled(&_GLEE_SUN_slice_accum)
+#define GLEE_NV_multisample_filter_hint     GLeeEnabled(&_GLEE_NV_multisample_filter_hint)
+#define GLEE_NV_depth_clamp     GLeeEnabled(&_GLEE_NV_depth_clamp)
+#define GLEE_NV_occlusion_query     GLeeEnabled(&_GLEE_NV_occlusion_query)
+#define GLEE_NV_point_sprite     GLeeEnabled(&_GLEE_NV_point_sprite)
+#define GLEE_NV_texture_shader3     GLeeEnabled(&_GLEE_NV_texture_shader3)
+#define GLEE_NV_vertex_program1_1     GLeeEnabled(&_GLEE_NV_vertex_program1_1)
+#define GLEE_EXT_shadow_funcs     GLeeEnabled(&_GLEE_EXT_shadow_funcs)
+#define GLEE_EXT_stencil_two_side     GLeeEnabled(&_GLEE_EXT_stencil_two_side)
+#define GLEE_ATI_text_fragment_shader     GLeeEnabled(&_GLEE_ATI_text_fragment_shader)
+#define GLEE_APPLE_client_storage     GLeeEnabled(&_GLEE_APPLE_client_storage)
+#define GLEE_APPLE_element_array     GLeeEnabled(&_GLEE_APPLE_element_array)
+#define GLEE_APPLE_fence     GLeeEnabled(&_GLEE_APPLE_fence)
+#define GLEE_APPLE_vertex_array_object     GLeeEnabled(&_GLEE_APPLE_vertex_array_object)
+#define GLEE_APPLE_vertex_array_range     GLeeEnabled(&_GLEE_APPLE_vertex_array_range)
+#define GLEE_APPLE_ycbcr_422     GLeeEnabled(&_GLEE_APPLE_ycbcr_422)
+#define GLEE_S3_s3tc     GLeeEnabled(&_GLEE_S3_s3tc)
+#define GLEE_ATI_draw_buffers     GLeeEnabled(&_GLEE_ATI_draw_buffers)
+#define GLEE_ATI_pixel_format_float     GLeeEnabled(&_GLEE_ATI_pixel_format_float)
+#define GLEE_ATI_texture_env_combine3     GLeeEnabled(&_GLEE_ATI_texture_env_combine3)
+#define GLEE_ATI_texture_float     GLeeEnabled(&_GLEE_ATI_texture_float)
+#define GLEE_NV_float_buffer     GLeeEnabled(&_GLEE_NV_float_buffer)
+#define GLEE_NV_fragment_program     GLeeEnabled(&_GLEE_NV_fragment_program)
+#define GLEE_NV_half_float     GLeeEnabled(&_GLEE_NV_half_float)
+#define GLEE_NV_pixel_data_range     GLeeEnabled(&_GLEE_NV_pixel_data_range)
+#define GLEE_NV_primitive_restart     GLeeEnabled(&_GLEE_NV_primitive_restart)
+#define GLEE_NV_texture_expand_normal     GLeeEnabled(&_GLEE_NV_texture_expand_normal)
+#define GLEE_NV_vertex_program2     GLeeEnabled(&_GLEE_NV_vertex_program2)
+#define GLEE_ATI_map_object_buffer     GLeeEnabled(&_GLEE_ATI_map_object_buffer)
+#define GLEE_ATI_separate_stencil     GLeeEnabled(&_GLEE_ATI_separate_stencil)
+#define GLEE_ATI_vertex_attrib_array_object     GLeeEnabled(&_GLEE_ATI_vertex_attrib_array_object)
+#define GLEE_OES_read_format     GLeeEnabled(&_GLEE_OES_read_format)
+#define GLEE_EXT_depth_bounds_test     GLeeEnabled(&_GLEE_EXT_depth_bounds_test)
+#define GLEE_EXT_texture_mirror_clamp     GLeeEnabled(&_GLEE_EXT_texture_mirror_clamp)
+#define GLEE_EXT_blend_equation_separate     GLeeEnabled(&_GLEE_EXT_blend_equation_separate)
+#define GLEE_MESA_pack_invert     GLeeEnabled(&_GLEE_MESA_pack_invert)
+#define GLEE_MESA_ycbcr_texture     GLeeEnabled(&_GLEE_MESA_ycbcr_texture)
+#define GLEE_EXT_pixel_buffer_object     GLeeEnabled(&_GLEE_EXT_pixel_buffer_object)
+#define GLEE_NV_fragment_program_option     GLeeEnabled(&_GLEE_NV_fragment_program_option)
+#define GLEE_NV_fragment_program2     GLeeEnabled(&_GLEE_NV_fragment_program2)
+#define GLEE_NV_vertex_program2_option     GLeeEnabled(&_GLEE_NV_vertex_program2_option)
+#define GLEE_NV_vertex_program3     GLeeEnabled(&_GLEE_NV_vertex_program3)
+#define GLEE_EXT_framebuffer_object     GLeeEnabled(&_GLEE_EXT_framebuffer_object)
+#define GLEE_GREMEDY_string_marker     GLeeEnabled(&_GLEE_GREMEDY_string_marker)
+#define GLEE_EXT_Cg_shader     GLeeEnabled(&_GLEE_EXT_Cg_shader)
+#define GLEE_EXT_timer_query     GLeeEnabled(&_GLEE_EXT_timer_query)
+#define GLEE_EXT_texture_buffer_object     GLeeEnabled(&_GLEE_EXT_texture_buffer_object)
+#define GLEE_EXT_gpu_shader4     GLeeEnabled(&_GLEE_EXT_gpu_shader4)
+#define GLEE_EXT_geometry_shader4     GLeeEnabled(&_GLEE_EXT_geometry_shader4)
+#define GLEE_EXT_bindable_uniform     GLeeEnabled(&_GLEE_EXT_bindable_uniform)
+#define GLEE_EXT_framebuffer_sRGB     GLeeEnabled(&_GLEE_EXT_framebuffer_sRGB)
+#define GLEE_EXT_texture_shared_exponent     GLeeEnabled(&_GLEE_EXT_texture_shared_exponent)
+#define GLEE_EXT_packed_float     GLeeEnabled(&_GLEE_EXT_packed_float)
+#define GLEE_EXT_texture_array     GLeeEnabled(&_GLEE_EXT_texture_array)
+#define GLEE_EXT_texture_integer     GLeeEnabled(&_GLEE_EXT_texture_integer)
+#define GLEE_NV_depth_buffer_float     GLeeEnabled(&_GLEE_NV_depth_buffer_float)
+#define GLEE_EXT_texture_compression_latc     GLeeEnabled(&_GLEE_EXT_texture_compression_latc)
+#define GLEE_NV_transform_feedback     GLeeEnabled(&_GLEE_NV_transform_feedback)
+#define GLEE_NV_geometry_program4     GLeeEnabled(&_GLEE_NV_geometry_program4)
+#define GLEE_NV_gpu_program4     GLeeEnabled(&_GLEE_NV_gpu_program4)
+#define GLEE_NV_framebuffer_multisample_coverage     GLeeEnabled(&_GLEE_NV_framebuffer_multisample_coverage)
+#define GLEE_EXT_framebuffer_multisample     GLeeEnabled(&_GLEE_EXT_framebuffer_multisample)
+#define GLEE_EXT_framebuffer_blit     GLeeEnabled(&_GLEE_EXT_framebuffer_blit)
+#define GLEE_EXT_texture_compression_rgtc     GLeeEnabled(&_GLEE_EXT_texture_compression_rgtc)
+#define GLEE_EXT_color_matrix     GLeeEnabled(&_GLEE_EXT_color_matrix)
+#define GLEE_SGIX_texture_select     GLeeEnabled(&_GLEE_SGIX_texture_select)
+#define GLEE_INGR_blend_func_separate     GLeeEnabled(&_GLEE_INGR_blend_func_separate)
+#define GLEE_SGIX_depth_pass_instrument     GLeeEnabled(&_GLEE_SGIX_depth_pass_instrument)
+#define GLEE_SGIX_igloo_interface     GLeeEnabled(&_GLEE_SGIX_igloo_interface)
+#define GLEE_EXT_draw_buffers2     GLeeEnabled(&_GLEE_EXT_draw_buffers2)
+#define GLEE_NV_parameter_buffer_object     GLeeEnabled(&_GLEE_NV_parameter_buffer_object)
+#define GLEE_EXT_draw_instanced     GLeeEnabled(&_GLEE_EXT_draw_instanced)
+#define GLEE_EXT_fragment_lighting     GLeeEnabled(&_GLEE_EXT_fragment_lighting)
+#define GLEE_EXT_packed_depth_stencil     GLeeEnabled(&_GLEE_EXT_packed_depth_stencil)
+#define GLEE_EXT_scene_marker     GLeeEnabled(&_GLEE_EXT_scene_marker)
+#define GLEE_EXT_stencil_clear_tag     GLeeEnabled(&_GLEE_EXT_stencil_clear_tag)
+#define GLEE_EXT_texture_compression_dxt1     GLeeEnabled(&_GLEE_EXT_texture_compression_dxt1)
+#define GLEE_EXT_texture_env     GLeeEnabled(&_GLEE_EXT_texture_env)
+#define GLEE_EXT_texture_sRGB     GLeeEnabled(&_GLEE_EXT_texture_sRGB)
+#define GLEE_IBM_static_data     GLeeEnabled(&_GLEE_IBM_static_data)
+#define GLEE_MESAX_texture_stack     GLeeEnabled(&_GLEE_MESAX_texture_stack)
+#define GLEE_OES_byte_coordinates     GLeeEnabled(&_GLEE_OES_byte_coordinates)
+#define GLEE_OES_compressed_paletted_texture     GLeeEnabled(&_GLEE_OES_compressed_paletted_texture)
+#define GLEE_OES_single_precision     GLeeEnabled(&_GLEE_OES_single_precision)
+#define GLEE_SGIX_pixel_texture_bits     GLeeEnabled(&_GLEE_SGIX_pixel_texture_bits)
+#define GLEE_SGIX_texture_range     GLeeEnabled(&_GLEE_SGIX_texture_range)
+
+
+/*****************************************************************
+ * Additional types needed for extensions
+ *****************************************************************/
+
+/* Used for GLSL shader text */
+#ifndef GL_VERSION_2_0
+	typedef char GLchar; 
+#endif
+
+#include <stddef.h>
+
+#ifndef GL_VERSION_1_5
+	typedef ptrdiff_t GLintptr;
+	typedef ptrdiff_t GLsizeiptr;
+#endif
+
+#ifndef GL_NV_half_float
+	typedef unsigned short GLhalfNV;
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+	typedef ptrdiff_t GLintptrARB;
+	typedef ptrdiff_t GLsizeiptrARB;
+#endif
+
+#ifndef GL_ARB_shader_objects
+	typedef int GLhandleARB;
+	typedef char GLcharARB;
+#endif
+
+#ifndef GL_EXT_timer_query
+	typedef signed long long GLint64EXT;
+	typedef unsigned long long GLuint64EXT;
+#endif
+
+/* Platform-specific */
+
+#ifdef WIN32    
+
+	/* WGL */
+
+	#ifndef WGL_ARB_pbuffer
+	DECLARE_HANDLE(HPBUFFERARB);
+	#endif
+	#ifndef WGL_EXT_pbuffer
+	DECLARE_HANDLE(HPBUFFEREXT);
+	#endif
+
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+
+	/* Mac OS X */
+
+#else          
+
+	/* GLX */
+
+	typedef void (*__GLXextFuncPtr)(void);
+
+	#ifndef GLX_ARB_get_proc_address 
+	#define GLX_ARB_get_proc_address 1
+	extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
+	extern void ( * glXGetProcAddressARB (const GLubyte *procName))(void);
+	typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
+	#endif
+
+	#ifndef GLX_SGIX_fbconfig
+	typedef XID GLXFBConfigIDSGIX;
+	typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+	#endif
+
+	#ifndef GLX_SGIX_pbuffer
+	typedef XID GLXPbufferSGIX;
+	typedef struct {
+		int type;
+		unsigned long serial;
+		Bool send_event;
+		Display *display;
+		GLXDrawable drawable;
+		int event_type;		  
+		int draw_type;		  
+		unsigned int mask;	  
+		int x, y;
+		int width, height;
+		int count;
+	} GLXBufferClobberEventSGIX;
+	#endif
+
+	#ifndef GLX_SGIX_hyperpipe
+		#define _GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
+		typedef struct 
+		{
+			char  pipeName[_GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+			int  networkId;
+		} GLXHyperpipeNetworkSGIX;
+
+		typedef struct 
+		{
+			char pipeName[_GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+			int channel;
+			unsigned int participationType;
+			int timeSlice;
+		} GLXHyperpipeConfigSGIX;
+
+		typedef struct 
+		{
+			char pipeName[_GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+			int srcXOrigin;
+			int srcYOrigin;
+			int srcWidth;
+			int srcHeight;
+			int destXOrigin;
+			int destYOrigin;
+			int destWidth;
+			int destHeight;
+		} GLXPipeRect;
+
+		typedef struct 
+		{
+			char pipeName[_GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+			int XOrigin; 
+			int YOrigin;
+			int maxHeight;
+			int maxWidth;
+		} GLXPipeRectLimits;
+	#endif 
+#endif /* end platform specific */
+
+
+
+/* GL_VERSION_1_2 */
+
+#ifndef GL_VERSION_1_2
+#define GL_VERSION_1_2 1
+#define __GLEE_GL_VERSION_1_2 1
+/* Constants */
+#define GL_UNSIGNED_BYTE_3_3_2                             0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4                          0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1                          0x8034
+#define GL_UNSIGNED_INT_8_8_8_8                            0x8035
+#define GL_UNSIGNED_INT_10_10_10_2                         0x8036
+#define GL_RESCALE_NORMAL                                  0x803A
+#define GL_TEXTURE_BINDING_3D                              0x806A
+#define GL_PACK_SKIP_IMAGES                                0x806B
+#define GL_PACK_IMAGE_HEIGHT                               0x806C
+#define GL_UNPACK_SKIP_IMAGES                              0x806D
+#define GL_UNPACK_IMAGE_HEIGHT                             0x806E
+#define GL_TEXTURE_3D                                      0x806F
+#define GL_PROXY_TEXTURE_3D                                0x8070
+#define GL_TEXTURE_DEPTH                                   0x8071
+#define GL_TEXTURE_WRAP_R                                  0x8072
+#define GL_MAX_3D_TEXTURE_SIZE                             0x8073
+#define GL_UNSIGNED_BYTE_2_3_3_REV                         0x8362
+#define GL_UNSIGNED_SHORT_5_6_5                            0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV                        0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV                      0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV                      0x8366
+#define GL_UNSIGNED_INT_8_8_8_8_REV                        0x8367
+#define GL_UNSIGNED_INT_2_10_10_10_REV                     0x8368
+#define GL_BGR                                             0x80E0
+#define GL_BGRA                                            0x80E1
+#define GL_MAX_ELEMENTS_VERTICES                           0x80E8
+#define GL_MAX_ELEMENTS_INDICES                            0x80E9
+#define GL_CLAMP_TO_EDGE                                   0x812F
+#define GL_TEXTURE_MIN_LOD                                 0x813A
+#define GL_TEXTURE_MAX_LOD                                 0x813B
+#define GL_TEXTURE_BASE_LEVEL                              0x813C
+#define GL_TEXTURE_MAX_LEVEL                               0x813D
+#define GL_LIGHT_MODEL_COLOR_CONTROL                       0x81F8
+#define GL_SINGLE_COLOR                                    0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR                         0x81FA
+#define GL_SMOOTH_POINT_SIZE_RANGE                         0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY                   0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE                         0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY                   0x0B23
+#define GL_ALIASED_POINT_SIZE_RANGE                        0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE                        0x846E
+typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices);
+typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid * table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid * image);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLEE_EXTERN PFNGLBLENDCOLORPROC pglBlendColor;
+GLEE_EXTERN PFNGLBLENDEQUATIONPROC pglBlendEquation;
+GLEE_EXTERN PFNGLDRAWRANGEELEMENTSPROC pglDrawRangeElements;
+GLEE_EXTERN PFNGLCOLORTABLEPROC pglColorTable;
+GLEE_EXTERN PFNGLCOLORTABLEPARAMETERFVPROC pglColorTableParameterfv;
+GLEE_EXTERN PFNGLCOLORTABLEPARAMETERIVPROC pglColorTableParameteriv;
+GLEE_EXTERN PFNGLCOPYCOLORTABLEPROC pglCopyColorTable;
+GLEE_EXTERN PFNGLGETCOLORTABLEPROC pglGetColorTable;
+GLEE_EXTERN PFNGLGETCOLORTABLEPARAMETERFVPROC pglGetColorTableParameterfv;
+GLEE_EXTERN PFNGLGETCOLORTABLEPARAMETERIVPROC pglGetColorTableParameteriv;
+GLEE_EXTERN PFNGLCOLORSUBTABLEPROC pglColorSubTable;
+GLEE_EXTERN PFNGLCOPYCOLORSUBTABLEPROC pglCopyColorSubTable;
+GLEE_EXTERN PFNGLCONVOLUTIONFILTER1DPROC pglConvolutionFilter1D;
+GLEE_EXTERN PFNGLCONVOLUTIONFILTER2DPROC pglConvolutionFilter2D;
+GLEE_EXTERN PFNGLCONVOLUTIONPARAMETERFPROC pglConvolutionParameterf;
+GLEE_EXTERN PFNGLCONVOLUTIONPARAMETERFVPROC pglConvolutionParameterfv;
+GLEE_EXTERN PFNGLCONVOLUTIONPARAMETERIPROC pglConvolutionParameteri;
+GLEE_EXTERN PFNGLCONVOLUTIONPARAMETERIVPROC pglConvolutionParameteriv;
+GLEE_EXTERN PFNGLCOPYCONVOLUTIONFILTER1DPROC pglCopyConvolutionFilter1D;
+GLEE_EXTERN PFNGLCOPYCONVOLUTIONFILTER2DPROC pglCopyConvolutionFilter2D;
+GLEE_EXTERN PFNGLGETCONVOLUTIONFILTERPROC pglGetConvolutionFilter;
+GLEE_EXTERN PFNGLGETCONVOLUTIONPARAMETERFVPROC pglGetConvolutionParameterfv;
+GLEE_EXTERN PFNGLGETCONVOLUTIONPARAMETERIVPROC pglGetConvolutionParameteriv;
+GLEE_EXTERN PFNGLGETSEPARABLEFILTERPROC pglGetSeparableFilter;
+GLEE_EXTERN PFNGLSEPARABLEFILTER2DPROC pglSeparableFilter2D;
+GLEE_EXTERN PFNGLGETHISTOGRAMPROC pglGetHistogram;
+GLEE_EXTERN PFNGLGETHISTOGRAMPARAMETERFVPROC pglGetHistogramParameterfv;
+GLEE_EXTERN PFNGLGETHISTOGRAMPARAMETERIVPROC pglGetHistogramParameteriv;
+GLEE_EXTERN PFNGLGETMINMAXPROC pglGetMinmax;
+GLEE_EXTERN PFNGLGETMINMAXPARAMETERFVPROC pglGetMinmaxParameterfv;
+GLEE_EXTERN PFNGLGETMINMAXPARAMETERIVPROC pglGetMinmaxParameteriv;
+GLEE_EXTERN PFNGLHISTOGRAMPROC pglHistogram;
+GLEE_EXTERN PFNGLMINMAXPROC pglMinmax;
+GLEE_EXTERN PFNGLRESETHISTOGRAMPROC pglResetHistogram;
+GLEE_EXTERN PFNGLRESETMINMAXPROC pglResetMinmax;
+GLEE_EXTERN PFNGLTEXIMAGE3DPROC pglTexImage3D;
+GLEE_EXTERN PFNGLTEXSUBIMAGE3DPROC pglTexSubImage3D;
+GLEE_EXTERN PFNGLCOPYTEXSUBIMAGE3DPROC pglCopyTexSubImage3D;
+#define glBlendColor pglBlendColor
+#define glBlendEquation pglBlendEquation
+#define glDrawRangeElements pglDrawRangeElements
+#define glColorTable pglColorTable
+#define glColorTableParameterfv pglColorTableParameterfv
+#define glColorTableParameteriv pglColorTableParameteriv
+#define glCopyColorTable pglCopyColorTable
+#define glGetColorTable pglGetColorTable
+#define glGetColorTableParameterfv pglGetColorTableParameterfv
+#define glGetColorTableParameteriv pglGetColorTableParameteriv
+#define glColorSubTable pglColorSubTable
+#define glCopyColorSubTable pglCopyColorSubTable
+#define glConvolutionFilter1D pglConvolutionFilter1D
+#define glConvolutionFilter2D pglConvolutionFilter2D
+#define glConvolutionParameterf pglConvolutionParameterf
+#define glConvolutionParameterfv pglConvolutionParameterfv
+#define glConvolutionParameteri pglConvolutionParameteri
+#define glConvolutionParameteriv pglConvolutionParameteriv
+#define glCopyConvolutionFilter1D pglCopyConvolutionFilter1D
+#define glCopyConvolutionFilter2D pglCopyConvolutionFilter2D
+#define glGetConvolutionFilter pglGetConvolutionFilter
+#define glGetConvolutionParameterfv pglGetConvolutionParameterfv
+#define glGetConvolutionParameteriv pglGetConvolutionParameteriv
+#define glGetSeparableFilter pglGetSeparableFilter
+#define glSeparableFilter2D pglSeparableFilter2D
+#define glGetHistogram pglGetHistogram
+#define glGetHistogramParameterfv pglGetHistogramParameterfv
+#define glGetHistogramParameteriv pglGetHistogramParameteriv
+#define glGetMinmax pglGetMinmax
+#define glGetMinmaxParameterfv pglGetMinmaxParameterfv
+#define glGetMinmaxParameteriv pglGetMinmaxParameteriv
+#define glHistogram pglHistogram
+#define glMinmax pglMinmax
+#define glResetHistogram pglResetHistogram
+#define glResetMinmax pglResetMinmax
+#define glTexImage3D pglTexImage3D
+#define glTexSubImage3D pglTexSubImage3D
+#define glCopyTexSubImage3D pglCopyTexSubImage3D
+#endif 
+
+/* GL_ARB_imaging */
+
+#ifndef GL_ARB_imaging
+#define GL_ARB_imaging 1
+#define __GLEE_GL_ARB_imaging 1
+/* Constants */
+#define GL_CONSTANT_COLOR                                  0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR                        0x8002
+#define GL_CONSTANT_ALPHA                                  0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA                        0x8004
+#define GL_BLEND_COLOR                                     0x8005
+#define GL_FUNC_ADD                                        0x8006
+#define GL_MIN                                             0x8007
+#define GL_MAX                                             0x8008
+#define GL_BLEND_EQUATION                                  0x8009
+#define GL_FUNC_SUBTRACT                                   0x800A
+#define GL_FUNC_REVERSE_SUBTRACT                           0x800B
+#define GL_CONVOLUTION_1D                                  0x8010
+#define GL_CONVOLUTION_2D                                  0x8011
+#define GL_SEPARABLE_2D                                    0x8012
+#define GL_CONVOLUTION_BORDER_MODE                         0x8013
+#define GL_CONVOLUTION_FILTER_SCALE                        0x8014
+#define GL_CONVOLUTION_FILTER_BIAS                         0x8015
+#define GL_REDUCE                                          0x8016
+#define GL_CONVOLUTION_FORMAT                              0x8017
+#define GL_CONVOLUTION_WIDTH                               0x8018
+#define GL_CONVOLUTION_HEIGHT                              0x8019
+#define GL_MAX_CONVOLUTION_WIDTH                           0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT                          0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE                      0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE                    0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE                     0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE                    0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS                       0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS                     0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS                      0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS                     0x8023
+#define GL_HISTOGRAM                                       0x8024
+#define GL_PROXY_HISTOGRAM                                 0x8025
+#define GL_HISTOGRAM_WIDTH                                 0x8026
+#define GL_HISTOGRAM_FORMAT                                0x8027
+#define GL_HISTOGRAM_RED_SIZE                              0x8028
+#define GL_HISTOGRAM_GREEN_SIZE                            0x8029
+#define GL_HISTOGRAM_BLUE_SIZE                             0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE                            0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE                        0x802C
+#define GL_HISTOGRAM_SINK                                  0x802D
+#define GL_MINMAX                                          0x802E
+#define GL_MINMAX_FORMAT                                   0x802F
+#define GL_MINMAX_SINK                                     0x8030
+#define GL_TABLE_TOO_LARGE                                 0x8031
+#define GL_COLOR_MATRIX                                    0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH                        0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH                    0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE                     0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE                   0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE                    0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE                   0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS                      0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS                    0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS                     0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS                    0x80BB
+#define GL_COLOR_TABLE                                     0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE                    0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE                   0x80D2
+#define GL_PROXY_COLOR_TABLE                               0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE              0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE             0x80D5
+#define GL_COLOR_TABLE_SCALE                               0x80D6
+#define GL_COLOR_TABLE_BIAS                                0x80D7
+#define GL_COLOR_TABLE_FORMAT                              0x80D8
+#define GL_COLOR_TABLE_WIDTH                               0x80D9
+#define GL_COLOR_TABLE_RED_SIZE                            0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE                          0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE                           0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE                          0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE                      0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE                      0x80DF
+#define GL_CONSTANT_BORDER                                 0x8151
+#define GL_REPLICATE_BORDER                                0x8153
+#define GL_CONVOLUTION_BORDER_COLOR                        0x8154
+#endif 
+
+/* GL_VERSION_1_3 */
+
+#ifndef GL_VERSION_1_3
+#define GL_VERSION_1_3 1
+#define __GLEE_GL_VERSION_1_3 1
+/* Constants */
+#define GL_TEXTURE0                                        0x84C0
+#define GL_TEXTURE1                                        0x84C1
+#define GL_TEXTURE2                                        0x84C2
+#define GL_TEXTURE3                                        0x84C3
+#define GL_TEXTURE4                                        0x84C4
+#define GL_TEXTURE5                                        0x84C5
+#define GL_TEXTURE6                                        0x84C6
+#define GL_TEXTURE7                                        0x84C7
+#define GL_TEXTURE8                                        0x84C8
+#define GL_TEXTURE9                                        0x84C9
+#define GL_TEXTURE10                                       0x84CA
+#define GL_TEXTURE11                                       0x84CB
+#define GL_TEXTURE12                                       0x84CC
+#define GL_TEXTURE13                                       0x84CD
+#define GL_TEXTURE14                                       0x84CE
+#define GL_TEXTURE15                                       0x84CF
+#define GL_TEXTURE16                                       0x84D0
+#define GL_TEXTURE17                                       0x84D1
+#define GL_TEXTURE18                                       0x84D2
+#define GL_TEXTURE19                                       0x84D3
+#define GL_TEXTURE20                                       0x84D4
+#define GL_TEXTURE21                                       0x84D5
+#define GL_TEXTURE22                                       0x84D6
+#define GL_TEXTURE23                                       0x84D7
+#define GL_TEXTURE24                                       0x84D8
+#define GL_TEXTURE25                                       0x84D9
+#define GL_TEXTURE26                                       0x84DA
+#define GL_TEXTURE27                                       0x84DB
+#define GL_TEXTURE28                                       0x84DC
+#define GL_TEXTURE29                                       0x84DD
+#define GL_TEXTURE30                                       0x84DE
+#define GL_TEXTURE31                                       0x84DF
+#define GL_ACTIVE_TEXTURE                                  0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE                           0x84E1
+#define GL_MAX_TEXTURE_UNITS                               0x84E2
+#define GL_TRANSPOSE_MODELVIEW_MATRIX                      0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX                     0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX                        0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX                          0x84E6
+#define GL_MULTISAMPLE                                     0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE                        0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE                             0x809F
+#define GL_SAMPLE_COVERAGE                                 0x80A0
+#define GL_SAMPLE_BUFFERS                                  0x80A8
+#define GL_SAMPLES                                         0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE                           0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT                          0x80AB
+#define GL_MULTISAMPLE_BIT                                 0x20000000
+#define GL_NORMAL_MAP                                      0x8511
+#define GL_REFLECTION_MAP                                  0x8512
+#define GL_TEXTURE_CUBE_MAP                                0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP                        0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X                     0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X                     0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y                     0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y                     0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z                     0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z                     0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP                          0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE                       0x851C
+#define GL_COMPRESSED_ALPHA                                0x84E9
+#define GL_COMPRESSED_LUMINANCE                            0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA                      0x84EB
+#define GL_COMPRESSED_INTENSITY                            0x84EC
+#define GL_COMPRESSED_RGB                                  0x84ED
+#define GL_COMPRESSED_RGBA                                 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT                        0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE                   0x86A0
+#define GL_TEXTURE_COMPRESSED                              0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS                  0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS                      0x86A3
+#define GL_CLAMP_TO_BORDER                                 0x812D
+#define GL_COMBINE                                         0x8570
+#define GL_COMBINE_RGB                                     0x8571
+#define GL_COMBINE_ALPHA                                   0x8572
+#define GL_SOURCE0_RGB                                     0x8580
+#define GL_SOURCE1_RGB                                     0x8581
+#define GL_SOURCE2_RGB                                     0x8582
+#define GL_SOURCE0_ALPHA                                   0x8588
+#define GL_SOURCE1_ALPHA                                   0x8589
+#define GL_SOURCE2_ALPHA                                   0x858A
+#define GL_OPERAND0_RGB                                    0x8590
+#define GL_OPERAND1_RGB                                    0x8591
+#define GL_OPERAND2_RGB                                    0x8592
+#define GL_OPERAND0_ALPHA                                  0x8598
+#define GL_OPERAND1_ALPHA                                  0x8599
+#define GL_OPERAND2_ALPHA                                  0x859A
+#define GL_RGB_SCALE                                       0x8573
+#define GL_ADD_SIGNED                                      0x8574
+#define GL_INTERPOLATE                                     0x8575
+#define GL_SUBTRACT                                        0x84E7
+#define GL_CONSTANT                                        0x8576
+#define GL_PRIMARY_COLOR                                   0x8577
+#define GL_PREVIOUS                                        0x8578
+#define GL_DOT3_RGB                                        0x86AE
+#define GL_DOT3_RGBA                                       0x86AF
+typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort * v);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat * m);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble * m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat * m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble * m);
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid * img);
+GLEE_EXTERN PFNGLACTIVETEXTUREPROC pglActiveTexture;
+GLEE_EXTERN PFNGLCLIENTACTIVETEXTUREPROC pglClientActiveTexture;
+GLEE_EXTERN PFNGLMULTITEXCOORD1DPROC pglMultiTexCoord1d;
+GLEE_EXTERN PFNGLMULTITEXCOORD1DVPROC pglMultiTexCoord1dv;
+GLEE_EXTERN PFNGLMULTITEXCOORD1FPROC pglMultiTexCoord1f;
+GLEE_EXTERN PFNGLMULTITEXCOORD1FVPROC pglMultiTexCoord1fv;
+GLEE_EXTERN PFNGLMULTITEXCOORD1IPROC pglMultiTexCoord1i;
+GLEE_EXTERN PFNGLMULTITEXCOORD1IVPROC pglMultiTexCoord1iv;
+GLEE_EXTERN PFNGLMULTITEXCOORD1SPROC pglMultiTexCoord1s;
+GLEE_EXTERN PFNGLMULTITEXCOORD1SVPROC pglMultiTexCoord1sv;
+GLEE_EXTERN PFNGLMULTITEXCOORD2DPROC pglMultiTexCoord2d;
+GLEE_EXTERN PFNGLMULTITEXCOORD2DVPROC pglMultiTexCoord2dv;
+GLEE_EXTERN PFNGLMULTITEXCOORD2FPROC pglMultiTexCoord2f;
+GLEE_EXTERN PFNGLMULTITEXCOORD2FVPROC pglMultiTexCoord2fv;
+GLEE_EXTERN PFNGLMULTITEXCOORD2IPROC pglMultiTexCoord2i;
+GLEE_EXTERN PFNGLMULTITEXCOORD2IVPROC pglMultiTexCoord2iv;
+GLEE_EXTERN PFNGLMULTITEXCOORD2SPROC pglMultiTexCoord2s;
+GLEE_EXTERN PFNGLMULTITEXCOORD2SVPROC pglMultiTexCoord2sv;
+GLEE_EXTERN PFNGLMULTITEXCOORD3DPROC pglMultiTexCoord3d;
+GLEE_EXTERN PFNGLMULTITEXCOORD3DVPROC pglMultiTexCoord3dv;
+GLEE_EXTERN PFNGLMULTITEXCOORD3FPROC pglMultiTexCoord3f;
+GLEE_EXTERN PFNGLMULTITEXCOORD3FVPROC pglMultiTexCoord3fv;
+GLEE_EXTERN PFNGLMULTITEXCOORD3IPROC pglMultiTexCoord3i;
+GLEE_EXTERN PFNGLMULTITEXCOORD3IVPROC pglMultiTexCoord3iv;
+GLEE_EXTERN PFNGLMULTITEXCOORD3SPROC pglMultiTexCoord3s;
+GLEE_EXTERN PFNGLMULTITEXCOORD3SVPROC pglMultiTexCoord3sv;
+GLEE_EXTERN PFNGLMULTITEXCOORD4DPROC pglMultiTexCoord4d;
+GLEE_EXTERN PFNGLMULTITEXCOORD4DVPROC pglMultiTexCoord4dv;
+GLEE_EXTERN PFNGLMULTITEXCOORD4FPROC pglMultiTexCoord4f;
+GLEE_EXTERN PFNGLMULTITEXCOORD4FVPROC pglMultiTexCoord4fv;
+GLEE_EXTERN PFNGLMULTITEXCOORD4IPROC pglMultiTexCoord4i;
+GLEE_EXTERN PFNGLMULTITEXCOORD4IVPROC pglMultiTexCoord4iv;
+GLEE_EXTERN PFNGLMULTITEXCOORD4SPROC pglMultiTexCoord4s;
+GLEE_EXTERN PFNGLMULTITEXCOORD4SVPROC pglMultiTexCoord4sv;
+GLEE_EXTERN PFNGLLOADTRANSPOSEMATRIXFPROC pglLoadTransposeMatrixf;
+GLEE_EXTERN PFNGLLOADTRANSPOSEMATRIXDPROC pglLoadTransposeMatrixd;
+GLEE_EXTERN PFNGLMULTTRANSPOSEMATRIXFPROC pglMultTransposeMatrixf;
+GLEE_EXTERN PFNGLMULTTRANSPOSEMATRIXDPROC pglMultTransposeMatrixd;
+GLEE_EXTERN PFNGLSAMPLECOVERAGEPROC pglSampleCoverage;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXIMAGE3DPROC pglCompressedTexImage3D;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXIMAGE2DPROC pglCompressedTexImage2D;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXIMAGE1DPROC pglCompressedTexImage1D;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC pglCompressedTexSubImage3D;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC pglCompressedTexSubImage2D;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC pglCompressedTexSubImage1D;
+GLEE_EXTERN PFNGLGETCOMPRESSEDTEXIMAGEPROC pglGetCompressedTexImage;
+#define glActiveTexture pglActiveTexture
+#define glClientActiveTexture pglClientActiveTexture
+#define glMultiTexCoord1d pglMultiTexCoord1d
+#define glMultiTexCoord1dv pglMultiTexCoord1dv
+#define glMultiTexCoord1f pglMultiTexCoord1f
+#define glMultiTexCoord1fv pglMultiTexCoord1fv
+#define glMultiTexCoord1i pglMultiTexCoord1i
+#define glMultiTexCoord1iv pglMultiTexCoord1iv
+#define glMultiTexCoord1s pglMultiTexCoord1s
+#define glMultiTexCoord1sv pglMultiTexCoord1sv
+#define glMultiTexCoord2d pglMultiTexCoord2d
+#define glMultiTexCoord2dv pglMultiTexCoord2dv
+#define glMultiTexCoord2f pglMultiTexCoord2f
+#define glMultiTexCoord2fv pglMultiTexCoord2fv
+#define glMultiTexCoord2i pglMultiTexCoord2i
+#define glMultiTexCoord2iv pglMultiTexCoord2iv
+#define glMultiTexCoord2s pglMultiTexCoord2s
+#define glMultiTexCoord2sv pglMultiTexCoord2sv
+#define glMultiTexCoord3d pglMultiTexCoord3d
+#define glMultiTexCoord3dv pglMultiTexCoord3dv
+#define glMultiTexCoord3f pglMultiTexCoord3f
+#define glMultiTexCoord3fv pglMultiTexCoord3fv
+#define glMultiTexCoord3i pglMultiTexCoord3i
+#define glMultiTexCoord3iv pglMultiTexCoord3iv
+#define glMultiTexCoord3s pglMultiTexCoord3s
+#define glMultiTexCoord3sv pglMultiTexCoord3sv
+#define glMultiTexCoord4d pglMultiTexCoord4d
+#define glMultiTexCoord4dv pglMultiTexCoord4dv
+#define glMultiTexCoord4f pglMultiTexCoord4f
+#define glMultiTexCoord4fv pglMultiTexCoord4fv
+#define glMultiTexCoord4i pglMultiTexCoord4i
+#define glMultiTexCoord4iv pglMultiTexCoord4iv
+#define glMultiTexCoord4s pglMultiTexCoord4s
+#define glMultiTexCoord4sv pglMultiTexCoord4sv
+#define glLoadTransposeMatrixf pglLoadTransposeMatrixf
+#define glLoadTransposeMatrixd pglLoadTransposeMatrixd
+#define glMultTransposeMatrixf pglMultTransposeMatrixf
+#define glMultTransposeMatrixd pglMultTransposeMatrixd
+#define glSampleCoverage pglSampleCoverage
+#define glCompressedTexImage3D pglCompressedTexImage3D
+#define glCompressedTexImage2D pglCompressedTexImage2D
+#define glCompressedTexImage1D pglCompressedTexImage1D
+#define glCompressedTexSubImage3D pglCompressedTexSubImage3D
+#define glCompressedTexSubImage2D pglCompressedTexSubImage2D
+#define glCompressedTexSubImage1D pglCompressedTexSubImage1D
+#define glGetCompressedTexImage pglGetCompressedTexImage
+#endif 
+
+/* GL_VERSION_1_4 */
+
+#ifndef GL_VERSION_1_4
+#define GL_VERSION_1_4 1
+#define __GLEE_GL_VERSION_1_4 1
+/* Constants */
+#define GL_BLEND_DST_RGB                                   0x80C8
+#define GL_BLEND_SRC_RGB                                   0x80C9
+#define GL_BLEND_DST_ALPHA                                 0x80CA
+#define GL_BLEND_SRC_ALPHA                                 0x80CB
+#define GL_POINT_SIZE_MIN                                  0x8126
+#define GL_POINT_SIZE_MAX                                  0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE                       0x8128
+#define GL_POINT_DISTANCE_ATTENUATION                      0x8129
+#define GL_GENERATE_MIPMAP                                 0x8191
+#define GL_GENERATE_MIPMAP_HINT                            0x8192
+#define GL_DEPTH_COMPONENT16                               0x81A5
+#define GL_DEPTH_COMPONENT24                               0x81A6
+#define GL_DEPTH_COMPONENT32                               0x81A7
+#define GL_MIRRORED_REPEAT                                 0x8370
+#define GL_FOG_COORDINATE_SOURCE                           0x8450
+#define GL_FOG_COORDINATE                                  0x8451
+#define GL_FRAGMENT_DEPTH                                  0x8452
+#define GL_CURRENT_FOG_COORDINATE                          0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE                       0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE                     0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER                    0x8456
+#define GL_FOG_COORDINATE_ARRAY                            0x8457
+#define GL_COLOR_SUM                                       0x8458
+#define GL_CURRENT_SECONDARY_COLOR                         0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE                      0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE                      0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE                    0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER                   0x845D
+#define GL_SECONDARY_COLOR_ARRAY                           0x845E
+#define GL_MAX_TEXTURE_LOD_BIAS                            0x84FD
+#define GL_TEXTURE_FILTER_CONTROL                          0x8500
+#define GL_TEXTURE_LOD_BIAS                                0x8501
+#define GL_INCR_WRAP                                       0x8507
+#define GL_DECR_WRAP                                       0x8508
+#define GL_TEXTURE_DEPTH_SIZE                              0x884A
+#define GL_DEPTH_TEXTURE_MODE                              0x884B
+#define GL_TEXTURE_COMPARE_MODE                            0x884C
+#define GL_TEXTURE_COMPARE_FUNC                            0x884D
+#define GL_COMPARE_R_TO_TEXTURE                            0x884E
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
+typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat * coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble * coord);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint * first, GLsizei * count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei * count, GLenum type, const GLvoid* * indices, GLsizei primcount);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort * v);
+GLEE_EXTERN PFNGLBLENDFUNCSEPARATEPROC pglBlendFuncSeparate;
+GLEE_EXTERN PFNGLFOGCOORDFPROC pglFogCoordf;
+GLEE_EXTERN PFNGLFOGCOORDFVPROC pglFogCoordfv;
+GLEE_EXTERN PFNGLFOGCOORDDPROC pglFogCoordd;
+GLEE_EXTERN PFNGLFOGCOORDDVPROC pglFogCoorddv;
+GLEE_EXTERN PFNGLFOGCOORDPOINTERPROC pglFogCoordPointer;
+GLEE_EXTERN PFNGLMULTIDRAWARRAYSPROC pglMultiDrawArrays;
+GLEE_EXTERN PFNGLMULTIDRAWELEMENTSPROC pglMultiDrawElements;
+GLEE_EXTERN PFNGLPOINTPARAMETERFPROC pglPointParameterf;
+GLEE_EXTERN PFNGLPOINTPARAMETERFVPROC pglPointParameterfv;
+GLEE_EXTERN PFNGLPOINTPARAMETERIPROC pglPointParameteri;
+GLEE_EXTERN PFNGLPOINTPARAMETERIVPROC pglPointParameteriv;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3BPROC pglSecondaryColor3b;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3BVPROC pglSecondaryColor3bv;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3DPROC pglSecondaryColor3d;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3DVPROC pglSecondaryColor3dv;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3FPROC pglSecondaryColor3f;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3FVPROC pglSecondaryColor3fv;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3IPROC pglSecondaryColor3i;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3IVPROC pglSecondaryColor3iv;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3SPROC pglSecondaryColor3s;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3SVPROC pglSecondaryColor3sv;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3UBPROC pglSecondaryColor3ub;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3UBVPROC pglSecondaryColor3ubv;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3UIPROC pglSecondaryColor3ui;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3UIVPROC pglSecondaryColor3uiv;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3USPROC pglSecondaryColor3us;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3USVPROC pglSecondaryColor3usv;
+GLEE_EXTERN PFNGLSECONDARYCOLORPOINTERPROC pglSecondaryColorPointer;
+GLEE_EXTERN PFNGLWINDOWPOS2DPROC pglWindowPos2d;
+GLEE_EXTERN PFNGLWINDOWPOS2DVPROC pglWindowPos2dv;
+GLEE_EXTERN PFNGLWINDOWPOS2FPROC pglWindowPos2f;
+GLEE_EXTERN PFNGLWINDOWPOS2FVPROC pglWindowPos2fv;
+GLEE_EXTERN PFNGLWINDOWPOS2IPROC pglWindowPos2i;
+GLEE_EXTERN PFNGLWINDOWPOS2IVPROC pglWindowPos2iv;
+GLEE_EXTERN PFNGLWINDOWPOS2SPROC pglWindowPos2s;
+GLEE_EXTERN PFNGLWINDOWPOS2SVPROC pglWindowPos2sv;
+GLEE_EXTERN PFNGLWINDOWPOS3DPROC pglWindowPos3d;
+GLEE_EXTERN PFNGLWINDOWPOS3DVPROC pglWindowPos3dv;
+GLEE_EXTERN PFNGLWINDOWPOS3FPROC pglWindowPos3f;
+GLEE_EXTERN PFNGLWINDOWPOS3FVPROC pglWindowPos3fv;
+GLEE_EXTERN PFNGLWINDOWPOS3IPROC pglWindowPos3i;
+GLEE_EXTERN PFNGLWINDOWPOS3IVPROC pglWindowPos3iv;
+GLEE_EXTERN PFNGLWINDOWPOS3SPROC pglWindowPos3s;
+GLEE_EXTERN PFNGLWINDOWPOS3SVPROC pglWindowPos3sv;
+#define glBlendFuncSeparate pglBlendFuncSeparate
+#define glFogCoordf pglFogCoordf
+#define glFogCoordfv pglFogCoordfv
+#define glFogCoordd pglFogCoordd
+#define glFogCoorddv pglFogCoorddv
+#define glFogCoordPointer pglFogCoordPointer
+#define glMultiDrawArrays pglMultiDrawArrays
+#define glMultiDrawElements pglMultiDrawElements
+#define glPointParameterf pglPointParameterf
+#define glPointParameterfv pglPointParameterfv
+#define glPointParameteri pglPointParameteri
+#define glPointParameteriv pglPointParameteriv
+#define glSecondaryColor3b pglSecondaryColor3b
+#define glSecondaryColor3bv pglSecondaryColor3bv
+#define glSecondaryColor3d pglSecondaryColor3d
+#define glSecondaryColor3dv pglSecondaryColor3dv
+#define glSecondaryColor3f pglSecondaryColor3f
+#define glSecondaryColor3fv pglSecondaryColor3fv
+#define glSecondaryColor3i pglSecondaryColor3i
+#define glSecondaryColor3iv pglSecondaryColor3iv
+#define glSecondaryColor3s pglSecondaryColor3s
+#define glSecondaryColor3sv pglSecondaryColor3sv
+#define glSecondaryColor3ub pglSecondaryColor3ub
+#define glSecondaryColor3ubv pglSecondaryColor3ubv
+#define glSecondaryColor3ui pglSecondaryColor3ui
+#define glSecondaryColor3uiv pglSecondaryColor3uiv
+#define glSecondaryColor3us pglSecondaryColor3us
+#define glSecondaryColor3usv pglSecondaryColor3usv
+#define glSecondaryColorPointer pglSecondaryColorPointer
+#define glWindowPos2d pglWindowPos2d
+#define glWindowPos2dv pglWindowPos2dv
+#define glWindowPos2f pglWindowPos2f
+#define glWindowPos2fv pglWindowPos2fv
+#define glWindowPos2i pglWindowPos2i
+#define glWindowPos2iv pglWindowPos2iv
+#define glWindowPos2s pglWindowPos2s
+#define glWindowPos2sv pglWindowPos2sv
+#define glWindowPos3d pglWindowPos3d
+#define glWindowPos3dv pglWindowPos3dv
+#define glWindowPos3f pglWindowPos3f
+#define glWindowPos3fv pglWindowPos3fv
+#define glWindowPos3i pglWindowPos3i
+#define glWindowPos3iv pglWindowPos3iv
+#define glWindowPos3s pglWindowPos3s
+#define glWindowPos3sv pglWindowPos3sv
+#endif 
+
+/* GL_VERSION_1_5 */
+
+#ifndef GL_VERSION_1_5
+#define GL_VERSION_1_5 1
+#define __GLEE_GL_VERSION_1_5 1
+/* Constants */
+#define GL_BUFFER_SIZE                                     0x8764
+#define GL_BUFFER_USAGE                                    0x8765
+#define GL_QUERY_COUNTER_BITS                              0x8864
+#define GL_CURRENT_QUERY                                   0x8865
+#define GL_QUERY_RESULT                                    0x8866
+#define GL_QUERY_RESULT_AVAILABLE                          0x8867
+#define GL_ARRAY_BUFFER                                    0x8892
+#define GL_ELEMENT_ARRAY_BUFFER                            0x8893
+#define GL_ARRAY_BUFFER_BINDING                            0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING                    0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING                     0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING                     0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING                      0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING                      0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING              0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING                  0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING            0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING             0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING                     0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING              0x889F
+#define GL_READ_ONLY                                       0x88B8
+#define GL_WRITE_ONLY                                      0x88B9
+#define GL_READ_WRITE                                      0x88BA
+#define GL_BUFFER_ACCESS                                   0x88BB
+#define GL_BUFFER_MAPPED                                   0x88BC
+#define GL_BUFFER_MAP_POINTER                              0x88BD
+#define GL_STREAM_DRAW                                     0x88E0
+#define GL_STREAM_READ                                     0x88E1
+#define GL_STREAM_COPY                                     0x88E2
+#define GL_STATIC_DRAW                                     0x88E4
+#define GL_STATIC_READ                                     0x88E5
+#define GL_STATIC_COPY                                     0x88E6
+#define GL_DYNAMIC_DRAW                                    0x88E8
+#define GL_DYNAMIC_READ                                    0x88E9
+#define GL_DYNAMIC_COPY                                    0x88EA
+#define GL_SAMPLES_PASSED                                  0x8914
+#define GL_FOG_COORD_SRC                                   GL_FOG_COORDINATE_SOURCE
+#define GL_FOG_COORD                                       GL_FOG_COORDINATE
+#define GL_CURRENT_FOG_COORD                               GL_CURRENT_FOG_COORDINATE
+#define GL_FOG_COORD_ARRAY_TYPE                            GL_FOG_COORDINATE_ARRAY_TYPE
+#define GL_FOG_COORD_ARRAY_STRIDE                          GL_FOG_COORDINATE_ARRAY_STRIDE
+#define GL_FOG_COORD_ARRAY_POINTER                         GL_FOG_COORDINATE_ARRAY_POINTER
+#define GL_FOG_COORD_ARRAY                                 GL_FOG_COORDINATE_ARRAY
+#define GL_FOG_COORD_ARRAY_BUFFER_BINDING                  GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+#define GL_SRC0_RGB                                        GL_SOURCE0_RGB
+#define GL_SRC1_RGB                                        GL_SOURCE1_RGB
+#define GL_SRC2_RGB                                        GL_SOURCE2_RGB
+#define GL_SRC0_ALPHA                                      GL_SOURCE0_ALPHA
+#define GL_SRC1_ALPHA                                      GL_SOURCE1_ALPHA
+#define GL_SRC2_ALPHA                                      GL_SOURCE2_ALPHA
+typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint * ids);
+typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint * ids);
+typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint * params);
+typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint * buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint * buffers);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);
+typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data);
+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* * params);
+GLEE_EXTERN PFNGLGENQUERIESPROC pglGenQueries;
+GLEE_EXTERN PFNGLDELETEQUERIESPROC pglDeleteQueries;
+GLEE_EXTERN PFNGLISQUERYPROC pglIsQuery;
+GLEE_EXTERN PFNGLBEGINQUERYPROC pglBeginQuery;
+GLEE_EXTERN PFNGLENDQUERYPROC pglEndQuery;
+GLEE_EXTERN PFNGLGETQUERYIVPROC pglGetQueryiv;
+GLEE_EXTERN PFNGLGETQUERYOBJECTIVPROC pglGetQueryObjectiv;
+GLEE_EXTERN PFNGLGETQUERYOBJECTUIVPROC pglGetQueryObjectuiv;
+GLEE_EXTERN PFNGLBINDBUFFERPROC pglBindBuffer;
+GLEE_EXTERN PFNGLDELETEBUFFERSPROC pglDeleteBuffers;
+GLEE_EXTERN PFNGLGENBUFFERSPROC pglGenBuffers;
+GLEE_EXTERN PFNGLISBUFFERPROC pglIsBuffer;
+GLEE_EXTERN PFNGLBUFFERDATAPROC pglBufferData;
+GLEE_EXTERN PFNGLBUFFERSUBDATAPROC pglBufferSubData;
+GLEE_EXTERN PFNGLGETBUFFERSUBDATAPROC pglGetBufferSubData;
+GLEE_EXTERN PFNGLMAPBUFFERPROC pglMapBuffer;
+GLEE_EXTERN PFNGLUNMAPBUFFERPROC pglUnmapBuffer;
+GLEE_EXTERN PFNGLGETBUFFERPARAMETERIVPROC pglGetBufferParameteriv;
+GLEE_EXTERN PFNGLGETBUFFERPOINTERVPROC pglGetBufferPointerv;
+#define glGenQueries pglGenQueries
+#define glDeleteQueries pglDeleteQueries
+#define glIsQuery pglIsQuery
+#define glBeginQuery pglBeginQuery
+#define glEndQuery pglEndQuery
+#define glGetQueryiv pglGetQueryiv
+#define glGetQueryObjectiv pglGetQueryObjectiv
+#define glGetQueryObjectuiv pglGetQueryObjectuiv
+#define glBindBuffer pglBindBuffer
+#define glDeleteBuffers pglDeleteBuffers
+#define glGenBuffers pglGenBuffers
+#define glIsBuffer pglIsBuffer
+#define glBufferData pglBufferData
+#define glBufferSubData pglBufferSubData
+#define glGetBufferSubData pglGetBufferSubData
+#define glMapBuffer pglMapBuffer
+#define glUnmapBuffer pglUnmapBuffer
+#define glGetBufferParameteriv pglGetBufferParameteriv
+#define glGetBufferPointerv pglGetBufferPointerv
+#endif 
+
+/* GL_VERSION_2_0 */
+
+#ifndef GL_VERSION_2_0
+#define GL_VERSION_2_0 1
+#define __GLEE_GL_VERSION_2_0 1
+/* Constants */
+#define GL_BLEND_EQUATION_RGB                              GL_BLEND_EQUATION
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED                     0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE                        0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE                      0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE                        0x8625
+#define GL_CURRENT_VERTEX_ATTRIB                           0x8626
+#define GL_VERTEX_PROGRAM_POINT_SIZE                       0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE                         0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER                     0x8645
+#define GL_STENCIL_BACK_FUNC                               0x8800
+#define GL_STENCIL_BACK_FAIL                               0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL                    0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS                    0x8803
+#define GL_MAX_DRAW_BUFFERS                                0x8824
+#define GL_DRAW_BUFFER0                                    0x8825
+#define GL_DRAW_BUFFER1                                    0x8826
+#define GL_DRAW_BUFFER2                                    0x8827
+#define GL_DRAW_BUFFER3                                    0x8828
+#define GL_DRAW_BUFFER4                                    0x8829
+#define GL_DRAW_BUFFER5                                    0x882A
+#define GL_DRAW_BUFFER6                                    0x882B
+#define GL_DRAW_BUFFER7                                    0x882C
+#define GL_DRAW_BUFFER8                                    0x882D
+#define GL_DRAW_BUFFER9                                    0x882E
+#define GL_DRAW_BUFFER10                                   0x882F
+#define GL_DRAW_BUFFER11                                   0x8830
+#define GL_DRAW_BUFFER12                                   0x8831
+#define GL_DRAW_BUFFER13                                   0x8832
+#define GL_DRAW_BUFFER14                                   0x8833
+#define GL_DRAW_BUFFER15                                   0x8834
+#define GL_BLEND_EQUATION_ALPHA                            0x883D
+#define GL_POINT_SPRITE                                    0x8861
+#define GL_COORD_REPLACE                                   0x8862
+#define GL_MAX_VERTEX_ATTRIBS                              0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED                  0x886A
+#define GL_MAX_TEXTURE_COORDS                              0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS                         0x8872
+#define GL_FRAGMENT_SHADER                                 0x8B30
+#define GL_VERTEX_SHADER                                   0x8B31
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS                 0x8B49
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS                   0x8B4A
+#define GL_MAX_VARYING_FLOATS                              0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS                  0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS                0x8B4D
+#define GL_SHADER_TYPE                                     0x8B4F
+#define GL_FLOAT_VEC2                                      0x8B50
+#define GL_FLOAT_VEC3                                      0x8B51
+#define GL_FLOAT_VEC4                                      0x8B52
+#define GL_INT_VEC2                                        0x8B53
+#define GL_INT_VEC3                                        0x8B54
+#define GL_INT_VEC4                                        0x8B55
+#define GL_BOOL                                            0x8B56
+#define GL_BOOL_VEC2                                       0x8B57
+#define GL_BOOL_VEC3                                       0x8B58
+#define GL_BOOL_VEC4                                       0x8B59
+#define GL_FLOAT_MAT2                                      0x8B5A
+#define GL_FLOAT_MAT3                                      0x8B5B
+#define GL_FLOAT_MAT4                                      0x8B5C
+#define GL_SAMPLER_1D                                      0x8B5D
+#define GL_SAMPLER_2D                                      0x8B5E
+#define GL_SAMPLER_3D                                      0x8B5F
+#define GL_SAMPLER_CUBE                                    0x8B60
+#define GL_SAMPLER_1D_SHADOW                               0x8B61
+#define GL_SAMPLER_2D_SHADOW                               0x8B62
+#define GL_DELETE_STATUS                                   0x8B80
+#define GL_COMPILE_STATUS                                  0x8B81
+#define GL_LINK_STATUS                                     0x8B82
+#define GL_VALIDATE_STATUS                                 0x8B83
+#define GL_INFO_LOG_LENGTH                                 0x8B84
+#define GL_ATTACHED_SHADERS                                0x8B85
+#define GL_ACTIVE_UNIFORMS                                 0x8B86
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH                       0x8B87
+#define GL_SHADER_SOURCE_LENGTH                            0x8B88
+#define GL_ACTIVE_ATTRIBUTES                               0x8B89
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH                     0x8B8A
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT                 0x8B8B
+#define GL_SHADING_LANGUAGE_VERSION                        0x8B8C
+#define GL_CURRENT_PROGRAM                                 0x8B8D
+#define GL_POINT_SPRITE_COORD_ORIGIN                       0x8CA0
+#define GL_LOWER_LEFT                                      0x8CA1
+#define GL_UPPER_LEFT                                      0x8CA2
+#define GL_STENCIL_BACK_REF                                0x8CA3
+#define GL_STENCIL_BACK_VALUE_MASK                         0x8CA4
+#define GL_STENCIL_BACK_WRITEMASK                          0x8CA5
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum * bufs);
+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
+typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar * name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
+typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) ();
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
+typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar * name);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar * name);
+typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* * pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
+typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* * string, const GLint * length);
+typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint * value);
+typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint * value);
+typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint * value);
+typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);
+GLEE_EXTERN PFNGLBLENDEQUATIONSEPARATEPROC pglBlendEquationSeparate;
+GLEE_EXTERN PFNGLDRAWBUFFERSPROC pglDrawBuffers;
+GLEE_EXTERN PFNGLSTENCILOPSEPARATEPROC pglStencilOpSeparate;
+GLEE_EXTERN PFNGLSTENCILFUNCSEPARATEPROC pglStencilFuncSeparate;
+GLEE_EXTERN PFNGLSTENCILMASKSEPARATEPROC pglStencilMaskSeparate;
+GLEE_EXTERN PFNGLATTACHSHADERPROC pglAttachShader;
+GLEE_EXTERN PFNGLBINDATTRIBLOCATIONPROC pglBindAttribLocation;
+GLEE_EXTERN PFNGLCOMPILESHADERPROC pglCompileShader;
+GLEE_EXTERN PFNGLCREATEPROGRAMPROC pglCreateProgram;
+GLEE_EXTERN PFNGLCREATESHADERPROC pglCreateShader;
+GLEE_EXTERN PFNGLDELETEPROGRAMPROC pglDeleteProgram;
+GLEE_EXTERN PFNGLDELETESHADERPROC pglDeleteShader;
+GLEE_EXTERN PFNGLDETACHSHADERPROC pglDetachShader;
+GLEE_EXTERN PFNGLDISABLEVERTEXATTRIBARRAYPROC pglDisableVertexAttribArray;
+GLEE_EXTERN PFNGLENABLEVERTEXATTRIBARRAYPROC pglEnableVertexAttribArray;
+GLEE_EXTERN PFNGLGETACTIVEATTRIBPROC pglGetActiveAttrib;
+GLEE_EXTERN PFNGLGETACTIVEUNIFORMPROC pglGetActiveUniform;
+GLEE_EXTERN PFNGLGETATTACHEDSHADERSPROC pglGetAttachedShaders;
+GLEE_EXTERN PFNGLGETATTRIBLOCATIONPROC pglGetAttribLocation;
+GLEE_EXTERN PFNGLGETPROGRAMIVPROC pglGetProgramiv;
+GLEE_EXTERN PFNGLGETPROGRAMINFOLOGPROC pglGetProgramInfoLog;
+GLEE_EXTERN PFNGLGETSHADERIVPROC pglGetShaderiv;
+GLEE_EXTERN PFNGLGETSHADERINFOLOGPROC pglGetShaderInfoLog;
+GLEE_EXTERN PFNGLGETSHADERSOURCEPROC pglGetShaderSource;
+GLEE_EXTERN PFNGLGETUNIFORMLOCATIONPROC pglGetUniformLocation;
+GLEE_EXTERN PFNGLGETUNIFORMFVPROC pglGetUniformfv;
+GLEE_EXTERN PFNGLGETUNIFORMIVPROC pglGetUniformiv;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBDVPROC pglGetVertexAttribdv;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBFVPROC pglGetVertexAttribfv;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBIVPROC pglGetVertexAttribiv;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBPOINTERVPROC pglGetVertexAttribPointerv;
+GLEE_EXTERN PFNGLISPROGRAMPROC pglIsProgram;
+GLEE_EXTERN PFNGLISSHADERPROC pglIsShader;
+GLEE_EXTERN PFNGLLINKPROGRAMPROC pglLinkProgram;
+GLEE_EXTERN PFNGLSHADERSOURCEPROC pglShaderSource;
+GLEE_EXTERN PFNGLUSEPROGRAMPROC pglUseProgram;
+GLEE_EXTERN PFNGLUNIFORM1FPROC pglUniform1f;
+GLEE_EXTERN PFNGLUNIFORM2FPROC pglUniform2f;
+GLEE_EXTERN PFNGLUNIFORM3FPROC pglUniform3f;
+GLEE_EXTERN PFNGLUNIFORM4FPROC pglUniform4f;
+GLEE_EXTERN PFNGLUNIFORM1IPROC pglUniform1i;
+GLEE_EXTERN PFNGLUNIFORM2IPROC pglUniform2i;
+GLEE_EXTERN PFNGLUNIFORM3IPROC pglUniform3i;
+GLEE_EXTERN PFNGLUNIFORM4IPROC pglUniform4i;
+GLEE_EXTERN PFNGLUNIFORM1FVPROC pglUniform1fv;
+GLEE_EXTERN PFNGLUNIFORM2FVPROC pglUniform2fv;
+GLEE_EXTERN PFNGLUNIFORM3FVPROC pglUniform3fv;
+GLEE_EXTERN PFNGLUNIFORM4FVPROC pglUniform4fv;
+GLEE_EXTERN PFNGLUNIFORM1IVPROC pglUniform1iv;
+GLEE_EXTERN PFNGLUNIFORM2IVPROC pglUniform2iv;
+GLEE_EXTERN PFNGLUNIFORM3IVPROC pglUniform3iv;
+GLEE_EXTERN PFNGLUNIFORM4IVPROC pglUniform4iv;
+GLEE_EXTERN PFNGLUNIFORMMATRIX2FVPROC pglUniformMatrix2fv;
+GLEE_EXTERN PFNGLUNIFORMMATRIX3FVPROC pglUniformMatrix3fv;
+GLEE_EXTERN PFNGLUNIFORMMATRIX4FVPROC pglUniformMatrix4fv;
+GLEE_EXTERN PFNGLVALIDATEPROGRAMPROC pglValidateProgram;
+GLEE_EXTERN PFNGLVERTEXATTRIB1DPROC pglVertexAttrib1d;
+GLEE_EXTERN PFNGLVERTEXATTRIB1DVPROC pglVertexAttrib1dv;
+GLEE_EXTERN PFNGLVERTEXATTRIB1FPROC pglVertexAttrib1f;
+GLEE_EXTERN PFNGLVERTEXATTRIB1FVPROC pglVertexAttrib1fv;
+GLEE_EXTERN PFNGLVERTEXATTRIB1SPROC pglVertexAttrib1s;
+GLEE_EXTERN PFNGLVERTEXATTRIB1SVPROC pglVertexAttrib1sv;
+GLEE_EXTERN PFNGLVERTEXATTRIB2DPROC pglVertexAttrib2d;
+GLEE_EXTERN PFNGLVERTEXATTRIB2DVPROC pglVertexAttrib2dv;
+GLEE_EXTERN PFNGLVERTEXATTRIB2FPROC pglVertexAttrib2f;
+GLEE_EXTERN PFNGLVERTEXATTRIB2FVPROC pglVertexAttrib2fv;
+GLEE_EXTERN PFNGLVERTEXATTRIB2SPROC pglVertexAttrib2s;
+GLEE_EXTERN PFNGLVERTEXATTRIB2SVPROC pglVertexAttrib2sv;
+GLEE_EXTERN PFNGLVERTEXATTRIB3DPROC pglVertexAttrib3d;
+GLEE_EXTERN PFNGLVERTEXATTRIB3DVPROC pglVertexAttrib3dv;
+GLEE_EXTERN PFNGLVERTEXATTRIB3FPROC pglVertexAttrib3f;
+GLEE_EXTERN PFNGLVERTEXATTRIB3FVPROC pglVertexAttrib3fv;
+GLEE_EXTERN PFNGLVERTEXATTRIB3SPROC pglVertexAttrib3s;
+GLEE_EXTERN PFNGLVERTEXATTRIB3SVPROC pglVertexAttrib3sv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NBVPROC pglVertexAttrib4Nbv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NIVPROC pglVertexAttrib4Niv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NSVPROC pglVertexAttrib4Nsv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NUBPROC pglVertexAttrib4Nub;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NUBVPROC pglVertexAttrib4Nubv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NUIVPROC pglVertexAttrib4Nuiv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NUSVPROC pglVertexAttrib4Nusv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4BVPROC pglVertexAttrib4bv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4DPROC pglVertexAttrib4d;
+GLEE_EXTERN PFNGLVERTEXATTRIB4DVPROC pglVertexAttrib4dv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4FPROC pglVertexAttrib4f;
+GLEE_EXTERN PFNGLVERTEXATTRIB4FVPROC pglVertexAttrib4fv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4IVPROC pglVertexAttrib4iv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4SPROC pglVertexAttrib4s;
+GLEE_EXTERN PFNGLVERTEXATTRIB4SVPROC pglVertexAttrib4sv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4UBVPROC pglVertexAttrib4ubv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4UIVPROC pglVertexAttrib4uiv;
+GLEE_EXTERN PFNGLVERTEXATTRIB4USVPROC pglVertexAttrib4usv;
+GLEE_EXTERN PFNGLVERTEXATTRIBPOINTERPROC pglVertexAttribPointer;
+#define glBlendEquationSeparate pglBlendEquationSeparate
+#define glDrawBuffers pglDrawBuffers
+#define glStencilOpSeparate pglStencilOpSeparate
+#define glStencilFuncSeparate pglStencilFuncSeparate
+#define glStencilMaskSeparate pglStencilMaskSeparate
+#define glAttachShader pglAttachShader
+#define glBindAttribLocation pglBindAttribLocation
+#define glCompileShader pglCompileShader
+#define glCreateProgram pglCreateProgram
+#define glCreateShader pglCreateShader
+#define glDeleteProgram pglDeleteProgram
+#define glDeleteShader pglDeleteShader
+#define glDetachShader pglDetachShader
+#define glDisableVertexAttribArray pglDisableVertexAttribArray
+#define glEnableVertexAttribArray pglEnableVertexAttribArray
+#define glGetActiveAttrib pglGetActiveAttrib
+#define glGetActiveUniform pglGetActiveUniform
+#define glGetAttachedShaders pglGetAttachedShaders
+#define glGetAttribLocation pglGetAttribLocation
+#define glGetProgramiv pglGetProgramiv
+#define glGetProgramInfoLog pglGetProgramInfoLog
+#define glGetShaderiv pglGetShaderiv
+#define glGetShaderInfoLog pglGetShaderInfoLog
+#define glGetShaderSource pglGetShaderSource
+#define glGetUniformLocation pglGetUniformLocation
+#define glGetUniformfv pglGetUniformfv
+#define glGetUniformiv pglGetUniformiv
+#define glGetVertexAttribdv pglGetVertexAttribdv
+#define glGetVertexAttribfv pglGetVertexAttribfv
+#define glGetVertexAttribiv pglGetVertexAttribiv
+#define glGetVertexAttribPointerv pglGetVertexAttribPointerv
+#define glIsProgram pglIsProgram
+#define glIsShader pglIsShader
+#define glLinkProgram pglLinkProgram
+#define glShaderSource pglShaderSource
+#define glUseProgram pglUseProgram
+#define glUniform1f pglUniform1f
+#define glUniform2f pglUniform2f
+#define glUniform3f pglUniform3f
+#define glUniform4f pglUniform4f
+#define glUniform1i pglUniform1i
+#define glUniform2i pglUniform2i
+#define glUniform3i pglUniform3i
+#define glUniform4i pglUniform4i
+#define glUniform1fv pglUniform1fv
+#define glUniform2fv pglUniform2fv
+#define glUniform3fv pglUniform3fv
+#define glUniform4fv pglUniform4fv
+#define glUniform1iv pglUniform1iv
+#define glUniform2iv pglUniform2iv
+#define glUniform3iv pglUniform3iv
+#define glUniform4iv pglUniform4iv
+#define glUniformMatrix2fv pglUniformMatrix2fv
+#define glUniformMatrix3fv pglUniformMatrix3fv
+#define glUniformMatrix4fv pglUniformMatrix4fv
+#define glValidateProgram pglValidateProgram
+#define glVertexAttrib1d pglVertexAttrib1d
+#define glVertexAttrib1dv pglVertexAttrib1dv
+#define glVertexAttrib1f pglVertexAttrib1f
+#define glVertexAttrib1fv pglVertexAttrib1fv
+#define glVertexAttrib1s pglVertexAttrib1s
+#define glVertexAttrib1sv pglVertexAttrib1sv
+#define glVertexAttrib2d pglVertexAttrib2d
+#define glVertexAttrib2dv pglVertexAttrib2dv
+#define glVertexAttrib2f pglVertexAttrib2f
+#define glVertexAttrib2fv pglVertexAttrib2fv
+#define glVertexAttrib2s pglVertexAttrib2s
+#define glVertexAttrib2sv pglVertexAttrib2sv
+#define glVertexAttrib3d pglVertexAttrib3d
+#define glVertexAttrib3dv pglVertexAttrib3dv
+#define glVertexAttrib3f pglVertexAttrib3f
+#define glVertexAttrib3fv pglVertexAttrib3fv
+#define glVertexAttrib3s pglVertexAttrib3s
+#define glVertexAttrib3sv pglVertexAttrib3sv
+#define glVertexAttrib4Nbv pglVertexAttrib4Nbv
+#define glVertexAttrib4Niv pglVertexAttrib4Niv
+#define glVertexAttrib4Nsv pglVertexAttrib4Nsv
+#define glVertexAttrib4Nub pglVertexAttrib4Nub
+#define glVertexAttrib4Nubv pglVertexAttrib4Nubv
+#define glVertexAttrib4Nuiv pglVertexAttrib4Nuiv
+#define glVertexAttrib4Nusv pglVertexAttrib4Nusv
+#define glVertexAttrib4bv pglVertexAttrib4bv
+#define glVertexAttrib4d pglVertexAttrib4d
+#define glVertexAttrib4dv pglVertexAttrib4dv
+#define glVertexAttrib4f pglVertexAttrib4f
+#define glVertexAttrib4fv pglVertexAttrib4fv
+#define glVertexAttrib4iv pglVertexAttrib4iv
+#define glVertexAttrib4s pglVertexAttrib4s
+#define glVertexAttrib4sv pglVertexAttrib4sv
+#define glVertexAttrib4ubv pglVertexAttrib4ubv
+#define glVertexAttrib4uiv pglVertexAttrib4uiv
+#define glVertexAttrib4usv pglVertexAttrib4usv
+#define glVertexAttribPointer pglVertexAttribPointer
+#endif 
+
+/* GL_VERSION_2_1 */
+
+#ifndef GL_VERSION_2_1
+#define GL_VERSION_2_1 1
+#define __GLEE_GL_VERSION_2_1 1
+/* Constants */
+#define GL_PIXEL_PACK_BUFFER                               0x88EB
+#define GL_PIXEL_UNPACK_BUFFER                             0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING                       0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING                     0x88EF
+#define GL_SRGB                                            0x8C40
+#define GL_SRGB8                                           0x8C41
+#define GL_SRGB_ALPHA                                      0x8C42
+#define GL_SRGB8_ALPHA8                                    0x8C43
+#define GL_SLUMINANCE_ALPHA                                0x8C44
+#define GL_SLUMINANCE8_ALPHA8                              0x8C45
+#define GL_SLUMINANCE                                      0x8C46
+#define GL_SLUMINANCE8                                     0x8C47
+#define GL_COMPRESSED_SRGB                                 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA                           0x8C49
+#define GL_COMPRESSED_SLUMINANCE                           0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA                     0x8C4B
+#define GL_FLOAT_MAT2x3                                    0x8B65
+#define GL_FLOAT_MAT2x4                                    0x8B66
+#define GL_FLOAT_MAT3x2                                    0x8B67
+#define GL_FLOAT_MAT3x4                                    0x8B68
+#define GL_FLOAT_MAT4x2                                    0x8B69
+#define GL_FLOAT_MAT4x3                                    0x8B6A
+#define GL_CURRENT_RASTER_SECONDARY_COLOR                  0x845F
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+GLEE_EXTERN PFNGLUNIFORMMATRIX2X3FVPROC pglUniformMatrix2x3fv;
+GLEE_EXTERN PFNGLUNIFORMMATRIX3X2FVPROC pglUniformMatrix3x2fv;
+GLEE_EXTERN PFNGLUNIFORMMATRIX2X4FVPROC pglUniformMatrix2x4fv;
+GLEE_EXTERN PFNGLUNIFORMMATRIX4X2FVPROC pglUniformMatrix4x2fv;
+GLEE_EXTERN PFNGLUNIFORMMATRIX3X4FVPROC pglUniformMatrix3x4fv;
+GLEE_EXTERN PFNGLUNIFORMMATRIX4X3FVPROC pglUniformMatrix4x3fv;
+#define glUniformMatrix2x3fv pglUniformMatrix2x3fv
+#define glUniformMatrix3x2fv pglUniformMatrix3x2fv
+#define glUniformMatrix2x4fv pglUniformMatrix2x4fv
+#define glUniformMatrix4x2fv pglUniformMatrix4x2fv
+#define glUniformMatrix3x4fv pglUniformMatrix3x4fv
+#define glUniformMatrix4x3fv pglUniformMatrix4x3fv
+#endif 
+
+/* GL_ARB_multitexture */
+
+#ifndef GL_ARB_multitexture
+#define GL_ARB_multitexture 1
+#define __GLEE_GL_ARB_multitexture 1
+/* Constants */
+#define GL_TEXTURE0_ARB                                    0x84C0
+#define GL_TEXTURE1_ARB                                    0x84C1
+#define GL_TEXTURE2_ARB                                    0x84C2
+#define GL_TEXTURE3_ARB                                    0x84C3
+#define GL_TEXTURE4_ARB                                    0x84C4
+#define GL_TEXTURE5_ARB                                    0x84C5
+#define GL_TEXTURE6_ARB                                    0x84C6
+#define GL_TEXTURE7_ARB                                    0x84C7
+#define GL_TEXTURE8_ARB                                    0x84C8
+#define GL_TEXTURE9_ARB                                    0x84C9
+#define GL_TEXTURE10_ARB                                   0x84CA
+#define GL_TEXTURE11_ARB                                   0x84CB
+#define GL_TEXTURE12_ARB                                   0x84CC
+#define GL_TEXTURE13_ARB                                   0x84CD
+#define GL_TEXTURE14_ARB                                   0x84CE
+#define GL_TEXTURE15_ARB                                   0x84CF
+#define GL_TEXTURE16_ARB                                   0x84D0
+#define GL_TEXTURE17_ARB                                   0x84D1
+#define GL_TEXTURE18_ARB                                   0x84D2
+#define GL_TEXTURE19_ARB                                   0x84D3
+#define GL_TEXTURE20_ARB                                   0x84D4
+#define GL_TEXTURE21_ARB                                   0x84D5
+#define GL_TEXTURE22_ARB                                   0x84D6
+#define GL_TEXTURE23_ARB                                   0x84D7
+#define GL_TEXTURE24_ARB                                   0x84D8
+#define GL_TEXTURE25_ARB                                   0x84D9
+#define GL_TEXTURE26_ARB                                   0x84DA
+#define GL_TEXTURE27_ARB                                   0x84DB
+#define GL_TEXTURE28_ARB                                   0x84DC
+#define GL_TEXTURE29_ARB                                   0x84DD
+#define GL_TEXTURE30_ARB                                   0x84DE
+#define GL_TEXTURE31_ARB                                   0x84DF
+#define GL_ACTIVE_TEXTURE_ARB                              0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB                       0x84E1
+#define GL_MAX_TEXTURE_UNITS_ARB                           0x84E2
+typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort * v);
+GLEE_EXTERN PFNGLACTIVETEXTUREARBPROC pglActiveTextureARB;
+GLEE_EXTERN PFNGLCLIENTACTIVETEXTUREARBPROC pglClientActiveTextureARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD1DARBPROC pglMultiTexCoord1dARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD1DVARBPROC pglMultiTexCoord1dvARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD1FARBPROC pglMultiTexCoord1fARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD1FVARBPROC pglMultiTexCoord1fvARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD1IARBPROC pglMultiTexCoord1iARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD1IVARBPROC pglMultiTexCoord1ivARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD1SARBPROC pglMultiTexCoord1sARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD1SVARBPROC pglMultiTexCoord1svARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD2DARBPROC pglMultiTexCoord2dARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD2DVARBPROC pglMultiTexCoord2dvARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD2FARBPROC pglMultiTexCoord2fARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD2FVARBPROC pglMultiTexCoord2fvARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD2IARBPROC pglMultiTexCoord2iARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD2IVARBPROC pglMultiTexCoord2ivARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD2SARBPROC pglMultiTexCoord2sARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD2SVARBPROC pglMultiTexCoord2svARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD3DARBPROC pglMultiTexCoord3dARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD3DVARBPROC pglMultiTexCoord3dvARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD3FARBPROC pglMultiTexCoord3fARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD3FVARBPROC pglMultiTexCoord3fvARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD3IARBPROC pglMultiTexCoord3iARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD3IVARBPROC pglMultiTexCoord3ivARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD3SARBPROC pglMultiTexCoord3sARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD3SVARBPROC pglMultiTexCoord3svARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD4DARBPROC pglMultiTexCoord4dARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD4DVARBPROC pglMultiTexCoord4dvARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD4FARBPROC pglMultiTexCoord4fARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD4FVARBPROC pglMultiTexCoord4fvARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD4IARBPROC pglMultiTexCoord4iARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD4IVARBPROC pglMultiTexCoord4ivARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD4SARBPROC pglMultiTexCoord4sARB;
+GLEE_EXTERN PFNGLMULTITEXCOORD4SVARBPROC pglMultiTexCoord4svARB;
+#define glActiveTextureARB pglActiveTextureARB
+#define glClientActiveTextureARB pglClientActiveTextureARB
+#define glMultiTexCoord1dARB pglMultiTexCoord1dARB
+#define glMultiTexCoord1dvARB pglMultiTexCoord1dvARB
+#define glMultiTexCoord1fARB pglMultiTexCoord1fARB
+#define glMultiTexCoord1fvARB pglMultiTexCoord1fvARB
+#define glMultiTexCoord1iARB pglMultiTexCoord1iARB
+#define glMultiTexCoord1ivARB pglMultiTexCoord1ivARB
+#define glMultiTexCoord1sARB pglMultiTexCoord1sARB
+#define glMultiTexCoord1svARB pglMultiTexCoord1svARB
+#define glMultiTexCoord2dARB pglMultiTexCoord2dARB
+#define glMultiTexCoord2dvARB pglMultiTexCoord2dvARB
+#define glMultiTexCoord2fARB pglMultiTexCoord2fARB
+#define glMultiTexCoord2fvARB pglMultiTexCoord2fvARB
+#define glMultiTexCoord2iARB pglMultiTexCoord2iARB
+#define glMultiTexCoord2ivARB pglMultiTexCoord2ivARB
+#define glMultiTexCoord2sARB pglMultiTexCoord2sARB
+#define glMultiTexCoord2svARB pglMultiTexCoord2svARB
+#define glMultiTexCoord3dARB pglMultiTexCoord3dARB
+#define glMultiTexCoord3dvARB pglMultiTexCoord3dvARB
+#define glMultiTexCoord3fARB pglMultiTexCoord3fARB
+#define glMultiTexCoord3fvARB pglMultiTexCoord3fvARB
+#define glMultiTexCoord3iARB pglMultiTexCoord3iARB
+#define glMultiTexCoord3ivARB pglMultiTexCoord3ivARB
+#define glMultiTexCoord3sARB pglMultiTexCoord3sARB
+#define glMultiTexCoord3svARB pglMultiTexCoord3svARB
+#define glMultiTexCoord4dARB pglMultiTexCoord4dARB
+#define glMultiTexCoord4dvARB pglMultiTexCoord4dvARB
+#define glMultiTexCoord4fARB pglMultiTexCoord4fARB
+#define glMultiTexCoord4fvARB pglMultiTexCoord4fvARB
+#define glMultiTexCoord4iARB pglMultiTexCoord4iARB
+#define glMultiTexCoord4ivARB pglMultiTexCoord4ivARB
+#define glMultiTexCoord4sARB pglMultiTexCoord4sARB
+#define glMultiTexCoord4svARB pglMultiTexCoord4svARB
+#endif 
+
+/* GL_ARB_transpose_matrix */
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_ARB_transpose_matrix 1
+#define __GLEE_GL_ARB_transpose_matrix 1
+/* Constants */
+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB                  0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB                 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB                    0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX_ARB                      0x84E6
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat * m);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble * m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat * m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble * m);
+GLEE_EXTERN PFNGLLOADTRANSPOSEMATRIXFARBPROC pglLoadTransposeMatrixfARB;
+GLEE_EXTERN PFNGLLOADTRANSPOSEMATRIXDARBPROC pglLoadTransposeMatrixdARB;
+GLEE_EXTERN PFNGLMULTTRANSPOSEMATRIXFARBPROC pglMultTransposeMatrixfARB;
+GLEE_EXTERN PFNGLMULTTRANSPOSEMATRIXDARBPROC pglMultTransposeMatrixdARB;
+#define glLoadTransposeMatrixfARB pglLoadTransposeMatrixfARB
+#define glLoadTransposeMatrixdARB pglLoadTransposeMatrixdARB
+#define glMultTransposeMatrixfARB pglMultTransposeMatrixfARB
+#define glMultTransposeMatrixdARB pglMultTransposeMatrixdARB
+#endif 
+
+/* GL_ARB_multisample */
+
+#ifndef GL_ARB_multisample
+#define GL_ARB_multisample 1
+#define __GLEE_GL_ARB_multisample 1
+/* Constants */
+#define GL_MULTISAMPLE_ARB                                 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB                    0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB                         0x809F
+#define GL_SAMPLE_COVERAGE_ARB                             0x80A0
+#define GL_SAMPLE_BUFFERS_ARB                              0x80A8
+#define GL_SAMPLES_ARB                                     0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE_ARB                       0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT_ARB                      0x80AB
+#define GL_MULTISAMPLE_BIT_ARB                             0x20000000
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
+GLEE_EXTERN PFNGLSAMPLECOVERAGEARBPROC pglSampleCoverageARB;
+#define glSampleCoverageARB pglSampleCoverageARB
+#endif 
+
+/* GL_ARB_texture_env_add */
+
+#ifndef GL_ARB_texture_env_add
+#define GL_ARB_texture_env_add 1
+#define __GLEE_GL_ARB_texture_env_add 1
+/* Constants */
+#endif 
+
+/* GL_ARB_texture_cube_map */
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_ARB_texture_cube_map 1
+#define __GLEE_GL_ARB_texture_cube_map 1
+/* Constants */
+#define GL_NORMAL_MAP_ARB                                  0x8511
+#define GL_REFLECTION_MAP_ARB                              0x8512
+#define GL_TEXTURE_CUBE_MAP_ARB                            0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB                    0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB                 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB                 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB                 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB                 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB                 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB                 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB                      0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB                   0x851C
+#endif 
+
+/* GL_ARB_texture_compression */
+
+#ifndef GL_ARB_texture_compression
+#define GL_ARB_texture_compression 1
+#define __GLEE_GL_ARB_texture_compression 1
+/* Constants */
+#define GL_COMPRESSED_ALPHA_ARB                            0x84E9
+#define GL_COMPRESSED_LUMINANCE_ARB                        0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB                  0x84EB
+#define GL_COMPRESSED_INTENSITY_ARB                        0x84EC
+#define GL_COMPRESSED_RGB_ARB                              0x84ED
+#define GL_COMPRESSED_RGBA_ARB                             0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT_ARB                    0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB               0x86A0
+#define GL_TEXTURE_COMPRESSED_ARB                          0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB              0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB                  0x86A3
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid * img);
+GLEE_EXTERN PFNGLCOMPRESSEDTEXIMAGE3DARBPROC pglCompressedTexImage3DARB;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXIMAGE2DARBPROC pglCompressedTexImage2DARB;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXIMAGE1DARBPROC pglCompressedTexImage1DARB;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC pglCompressedTexSubImage3DARB;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC pglCompressedTexSubImage2DARB;
+GLEE_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC pglCompressedTexSubImage1DARB;
+GLEE_EXTERN PFNGLGETCOMPRESSEDTEXIMAGEARBPROC pglGetCompressedTexImageARB;
+#define glCompressedTexImage3DARB pglCompressedTexImage3DARB
+#define glCompressedTexImage2DARB pglCompressedTexImage2DARB
+#define glCompressedTexImage1DARB pglCompressedTexImage1DARB
+#define glCompressedTexSubImage3DARB pglCompressedTexSubImage3DARB
+#define glCompressedTexSubImage2DARB pglCompressedTexSubImage2DARB
+#define glCompressedTexSubImage1DARB pglCompressedTexSubImage1DARB
+#define glGetCompressedTexImageARB pglGetCompressedTexImageARB
+#endif 
+
+/* GL_ARB_texture_border_clamp */
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_ARB_texture_border_clamp 1
+#define __GLEE_GL_ARB_texture_border_clamp 1
+/* Constants */
+#define GL_CLAMP_TO_BORDER_ARB                             0x812D
+#endif 
+
+/* GL_ARB_point_parameters */
+
+#ifndef GL_ARB_point_parameters
+#define GL_ARB_point_parameters 1
+#define __GLEE_GL_ARB_point_parameters 1
+/* Constants */
+#define GL_POINT_SIZE_MIN_ARB                              0x8126
+#define GL_POINT_SIZE_MAX_ARB                              0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB                   0x8128
+#define GL_POINT_DISTANCE_ATTENUATION_ARB                  0x8129
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat * params);
+GLEE_EXTERN PFNGLPOINTPARAMETERFARBPROC pglPointParameterfARB;
+GLEE_EXTERN PFNGLPOINTPARAMETERFVARBPROC pglPointParameterfvARB;
+#define glPointParameterfARB pglPointParameterfARB
+#define glPointParameterfvARB pglPointParameterfvARB
+#endif 
+
+/* GL_ARB_vertex_blend */
+
+#ifndef GL_ARB_vertex_blend
+#define GL_ARB_vertex_blend 1
+#define __GLEE_GL_ARB_vertex_blend 1
+/* Constants */
+#define GL_MAX_VERTEX_UNITS_ARB                            0x86A4
+#define GL_ACTIVE_VERTEX_UNITS_ARB                         0x86A5
+#define GL_WEIGHT_SUM_UNITY_ARB                            0x86A6
+#define GL_VERTEX_BLEND_ARB                                0x86A7
+#define GL_CURRENT_WEIGHT_ARB                              0x86A8
+#define GL_WEIGHT_ARRAY_TYPE_ARB                           0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_ARB                         0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_ARB                           0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_ARB                        0x86AC
+#define GL_WEIGHT_ARRAY_ARB                                0x86AD
+#define GL_MODELVIEW0_ARB                                  0x1700
+#define GL_MODELVIEW1_ARB                                  0x850A
+#define GL_MODELVIEW2_ARB                                  0x8722
+#define GL_MODELVIEW3_ARB                                  0x8723
+#define GL_MODELVIEW4_ARB                                  0x8724
+#define GL_MODELVIEW5_ARB                                  0x8725
+#define GL_MODELVIEW6_ARB                                  0x8726
+#define GL_MODELVIEW7_ARB                                  0x8727
+#define GL_MODELVIEW8_ARB                                  0x8728
+#define GL_MODELVIEW9_ARB                                  0x8729
+#define GL_MODELVIEW10_ARB                                 0x872A
+#define GL_MODELVIEW11_ARB                                 0x872B
+#define GL_MODELVIEW12_ARB                                 0x872C
+#define GL_MODELVIEW13_ARB                                 0x872D
+#define GL_MODELVIEW14_ARB                                 0x872E
+#define GL_MODELVIEW15_ARB                                 0x872F
+#define GL_MODELVIEW16_ARB                                 0x8730
+#define GL_MODELVIEW17_ARB                                 0x8731
+#define GL_MODELVIEW18_ARB                                 0x8732
+#define GL_MODELVIEW19_ARB                                 0x8733
+#define GL_MODELVIEW20_ARB                                 0x8734
+#define GL_MODELVIEW21_ARB                                 0x8735
+#define GL_MODELVIEW22_ARB                                 0x8736
+#define GL_MODELVIEW23_ARB                                 0x8737
+#define GL_MODELVIEW24_ARB                                 0x8738
+#define GL_MODELVIEW25_ARB                                 0x8739
+#define GL_MODELVIEW26_ARB                                 0x873A
+#define GL_MODELVIEW27_ARB                                 0x873B
+#define GL_MODELVIEW28_ARB                                 0x873C
+#define GL_MODELVIEW29_ARB                                 0x873D
+#define GL_MODELVIEW30_ARB                                 0x873E
+#define GL_MODELVIEW31_ARB                                 0x873F
+typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte * weights);
+typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort * weights);
+typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint * weights);
+typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat * weights);
+typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble * weights);
+typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte * weights);
+typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort * weights);
+typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint * weights);
+typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
+GLEE_EXTERN PFNGLWEIGHTBVARBPROC pglWeightbvARB;
+GLEE_EXTERN PFNGLWEIGHTSVARBPROC pglWeightsvARB;
+GLEE_EXTERN PFNGLWEIGHTIVARBPROC pglWeightivARB;
+GLEE_EXTERN PFNGLWEIGHTFVARBPROC pglWeightfvARB;
+GLEE_EXTERN PFNGLWEIGHTDVARBPROC pglWeightdvARB;
+GLEE_EXTERN PFNGLWEIGHTUBVARBPROC pglWeightubvARB;
+GLEE_EXTERN PFNGLWEIGHTUSVARBPROC pglWeightusvARB;
+GLEE_EXTERN PFNGLWEIGHTUIVARBPROC pglWeightuivARB;
+GLEE_EXTERN PFNGLWEIGHTPOINTERARBPROC pglWeightPointerARB;
+GLEE_EXTERN PFNGLVERTEXBLENDARBPROC pglVertexBlendARB;
+#define glWeightbvARB pglWeightbvARB
+#define glWeightsvARB pglWeightsvARB
+#define glWeightivARB pglWeightivARB
+#define glWeightfvARB pglWeightfvARB
+#define glWeightdvARB pglWeightdvARB
+#define glWeightubvARB pglWeightubvARB
+#define glWeightusvARB pglWeightusvARB
+#define glWeightuivARB pglWeightuivARB
+#define glWeightPointerARB pglWeightPointerARB
+#define glVertexBlendARB pglVertexBlendARB
+#endif 
+
+/* GL_ARB_matrix_palette */
+
+#ifndef GL_ARB_matrix_palette
+#define GL_ARB_matrix_palette 1
+#define __GLEE_GL_ARB_matrix_palette 1
+/* Constants */
+#define GL_MATRIX_PALETTE_ARB                              0x8840
+#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB              0x8841
+#define GL_MAX_PALETTE_MATRICES_ARB                        0x8842
+#define GL_CURRENT_PALETTE_MATRIX_ARB                      0x8843
+#define GL_MATRIX_INDEX_ARRAY_ARB                          0x8844
+#define GL_CURRENT_MATRIX_INDEX_ARB                        0x8845
+#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB                     0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB                     0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB                   0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB                  0x8849
+typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte * indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort * indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint * indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
+GLEE_EXTERN PFNGLCURRENTPALETTEMATRIXARBPROC pglCurrentPaletteMatrixARB;
+GLEE_EXTERN PFNGLMATRIXINDEXUBVARBPROC pglMatrixIndexubvARB;
+GLEE_EXTERN PFNGLMATRIXINDEXUSVARBPROC pglMatrixIndexusvARB;
+GLEE_EXTERN PFNGLMATRIXINDEXUIVARBPROC pglMatrixIndexuivARB;
+GLEE_EXTERN PFNGLMATRIXINDEXPOINTERARBPROC pglMatrixIndexPointerARB;
+#define glCurrentPaletteMatrixARB pglCurrentPaletteMatrixARB
+#define glMatrixIndexubvARB pglMatrixIndexubvARB
+#define glMatrixIndexusvARB pglMatrixIndexusvARB
+#define glMatrixIndexuivARB pglMatrixIndexuivARB
+#define glMatrixIndexPointerARB pglMatrixIndexPointerARB
+#endif 
+
+/* GL_ARB_texture_env_combine */
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_ARB_texture_env_combine 1
+#define __GLEE_GL_ARB_texture_env_combine 1
+/* Constants */
+#define GL_COMBINE_ARB                                     0x8570
+#define GL_COMBINE_RGB_ARB                                 0x8571
+#define GL_COMBINE_ALPHA_ARB                               0x8572
+#define GL_SOURCE0_RGB_ARB                                 0x8580
+#define GL_SOURCE1_RGB_ARB                                 0x8581
+#define GL_SOURCE2_RGB_ARB                                 0x8582
+#define GL_SOURCE0_ALPHA_ARB                               0x8588
+#define GL_SOURCE1_ALPHA_ARB                               0x8589
+#define GL_SOURCE2_ALPHA_ARB                               0x858A
+#define GL_OPERAND0_RGB_ARB                                0x8590
+#define GL_OPERAND1_RGB_ARB                                0x8591
+#define GL_OPERAND2_RGB_ARB                                0x8592
+#define GL_OPERAND0_ALPHA_ARB                              0x8598
+#define GL_OPERAND1_ALPHA_ARB                              0x8599
+#define GL_OPERAND2_ALPHA_ARB                              0x859A
+#define GL_RGB_SCALE_ARB                                   0x8573
+#define GL_ADD_SIGNED_ARB                                  0x8574
+#define GL_INTERPOLATE_ARB                                 0x8575
+#define GL_SUBTRACT_ARB                                    0x84E7
+#define GL_CONSTANT_ARB                                    0x8576
+#define GL_PRIMARY_COLOR_ARB                               0x8577
+#define GL_PREVIOUS_ARB                                    0x8578
+#endif 
+
+/* GL_ARB_texture_env_crossbar */
+
+#ifndef GL_ARB_texture_env_crossbar
+#define GL_ARB_texture_env_crossbar 1
+#define __GLEE_GL_ARB_texture_env_crossbar 1
+/* Constants */
+#endif 
+
+/* GL_ARB_texture_env_dot3 */
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_ARB_texture_env_dot3 1
+#define __GLEE_GL_ARB_texture_env_dot3 1
+/* Constants */
+#define GL_DOT3_RGB_ARB                                    0x86AE
+#define GL_DOT3_RGBA_ARB                                   0x86AF
+#endif 
+
+/* GL_ARB_texture_mirrored_repeat */
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_ARB_texture_mirrored_repeat 1
+#define __GLEE_GL_ARB_texture_mirrored_repeat 1
+/* Constants */
+#define GL_MIRRORED_REPEAT_ARB                             0x8370
+#endif 
+
+/* GL_ARB_depth_texture */
+
+#ifndef GL_ARB_depth_texture
+#define GL_ARB_depth_texture 1
+#define __GLEE_GL_ARB_depth_texture 1
+/* Constants */
+#define GL_DEPTH_COMPONENT16_ARB                           0x81A5
+#define GL_DEPTH_COMPONENT24_ARB                           0x81A6
+#define GL_DEPTH_COMPONENT32_ARB                           0x81A7
+#define GL_TEXTURE_DEPTH_SIZE_ARB                          0x884A
+#define GL_DEPTH_TEXTURE_MODE_ARB                          0x884B
+#endif 
+
+/* GL_ARB_shadow */
+
+#ifndef GL_ARB_shadow
+#define GL_ARB_shadow 1
+#define __GLEE_GL_ARB_shadow 1
+/* Constants */
+#define GL_TEXTURE_COMPARE_MODE_ARB                        0x884C
+#define GL_TEXTURE_COMPARE_FUNC_ARB                        0x884D
+#define GL_COMPARE_R_TO_TEXTURE_ARB                        0x884E
+#endif 
+
+/* GL_ARB_shadow_ambient */
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_ARB_shadow_ambient 1
+#define __GLEE_GL_ARB_shadow_ambient 1
+/* Constants */
+#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB                  0x80BF
+#endif 
+
+/* GL_ARB_window_pos */
+
+#ifndef GL_ARB_window_pos
+#define GL_ARB_window_pos 1
+#define __GLEE_GL_ARB_window_pos 1
+/* Constants */
+typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort * v);
+GLEE_EXTERN PFNGLWINDOWPOS2DARBPROC pglWindowPos2dARB;
+GLEE_EXTERN PFNGLWINDOWPOS2DVARBPROC pglWindowPos2dvARB;
+GLEE_EXTERN PFNGLWINDOWPOS2FARBPROC pglWindowPos2fARB;
+GLEE_EXTERN PFNGLWINDOWPOS2FVARBPROC pglWindowPos2fvARB;
+GLEE_EXTERN PFNGLWINDOWPOS2IARBPROC pglWindowPos2iARB;
+GLEE_EXTERN PFNGLWINDOWPOS2IVARBPROC pglWindowPos2ivARB;
+GLEE_EXTERN PFNGLWINDOWPOS2SARBPROC pglWindowPos2sARB;
+GLEE_EXTERN PFNGLWINDOWPOS2SVARBPROC pglWindowPos2svARB;
+GLEE_EXTERN PFNGLWINDOWPOS3DARBPROC pglWindowPos3dARB;
+GLEE_EXTERN PFNGLWINDOWPOS3DVARBPROC pglWindowPos3dvARB;
+GLEE_EXTERN PFNGLWINDOWPOS3FARBPROC pglWindowPos3fARB;
+GLEE_EXTERN PFNGLWINDOWPOS3FVARBPROC pglWindowPos3fvARB;
+GLEE_EXTERN PFNGLWINDOWPOS3IARBPROC pglWindowPos3iARB;
+GLEE_EXTERN PFNGLWINDOWPOS3IVARBPROC pglWindowPos3ivARB;
+GLEE_EXTERN PFNGLWINDOWPOS3SARBPROC pglWindowPos3sARB;
+GLEE_EXTERN PFNGLWINDOWPOS3SVARBPROC pglWindowPos3svARB;
+#define glWindowPos2dARB pglWindowPos2dARB
+#define glWindowPos2dvARB pglWindowPos2dvARB
+#define glWindowPos2fARB pglWindowPos2fARB
+#define glWindowPos2fvARB pglWindowPos2fvARB
+#define glWindowPos2iARB pglWindowPos2iARB
+#define glWindowPos2ivARB pglWindowPos2ivARB
+#define glWindowPos2sARB pglWindowPos2sARB
+#define glWindowPos2svARB pglWindowPos2svARB
+#define glWindowPos3dARB pglWindowPos3dARB
+#define glWindowPos3dvARB pglWindowPos3dvARB
+#define glWindowPos3fARB pglWindowPos3fARB
+#define glWindowPos3fvARB pglWindowPos3fvARB
+#define glWindowPos3iARB pglWindowPos3iARB
+#define glWindowPos3ivARB pglWindowPos3ivARB
+#define glWindowPos3sARB pglWindowPos3sARB
+#define glWindowPos3svARB pglWindowPos3svARB
+#endif 
+
+/* GL_ARB_vertex_program */
+
+#ifndef GL_ARB_vertex_program
+#define GL_ARB_vertex_program 1
+#define __GLEE_GL_ARB_vertex_program 1
+/* Constants */
+#define GL_COLOR_SUM_ARB                                   0x8458
+#define GL_VERTEX_PROGRAM_ARB                              0x8620
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB                 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB                    0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB                  0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB                    0x8625
+#define GL_CURRENT_VERTEX_ATTRIB_ARB                       0x8626
+#define GL_PROGRAM_LENGTH_ARB                              0x8627
+#define GL_PROGRAM_STRING_ARB                              0x8628
+#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB              0x862E
+#define GL_MAX_PROGRAM_MATRICES_ARB                        0x862F
+#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB                  0x8640
+#define GL_CURRENT_MATRIX_ARB                              0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB                   0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB                     0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB                 0x8645
+#define GL_PROGRAM_ERROR_POSITION_ARB                      0x864B
+#define GL_PROGRAM_BINDING_ARB                             0x8677
+#define GL_MAX_VERTEX_ATTRIBS_ARB                          0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB              0x886A
+#define GL_PROGRAM_ERROR_STRING_ARB                        0x8874
+#define GL_PROGRAM_FORMAT_ASCII_ARB                        0x8875
+#define GL_PROGRAM_FORMAT_ARB                              0x8876
+#define GL_PROGRAM_INSTRUCTIONS_ARB                        0x88A0
+#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB                    0x88A1
+#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB                 0x88A2
+#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB             0x88A3
+#define GL_PROGRAM_TEMPORARIES_ARB                         0x88A4
+#define GL_MAX_PROGRAM_TEMPORARIES_ARB                     0x88A5
+#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB                  0x88A6
+#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB              0x88A7
+#define GL_PROGRAM_PARAMETERS_ARB                          0x88A8
+#define GL_MAX_PROGRAM_PARAMETERS_ARB                      0x88A9
+#define GL_PROGRAM_NATIVE_PARAMETERS_ARB                   0x88AA
+#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB               0x88AB
+#define GL_PROGRAM_ATTRIBS_ARB                             0x88AC
+#define GL_MAX_PROGRAM_ATTRIBS_ARB                         0x88AD
+#define GL_PROGRAM_NATIVE_ATTRIBS_ARB                      0x88AE
+#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB                  0x88AF
+#define GL_PROGRAM_ADDRESS_REGISTERS_ARB                   0x88B0
+#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB               0x88B1
+#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB            0x88B2
+#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB        0x88B3
+#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB                0x88B4
+#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB                  0x88B5
+#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB                 0x88B6
+#define GL_TRANSPOSE_CURRENT_MATRIX_ARB                    0x88B7
+#define GL_MATRIX0_ARB                                     0x88C0
+#define GL_MATRIX1_ARB                                     0x88C1
+#define GL_MATRIX2_ARB                                     0x88C2
+#define GL_MATRIX3_ARB                                     0x88C3
+#define GL_MATRIX4_ARB                                     0x88C4
+#define GL_MATRIX5_ARB                                     0x88C5
+#define GL_MATRIX6_ARB                                     0x88C6
+#define GL_MATRIX7_ARB                                     0x88C7
+#define GL_MATRIX8_ARB                                     0x88C8
+#define GL_MATRIX9_ARB                                     0x88C9
+#define GL_MATRIX10_ARB                                    0x88CA
+#define GL_MATRIX11_ARB                                    0x88CB
+#define GL_MATRIX12_ARB                                    0x88CC
+#define GL_MATRIX13_ARB                                    0x88CD
+#define GL_MATRIX14_ARB                                    0x88CE
+#define GL_MATRIX15_ARB                                    0x88CF
+#define GL_MATRIX16_ARB                                    0x88D0
+#define GL_MATRIX17_ARB                                    0x88D1
+#define GL_MATRIX18_ARB                                    0x88D2
+#define GL_MATRIX19_ARB                                    0x88D3
+#define GL_MATRIX20_ARB                                    0x88D4
+#define GL_MATRIX21_ARB                                    0x88D5
+#define GL_MATRIX22_ARB                                    0x88D6
+#define GL_MATRIX23_ARB                                    0x88D7
+#define GL_MATRIX24_ARB                                    0x88D8
+#define GL_MATRIX25_ARB                                    0x88D9
+#define GL_MATRIX26_ARB                                    0x88DA
+#define GL_MATRIX27_ARB                                    0x88DB
+#define GL_MATRIX28_ARB                                    0x88DC
+#define GL_MATRIX29_ARB                                    0x88DD
+#define GL_MATRIX30_ARB                                    0x88DE
+#define GL_MATRIX31_ARB                                    0x88DF
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid * string);
+typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint * programs);
+typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint * programs);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble * params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat * params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble * params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid * string);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* * pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
+GLEE_EXTERN PFNGLVERTEXATTRIB1DARBPROC pglVertexAttrib1dARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB1DVARBPROC pglVertexAttrib1dvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB1FARBPROC pglVertexAttrib1fARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB1FVARBPROC pglVertexAttrib1fvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB1SARBPROC pglVertexAttrib1sARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB1SVARBPROC pglVertexAttrib1svARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB2DARBPROC pglVertexAttrib2dARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB2DVARBPROC pglVertexAttrib2dvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB2FARBPROC pglVertexAttrib2fARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB2FVARBPROC pglVertexAttrib2fvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB2SARBPROC pglVertexAttrib2sARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB2SVARBPROC pglVertexAttrib2svARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB3DARBPROC pglVertexAttrib3dARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB3DVARBPROC pglVertexAttrib3dvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB3FARBPROC pglVertexAttrib3fARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB3FVARBPROC pglVertexAttrib3fvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB3SARBPROC pglVertexAttrib3sARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB3SVARBPROC pglVertexAttrib3svARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NBVARBPROC pglVertexAttrib4NbvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NIVARBPROC pglVertexAttrib4NivARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NSVARBPROC pglVertexAttrib4NsvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NUBARBPROC pglVertexAttrib4NubARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NUBVARBPROC pglVertexAttrib4NubvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NUIVARBPROC pglVertexAttrib4NuivARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4NUSVARBPROC pglVertexAttrib4NusvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4BVARBPROC pglVertexAttrib4bvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4DARBPROC pglVertexAttrib4dARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4DVARBPROC pglVertexAttrib4dvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4FARBPROC pglVertexAttrib4fARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4FVARBPROC pglVertexAttrib4fvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4IVARBPROC pglVertexAttrib4ivARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4SARBPROC pglVertexAttrib4sARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4SVARBPROC pglVertexAttrib4svARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4UBVARBPROC pglVertexAttrib4ubvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4UIVARBPROC pglVertexAttrib4uivARB;
+GLEE_EXTERN PFNGLVERTEXATTRIB4USVARBPROC pglVertexAttrib4usvARB;
+GLEE_EXTERN PFNGLVERTEXATTRIBPOINTERARBPROC pglVertexAttribPointerARB;
+GLEE_EXTERN PFNGLENABLEVERTEXATTRIBARRAYARBPROC pglEnableVertexAttribArrayARB;
+GLEE_EXTERN PFNGLDISABLEVERTEXATTRIBARRAYARBPROC pglDisableVertexAttribArrayARB;
+GLEE_EXTERN PFNGLPROGRAMSTRINGARBPROC pglProgramStringARB;
+GLEE_EXTERN PFNGLBINDPROGRAMARBPROC pglBindProgramARB;
+GLEE_EXTERN PFNGLDELETEPROGRAMSARBPROC pglDeleteProgramsARB;
+GLEE_EXTERN PFNGLGENPROGRAMSARBPROC pglGenProgramsARB;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETER4DARBPROC pglProgramEnvParameter4dARB;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETER4DVARBPROC pglProgramEnvParameter4dvARB;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETER4FARBPROC pglProgramEnvParameter4fARB;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETER4FVARBPROC pglProgramEnvParameter4fvARB;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETER4DARBPROC pglProgramLocalParameter4dARB;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETER4DVARBPROC pglProgramLocalParameter4dvARB;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETER4FARBPROC pglProgramLocalParameter4fARB;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETER4FVARBPROC pglProgramLocalParameter4fvARB;
+GLEE_EXTERN PFNGLGETPROGRAMENVPARAMETERDVARBPROC pglGetProgramEnvParameterdvARB;
+GLEE_EXTERN PFNGLGETPROGRAMENVPARAMETERFVARBPROC pglGetProgramEnvParameterfvARB;
+GLEE_EXTERN PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC pglGetProgramLocalParameterdvARB;
+GLEE_EXTERN PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC pglGetProgramLocalParameterfvARB;
+GLEE_EXTERN PFNGLGETPROGRAMIVARBPROC pglGetProgramivARB;
+GLEE_EXTERN PFNGLGETPROGRAMSTRINGARBPROC pglGetProgramStringARB;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBDVARBPROC pglGetVertexAttribdvARB;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBFVARBPROC pglGetVertexAttribfvARB;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBIVARBPROC pglGetVertexAttribivARB;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBPOINTERVARBPROC pglGetVertexAttribPointervARB;
+GLEE_EXTERN PFNGLISPROGRAMARBPROC pglIsProgramARB;
+#define glVertexAttrib1dARB pglVertexAttrib1dARB
+#define glVertexAttrib1dvARB pglVertexAttrib1dvARB
+#define glVertexAttrib1fARB pglVertexAttrib1fARB
+#define glVertexAttrib1fvARB pglVertexAttrib1fvARB
+#define glVertexAttrib1sARB pglVertexAttrib1sARB
+#define glVertexAttrib1svARB pglVertexAttrib1svARB
+#define glVertexAttrib2dARB pglVertexAttrib2dARB
+#define glVertexAttrib2dvARB pglVertexAttrib2dvARB
+#define glVertexAttrib2fARB pglVertexAttrib2fARB
+#define glVertexAttrib2fvARB pglVertexAttrib2fvARB
+#define glVertexAttrib2sARB pglVertexAttrib2sARB
+#define glVertexAttrib2svARB pglVertexAttrib2svARB
+#define glVertexAttrib3dARB pglVertexAttrib3dARB
+#define glVertexAttrib3dvARB pglVertexAttrib3dvARB
+#define glVertexAttrib3fARB pglVertexAttrib3fARB
+#define glVertexAttrib3fvARB pglVertexAttrib3fvARB
+#define glVertexAttrib3sARB pglVertexAttrib3sARB
+#define glVertexAttrib3svARB pglVertexAttrib3svARB
+#define glVertexAttrib4NbvARB pglVertexAttrib4NbvARB
+#define glVertexAttrib4NivARB pglVertexAttrib4NivARB
+#define glVertexAttrib4NsvARB pglVertexAttrib4NsvARB
+#define glVertexAttrib4NubARB pglVertexAttrib4NubARB
+#define glVertexAttrib4NubvARB pglVertexAttrib4NubvARB
+#define glVertexAttrib4NuivARB pglVertexAttrib4NuivARB
+#define glVertexAttrib4NusvARB pglVertexAttrib4NusvARB
+#define glVertexAttrib4bvARB pglVertexAttrib4bvARB
+#define glVertexAttrib4dARB pglVertexAttrib4dARB
+#define glVertexAttrib4dvARB pglVertexAttrib4dvARB
+#define glVertexAttrib4fARB pglVertexAttrib4fARB
+#define glVertexAttrib4fvARB pglVertexAttrib4fvARB
+#define glVertexAttrib4ivARB pglVertexAttrib4ivARB
+#define glVertexAttrib4sARB pglVertexAttrib4sARB
+#define glVertexAttrib4svARB pglVertexAttrib4svARB
+#define glVertexAttrib4ubvARB pglVertexAttrib4ubvARB
+#define glVertexAttrib4uivARB pglVertexAttrib4uivARB
+#define glVertexAttrib4usvARB pglVertexAttrib4usvARB
+#define glVertexAttribPointerARB pglVertexAttribPointerARB
+#define glEnableVertexAttribArrayARB pglEnableVertexAttribArrayARB
+#define glDisableVertexAttribArrayARB pglDisableVertexAttribArrayARB
+#define glProgramStringARB pglProgramStringARB
+#define glBindProgramARB pglBindProgramARB
+#define glDeleteProgramsARB pglDeleteProgramsARB
+#define glGenProgramsARB pglGenProgramsARB
+#define glProgramEnvParameter4dARB pglProgramEnvParameter4dARB
+#define glProgramEnvParameter4dvARB pglProgramEnvParameter4dvARB
+#define glProgramEnvParameter4fARB pglProgramEnvParameter4fARB
+#define glProgramEnvParameter4fvARB pglProgramEnvParameter4fvARB
+#define glProgramLocalParameter4dARB pglProgramLocalParameter4dARB
+#define glProgramLocalParameter4dvARB pglProgramLocalParameter4dvARB
+#define glProgramLocalParameter4fARB pglProgramLocalParameter4fARB
+#define glProgramLocalParameter4fvARB pglProgramLocalParameter4fvARB
+#define glGetProgramEnvParameterdvARB pglGetProgramEnvParameterdvARB
+#define glGetProgramEnvParameterfvARB pglGetProgramEnvParameterfvARB
+#define glGetProgramLocalParameterdvARB pglGetProgramLocalParameterdvARB
+#define glGetProgramLocalParameterfvARB pglGetProgramLocalParameterfvARB
+#define glGetProgramivARB pglGetProgramivARB
+#define glGetProgramStringARB pglGetProgramStringARB
+#define glGetVertexAttribdvARB pglGetVertexAttribdvARB
+#define glGetVertexAttribfvARB pglGetVertexAttribfvARB
+#define glGetVertexAttribivARB pglGetVertexAttribivARB
+#define glGetVertexAttribPointervARB pglGetVertexAttribPointervARB
+#define glIsProgramARB pglIsProgramARB
+#endif 
+
+/* GL_ARB_fragment_program */
+
+#ifndef GL_ARB_fragment_program
+#define GL_ARB_fragment_program 1
+#define __GLEE_GL_ARB_fragment_program 1
+/* Constants */
+#define GL_FRAGMENT_PROGRAM_ARB                            0x8804
+#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB                    0x8805
+#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB                    0x8806
+#define GL_PROGRAM_TEX_INDIRECTIONS_ARB                    0x8807
+#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB             0x8808
+#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB             0x8809
+#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB             0x880A
+#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB                0x880B
+#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB                0x880C
+#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB                0x880D
+#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB         0x880E
+#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB         0x880F
+#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB         0x8810
+#define GL_MAX_TEXTURE_COORDS_ARB                          0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB                     0x8872
+#endif 
+
+/* GL_ARB_vertex_buffer_object */
+
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_ARB_vertex_buffer_object 1
+#define __GLEE_GL_ARB_vertex_buffer_object 1
+/* Constants */
+#define GL_BUFFER_SIZE_ARB                                 0x8764
+#define GL_BUFFER_USAGE_ARB                                0x8765
+#define GL_ARRAY_BUFFER_ARB                                0x8892
+#define GL_ELEMENT_ARRAY_BUFFER_ARB                        0x8893
+#define GL_ARRAY_BUFFER_BINDING_ARB                        0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB                0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB                 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB                 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB                  0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB                  0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB          0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB              0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB        0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB         0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB                 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB          0x889F
+#define GL_READ_ONLY_ARB                                   0x88B8
+#define GL_WRITE_ONLY_ARB                                  0x88B9
+#define GL_READ_WRITE_ARB                                  0x88BA
+#define GL_BUFFER_ACCESS_ARB                               0x88BB
+#define GL_BUFFER_MAPPED_ARB                               0x88BC
+#define GL_BUFFER_MAP_POINTER_ARB                          0x88BD
+#define GL_STREAM_DRAW_ARB                                 0x88E0
+#define GL_STREAM_READ_ARB                                 0x88E1
+#define GL_STREAM_COPY_ARB                                 0x88E2
+#define GL_STATIC_DRAW_ARB                                 0x88E4
+#define GL_STATIC_READ_ARB                                 0x88E5
+#define GL_STATIC_COPY_ARB                                 0x88E6
+#define GL_DYNAMIC_DRAW_ARB                                0x88E8
+#define GL_DYNAMIC_READ_ARB                                0x88E9
+#define GL_DYNAMIC_COPY_ARB                                0x88EA
+typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint * buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint * buffers);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage);
+typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data);
+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* * params);
+GLEE_EXTERN PFNGLBINDBUFFERARBPROC pglBindBufferARB;
+GLEE_EXTERN PFNGLDELETEBUFFERSARBPROC pglDeleteBuffersARB;
+GLEE_EXTERN PFNGLGENBUFFERSARBPROC pglGenBuffersARB;
+GLEE_EXTERN PFNGLISBUFFERARBPROC pglIsBufferARB;
+GLEE_EXTERN PFNGLBUFFERDATAARBPROC pglBufferDataARB;
+GLEE_EXTERN PFNGLBUFFERSUBDATAARBPROC pglBufferSubDataARB;
+GLEE_EXTERN PFNGLGETBUFFERSUBDATAARBPROC pglGetBufferSubDataARB;
+GLEE_EXTERN PFNGLMAPBUFFERARBPROC pglMapBufferARB;
+GLEE_EXTERN PFNGLUNMAPBUFFERARBPROC pglUnmapBufferARB;
+GLEE_EXTERN PFNGLGETBUFFERPARAMETERIVARBPROC pglGetBufferParameterivARB;
+GLEE_EXTERN PFNGLGETBUFFERPOINTERVARBPROC pglGetBufferPointervARB;
+#define glBindBufferARB pglBindBufferARB
+#define glDeleteBuffersARB pglDeleteBuffersARB
+#define glGenBuffersARB pglGenBuffersARB
+#define glIsBufferARB pglIsBufferARB
+#define glBufferDataARB pglBufferDataARB
+#define glBufferSubDataARB pglBufferSubDataARB
+#define glGetBufferSubDataARB pglGetBufferSubDataARB
+#define glMapBufferARB pglMapBufferARB
+#define glUnmapBufferARB pglUnmapBufferARB
+#define glGetBufferParameterivARB pglGetBufferParameterivARB
+#define glGetBufferPointervARB pglGetBufferPointervARB
+#endif 
+
+/* GL_ARB_occlusion_query */
+
+#ifndef GL_ARB_occlusion_query
+#define GL_ARB_occlusion_query 1
+#define __GLEE_GL_ARB_occlusion_query 1
+/* Constants */
+#define GL_QUERY_COUNTER_BITS_ARB                          0x8864
+#define GL_CURRENT_QUERY_ARB                               0x8865
+#define GL_QUERY_RESULT_ARB                                0x8866
+#define GL_QUERY_RESULT_AVAILABLE_ARB                      0x8867
+#define GL_SAMPLES_PASSED_ARB                              0x8914
+typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint * ids);
+typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint * ids);
+typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint * params);
+GLEE_EXTERN PFNGLGENQUERIESARBPROC pglGenQueriesARB;
+GLEE_EXTERN PFNGLDELETEQUERIESARBPROC pglDeleteQueriesARB;
+GLEE_EXTERN PFNGLISQUERYARBPROC pglIsQueryARB;
+GLEE_EXTERN PFNGLBEGINQUERYARBPROC pglBeginQueryARB;
+GLEE_EXTERN PFNGLENDQUERYARBPROC pglEndQueryARB;
+GLEE_EXTERN PFNGLGETQUERYIVARBPROC pglGetQueryivARB;
+GLEE_EXTERN PFNGLGETQUERYOBJECTIVARBPROC pglGetQueryObjectivARB;
+GLEE_EXTERN PFNGLGETQUERYOBJECTUIVARBPROC pglGetQueryObjectuivARB;
+#define glGenQueriesARB pglGenQueriesARB
+#define glDeleteQueriesARB pglDeleteQueriesARB
+#define glIsQueryARB pglIsQueryARB
+#define glBeginQueryARB pglBeginQueryARB
+#define glEndQueryARB pglEndQueryARB
+#define glGetQueryivARB pglGetQueryivARB
+#define glGetQueryObjectivARB pglGetQueryObjectivARB
+#define glGetQueryObjectuivARB pglGetQueryObjectuivARB
+#endif 
+
+/* GL_ARB_shader_objects */
+
+#ifndef GL_ARB_shader_objects
+#define GL_ARB_shader_objects 1
+#define __GLEE_GL_ARB_shader_objects 1
+/* Constants */
+#define GL_PROGRAM_OBJECT_ARB                              0x8B40
+#define GL_SHADER_OBJECT_ARB                               0x8B48
+#define GL_OBJECT_TYPE_ARB                                 0x8B4E
+#define GL_OBJECT_SUBTYPE_ARB                              0x8B4F
+#define GL_FLOAT_VEC2_ARB                                  0x8B50
+#define GL_FLOAT_VEC3_ARB                                  0x8B51
+#define GL_FLOAT_VEC4_ARB                                  0x8B52
+#define GL_INT_VEC2_ARB                                    0x8B53
+#define GL_INT_VEC3_ARB                                    0x8B54
+#define GL_INT_VEC4_ARB                                    0x8B55
+#define GL_BOOL_ARB                                        0x8B56
+#define GL_BOOL_VEC2_ARB                                   0x8B57
+#define GL_BOOL_VEC3_ARB                                   0x8B58
+#define GL_BOOL_VEC4_ARB                                   0x8B59
+#define GL_FLOAT_MAT2_ARB                                  0x8B5A
+#define GL_FLOAT_MAT3_ARB                                  0x8B5B
+#define GL_FLOAT_MAT4_ARB                                  0x8B5C
+#define GL_SAMPLER_1D_ARB                                  0x8B5D
+#define GL_SAMPLER_2D_ARB                                  0x8B5E
+#define GL_SAMPLER_3D_ARB                                  0x8B5F
+#define GL_SAMPLER_CUBE_ARB                                0x8B60
+#define GL_SAMPLER_1D_SHADOW_ARB                           0x8B61
+#define GL_SAMPLER_2D_SHADOW_ARB                           0x8B62
+#define GL_SAMPLER_2D_RECT_ARB                             0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB                      0x8B64
+#define GL_OBJECT_DELETE_STATUS_ARB                        0x8B80
+#define GL_OBJECT_COMPILE_STATUS_ARB                       0x8B81
+#define GL_OBJECT_LINK_STATUS_ARB                          0x8B82
+#define GL_OBJECT_VALIDATE_STATUS_ARB                      0x8B83
+#define GL_OBJECT_INFO_LOG_LENGTH_ARB                      0x8B84
+#define GL_OBJECT_ATTACHED_OBJECTS_ARB                     0x8B85
+#define GL_OBJECT_ACTIVE_UNIFORMS_ARB                      0x8B86
+#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB            0x8B87
+#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB                 0x8B88
+typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
+typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
+typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
+typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
+typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* * string, const GLint * length);
+typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
+typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) ();
+typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
+typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint * value);
+typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint * value);
+typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint * value);
+typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog);
+typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB * name);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name);
+typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint * params);
+typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source);
+GLEE_EXTERN PFNGLDELETEOBJECTARBPROC pglDeleteObjectARB;
+GLEE_EXTERN PFNGLGETHANDLEARBPROC pglGetHandleARB;
+GLEE_EXTERN PFNGLDETACHOBJECTARBPROC pglDetachObjectARB;
+GLEE_EXTERN PFNGLCREATESHADEROBJECTARBPROC pglCreateShaderObjectARB;
+GLEE_EXTERN PFNGLSHADERSOURCEARBPROC pglShaderSourceARB;
+GLEE_EXTERN PFNGLCOMPILESHADERARBPROC pglCompileShaderARB;
+GLEE_EXTERN PFNGLCREATEPROGRAMOBJECTARBPROC pglCreateProgramObjectARB;
+GLEE_EXTERN PFNGLATTACHOBJECTARBPROC pglAttachObjectARB;
+GLEE_EXTERN PFNGLLINKPROGRAMARBPROC pglLinkProgramARB;
+GLEE_EXTERN PFNGLUSEPROGRAMOBJECTARBPROC pglUseProgramObjectARB;
+GLEE_EXTERN PFNGLVALIDATEPROGRAMARBPROC pglValidateProgramARB;
+GLEE_EXTERN PFNGLUNIFORM1FARBPROC pglUniform1fARB;
+GLEE_EXTERN PFNGLUNIFORM2FARBPROC pglUniform2fARB;
+GLEE_EXTERN PFNGLUNIFORM3FARBPROC pglUniform3fARB;
+GLEE_EXTERN PFNGLUNIFORM4FARBPROC pglUniform4fARB;
+GLEE_EXTERN PFNGLUNIFORM1IARBPROC pglUniform1iARB;
+GLEE_EXTERN PFNGLUNIFORM2IARBPROC pglUniform2iARB;
+GLEE_EXTERN PFNGLUNIFORM3IARBPROC pglUniform3iARB;
+GLEE_EXTERN PFNGLUNIFORM4IARBPROC pglUniform4iARB;
+GLEE_EXTERN PFNGLUNIFORM1FVARBPROC pglUniform1fvARB;
+GLEE_EXTERN PFNGLUNIFORM2FVARBPROC pglUniform2fvARB;
+GLEE_EXTERN PFNGLUNIFORM3FVARBPROC pglUniform3fvARB;
+GLEE_EXTERN PFNGLUNIFORM4FVARBPROC pglUniform4fvARB;
+GLEE_EXTERN PFNGLUNIFORM1IVARBPROC pglUniform1ivARB;
+GLEE_EXTERN PFNGLUNIFORM2IVARBPROC pglUniform2ivARB;
+GLEE_EXTERN PFNGLUNIFORM3IVARBPROC pglUniform3ivARB;
+GLEE_EXTERN PFNGLUNIFORM4IVARBPROC pglUniform4ivARB;
+GLEE_EXTERN PFNGLUNIFORMMATRIX2FVARBPROC pglUniformMatrix2fvARB;
+GLEE_EXTERN PFNGLUNIFORMMATRIX3FVARBPROC pglUniformMatrix3fvARB;
+GLEE_EXTERN PFNGLUNIFORMMATRIX4FVARBPROC pglUniformMatrix4fvARB;
+GLEE_EXTERN PFNGLGETOBJECTPARAMETERFVARBPROC pglGetObjectParameterfvARB;
+GLEE_EXTERN PFNGLGETOBJECTPARAMETERIVARBPROC pglGetObjectParameterivARB;
+GLEE_EXTERN PFNGLGETINFOLOGARBPROC pglGetInfoLogARB;
+GLEE_EXTERN PFNGLGETATTACHEDOBJECTSARBPROC pglGetAttachedObjectsARB;
+GLEE_EXTERN PFNGLGETUNIFORMLOCATIONARBPROC pglGetUniformLocationARB;
+GLEE_EXTERN PFNGLGETACTIVEUNIFORMARBPROC pglGetActiveUniformARB;
+GLEE_EXTERN PFNGLGETUNIFORMFVARBPROC pglGetUniformfvARB;
+GLEE_EXTERN PFNGLGETUNIFORMIVARBPROC pglGetUniformivARB;
+GLEE_EXTERN PFNGLGETSHADERSOURCEARBPROC pglGetShaderSourceARB;
+#define glDeleteObjectARB pglDeleteObjectARB
+#define glGetHandleARB pglGetHandleARB
+#define glDetachObjectARB pglDetachObjectARB
+#define glCreateShaderObjectARB pglCreateShaderObjectARB
+#define glShaderSourceARB pglShaderSourceARB
+#define glCompileShaderARB pglCompileShaderARB
+#define glCreateProgramObjectARB pglCreateProgramObjectARB
+#define glAttachObjectARB pglAttachObjectARB
+#define glLinkProgramARB pglLinkProgramARB
+#define glUseProgramObjectARB pglUseProgramObjectARB
+#define glValidateProgramARB pglValidateProgramARB
+#define glUniform1fARB pglUniform1fARB
+#define glUniform2fARB pglUniform2fARB
+#define glUniform3fARB pglUniform3fARB
+#define glUniform4fARB pglUniform4fARB
+#define glUniform1iARB pglUniform1iARB
+#define glUniform2iARB pglUniform2iARB
+#define glUniform3iARB pglUniform3iARB
+#define glUniform4iARB pglUniform4iARB
+#define glUniform1fvARB pglUniform1fvARB
+#define glUniform2fvARB pglUniform2fvARB
+#define glUniform3fvARB pglUniform3fvARB
+#define glUniform4fvARB pglUniform4fvARB
+#define glUniform1ivARB pglUniform1ivARB
+#define glUniform2ivARB pglUniform2ivARB
+#define glUniform3ivARB pglUniform3ivARB
+#define glUniform4ivARB pglUniform4ivARB
+#define glUniformMatrix2fvARB pglUniformMatrix2fvARB
+#define glUniformMatrix3fvARB pglUniformMatrix3fvARB
+#define glUniformMatrix4fvARB pglUniformMatrix4fvARB
+#define glGetObjectParameterfvARB pglGetObjectParameterfvARB
+#define glGetObjectParameterivARB pglGetObjectParameterivARB
+#define glGetInfoLogARB pglGetInfoLogARB
+#define glGetAttachedObjectsARB pglGetAttachedObjectsARB
+#define glGetUniformLocationARB pglGetUniformLocationARB
+#define glGetActiveUniformARB pglGetActiveUniformARB
+#define glGetUniformfvARB pglGetUniformfvARB
+#define glGetUniformivARB pglGetUniformivARB
+#define glGetShaderSourceARB pglGetShaderSourceARB
+#endif 
+
+/* GL_ARB_vertex_shader */
+
+#ifndef GL_ARB_vertex_shader
+#define GL_ARB_vertex_shader 1
+#define __GLEE_GL_ARB_vertex_shader 1
+/* Constants */
+#define GL_VERTEX_SHADER_ARB                               0x8B31
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB               0x8B4A
+#define GL_MAX_VARYING_FLOATS_ARB                          0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB              0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB            0x8B4D
+#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB                    0x8B89
+#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB          0x8B8A
+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB * name);
+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB * name);
+GLEE_EXTERN PFNGLBINDATTRIBLOCATIONARBPROC pglBindAttribLocationARB;
+GLEE_EXTERN PFNGLGETACTIVEATTRIBARBPROC pglGetActiveAttribARB;
+GLEE_EXTERN PFNGLGETATTRIBLOCATIONARBPROC pglGetAttribLocationARB;
+#define glBindAttribLocationARB pglBindAttribLocationARB
+#define glGetActiveAttribARB pglGetActiveAttribARB
+#define glGetAttribLocationARB pglGetAttribLocationARB
+#endif 
+
+/* GL_ARB_fragment_shader */
+
+#ifndef GL_ARB_fragment_shader
+#define GL_ARB_fragment_shader 1
+#define __GLEE_GL_ARB_fragment_shader 1
+/* Constants */
+#define GL_FRAGMENT_SHADER_ARB                             0x8B30
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB             0x8B49
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB             0x8B8B
+#endif 
+
+/* GL_ARB_shading_language_100 */
+
+#ifndef GL_ARB_shading_language_100
+#define GL_ARB_shading_language_100 1
+#define __GLEE_GL_ARB_shading_language_100 1
+/* Constants */
+#define GL_SHADING_LANGUAGE_VERSION_ARB                    0x8B8C
+#endif 
+
+/* GL_ARB_texture_non_power_of_two */
+
+#ifndef GL_ARB_texture_non_power_of_two
+#define GL_ARB_texture_non_power_of_two 1
+#define __GLEE_GL_ARB_texture_non_power_of_two 1
+/* Constants */
+#endif 
+
+/* GL_ARB_point_sprite */
+
+#ifndef GL_ARB_point_sprite
+#define GL_ARB_point_sprite 1
+#define __GLEE_GL_ARB_point_sprite 1
+/* Constants */
+#define GL_POINT_SPRITE_ARB                                0x8861
+#define GL_COORD_REPLACE_ARB                               0x8862
+#endif 
+
+/* GL_ARB_fragment_program_shadow */
+
+#ifndef GL_ARB_fragment_program_shadow
+#define GL_ARB_fragment_program_shadow 1
+#define __GLEE_GL_ARB_fragment_program_shadow 1
+/* Constants */
+#endif 
+
+/* GL_ARB_draw_buffers */
+
+#ifndef GL_ARB_draw_buffers
+#define GL_ARB_draw_buffers 1
+#define __GLEE_GL_ARB_draw_buffers 1
+/* Constants */
+#define GL_MAX_DRAW_BUFFERS_ARB                            0x8824
+#define GL_DRAW_BUFFER0_ARB                                0x8825
+#define GL_DRAW_BUFFER1_ARB                                0x8826
+#define GL_DRAW_BUFFER2_ARB                                0x8827
+#define GL_DRAW_BUFFER3_ARB                                0x8828
+#define GL_DRAW_BUFFER4_ARB                                0x8829
+#define GL_DRAW_BUFFER5_ARB                                0x882A
+#define GL_DRAW_BUFFER6_ARB                                0x882B
+#define GL_DRAW_BUFFER7_ARB                                0x882C
+#define GL_DRAW_BUFFER8_ARB                                0x882D
+#define GL_DRAW_BUFFER9_ARB                                0x882E
+#define GL_DRAW_BUFFER10_ARB                               0x882F
+#define GL_DRAW_BUFFER11_ARB                               0x8830
+#define GL_DRAW_BUFFER12_ARB                               0x8831
+#define GL_DRAW_BUFFER13_ARB                               0x8832
+#define GL_DRAW_BUFFER14_ARB                               0x8833
+#define GL_DRAW_BUFFER15_ARB                               0x8834
+typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum * bufs);
+GLEE_EXTERN PFNGLDRAWBUFFERSARBPROC pglDrawBuffersARB;
+#define glDrawBuffersARB pglDrawBuffersARB
+#endif 
+
+/* GL_ARB_texture_rectangle */
+
+#ifndef GL_ARB_texture_rectangle
+#define GL_ARB_texture_rectangle 1
+#define __GLEE_GL_ARB_texture_rectangle 1
+/* Constants */
+#define GL_TEXTURE_RECTANGLE_ARB                           0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB                   0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_ARB                     0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB                  0x84F8
+#endif 
+
+/* GL_ARB_color_buffer_float */
+
+#ifndef GL_ARB_color_buffer_float
+#define GL_ARB_color_buffer_float 1
+#define __GLEE_GL_ARB_color_buffer_float 1
+/* Constants */
+#define GL_RGBA_FLOAT_MODE_ARB                             0x8820
+#define GL_CLAMP_VERTEX_COLOR_ARB                          0x891A
+#define GL_CLAMP_FRAGMENT_COLOR_ARB                        0x891B
+#define GL_CLAMP_READ_COLOR_ARB                            0x891C
+#define GL_FIXED_ONLY_ARB                                  0x891D
+typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
+GLEE_EXTERN PFNGLCLAMPCOLORARBPROC pglClampColorARB;
+#define glClampColorARB pglClampColorARB
+#endif 
+
+/* GL_ARB_half_float_pixel */
+
+#ifndef GL_ARB_half_float_pixel
+#define GL_ARB_half_float_pixel 1
+#define __GLEE_GL_ARB_half_float_pixel 1
+/* Constants */
+#define GL_HALF_FLOAT_ARB                                  0x140B
+#endif 
+
+/* GL_ARB_texture_float */
+
+#ifndef GL_ARB_texture_float
+#define GL_ARB_texture_float 1
+#define __GLEE_GL_ARB_texture_float 1
+/* Constants */
+#define GL_TEXTURE_RED_TYPE_ARB                            0x8C10
+#define GL_TEXTURE_GREEN_TYPE_ARB                          0x8C11
+#define GL_TEXTURE_BLUE_TYPE_ARB                           0x8C12
+#define GL_TEXTURE_ALPHA_TYPE_ARB                          0x8C13
+#define GL_TEXTURE_LUMINANCE_TYPE_ARB                      0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE_ARB                      0x8C15
+#define GL_TEXTURE_DEPTH_TYPE_ARB                          0x8C16
+#define GL_UNSIGNED_NORMALIZED_ARB                         0x8C17
+#define GL_RGBA32F_ARB                                     0x8814
+#define GL_RGB32F_ARB                                      0x8815
+#define GL_ALPHA32F_ARB                                    0x8816
+#define GL_INTENSITY32F_ARB                                0x8817
+#define GL_LUMINANCE32F_ARB                                0x8818
+#define GL_LUMINANCE_ALPHA32F_ARB                          0x8819
+#define GL_RGBA16F_ARB                                     0x881A
+#define GL_RGB16F_ARB                                      0x881B
+#define GL_ALPHA16F_ARB                                    0x881C
+#define GL_INTENSITY16F_ARB                                0x881D
+#define GL_LUMINANCE16F_ARB                                0x881E
+#define GL_LUMINANCE_ALPHA16F_ARB                          0x881F
+#endif 
+
+/* GL_ARB_pixel_buffer_object */
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_ARB_pixel_buffer_object 1
+#define __GLEE_GL_ARB_pixel_buffer_object 1
+/* Constants */
+#define GL_PIXEL_PACK_BUFFER_ARB                           0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB                         0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB                   0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB                 0x88EF
+#endif 
+
+/* GL_EXT_abgr */
+
+#ifndef GL_EXT_abgr
+#define GL_EXT_abgr 1
+#define __GLEE_GL_EXT_abgr 1
+/* Constants */
+#define GL_ABGR_EXT                                        0x8000
+#endif 
+
+/* GL_EXT_blend_color */
+
+#ifndef GL_EXT_blend_color
+#define GL_EXT_blend_color 1
+#define __GLEE_GL_EXT_blend_color 1
+/* Constants */
+#define GL_CONSTANT_COLOR_EXT                              0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT                    0x8002
+#define GL_CONSTANT_ALPHA_EXT                              0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT                    0x8004
+#define GL_BLEND_COLOR_EXT                                 0x8005
+typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLEE_EXTERN PFNGLBLENDCOLOREXTPROC pglBlendColorEXT;
+#define glBlendColorEXT pglBlendColorEXT
+#endif 
+
+/* GL_EXT_polygon_offset */
+
+#ifndef GL_EXT_polygon_offset
+#define GL_EXT_polygon_offset 1
+#define __GLEE_GL_EXT_polygon_offset 1
+/* Constants */
+#define GL_POLYGON_OFFSET_EXT                              0x8037
+#define GL_POLYGON_OFFSET_FACTOR_EXT                       0x8038
+#define GL_POLYGON_OFFSET_BIAS_EXT                         0x8039
+typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
+GLEE_EXTERN PFNGLPOLYGONOFFSETEXTPROC pglPolygonOffsetEXT;
+#define glPolygonOffsetEXT pglPolygonOffsetEXT
+#endif 
+
+/* GL_EXT_texture */
+
+#ifndef GL_EXT_texture
+#define GL_EXT_texture 1
+#define __GLEE_GL_EXT_texture 1
+/* Constants */
+#define GL_ALPHA4_EXT                                      0x803B
+#define GL_ALPHA8_EXT                                      0x803C
+#define GL_ALPHA12_EXT                                     0x803D
+#define GL_ALPHA16_EXT                                     0x803E
+#define GL_LUMINANCE4_EXT                                  0x803F
+#define GL_LUMINANCE8_EXT                                  0x8040
+#define GL_LUMINANCE12_EXT                                 0x8041
+#define GL_LUMINANCE16_EXT                                 0x8042
+#define GL_LUMINANCE4_ALPHA4_EXT                           0x8043
+#define GL_LUMINANCE6_ALPHA2_EXT                           0x8044
+#define GL_LUMINANCE8_ALPHA8_EXT                           0x8045
+#define GL_LUMINANCE12_ALPHA4_EXT                          0x8046
+#define GL_LUMINANCE12_ALPHA12_EXT                         0x8047
+#define GL_LUMINANCE16_ALPHA16_EXT                         0x8048
+#define GL_INTENSITY_EXT                                   0x8049
+#define GL_INTENSITY4_EXT                                  0x804A
+#define GL_INTENSITY8_EXT                                  0x804B
+#define GL_INTENSITY12_EXT                                 0x804C
+#define GL_INTENSITY16_EXT                                 0x804D
+#define GL_RGB2_EXT                                        0x804E
+#define GL_RGB4_EXT                                        0x804F
+#define GL_RGB5_EXT                                        0x8050
+#define GL_RGB8_EXT                                        0x8051
+#define GL_RGB10_EXT                                       0x8052
+#define GL_RGB12_EXT                                       0x8053
+#define GL_RGB16_EXT                                       0x8054
+#define GL_RGBA2_EXT                                       0x8055
+#define GL_RGBA4_EXT                                       0x8056
+#define GL_RGB5_A1_EXT                                     0x8057
+#define GL_RGBA8_EXT                                       0x8058
+#define GL_RGB10_A2_EXT                                    0x8059
+#define GL_RGBA12_EXT                                      0x805A
+#define GL_RGBA16_EXT                                      0x805B
+#define GL_TEXTURE_RED_SIZE_EXT                            0x805C
+#define GL_TEXTURE_GREEN_SIZE_EXT                          0x805D
+#define GL_TEXTURE_BLUE_SIZE_EXT                           0x805E
+#define GL_TEXTURE_ALPHA_SIZE_EXT                          0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT                      0x8060
+#define GL_TEXTURE_INTENSITY_SIZE_EXT                      0x8061
+#define GL_REPLACE_EXT                                     0x8062
+#define GL_PROXY_TEXTURE_1D_EXT                            0x8063
+#define GL_PROXY_TEXTURE_2D_EXT                            0x8064
+#define GL_TEXTURE_TOO_LARGE_EXT                           0x8065
+#endif 
+
+/* GL_EXT_texture3D */
+
+#ifndef GL_EXT_texture3D
+#define GL_EXT_texture3D 1
+#define __GLEE_GL_EXT_texture3D 1
+/* Constants */
+#define GL_PACK_SKIP_IMAGES_EXT                            0x806B
+#define GL_PACK_IMAGE_HEIGHT_EXT                           0x806C
+#define GL_UNPACK_SKIP_IMAGES_EXT                          0x806D
+#define GL_UNPACK_IMAGE_HEIGHT_EXT                         0x806E
+#define GL_TEXTURE_3D_EXT                                  0x806F
+#define GL_PROXY_TEXTURE_3D_EXT                            0x8070
+#define GL_TEXTURE_DEPTH_EXT                               0x8071
+#define GL_TEXTURE_WRAP_R_EXT                              0x8072
+#define GL_MAX_3D_TEXTURE_SIZE_EXT                         0x8073
+typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels);
+GLEE_EXTERN PFNGLTEXIMAGE3DEXTPROC pglTexImage3DEXT;
+GLEE_EXTERN PFNGLTEXSUBIMAGE3DEXTPROC pglTexSubImage3DEXT;
+#define glTexImage3DEXT pglTexImage3DEXT
+#define glTexSubImage3DEXT pglTexSubImage3DEXT
+#endif 
+
+/* GL_SGIS_texture_filter4 */
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_SGIS_texture_filter4 1
+#define __GLEE_GL_SGIS_texture_filter4 1
+/* Constants */
+#define GL_FILTER4_SGIS                                    0x8146
+#define GL_TEXTURE_FILTER4_SIZE_SGIS                       0x8147
+typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat * weights);
+typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat * weights);
+GLEE_EXTERN PFNGLGETTEXFILTERFUNCSGISPROC pglGetTexFilterFuncSGIS;
+GLEE_EXTERN PFNGLTEXFILTERFUNCSGISPROC pglTexFilterFuncSGIS;
+#define glGetTexFilterFuncSGIS pglGetTexFilterFuncSGIS
+#define glTexFilterFuncSGIS pglTexFilterFuncSGIS
+#endif 
+
+/* GL_EXT_subtexture */
+
+#ifndef GL_EXT_subtexture
+#define GL_EXT_subtexture 1
+#define __GLEE_GL_EXT_subtexture 1
+/* Constants */
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels);
+GLEE_EXTERN PFNGLTEXSUBIMAGE1DEXTPROC pglTexSubImage1DEXT;
+GLEE_EXTERN PFNGLTEXSUBIMAGE2DEXTPROC pglTexSubImage2DEXT;
+#define glTexSubImage1DEXT pglTexSubImage1DEXT
+#define glTexSubImage2DEXT pglTexSubImage2DEXT
+#endif 
+
+/* GL_EXT_copy_texture */
+
+#ifndef GL_EXT_copy_texture
+#define GL_EXT_copy_texture 1
+#define __GLEE_GL_EXT_copy_texture 1
+/* Constants */
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLEE_EXTERN PFNGLCOPYTEXIMAGE1DEXTPROC pglCopyTexImage1DEXT;
+GLEE_EXTERN PFNGLCOPYTEXIMAGE2DEXTPROC pglCopyTexImage2DEXT;
+GLEE_EXTERN PFNGLCOPYTEXSUBIMAGE1DEXTPROC pglCopyTexSubImage1DEXT;
+GLEE_EXTERN PFNGLCOPYTEXSUBIMAGE2DEXTPROC pglCopyTexSubImage2DEXT;
+GLEE_EXTERN PFNGLCOPYTEXSUBIMAGE3DEXTPROC pglCopyTexSubImage3DEXT;
+#define glCopyTexImage1DEXT pglCopyTexImage1DEXT
+#define glCopyTexImage2DEXT pglCopyTexImage2DEXT
+#define glCopyTexSubImage1DEXT pglCopyTexSubImage1DEXT
+#define glCopyTexSubImage2DEXT pglCopyTexSubImage2DEXT
+#define glCopyTexSubImage3DEXT pglCopyTexSubImage3DEXT
+#endif 
+
+/* GL_EXT_histogram */
+
+#ifndef GL_EXT_histogram
+#define GL_EXT_histogram 1
+#define __GLEE_GL_EXT_histogram 1
+/* Constants */
+#define GL_HISTOGRAM_EXT                                   0x8024
+#define GL_PROXY_HISTOGRAM_EXT                             0x8025
+#define GL_HISTOGRAM_WIDTH_EXT                             0x8026
+#define GL_HISTOGRAM_FORMAT_EXT                            0x8027
+#define GL_HISTOGRAM_RED_SIZE_EXT                          0x8028
+#define GL_HISTOGRAM_GREEN_SIZE_EXT                        0x8029
+#define GL_HISTOGRAM_BLUE_SIZE_EXT                         0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE_EXT                        0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT                    0x802C
+#define GL_HISTOGRAM_SINK_EXT                              0x802D
+#define GL_MINMAX_EXT                                      0x802E
+#define GL_MINMAX_FORMAT_EXT                               0x802F
+#define GL_MINMAX_SINK_EXT                                 0x8030
+#define GL_TABLE_TOO_LARGE_EXT                             0x8031
+typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
+GLEE_EXTERN PFNGLGETHISTOGRAMEXTPROC pglGetHistogramEXT;
+GLEE_EXTERN PFNGLGETHISTOGRAMPARAMETERFVEXTPROC pglGetHistogramParameterfvEXT;
+GLEE_EXTERN PFNGLGETHISTOGRAMPARAMETERIVEXTPROC pglGetHistogramParameterivEXT;
+GLEE_EXTERN PFNGLGETMINMAXEXTPROC pglGetMinmaxEXT;
+GLEE_EXTERN PFNGLGETMINMAXPARAMETERFVEXTPROC pglGetMinmaxParameterfvEXT;
+GLEE_EXTERN PFNGLGETMINMAXPARAMETERIVEXTPROC pglGetMinmaxParameterivEXT;
+GLEE_EXTERN PFNGLHISTOGRAMEXTPROC pglHistogramEXT;
+GLEE_EXTERN PFNGLMINMAXEXTPROC pglMinmaxEXT;
+GLEE_EXTERN PFNGLRESETHISTOGRAMEXTPROC pglResetHistogramEXT;
+GLEE_EXTERN PFNGLRESETMINMAXEXTPROC pglResetMinmaxEXT;
+#define glGetHistogramEXT pglGetHistogramEXT
+#define glGetHistogramParameterfvEXT pglGetHistogramParameterfvEXT
+#define glGetHistogramParameterivEXT pglGetHistogramParameterivEXT
+#define glGetMinmaxEXT pglGetMinmaxEXT
+#define glGetMinmaxParameterfvEXT pglGetMinmaxParameterfvEXT
+#define glGetMinmaxParameterivEXT pglGetMinmaxParameterivEXT
+#define glHistogramEXT pglHistogramEXT
+#define glMinmaxEXT pglMinmaxEXT
+#define glResetHistogramEXT pglResetHistogramEXT
+#define glResetMinmaxEXT pglResetMinmaxEXT
+#endif 
+
+/* GL_EXT_convolution */
+
+#ifndef GL_EXT_convolution
+#define GL_EXT_convolution 1
+#define __GLEE_GL_EXT_convolution 1
+/* Constants */
+#define GL_CONVOLUTION_1D_EXT                              0x8010
+#define GL_CONVOLUTION_2D_EXT                              0x8011
+#define GL_SEPARABLE_2D_EXT                                0x8012
+#define GL_CONVOLUTION_BORDER_MODE_EXT                     0x8013
+#define GL_CONVOLUTION_FILTER_SCALE_EXT                    0x8014
+#define GL_CONVOLUTION_FILTER_BIAS_EXT                     0x8015
+#define GL_REDUCE_EXT                                      0x8016
+#define GL_CONVOLUTION_FORMAT_EXT                          0x8017
+#define GL_CONVOLUTION_WIDTH_EXT                           0x8018
+#define GL_CONVOLUTION_HEIGHT_EXT                          0x8019
+#define GL_MAX_CONVOLUTION_WIDTH_EXT                       0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT_EXT                      0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE_EXT                  0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT                0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT                 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT                0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS_EXT                   0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT                 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT                  0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT                 0x8023
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid * image);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column);
+GLEE_EXTERN PFNGLCONVOLUTIONFILTER1DEXTPROC pglConvolutionFilter1DEXT;
+GLEE_EXTERN PFNGLCONVOLUTIONFILTER2DEXTPROC pglConvolutionFilter2DEXT;
+GLEE_EXTERN PFNGLCONVOLUTIONPARAMETERFEXTPROC pglConvolutionParameterfEXT;
+GLEE_EXTERN PFNGLCONVOLUTIONPARAMETERFVEXTPROC pglConvolutionParameterfvEXT;
+GLEE_EXTERN PFNGLCONVOLUTIONPARAMETERIEXTPROC pglConvolutionParameteriEXT;
+GLEE_EXTERN PFNGLCONVOLUTIONPARAMETERIVEXTPROC pglConvolutionParameterivEXT;
+GLEE_EXTERN PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC pglCopyConvolutionFilter1DEXT;
+GLEE_EXTERN PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC pglCopyConvolutionFilter2DEXT;
+GLEE_EXTERN PFNGLGETCONVOLUTIONFILTEREXTPROC pglGetConvolutionFilterEXT;
+GLEE_EXTERN PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC pglGetConvolutionParameterfvEXT;
+GLEE_EXTERN PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC pglGetConvolutionParameterivEXT;
+GLEE_EXTERN PFNGLGETSEPARABLEFILTEREXTPROC pglGetSeparableFilterEXT;
+GLEE_EXTERN PFNGLSEPARABLEFILTER2DEXTPROC pglSeparableFilter2DEXT;
+#define glConvolutionFilter1DEXT pglConvolutionFilter1DEXT
+#define glConvolutionFilter2DEXT pglConvolutionFilter2DEXT
+#define glConvolutionParameterfEXT pglConvolutionParameterfEXT
+#define glConvolutionParameterfvEXT pglConvolutionParameterfvEXT
+#define glConvolutionParameteriEXT pglConvolutionParameteriEXT
+#define glConvolutionParameterivEXT pglConvolutionParameterivEXT
+#define glCopyConvolutionFilter1DEXT pglCopyConvolutionFilter1DEXT
+#define glCopyConvolutionFilter2DEXT pglCopyConvolutionFilter2DEXT
+#define glGetConvolutionFilterEXT pglGetConvolutionFilterEXT
+#define glGetConvolutionParameterfvEXT pglGetConvolutionParameterfvEXT
+#define glGetConvolutionParameterivEXT pglGetConvolutionParameterivEXT
+#define glGetSeparableFilterEXT pglGetSeparableFilterEXT
+#define glSeparableFilter2DEXT pglSeparableFilter2DEXT
+#endif 
+
+/* GL_SGI_color_matrix */
+
+#ifndef GL_SGI_color_matrix
+#define GL_SGI_color_matrix 1
+#define __GLEE_GL_SGI_color_matrix 1
+/* Constants */
+#define GL_COLOR_MATRIX_SGI                                0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI                    0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI                0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI                 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI               0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI                0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI               0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI                  0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI                0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI                 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI                0x80BB
+#endif 
+
+/* GL_SGI_color_table */
+
+#ifndef GL_SGI_color_table
+#define GL_SGI_color_table 1
+#define __GLEE_GL_SGI_color_table 1
+/* Constants */
+#define GL_COLOR_TABLE_SGI                                 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI                0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI               0x80D2
+#define GL_PROXY_COLOR_TABLE_SGI                           0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI          0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI         0x80D5
+#define GL_COLOR_TABLE_SCALE_SGI                           0x80D6
+#define GL_COLOR_TABLE_BIAS_SGI                            0x80D7
+#define GL_COLOR_TABLE_FORMAT_SGI                          0x80D8
+#define GL_COLOR_TABLE_WIDTH_SGI                           0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_SGI                        0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_SGI                      0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_SGI                       0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI                      0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI                  0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI                  0x80DF
+typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid * table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint * params);
+GLEE_EXTERN PFNGLCOLORTABLESGIPROC pglColorTableSGI;
+GLEE_EXTERN PFNGLCOLORTABLEPARAMETERFVSGIPROC pglColorTableParameterfvSGI;
+GLEE_EXTERN PFNGLCOLORTABLEPARAMETERIVSGIPROC pglColorTableParameterivSGI;
+GLEE_EXTERN PFNGLCOPYCOLORTABLESGIPROC pglCopyColorTableSGI;
+GLEE_EXTERN PFNGLGETCOLORTABLESGIPROC pglGetColorTableSGI;
+GLEE_EXTERN PFNGLGETCOLORTABLEPARAMETERFVSGIPROC pglGetColorTableParameterfvSGI;
+GLEE_EXTERN PFNGLGETCOLORTABLEPARAMETERIVSGIPROC pglGetColorTableParameterivSGI;
+#define glColorTableSGI pglColorTableSGI
+#define glColorTableParameterfvSGI pglColorTableParameterfvSGI
+#define glColorTableParameterivSGI pglColorTableParameterivSGI
+#define glCopyColorTableSGI pglCopyColorTableSGI
+#define glGetColorTableSGI pglGetColorTableSGI
+#define glGetColorTableParameterfvSGI pglGetColorTableParameterfvSGI
+#define glGetColorTableParameterivSGI pglGetColorTableParameterivSGI
+#endif 
+
+/* GL_SGIS_pixel_texture */
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_SGIS_pixel_texture 1
+#define __GLEE_GL_SGIS_pixel_texture 1
+/* Constants */
+#define GL_PIXEL_TEXTURE_SGIS                              0x8353
+#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS                  0x8354
+#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS                0x8355
+#define GL_PIXEL_GROUP_COLOR_SGIS                          0x8356
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat * params);
+GLEE_EXTERN PFNGLPIXELTEXGENPARAMETERISGISPROC pglPixelTexGenParameteriSGIS;
+GLEE_EXTERN PFNGLPIXELTEXGENPARAMETERIVSGISPROC pglPixelTexGenParameterivSGIS;
+GLEE_EXTERN PFNGLPIXELTEXGENPARAMETERFSGISPROC pglPixelTexGenParameterfSGIS;
+GLEE_EXTERN PFNGLPIXELTEXGENPARAMETERFVSGISPROC pglPixelTexGenParameterfvSGIS;
+GLEE_EXTERN PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC pglGetPixelTexGenParameterivSGIS;
+GLEE_EXTERN PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC pglGetPixelTexGenParameterfvSGIS;
+#define glPixelTexGenParameteriSGIS pglPixelTexGenParameteriSGIS
+#define glPixelTexGenParameterivSGIS pglPixelTexGenParameterivSGIS
+#define glPixelTexGenParameterfSGIS pglPixelTexGenParameterfSGIS
+#define glPixelTexGenParameterfvSGIS pglPixelTexGenParameterfvSGIS
+#define glGetPixelTexGenParameterivSGIS pglGetPixelTexGenParameterivSGIS
+#define glGetPixelTexGenParameterfvSGIS pglGetPixelTexGenParameterfvSGIS
+#endif 
+
+/* GL_SGIX_pixel_texture */
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_SGIX_pixel_texture 1
+#define __GLEE_GL_SGIX_pixel_texture 1
+/* Constants */
+#define GL_PIXEL_TEX_GEN_SGIX                              0x8139
+#define GL_PIXEL_TEX_GEN_MODE_SGIX                         0x832B
+typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
+GLEE_EXTERN PFNGLPIXELTEXGENSGIXPROC pglPixelTexGenSGIX;
+#define glPixelTexGenSGIX pglPixelTexGenSGIX
+#endif 
+
+/* GL_SGIS_texture4D */
+
+#ifndef GL_SGIS_texture4D
+#define GL_SGIS_texture4D 1
+#define __GLEE_GL_SGIS_texture4D 1
+/* Constants */
+#define GL_PACK_SKIP_VOLUMES_SGIS                          0x8130
+#define GL_PACK_IMAGE_DEPTH_SGIS                           0x8131
+#define GL_UNPACK_SKIP_VOLUMES_SGIS                        0x8132
+#define GL_UNPACK_IMAGE_DEPTH_SGIS                         0x8133
+#define GL_TEXTURE_4D_SGIS                                 0x8134
+#define GL_PROXY_TEXTURE_4D_SGIS                           0x8135
+#define GL_TEXTURE_4DSIZE_SGIS                             0x8136
+#define GL_TEXTURE_WRAP_Q_SGIS                             0x8137
+#define GL_MAX_4D_TEXTURE_SIZE_SGIS                        0x8138
+#define GL_TEXTURE_4D_BINDING_SGIS                         0x814F
+typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid * pixels);
+GLEE_EXTERN PFNGLTEXIMAGE4DSGISPROC pglTexImage4DSGIS;
+GLEE_EXTERN PFNGLTEXSUBIMAGE4DSGISPROC pglTexSubImage4DSGIS;
+#define glTexImage4DSGIS pglTexImage4DSGIS
+#define glTexSubImage4DSGIS pglTexSubImage4DSGIS
+#endif 
+
+/* GL_SGI_texture_color_table */
+
+#ifndef GL_SGI_texture_color_table
+#define GL_SGI_texture_color_table 1
+#define __GLEE_GL_SGI_texture_color_table 1
+/* Constants */
+#define GL_TEXTURE_COLOR_TABLE_SGI                         0x80BC
+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI                   0x80BD
+#endif 
+
+/* GL_EXT_cmyka */
+
+#ifndef GL_EXT_cmyka
+#define GL_EXT_cmyka 1
+#define __GLEE_GL_EXT_cmyka 1
+/* Constants */
+#define GL_CMYK_EXT                                        0x800C
+#define GL_CMYKA_EXT                                       0x800D
+#define GL_PACK_CMYK_HINT_EXT                              0x800E
+#define GL_UNPACK_CMYK_HINT_EXT                            0x800F
+#endif 
+
+/* GL_EXT_texture_object */
+
+#ifndef GL_EXT_texture_object
+#define GL_EXT_texture_object 1
+#define __GLEE_GL_EXT_texture_object 1
+/* Constants */
+#define GL_TEXTURE_PRIORITY_EXT                            0x8066
+#define GL_TEXTURE_RESIDENT_EXT                            0x8067
+#define GL_TEXTURE_1D_BINDING_EXT                          0x8068
+#define GL_TEXTURE_2D_BINDING_EXT                          0x8069
+#define GL_TEXTURE_3D_BINDING_EXT                          0x806A
+typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint * textures, GLboolean * residences);
+typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint * textures);
+typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint * textures);
+typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
+typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint * textures, const GLclampf * priorities);
+GLEE_EXTERN PFNGLARETEXTURESRESIDENTEXTPROC pglAreTexturesResidentEXT;
+GLEE_EXTERN PFNGLBINDTEXTUREEXTPROC pglBindTextureEXT;
+GLEE_EXTERN PFNGLDELETETEXTURESEXTPROC pglDeleteTexturesEXT;
+GLEE_EXTERN PFNGLGENTEXTURESEXTPROC pglGenTexturesEXT;
+GLEE_EXTERN PFNGLISTEXTUREEXTPROC pglIsTextureEXT;
+GLEE_EXTERN PFNGLPRIORITIZETEXTURESEXTPROC pglPrioritizeTexturesEXT;
+#define glAreTexturesResidentEXT pglAreTexturesResidentEXT
+#define glBindTextureEXT pglBindTextureEXT
+#define glDeleteTexturesEXT pglDeleteTexturesEXT
+#define glGenTexturesEXT pglGenTexturesEXT
+#define glIsTextureEXT pglIsTextureEXT
+#define glPrioritizeTexturesEXT pglPrioritizeTexturesEXT
+#endif 
+
+/* GL_SGIS_detail_texture */
+
+#ifndef GL_SGIS_detail_texture
+#define GL_SGIS_detail_texture 1
+#define __GLEE_GL_SGIS_detail_texture 1
+/* Constants */
+#define GL_DETAIL_TEXTURE_2D_SGIS                          0x8095
+#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS                  0x8096
+#define GL_LINEAR_DETAIL_SGIS                              0x8097
+#define GL_LINEAR_DETAIL_ALPHA_SGIS                        0x8098
+#define GL_LINEAR_DETAIL_COLOR_SGIS                        0x8099
+#define GL_DETAIL_TEXTURE_LEVEL_SGIS                       0x809A
+#define GL_DETAIL_TEXTURE_MODE_SGIS                        0x809B
+#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS                 0x809C
+typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat * points);
+typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat * points);
+GLEE_EXTERN PFNGLDETAILTEXFUNCSGISPROC pglDetailTexFuncSGIS;
+GLEE_EXTERN PFNGLGETDETAILTEXFUNCSGISPROC pglGetDetailTexFuncSGIS;
+#define glDetailTexFuncSGIS pglDetailTexFuncSGIS
+#define glGetDetailTexFuncSGIS pglGetDetailTexFuncSGIS
+#endif 
+
+/* GL_SGIS_sharpen_texture */
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_SGIS_sharpen_texture 1
+#define __GLEE_GL_SGIS_sharpen_texture 1
+/* Constants */
+#define GL_LINEAR_SHARPEN_SGIS                             0x80AD
+#define GL_LINEAR_SHARPEN_ALPHA_SGIS                       0x80AE
+#define GL_LINEAR_SHARPEN_COLOR_SGIS                       0x80AF
+#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS                0x80B0
+typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat * points);
+typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat * points);
+GLEE_EXTERN PFNGLSHARPENTEXFUNCSGISPROC pglSharpenTexFuncSGIS;
+GLEE_EXTERN PFNGLGETSHARPENTEXFUNCSGISPROC pglGetSharpenTexFuncSGIS;
+#define glSharpenTexFuncSGIS pglSharpenTexFuncSGIS
+#define glGetSharpenTexFuncSGIS pglGetSharpenTexFuncSGIS
+#endif 
+
+/* GL_EXT_packed_pixels */
+
+#ifndef GL_EXT_packed_pixels
+#define GL_EXT_packed_pixels 1
+#define __GLEE_GL_EXT_packed_pixels 1
+/* Constants */
+#define GL_UNSIGNED_BYTE_3_3_2_EXT                         0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT                      0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT                      0x8034
+#define GL_UNSIGNED_INT_8_8_8_8_EXT                        0x8035
+#define GL_UNSIGNED_INT_10_10_10_2_EXT                     0x8036
+#endif 
+
+/* GL_SGIS_texture_lod */
+
+#ifndef GL_SGIS_texture_lod
+#define GL_SGIS_texture_lod 1
+#define __GLEE_GL_SGIS_texture_lod 1
+/* Constants */
+#define GL_TEXTURE_MIN_LOD_SGIS                            0x813A
+#define GL_TEXTURE_MAX_LOD_SGIS                            0x813B
+#define GL_TEXTURE_BASE_LEVEL_SGIS                         0x813C
+#define GL_TEXTURE_MAX_LEVEL_SGIS                          0x813D
+#endif 
+
+/* GL_SGIS_multisample */
+
+#ifndef GL_SGIS_multisample
+#define GL_SGIS_multisample 1
+#define __GLEE_GL_SGIS_multisample 1
+/* Constants */
+#define GL_MULTISAMPLE_SGIS                                0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS                       0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS                        0x809F
+#define GL_SAMPLE_MASK_SGIS                                0x80A0
+#define GL_1PASS_SGIS                                      0x80A1
+#define GL_2PASS_0_SGIS                                    0x80A2
+#define GL_2PASS_1_SGIS                                    0x80A3
+#define GL_4PASS_0_SGIS                                    0x80A4
+#define GL_4PASS_1_SGIS                                    0x80A5
+#define GL_4PASS_2_SGIS                                    0x80A6
+#define GL_4PASS_3_SGIS                                    0x80A7
+#define GL_SAMPLE_BUFFERS_SGIS                             0x80A8
+#define GL_SAMPLES_SGIS                                    0x80A9
+#define GL_SAMPLE_MASK_VALUE_SGIS                          0x80AA
+#define GL_SAMPLE_MASK_INVERT_SGIS                         0x80AB
+#define GL_SAMPLE_PATTERN_SGIS                             0x80AC
+typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
+GLEE_EXTERN PFNGLSAMPLEMASKSGISPROC pglSampleMaskSGIS;
+GLEE_EXTERN PFNGLSAMPLEPATTERNSGISPROC pglSamplePatternSGIS;
+#define glSampleMaskSGIS pglSampleMaskSGIS
+#define glSamplePatternSGIS pglSamplePatternSGIS
+#endif 
+
+/* GL_EXT_rescale_normal */
+
+#ifndef GL_EXT_rescale_normal
+#define GL_EXT_rescale_normal 1
+#define __GLEE_GL_EXT_rescale_normal 1
+/* Constants */
+#define GL_RESCALE_NORMAL_EXT                              0x803A
+#endif 
+
+/* GL_EXT_vertex_array */
+
+#ifndef GL_EXT_vertex_array
+#define GL_EXT_vertex_array 1
+#define __GLEE_GL_EXT_vertex_array 1
+/* Constants */
+#define GL_VERTEX_ARRAY_EXT                                0x8074
+#define GL_NORMAL_ARRAY_EXT                                0x8075
+#define GL_COLOR_ARRAY_EXT                                 0x8076
+#define GL_INDEX_ARRAY_EXT                                 0x8077
+#define GL_TEXTURE_COORD_ARRAY_EXT                         0x8078
+#define GL_EDGE_FLAG_ARRAY_EXT                             0x8079
+#define GL_VERTEX_ARRAY_SIZE_EXT                           0x807A
+#define GL_VERTEX_ARRAY_TYPE_EXT                           0x807B
+#define GL_VERTEX_ARRAY_STRIDE_EXT                         0x807C
+#define GL_VERTEX_ARRAY_COUNT_EXT                          0x807D
+#define GL_NORMAL_ARRAY_TYPE_EXT                           0x807E
+#define GL_NORMAL_ARRAY_STRIDE_EXT                         0x807F
+#define GL_NORMAL_ARRAY_COUNT_EXT                          0x8080
+#define GL_COLOR_ARRAY_SIZE_EXT                            0x8081
+#define GL_COLOR_ARRAY_TYPE_EXT                            0x8082
+#define GL_COLOR_ARRAY_STRIDE_EXT                          0x8083
+#define GL_COLOR_ARRAY_COUNT_EXT                           0x8084
+#define GL_INDEX_ARRAY_TYPE_EXT                            0x8085
+#define GL_INDEX_ARRAY_STRIDE_EXT                          0x8086
+#define GL_INDEX_ARRAY_COUNT_EXT                           0x8087
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT                    0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT                    0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT                  0x808A
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT                   0x808B
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT                      0x808C
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT                       0x808D
+#define GL_VERTEX_ARRAY_POINTER_EXT                        0x808E
+#define GL_NORMAL_ARRAY_POINTER_EXT                        0x808F
+#define GL_COLOR_ARRAY_POINTER_EXT                         0x8090
+#define GL_INDEX_ARRAY_POINTER_EXT                         0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT                 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT                     0x8093
+typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
+typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean * pointer);
+typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* * params);
+typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
+GLEE_EXTERN PFNGLARRAYELEMENTEXTPROC pglArrayElementEXT;
+GLEE_EXTERN PFNGLCOLORPOINTEREXTPROC pglColorPointerEXT;
+GLEE_EXTERN PFNGLDRAWARRAYSEXTPROC pglDrawArraysEXT;
+GLEE_EXTERN PFNGLEDGEFLAGPOINTEREXTPROC pglEdgeFlagPointerEXT;
+GLEE_EXTERN PFNGLGETPOINTERVEXTPROC pglGetPointervEXT;
+GLEE_EXTERN PFNGLINDEXPOINTEREXTPROC pglIndexPointerEXT;
+GLEE_EXTERN PFNGLNORMALPOINTEREXTPROC pglNormalPointerEXT;
+GLEE_EXTERN PFNGLTEXCOORDPOINTEREXTPROC pglTexCoordPointerEXT;
+GLEE_EXTERN PFNGLVERTEXPOINTEREXTPROC pglVertexPointerEXT;
+#define glArrayElementEXT pglArrayElementEXT
+#define glColorPointerEXT pglColorPointerEXT
+#define glDrawArraysEXT pglDrawArraysEXT
+#define glEdgeFlagPointerEXT pglEdgeFlagPointerEXT
+#define glGetPointervEXT pglGetPointervEXT
+#define glIndexPointerEXT pglIndexPointerEXT
+#define glNormalPointerEXT pglNormalPointerEXT
+#define glTexCoordPointerEXT pglTexCoordPointerEXT
+#define glVertexPointerEXT pglVertexPointerEXT
+#endif 
+
+/* GL_EXT_misc_attribute */
+
+#ifndef GL_EXT_misc_attribute
+#define GL_EXT_misc_attribute 1
+#define __GLEE_GL_EXT_misc_attribute 1
+/* Constants */
+#endif 
+
+/* GL_SGIS_generate_mipmap */
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_SGIS_generate_mipmap 1
+#define __GLEE_GL_SGIS_generate_mipmap 1
+/* Constants */
+#define GL_GENERATE_MIPMAP_SGIS                            0x8191
+#define GL_GENERATE_MIPMAP_HINT_SGIS                       0x8192
+#endif 
+
+/* GL_SGIX_clipmap */
+
+#ifndef GL_SGIX_clipmap
+#define GL_SGIX_clipmap 1
+#define __GLEE_GL_SGIX_clipmap 1
+/* Constants */
+#define GL_LINEAR_CLIPMAP_LINEAR_SGIX                      0x8170
+#define GL_TEXTURE_CLIPMAP_CENTER_SGIX                     0x8171
+#define GL_TEXTURE_CLIPMAP_FRAME_SGIX                      0x8172
+#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX                     0x8173
+#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX              0x8174
+#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX                 0x8175
+#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX                      0x8176
+#define GL_MAX_CLIPMAP_DEPTH_SGIX                          0x8177
+#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX                  0x8178
+#define GL_NEAREST_CLIPMAP_NEAREST_SGIX                    0x844D
+#define GL_NEAREST_CLIPMAP_LINEAR_SGIX                     0x844E
+#define GL_LINEAR_CLIPMAP_NEAREST_SGIX                     0x844F
+#endif 
+
+/* GL_SGIX_shadow */
+
+#ifndef GL_SGIX_shadow
+#define GL_SGIX_shadow 1
+#define __GLEE_GL_SGIX_shadow 1
+/* Constants */
+#define GL_TEXTURE_COMPARE_SGIX                            0x819A
+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX                   0x819B
+#define GL_TEXTURE_LEQUAL_R_SGIX                           0x819C
+#define GL_TEXTURE_GEQUAL_R_SGIX                           0x819D
+#endif 
+
+/* GL_SGIS_texture_edge_clamp */
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_SGIS_texture_edge_clamp 1
+#define __GLEE_GL_SGIS_texture_edge_clamp 1
+/* Constants */
+#define GL_CLAMP_TO_EDGE_SGIS                              0x812F
+#endif 
+
+/* GL_SGIS_texture_border_clamp */
+
+#ifndef GL_SGIS_texture_border_clamp
+#define GL_SGIS_texture_border_clamp 1
+#define __GLEE_GL_SGIS_texture_border_clamp 1
+/* Constants */
+#define GL_CLAMP_TO_BORDER_SGIS                            0x812D
+#endif 
+
+/* GL_EXT_blend_minmax */
+
+#ifndef GL_EXT_blend_minmax
+#define GL_EXT_blend_minmax 1
+#define __GLEE_GL_EXT_blend_minmax 1
+/* Constants */
+#define GL_FUNC_ADD_EXT                                    0x8006
+#define GL_MIN_EXT                                         0x8007
+#define GL_MAX_EXT                                         0x8008
+#define GL_BLEND_EQUATION_EXT                              0x8009
+typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
+GLEE_EXTERN PFNGLBLENDEQUATIONEXTPROC pglBlendEquationEXT;
+#define glBlendEquationEXT pglBlendEquationEXT
+#endif 
+
+/* GL_EXT_blend_subtract */
+
+#ifndef GL_EXT_blend_subtract
+#define GL_EXT_blend_subtract 1
+#define __GLEE_GL_EXT_blend_subtract 1
+/* Constants */
+#define GL_FUNC_SUBTRACT_EXT                               0x800A
+#define GL_FUNC_REVERSE_SUBTRACT_EXT                       0x800B
+#endif 
+
+/* GL_EXT_blend_logic_op */
+
+#ifndef GL_EXT_blend_logic_op
+#define GL_EXT_blend_logic_op 1
+#define __GLEE_GL_EXT_blend_logic_op 1
+/* Constants */
+#endif 
+
+/* GL_SGIX_interlace */
+
+#ifndef GL_SGIX_interlace
+#define GL_SGIX_interlace 1
+#define __GLEE_GL_SGIX_interlace 1
+/* Constants */
+#define GL_INTERLACE_SGIX                                  0x8094
+#endif 
+
+/* GL_SGIX_pixel_tiles */
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_SGIX_pixel_tiles 1
+#define __GLEE_GL_SGIX_pixel_tiles 1
+/* Constants */
+#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX                  0x813E
+#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX                 0x813F
+#define GL_PIXEL_TILE_WIDTH_SGIX                           0x8140
+#define GL_PIXEL_TILE_HEIGHT_SGIX                          0x8141
+#define GL_PIXEL_TILE_GRID_WIDTH_SGIX                      0x8142
+#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX                     0x8143
+#define GL_PIXEL_TILE_GRID_DEPTH_SGIX                      0x8144
+#define GL_PIXEL_TILE_CACHE_SIZE_SGIX                      0x8145
+#endif 
+
+/* GL_SGIS_texture_select */
+
+#ifndef GL_SGIS_texture_select
+#define GL_SGIS_texture_select 1
+#define __GLEE_GL_SGIS_texture_select 1
+/* Constants */
+#define GL_DUAL_ALPHA4_SGIS                                0x8110
+#define GL_DUAL_ALPHA8_SGIS                                0x8111
+#define GL_DUAL_ALPHA12_SGIS                               0x8112
+#define GL_DUAL_ALPHA16_SGIS                               0x8113
+#define GL_DUAL_LUMINANCE4_SGIS                            0x8114
+#define GL_DUAL_LUMINANCE8_SGIS                            0x8115
+#define GL_DUAL_LUMINANCE12_SGIS                           0x8116
+#define GL_DUAL_LUMINANCE16_SGIS                           0x8117
+#define GL_DUAL_INTENSITY4_SGIS                            0x8118
+#define GL_DUAL_INTENSITY8_SGIS                            0x8119
+#define GL_DUAL_INTENSITY12_SGIS                           0x811A
+#define GL_DUAL_INTENSITY16_SGIS                           0x811B
+#define GL_DUAL_LUMINANCE_ALPHA4_SGIS                      0x811C
+#define GL_DUAL_LUMINANCE_ALPHA8_SGIS                      0x811D
+#define GL_QUAD_ALPHA4_SGIS                                0x811E
+#define GL_QUAD_ALPHA8_SGIS                                0x811F
+#define GL_QUAD_LUMINANCE4_SGIS                            0x8120
+#define GL_QUAD_LUMINANCE8_SGIS                            0x8121
+#define GL_QUAD_INTENSITY4_SGIS                            0x8122
+#define GL_QUAD_INTENSITY8_SGIS                            0x8123
+#define GL_DUAL_TEXTURE_SELECT_SGIS                        0x8124
+#define GL_QUAD_TEXTURE_SELECT_SGIS                        0x8125
+#endif 
+
+/* GL_SGIX_sprite */
+
+#ifndef GL_SGIX_sprite
+#define GL_SGIX_sprite 1
+#define __GLEE_GL_SGIX_sprite 1
+/* Constants */
+#define GL_SPRITE_SGIX                                     0x8148
+#define GL_SPRITE_MODE_SGIX                                0x8149
+#define GL_SPRITE_AXIS_SGIX                                0x814A
+#define GL_SPRITE_TRANSLATION_SGIX                         0x814B
+#define GL_SPRITE_AXIAL_SGIX                               0x814C
+#define GL_SPRITE_OBJECT_ALIGNED_SGIX                      0x814D
+#define GL_SPRITE_EYE_ALIGNED_SGIX                         0x814E
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint * params);
+GLEE_EXTERN PFNGLSPRITEPARAMETERFSGIXPROC pglSpriteParameterfSGIX;
+GLEE_EXTERN PFNGLSPRITEPARAMETERFVSGIXPROC pglSpriteParameterfvSGIX;
+GLEE_EXTERN PFNGLSPRITEPARAMETERISGIXPROC pglSpriteParameteriSGIX;
+GLEE_EXTERN PFNGLSPRITEPARAMETERIVSGIXPROC pglSpriteParameterivSGIX;
+#define glSpriteParameterfSGIX pglSpriteParameterfSGIX
+#define glSpriteParameterfvSGIX pglSpriteParameterfvSGIX
+#define glSpriteParameteriSGIX pglSpriteParameteriSGIX
+#define glSpriteParameterivSGIX pglSpriteParameterivSGIX
+#endif 
+
+/* GL_SGIX_texture_multi_buffer */
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_SGIX_texture_multi_buffer 1
+#define __GLEE_GL_SGIX_texture_multi_buffer 1
+/* Constants */
+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX                  0x812E
+#endif 
+
+/* GL_EXT_point_parameters */
+
+#ifndef GL_EXT_point_parameters
+#define GL_EXT_point_parameters 1
+#define __GLEE_GL_EXT_point_parameters 1
+/* Constants */
+#define GL_POINT_SIZE_MIN_EXT                              0x8126
+#define GL_POINT_SIZE_MAX_EXT                              0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT                   0x8128
+#define GL_DISTANCE_ATTENUATION_EXT                        0x8129
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat * params);
+GLEE_EXTERN PFNGLPOINTPARAMETERFEXTPROC pglPointParameterfEXT;
+GLEE_EXTERN PFNGLPOINTPARAMETERFVEXTPROC pglPointParameterfvEXT;
+#define glPointParameterfEXT pglPointParameterfEXT
+#define glPointParameterfvEXT pglPointParameterfvEXT
+#endif 
+
+/* GL_SGIS_point_parameters */
+
+#ifndef GL_SGIS_point_parameters
+#define GL_SGIS_point_parameters 1
+#define __GLEE_GL_SGIS_point_parameters 1
+/* Constants */
+#define GL_POINT_SIZE_MIN_SGIS                             0x8126
+#define GL_POINT_SIZE_MAX_SGIS                             0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS                  0x8128
+#define GL_DISTANCE_ATTENUATION_SGIS                       0x8129
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat * params);
+GLEE_EXTERN PFNGLPOINTPARAMETERFSGISPROC pglPointParameterfSGIS;
+GLEE_EXTERN PFNGLPOINTPARAMETERFVSGISPROC pglPointParameterfvSGIS;
+#define glPointParameterfSGIS pglPointParameterfSGIS
+#define glPointParameterfvSGIS pglPointParameterfvSGIS
+#endif 
+
+/* GL_SGIX_instruments */
+
+#ifndef GL_SGIX_instruments
+#define GL_SGIX_instruments 1
+#define __GLEE_GL_SGIX_instruments 1
+/* Constants */
+#define GL_INSTRUMENT_BUFFER_POINTER_SGIX                  0x8180
+#define GL_INSTRUMENT_MEASUREMENTS_SGIX                    0x8181
+typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) ();
+typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint * buffer);
+typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint * marker_p);
+typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
+typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) ();
+typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
+GLEE_EXTERN PFNGLGETINSTRUMENTSSGIXPROC pglGetInstrumentsSGIX;
+GLEE_EXTERN PFNGLINSTRUMENTSBUFFERSGIXPROC pglInstrumentsBufferSGIX;
+GLEE_EXTERN PFNGLPOLLINSTRUMENTSSGIXPROC pglPollInstrumentsSGIX;
+GLEE_EXTERN PFNGLREADINSTRUMENTSSGIXPROC pglReadInstrumentsSGIX;
+GLEE_EXTERN PFNGLSTARTINSTRUMENTSSGIXPROC pglStartInstrumentsSGIX;
+GLEE_EXTERN PFNGLSTOPINSTRUMENTSSGIXPROC pglStopInstrumentsSGIX;
+#define glGetInstrumentsSGIX pglGetInstrumentsSGIX
+#define glInstrumentsBufferSGIX pglInstrumentsBufferSGIX
+#define glPollInstrumentsSGIX pglPollInstrumentsSGIX
+#define glReadInstrumentsSGIX pglReadInstrumentsSGIX
+#define glStartInstrumentsSGIX pglStartInstrumentsSGIX
+#define glStopInstrumentsSGIX pglStopInstrumentsSGIX
+#endif 
+
+/* GL_SGIX_texture_scale_bias */
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_SGIX_texture_scale_bias 1
+#define __GLEE_GL_SGIX_texture_scale_bias 1
+/* Constants */
+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX                   0x8179
+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX                  0x817A
+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX             0x817B
+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX            0x817C
+#endif 
+
+/* GL_SGIX_framezoom */
+
+#ifndef GL_SGIX_framezoom
+#define GL_SGIX_framezoom 1
+#define __GLEE_GL_SGIX_framezoom 1
+/* Constants */
+#define GL_FRAMEZOOM_SGIX                                  0x818B
+#define GL_FRAMEZOOM_FACTOR_SGIX                           0x818C
+#define GL_MAX_FRAMEZOOM_FACTOR_SGIX                       0x818D
+typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
+GLEE_EXTERN PFNGLFRAMEZOOMSGIXPROC pglFrameZoomSGIX;
+#define glFrameZoomSGIX pglFrameZoomSGIX
+#endif 
+
+/* GL_SGIX_tag_sample_buffer */
+
+#ifndef GL_SGIX_tag_sample_buffer
+#define GL_SGIX_tag_sample_buffer 1
+#define __GLEE_GL_SGIX_tag_sample_buffer 1
+/* Constants */
+typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) ();
+GLEE_EXTERN PFNGLTAGSAMPLEBUFFERSGIXPROC pglTagSampleBufferSGIX;
+#define glTagSampleBufferSGIX pglTagSampleBufferSGIX
+#endif 
+
+/* GL_FfdMaskSGIX */
+
+#ifndef GL_FfdMaskSGIX
+#define GL_FfdMaskSGIX 1
+#define __GLEE_GL_FfdMaskSGIX 1
+/* Constants */
+#define GL_TEXTURE_DEFORMATION_BIT_SGIX                    0x00000001
+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX                   0x00000002
+#endif 
+
+/* GL_SGIX_polynomial_ffd */
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_SGIX_polynomial_ffd 1
+#define __GLEE_GL_SGIX_polynomial_ffd 1
+/* Constants */
+#define GL_GEOMETRY_DEFORMATION_SGIX                       0x8194
+#define GL_TEXTURE_DEFORMATION_SGIX                        0x8195
+#define GL_DEFORMATIONS_MASK_SGIX                          0x8196
+#define GL_MAX_DEFORMATION_ORDER_SGIX                      0x8197
+typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble * points);
+typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat * points);
+typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
+GLEE_EXTERN PFNGLDEFORMATIONMAP3DSGIXPROC pglDeformationMap3dSGIX;
+GLEE_EXTERN PFNGLDEFORMATIONMAP3FSGIXPROC pglDeformationMap3fSGIX;
+GLEE_EXTERN PFNGLDEFORMSGIXPROC pglDeformSGIX;
+GLEE_EXTERN PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC pglLoadIdentityDeformationMapSGIX;
+#define glDeformationMap3dSGIX pglDeformationMap3dSGIX
+#define glDeformationMap3fSGIX pglDeformationMap3fSGIX
+#define glDeformSGIX pglDeformSGIX
+#define glLoadIdentityDeformationMapSGIX pglLoadIdentityDeformationMapSGIX
+#endif 
+
+/* GL_SGIX_reference_plane */
+
+#ifndef GL_SGIX_reference_plane
+#define GL_SGIX_reference_plane 1
+#define __GLEE_GL_SGIX_reference_plane 1
+/* Constants */
+#define GL_REFERENCE_PLANE_SGIX                            0x817D
+#define GL_REFERENCE_PLANE_EQUATION_SGIX                   0x817E
+typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble * equation);
+GLEE_EXTERN PFNGLREFERENCEPLANESGIXPROC pglReferencePlaneSGIX;
+#define glReferencePlaneSGIX pglReferencePlaneSGIX
+#endif 
+
+/* GL_SGIX_flush_raster */
+
+#ifndef GL_SGIX_flush_raster
+#define GL_SGIX_flush_raster 1
+#define __GLEE_GL_SGIX_flush_raster 1
+/* Constants */
+typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) ();
+GLEE_EXTERN PFNGLFLUSHRASTERSGIXPROC pglFlushRasterSGIX;
+#define glFlushRasterSGIX pglFlushRasterSGIX
+#endif 
+
+/* GL_SGIX_depth_texture */
+
+#ifndef GL_SGIX_depth_texture
+#define GL_SGIX_depth_texture 1
+#define __GLEE_GL_SGIX_depth_texture 1
+/* Constants */
+#define GL_DEPTH_COMPONENT16_SGIX                          0x81A5
+#define GL_DEPTH_COMPONENT24_SGIX                          0x81A6
+#define GL_DEPTH_COMPONENT32_SGIX                          0x81A7
+#endif 
+
+/* GL_SGIS_fog_function */
+
+#ifndef GL_SGIS_fog_function
+#define GL_SGIS_fog_function 1
+#define __GLEE_GL_SGIS_fog_function 1
+/* Constants */
+#define GL_FOG_FUNC_SGIS                                   0x812A
+#define GL_FOG_FUNC_POINTS_SGIS                            0x812B
+#define GL_MAX_FOG_FUNC_POINTS_SGIS                        0x812C
+typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat * points);
+typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat * points);
+GLEE_EXTERN PFNGLFOGFUNCSGISPROC pglFogFuncSGIS;
+GLEE_EXTERN PFNGLGETFOGFUNCSGISPROC pglGetFogFuncSGIS;
+#define glFogFuncSGIS pglFogFuncSGIS
+#define glGetFogFuncSGIS pglGetFogFuncSGIS
+#endif 
+
+/* GL_SGIX_fog_offset */
+
+#ifndef GL_SGIX_fog_offset
+#define GL_SGIX_fog_offset 1
+#define __GLEE_GL_SGIX_fog_offset 1
+/* Constants */
+#define GL_FOG_OFFSET_SGIX                                 0x8198
+#define GL_FOG_OFFSET_VALUE_SGIX                           0x8199
+#endif 
+
+/* GL_HP_image_transform */
+
+#ifndef GL_HP_image_transform
+#define GL_HP_image_transform 1
+#define __GLEE_GL_HP_image_transform 1
+/* Constants */
+#define GL_IMAGE_SCALE_X_HP                                0x8155
+#define GL_IMAGE_SCALE_Y_HP                                0x8156
+#define GL_IMAGE_TRANSLATE_X_HP                            0x8157
+#define GL_IMAGE_TRANSLATE_Y_HP                            0x8158
+#define GL_IMAGE_ROTATE_ANGLE_HP                           0x8159
+#define GL_IMAGE_ROTATE_ORIGIN_X_HP                        0x815A
+#define GL_IMAGE_ROTATE_ORIGIN_Y_HP                        0x815B
+#define GL_IMAGE_MAG_FILTER_HP                             0x815C
+#define GL_IMAGE_MIN_FILTER_HP                             0x815D
+#define GL_IMAGE_CUBIC_WEIGHT_HP                           0x815E
+#define GL_CUBIC_HP                                        0x815F
+#define GL_AVERAGE_HP                                      0x8160
+#define GL_IMAGE_TRANSFORM_2D_HP                           0x8161
+#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP             0x8162
+#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP       0x8163
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat * params);
+GLEE_EXTERN PFNGLIMAGETRANSFORMPARAMETERIHPPROC pglImageTransformParameteriHP;
+GLEE_EXTERN PFNGLIMAGETRANSFORMPARAMETERFHPPROC pglImageTransformParameterfHP;
+GLEE_EXTERN PFNGLIMAGETRANSFORMPARAMETERIVHPPROC pglImageTransformParameterivHP;
+GLEE_EXTERN PFNGLIMAGETRANSFORMPARAMETERFVHPPROC pglImageTransformParameterfvHP;
+GLEE_EXTERN PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC pglGetImageTransformParameterivHP;
+GLEE_EXTERN PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC pglGetImageTransformParameterfvHP;
+#define glImageTransformParameteriHP pglImageTransformParameteriHP
+#define glImageTransformParameterfHP pglImageTransformParameterfHP
+#define glImageTransformParameterivHP pglImageTransformParameterivHP
+#define glImageTransformParameterfvHP pglImageTransformParameterfvHP
+#define glGetImageTransformParameterivHP pglGetImageTransformParameterivHP
+#define glGetImageTransformParameterfvHP pglGetImageTransformParameterfvHP
+#endif 
+
+/* GL_HP_convolution_border_modes */
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_HP_convolution_border_modes 1
+#define __GLEE_GL_HP_convolution_border_modes 1
+/* Constants */
+#define GL_IGNORE_BORDER_HP                                0x8150
+#define GL_CONSTANT_BORDER_HP                              0x8151
+#define GL_REPLICATE_BORDER_HP                             0x8153
+#define GL_CONVOLUTION_BORDER_COLOR_HP                     0x8154
+#endif 
+
+/* GL_INGR_palette_buffer */
+
+#ifndef GL_INGR_palette_buffer
+#define GL_INGR_palette_buffer 1
+#define __GLEE_GL_INGR_palette_buffer 1
+/* Constants */
+#endif 
+
+/* GL_SGIX_texture_add_env */
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_SGIX_texture_add_env 1
+#define __GLEE_GL_SGIX_texture_add_env 1
+/* Constants */
+#define GL_TEXTURE_ENV_BIAS_SGIX                           0x80BE
+#endif 
+
+/* GL_EXT_color_subtable */
+
+#ifndef GL_EXT_color_subtable
+#define GL_EXT_color_subtable 1
+#define __GLEE_GL_EXT_color_subtable 1
+/* Constants */
+typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data);
+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+GLEE_EXTERN PFNGLCOLORSUBTABLEEXTPROC pglColorSubTableEXT;
+GLEE_EXTERN PFNGLCOPYCOLORSUBTABLEEXTPROC pglCopyColorSubTableEXT;
+#define glColorSubTableEXT pglColorSubTableEXT
+#define glCopyColorSubTableEXT pglCopyColorSubTableEXT
+#endif 
+
+/* GL_PGI_vertex_hints */
+
+#ifndef GL_PGI_vertex_hints
+#define GL_PGI_vertex_hints 1
+#define __GLEE_GL_PGI_vertex_hints 1
+/* Constants */
+#define GL_VERTEX_DATA_HINT_PGI                            0x1A22A
+#define GL_VERTEX_CONSISTENT_HINT_PGI                      0x1A22B
+#define GL_MATERIAL_SIDE_HINT_PGI                          0x1A22C
+#define GL_MAX_VERTEX_HINT_PGI                             0x1A22D
+#define GL_COLOR3_BIT_PGI                                  0x00010000
+#define GL_COLOR4_BIT_PGI                                  0x00020000
+#define GL_EDGEFLAG_BIT_PGI                                0x00040000
+#define GL_INDEX_BIT_PGI                                   0x00080000
+#define GL_MAT_AMBIENT_BIT_PGI                             0x00100000
+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI                 0x00200000
+#define GL_MAT_DIFFUSE_BIT_PGI                             0x00400000
+#define GL_MAT_EMISSION_BIT_PGI                            0x00800000
+#define GL_MAT_COLOR_INDEXES_BIT_PGI                       0x01000000
+#define GL_MAT_SHININESS_BIT_PGI                           0x02000000
+#define GL_MAT_SPECULAR_BIT_PGI                            0x04000000
+#define GL_NORMAL_BIT_PGI                                  0x08000000
+#define GL_TEXCOORD1_BIT_PGI                               0x10000000
+#define GL_TEXCOORD2_BIT_PGI                               0x20000000
+#define GL_TEXCOORD3_BIT_PGI                               0x40000000
+#define GL_TEXCOORD4_BIT_PGI                               0x80000000
+#define GL_VERTEX23_BIT_PGI                                0x00000004
+#define GL_VERTEX4_BIT_PGI                                 0x00000008
+#endif 
+
+/* GL_PGI_misc_hints */
+
+#ifndef GL_PGI_misc_hints
+#define GL_PGI_misc_hints 1
+#define __GLEE_GL_PGI_misc_hints 1
+/* Constants */
+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI                    0x1A1F8
+#define GL_CONSERVE_MEMORY_HINT_PGI                        0x1A1FD
+#define GL_RECLAIM_MEMORY_HINT_PGI                         0x1A1FE
+#define GL_NATIVE_GRAPHICS_HANDLE_PGI                      0x1A202
+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI                  0x1A203
+#define GL_NATIVE_GRAPHICS_END_HINT_PGI                    0x1A204
+#define GL_ALWAYS_FAST_HINT_PGI                            0x1A20C
+#define GL_ALWAYS_SOFT_HINT_PGI                            0x1A20D
+#define GL_ALLOW_DRAW_OBJ_HINT_PGI                         0x1A20E
+#define GL_ALLOW_DRAW_WIN_HINT_PGI                         0x1A20F
+#define GL_ALLOW_DRAW_FRG_HINT_PGI                         0x1A210
+#define GL_ALLOW_DRAW_MEM_HINT_PGI                         0x1A211
+#define GL_STRICT_DEPTHFUNC_HINT_PGI                       0x1A216
+#define GL_STRICT_LIGHTING_HINT_PGI                        0x1A217
+#define GL_STRICT_SCISSOR_HINT_PGI                         0x1A218
+#define GL_FULL_STIPPLE_HINT_PGI                           0x1A219
+#define GL_CLIP_NEAR_HINT_PGI                              0x1A220
+#define GL_CLIP_FAR_HINT_PGI                               0x1A221
+#define GL_WIDE_LINE_HINT_PGI                              0x1A222
+#define GL_BACK_NORMALS_HINT_PGI                           0x1A223
+typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
+GLEE_EXTERN PFNGLHINTPGIPROC pglHintPGI;
+#define glHintPGI pglHintPGI
+#endif 
+
+/* GL_EXT_paletted_texture */
+
+#ifndef GL_EXT_paletted_texture
+#define GL_EXT_paletted_texture 1
+#define __GLEE_GL_EXT_paletted_texture 1
+/* Constants */
+#define GL_COLOR_INDEX1_EXT                                0x80E2
+#define GL_COLOR_INDEX2_EXT                                0x80E3
+#define GL_COLOR_INDEX4_EXT                                0x80E4
+#define GL_COLOR_INDEX8_EXT                                0x80E5
+#define GL_COLOR_INDEX12_EXT                               0x80E6
+#define GL_COLOR_INDEX16_EXT                               0x80E7
+#define GL_TEXTURE_INDEX_SIZE_EXT                          0x80ED
+typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid * data);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params);
+GLEE_EXTERN PFNGLCOLORTABLEEXTPROC pglColorTableEXT;
+GLEE_EXTERN PFNGLGETCOLORTABLEEXTPROC pglGetColorTableEXT;
+GLEE_EXTERN PFNGLGETCOLORTABLEPARAMETERIVEXTPROC pglGetColorTableParameterivEXT;
+GLEE_EXTERN PFNGLGETCOLORTABLEPARAMETERFVEXTPROC pglGetColorTableParameterfvEXT;
+#define glColorTableEXT pglColorTableEXT
+#define glGetColorTableEXT pglGetColorTableEXT
+#define glGetColorTableParameterivEXT pglGetColorTableParameterivEXT
+#define glGetColorTableParameterfvEXT pglGetColorTableParameterfvEXT
+#endif 
+
+/* GL_EXT_clip_volume_hint */
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_EXT_clip_volume_hint 1
+#define __GLEE_GL_EXT_clip_volume_hint 1
+/* Constants */
+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT                   0x80F0
+#endif 
+
+/* GL_SGIX_list_priority */
+
+#ifndef GL_SGIX_list_priority
+#define GL_SGIX_list_priority 1
+#define __GLEE_GL_SGIX_list_priority 1
+/* Constants */
+#define GL_LIST_PRIORITY_SGIX                              0x8182
+typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint * params);
+GLEE_EXTERN PFNGLGETLISTPARAMETERFVSGIXPROC pglGetListParameterfvSGIX;
+GLEE_EXTERN PFNGLGETLISTPARAMETERIVSGIXPROC pglGetListParameterivSGIX;
+GLEE_EXTERN PFNGLLISTPARAMETERFSGIXPROC pglListParameterfSGIX;
+GLEE_EXTERN PFNGLLISTPARAMETERFVSGIXPROC pglListParameterfvSGIX;
+GLEE_EXTERN PFNGLLISTPARAMETERISGIXPROC pglListParameteriSGIX;
+GLEE_EXTERN PFNGLLISTPARAMETERIVSGIXPROC pglListParameterivSGIX;
+#define glGetListParameterfvSGIX pglGetListParameterfvSGIX
+#define glGetListParameterivSGIX pglGetListParameterivSGIX
+#define glListParameterfSGIX pglListParameterfSGIX
+#define glListParameterfvSGIX pglListParameterfvSGIX
+#define glListParameteriSGIX pglListParameteriSGIX
+#define glListParameterivSGIX pglListParameterivSGIX
+#endif 
+
+/* GL_SGIX_ir_instrument1 */
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_SGIX_ir_instrument1 1
+#define __GLEE_GL_SGIX_ir_instrument1 1
+/* Constants */
+#define GL_IR_INSTRUMENT1_SGIX                             0x817F
+#endif 
+
+/* GL_SGIX_calligraphic_fragment */
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_SGIX_calligraphic_fragment 1
+#define __GLEE_GL_SGIX_calligraphic_fragment 1
+/* Constants */
+#define GL_CALLIGRAPHIC_FRAGMENT_SGIX                      0x8183
+#endif 
+
+/* GL_SGIX_texture_lod_bias */
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_SGIX_texture_lod_bias 1
+#define __GLEE_GL_SGIX_texture_lod_bias 1
+/* Constants */
+#define GL_TEXTURE_LOD_BIAS_S_SGIX                         0x818E
+#define GL_TEXTURE_LOD_BIAS_T_SGIX                         0x818F
+#define GL_TEXTURE_LOD_BIAS_R_SGIX                         0x8190
+#endif 
+
+/* GL_SGIX_shadow_ambient */
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SGIX_shadow_ambient 1
+#define __GLEE_GL_SGIX_shadow_ambient 1
+/* Constants */
+#define GL_SHADOW_AMBIENT_SGIX                             0x80BF
+#endif 
+
+/* GL_EXT_index_texture */
+
+#ifndef GL_EXT_index_texture
+#define GL_EXT_index_texture 1
+#define __GLEE_GL_EXT_index_texture 1
+/* Constants */
+#endif 
+
+/* GL_EXT_index_material */
+
+#ifndef GL_EXT_index_material
+#define GL_EXT_index_material 1
+#define __GLEE_GL_EXT_index_material 1
+/* Constants */
+#define GL_INDEX_MATERIAL_EXT                              0x81B8
+#define GL_INDEX_MATERIAL_PARAMETER_EXT                    0x81B9
+#define GL_INDEX_MATERIAL_FACE_EXT                         0x81BA
+typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
+GLEE_EXTERN PFNGLINDEXMATERIALEXTPROC pglIndexMaterialEXT;
+#define glIndexMaterialEXT pglIndexMaterialEXT
+#endif 
+
+/* GL_EXT_index_func */
+
+#ifndef GL_EXT_index_func
+#define GL_EXT_index_func 1
+#define __GLEE_GL_EXT_index_func 1
+/* Constants */
+#define GL_INDEX_TEST_EXT                                  0x81B5
+#define GL_INDEX_TEST_FUNC_EXT                             0x81B6
+#define GL_INDEX_TEST_REF_EXT                              0x81B7
+typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
+GLEE_EXTERN PFNGLINDEXFUNCEXTPROC pglIndexFuncEXT;
+#define glIndexFuncEXT pglIndexFuncEXT
+#endif 
+
+/* GL_EXT_index_array_formats */
+
+#ifndef GL_EXT_index_array_formats
+#define GL_EXT_index_array_formats 1
+#define __GLEE_GL_EXT_index_array_formats 1
+/* Constants */
+#define GL_IUI_V2F_EXT                                     0x81AD
+#define GL_IUI_V3F_EXT                                     0x81AE
+#define GL_IUI_N3F_V2F_EXT                                 0x81AF
+#define GL_IUI_N3F_V3F_EXT                                 0x81B0
+#define GL_T2F_IUI_V2F_EXT                                 0x81B1
+#define GL_T2F_IUI_V3F_EXT                                 0x81B2
+#define GL_T2F_IUI_N3F_V2F_EXT                             0x81B3
+#define GL_T2F_IUI_N3F_V3F_EXT                             0x81B4
+#endif 
+
+/* GL_EXT_compiled_vertex_array */
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_EXT_compiled_vertex_array 1
+#define __GLEE_GL_EXT_compiled_vertex_array 1
+/* Constants */
+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT                    0x81A8
+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT                    0x81A9
+typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) ();
+GLEE_EXTERN PFNGLLOCKARRAYSEXTPROC pglLockArraysEXT;
+GLEE_EXTERN PFNGLUNLOCKARRAYSEXTPROC pglUnlockArraysEXT;
+#define glLockArraysEXT pglLockArraysEXT
+#define glUnlockArraysEXT pglUnlockArraysEXT
+#endif 
+
+/* GL_EXT_cull_vertex */
+
+#ifndef GL_EXT_cull_vertex
+#define GL_EXT_cull_vertex 1
+#define __GLEE_GL_EXT_cull_vertex 1
+/* Constants */
+#define GL_CULL_VERTEX_EXT                                 0x81AA
+#define GL_CULL_VERTEX_EYE_POSITION_EXT                    0x81AB
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT                 0x81AC
+typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble * params);
+typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat * params);
+GLEE_EXTERN PFNGLCULLPARAMETERDVEXTPROC pglCullParameterdvEXT;
+GLEE_EXTERN PFNGLCULLPARAMETERFVEXTPROC pglCullParameterfvEXT;
+#define glCullParameterdvEXT pglCullParameterdvEXT
+#define glCullParameterfvEXT pglCullParameterfvEXT
+#endif 
+
+/* GL_SGIX_ycrcb */
+
+#ifndef GL_SGIX_ycrcb
+#define GL_SGIX_ycrcb 1
+#define __GLEE_GL_SGIX_ycrcb 1
+/* Constants */
+#define GL_YCRCB_422_SGIX                                  0x81BB
+#define GL_YCRCB_444_SGIX                                  0x81BC
+#endif 
+
+/* GL_SGIX_fragment_lighting */
+
+#ifndef GL_SGIX_fragment_lighting
+#define GL_SGIX_fragment_lighting 1
+#define __GLEE_GL_SGIX_fragment_lighting 1
+/* Constants */
+#define GL_FRAGMENT_LIGHTING_SGIX                          0x8400
+#define GL_FRAGMENT_COLOR_MATERIAL_SGIX                    0x8401
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX               0x8402
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX          0x8403
+#define GL_MAX_FRAGMENT_LIGHTS_SGIX                        0x8404
+#define GL_MAX_ACTIVE_LIGHTS_SGIX                          0x8405
+#define GL_CURRENT_RASTER_NORMAL_SGIX                      0x8406
+#define GL_LIGHT_ENV_MODE_SGIX                             0x8407
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX          0x8408
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX              0x8409
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX               0x840A
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX  0x840B
+#define GL_FRAGMENT_LIGHT0_SGIX                            0x840C
+#define GL_FRAGMENT_LIGHT1_SGIX                            0x840D
+#define GL_FRAGMENT_LIGHT2_SGIX                            0x840E
+#define GL_FRAGMENT_LIGHT3_SGIX                            0x840F
+#define GL_FRAGMENT_LIGHT4_SGIX                            0x8410
+#define GL_FRAGMENT_LIGHT5_SGIX                            0x8411
+#define GL_FRAGMENT_LIGHT6_SGIX                            0x8412
+#define GL_FRAGMENT_LIGHT7_SGIX                            0x8413
+typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
+GLEE_EXTERN PFNGLFRAGMENTCOLORMATERIALSGIXPROC pglFragmentColorMaterialSGIX;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTFSGIXPROC pglFragmentLightfSGIX;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTFVSGIXPROC pglFragmentLightfvSGIX;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTISGIXPROC pglFragmentLightiSGIX;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTIVSGIXPROC pglFragmentLightivSGIX;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTMODELFSGIXPROC pglFragmentLightModelfSGIX;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTMODELFVSGIXPROC pglFragmentLightModelfvSGIX;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTMODELISGIXPROC pglFragmentLightModeliSGIX;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTMODELIVSGIXPROC pglFragmentLightModelivSGIX;
+GLEE_EXTERN PFNGLFRAGMENTMATERIALFSGIXPROC pglFragmentMaterialfSGIX;
+GLEE_EXTERN PFNGLFRAGMENTMATERIALFVSGIXPROC pglFragmentMaterialfvSGIX;
+GLEE_EXTERN PFNGLFRAGMENTMATERIALISGIXPROC pglFragmentMaterialiSGIX;
+GLEE_EXTERN PFNGLFRAGMENTMATERIALIVSGIXPROC pglFragmentMaterialivSGIX;
+GLEE_EXTERN PFNGLGETFRAGMENTLIGHTFVSGIXPROC pglGetFragmentLightfvSGIX;
+GLEE_EXTERN PFNGLGETFRAGMENTLIGHTIVSGIXPROC pglGetFragmentLightivSGIX;
+GLEE_EXTERN PFNGLGETFRAGMENTMATERIALFVSGIXPROC pglGetFragmentMaterialfvSGIX;
+GLEE_EXTERN PFNGLGETFRAGMENTMATERIALIVSGIXPROC pglGetFragmentMaterialivSGIX;
+GLEE_EXTERN PFNGLLIGHTENVISGIXPROC pglLightEnviSGIX;
+#define glFragmentColorMaterialSGIX pglFragmentColorMaterialSGIX
+#define glFragmentLightfSGIX pglFragmentLightfSGIX
+#define glFragmentLightfvSGIX pglFragmentLightfvSGIX
+#define glFragmentLightiSGIX pglFragmentLightiSGIX
+#define glFragmentLightivSGIX pglFragmentLightivSGIX
+#define glFragmentLightModelfSGIX pglFragmentLightModelfSGIX
+#define glFragmentLightModelfvSGIX pglFragmentLightModelfvSGIX
+#define glFragmentLightModeliSGIX pglFragmentLightModeliSGIX
+#define glFragmentLightModelivSGIX pglFragmentLightModelivSGIX
+#define glFragmentMaterialfSGIX pglFragmentMaterialfSGIX
+#define glFragmentMaterialfvSGIX pglFragmentMaterialfvSGIX
+#define glFragmentMaterialiSGIX pglFragmentMaterialiSGIX
+#define glFragmentMaterialivSGIX pglFragmentMaterialivSGIX
+#define glGetFragmentLightfvSGIX pglGetFragmentLightfvSGIX
+#define glGetFragmentLightivSGIX pglGetFragmentLightivSGIX
+#define glGetFragmentMaterialfvSGIX pglGetFragmentMaterialfvSGIX
+#define glGetFragmentMaterialivSGIX pglGetFragmentMaterialivSGIX
+#define glLightEnviSGIX pglLightEnviSGIX
+#endif 
+
+/* GL_IBM_rasterpos_clip */
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_IBM_rasterpos_clip 1
+#define __GLEE_GL_IBM_rasterpos_clip 1
+/* Constants */
+#define GL_RASTER_POSITION_UNCLIPPED_IBM                   0x19262
+#endif 
+
+/* GL_HP_texture_lighting */
+
+#ifndef GL_HP_texture_lighting
+#define GL_HP_texture_lighting 1
+#define __GLEE_GL_HP_texture_lighting 1
+/* Constants */
+#define GL_TEXTURE_LIGHTING_MODE_HP                        0x8167
+#define GL_TEXTURE_POST_SPECULAR_HP                        0x8168
+#define GL_TEXTURE_PRE_SPECULAR_HP                         0x8169
+#endif 
+
+/* GL_EXT_draw_range_elements */
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_EXT_draw_range_elements 1
+#define __GLEE_GL_EXT_draw_range_elements 1
+/* Constants */
+#define GL_MAX_ELEMENTS_VERTICES_EXT                       0x80E8
+#define GL_MAX_ELEMENTS_INDICES_EXT                        0x80E9
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices);
+GLEE_EXTERN PFNGLDRAWRANGEELEMENTSEXTPROC pglDrawRangeElementsEXT;
+#define glDrawRangeElementsEXT pglDrawRangeElementsEXT
+#endif 
+
+/* GL_WIN_phong_shading */
+
+#ifndef GL_WIN_phong_shading
+#define GL_WIN_phong_shading 1
+#define __GLEE_GL_WIN_phong_shading 1
+/* Constants */
+#define GL_PHONG_WIN                                       0x80EA
+#define GL_PHONG_HINT_WIN                                  0x80EB
+#endif 
+
+/* GL_WIN_specular_fog */
+
+#ifndef GL_WIN_specular_fog
+#define GL_WIN_specular_fog 1
+#define __GLEE_GL_WIN_specular_fog 1
+/* Constants */
+#define GL_FOG_SPECULAR_TEXTURE_WIN                        0x80EC
+#endif 
+
+/* GL_EXT_light_texture */
+
+#ifndef GL_EXT_light_texture
+#define GL_EXT_light_texture 1
+#define __GLEE_GL_EXT_light_texture 1
+/* Constants */
+#define GL_FRAGMENT_MATERIAL_EXT                           0x8349
+#define GL_FRAGMENT_NORMAL_EXT                             0x834A
+#define GL_FRAGMENT_COLOR_EXT                              0x834C
+#define GL_ATTENUATION_EXT                                 0x834D
+#define GL_SHADOW_ATTENUATION_EXT                          0x834E
+#define GL_TEXTURE_APPLICATION_MODE_EXT                    0x834F
+#define GL_TEXTURE_LIGHT_EXT                               0x8350
+#define GL_TEXTURE_MATERIAL_FACE_EXT                       0x8351
+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT                  0x8352
+typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
+typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
+GLEE_EXTERN PFNGLAPPLYTEXTUREEXTPROC pglApplyTextureEXT;
+GLEE_EXTERN PFNGLTEXTURELIGHTEXTPROC pglTextureLightEXT;
+GLEE_EXTERN PFNGLTEXTUREMATERIALEXTPROC pglTextureMaterialEXT;
+#define glApplyTextureEXT pglApplyTextureEXT
+#define glTextureLightEXT pglTextureLightEXT
+#define glTextureMaterialEXT pglTextureMaterialEXT
+#endif 
+
+/* GL_SGIX_blend_alpha_minmax */
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_SGIX_blend_alpha_minmax 1
+#define __GLEE_GL_SGIX_blend_alpha_minmax 1
+/* Constants */
+#define GL_ALPHA_MIN_SGIX                                  0x8320
+#define GL_ALPHA_MAX_SGIX                                  0x8321
+#endif 
+
+/* GL_SGIX_impact_pixel_texture */
+
+#ifndef GL_SGIX_impact_pixel_texture
+#define GL_SGIX_impact_pixel_texture 1
+#define __GLEE_GL_SGIX_impact_pixel_texture 1
+/* Constants */
+#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX                    0x8184
+#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX                      0x8185
+#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX                      0x8186
+#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX                0x8187
+#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX             0x8188
+#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX                     0x8189
+#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX                     0x818A
+#endif 
+
+/* GL_EXT_bgra */
+
+#ifndef GL_EXT_bgra
+#define GL_EXT_bgra 1
+#define __GLEE_GL_EXT_bgra 1
+/* Constants */
+#define GL_BGR_EXT                                         0x80E0
+#define GL_BGRA_EXT                                        0x80E1
+#endif 
+
+/* GL_SGIX_async */
+
+#ifndef GL_SGIX_async
+#define GL_SGIX_async 1
+#define __GLEE_GL_SGIX_async 1
+/* Constants */
+#define GL_ASYNC_MARKER_SGIX                               0x8329
+typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
+typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint * markerp);
+typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint * markerp);
+typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
+typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
+typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
+GLEE_EXTERN PFNGLASYNCMARKERSGIXPROC pglAsyncMarkerSGIX;
+GLEE_EXTERN PFNGLFINISHASYNCSGIXPROC pglFinishAsyncSGIX;
+GLEE_EXTERN PFNGLPOLLASYNCSGIXPROC pglPollAsyncSGIX;
+GLEE_EXTERN PFNGLGENASYNCMARKERSSGIXPROC pglGenAsyncMarkersSGIX;
+GLEE_EXTERN PFNGLDELETEASYNCMARKERSSGIXPROC pglDeleteAsyncMarkersSGIX;
+GLEE_EXTERN PFNGLISASYNCMARKERSGIXPROC pglIsAsyncMarkerSGIX;
+#define glAsyncMarkerSGIX pglAsyncMarkerSGIX
+#define glFinishAsyncSGIX pglFinishAsyncSGIX
+#define glPollAsyncSGIX pglPollAsyncSGIX
+#define glGenAsyncMarkersSGIX pglGenAsyncMarkersSGIX
+#define glDeleteAsyncMarkersSGIX pglDeleteAsyncMarkersSGIX
+#define glIsAsyncMarkerSGIX pglIsAsyncMarkerSGIX
+#endif 
+
+/* GL_SGIX_async_pixel */
+
+#ifndef GL_SGIX_async_pixel
+#define GL_SGIX_async_pixel 1
+#define __GLEE_GL_SGIX_async_pixel 1
+/* Constants */
+#define GL_ASYNC_TEX_IMAGE_SGIX                            0x835C
+#define GL_ASYNC_DRAW_PIXELS_SGIX                          0x835D
+#define GL_ASYNC_READ_PIXELS_SGIX                          0x835E
+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX                        0x835F
+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX                      0x8360
+#define GL_MAX_ASYNC_READ_PIXELS_SGIX                      0x8361
+#endif 
+
+/* GL_SGIX_async_histogram */
+
+#ifndef GL_SGIX_async_histogram
+#define GL_SGIX_async_histogram 1
+#define __GLEE_GL_SGIX_async_histogram 1
+/* Constants */
+#define GL_ASYNC_HISTOGRAM_SGIX                            0x832C
+#define GL_MAX_ASYNC_HISTOGRAM_SGIX                        0x832D
+#endif 
+
+/* GL_INTEL_texture_scissor */
+
+#ifndef GL_INTEL_texture_scissor
+#define GL_INTEL_texture_scissor 1
+#define __GLEE_GL_INTEL_texture_scissor 1
+/* Constants */
+#endif 
+
+/* GL_INTEL_parallel_arrays */
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_INTEL_parallel_arrays 1
+#define __GLEE_GL_INTEL_parallel_arrays 1
+/* Constants */
+#define GL_PARALLEL_ARRAYS_INTEL                           0x83F4
+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL            0x83F5
+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL            0x83F6
+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL             0x83F7
+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL     0x83F8
+typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* * pointer);
+typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* * pointer);
+typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* * pointer);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* * pointer);
+GLEE_EXTERN PFNGLVERTEXPOINTERVINTELPROC pglVertexPointervINTEL;
+GLEE_EXTERN PFNGLNORMALPOINTERVINTELPROC pglNormalPointervINTEL;
+GLEE_EXTERN PFNGLCOLORPOINTERVINTELPROC pglColorPointervINTEL;
+GLEE_EXTERN PFNGLTEXCOORDPOINTERVINTELPROC pglTexCoordPointervINTEL;
+#define glVertexPointervINTEL pglVertexPointervINTEL
+#define glNormalPointervINTEL pglNormalPointervINTEL
+#define glColorPointervINTEL pglColorPointervINTEL
+#define glTexCoordPointervINTEL pglTexCoordPointervINTEL
+#endif 
+
+/* GL_HP_occlusion_test */
+
+#ifndef GL_HP_occlusion_test
+#define GL_HP_occlusion_test 1
+#define __GLEE_GL_HP_occlusion_test 1
+/* Constants */
+#define GL_OCCLUSION_TEST_HP                               0x8165
+#define GL_OCCLUSION_TEST_RESULT_HP                        0x8166
+#endif 
+
+/* GL_EXT_pixel_transform */
+
+#ifndef GL_EXT_pixel_transform
+#define GL_EXT_pixel_transform 1
+#define __GLEE_GL_EXT_pixel_transform 1
+/* Constants */
+#define GL_PIXEL_TRANSFORM_2D_EXT                          0x8330
+#define GL_PIXEL_MAG_FILTER_EXT                            0x8331
+#define GL_PIXEL_MIN_FILTER_EXT                            0x8332
+#define GL_PIXEL_CUBIC_WEIGHT_EXT                          0x8333
+#define GL_CUBIC_EXT                                       0x8334
+#define GL_AVERAGE_EXT                                     0x8335
+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT              0x8336
+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT          0x8337
+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT                   0x8338
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat * params);
+GLEE_EXTERN PFNGLPIXELTRANSFORMPARAMETERIEXTPROC pglPixelTransformParameteriEXT;
+GLEE_EXTERN PFNGLPIXELTRANSFORMPARAMETERFEXTPROC pglPixelTransformParameterfEXT;
+GLEE_EXTERN PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC pglPixelTransformParameterivEXT;
+GLEE_EXTERN PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC pglPixelTransformParameterfvEXT;
+#define glPixelTransformParameteriEXT pglPixelTransformParameteriEXT
+#define glPixelTransformParameterfEXT pglPixelTransformParameterfEXT
+#define glPixelTransformParameterivEXT pglPixelTransformParameterivEXT
+#define glPixelTransformParameterfvEXT pglPixelTransformParameterfvEXT
+#endif 
+
+/* GL_EXT_pixel_transform_color_table */
+
+#ifndef GL_EXT_pixel_transform_color_table
+#define GL_EXT_pixel_transform_color_table 1
+#define __GLEE_GL_EXT_pixel_transform_color_table 1
+/* Constants */
+#endif 
+
+/* GL_EXT_shared_texture_palette */
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_EXT_shared_texture_palette 1
+#define __GLEE_GL_EXT_shared_texture_palette 1
+/* Constants */
+#define GL_SHARED_TEXTURE_PALETTE_EXT                      0x81FB
+#endif 
+
+/* GL_EXT_separate_specular_color */
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_EXT_separate_specular_color 1
+#define __GLEE_GL_EXT_separate_specular_color 1
+/* Constants */
+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT                   0x81F8
+#define GL_SINGLE_COLOR_EXT                                0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR_EXT                     0x81FA
+#endif 
+
+/* GL_EXT_secondary_color */
+
+#ifndef GL_EXT_secondary_color
+#define GL_EXT_secondary_color 1
+#define __GLEE_GL_EXT_secondary_color 1
+/* Constants */
+#define GL_COLOR_SUM_EXT                                   0x8458
+#define GL_CURRENT_SECONDARY_COLOR_EXT                     0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT                  0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT                  0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT                0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT               0x845D
+#define GL_SECONDARY_COLOR_ARRAY_EXT                       0x845E
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort * v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
+GLEE_EXTERN PFNGLSECONDARYCOLOR3BEXTPROC pglSecondaryColor3bEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3BVEXTPROC pglSecondaryColor3bvEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3DEXTPROC pglSecondaryColor3dEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3DVEXTPROC pglSecondaryColor3dvEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3FEXTPROC pglSecondaryColor3fEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3FVEXTPROC pglSecondaryColor3fvEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3IEXTPROC pglSecondaryColor3iEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3IVEXTPROC pglSecondaryColor3ivEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3SEXTPROC pglSecondaryColor3sEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3SVEXTPROC pglSecondaryColor3svEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3UBEXTPROC pglSecondaryColor3ubEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3UBVEXTPROC pglSecondaryColor3ubvEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3UIEXTPROC pglSecondaryColor3uiEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3UIVEXTPROC pglSecondaryColor3uivEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3USEXTPROC pglSecondaryColor3usEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3USVEXTPROC pglSecondaryColor3usvEXT;
+GLEE_EXTERN PFNGLSECONDARYCOLORPOINTEREXTPROC pglSecondaryColorPointerEXT;
+#define glSecondaryColor3bEXT pglSecondaryColor3bEXT
+#define glSecondaryColor3bvEXT pglSecondaryColor3bvEXT
+#define glSecondaryColor3dEXT pglSecondaryColor3dEXT
+#define glSecondaryColor3dvEXT pglSecondaryColor3dvEXT
+#define glSecondaryColor3fEXT pglSecondaryColor3fEXT
+#define glSecondaryColor3fvEXT pglSecondaryColor3fvEXT
+#define glSecondaryColor3iEXT pglSecondaryColor3iEXT
+#define glSecondaryColor3ivEXT pglSecondaryColor3ivEXT
+#define glSecondaryColor3sEXT pglSecondaryColor3sEXT
+#define glSecondaryColor3svEXT pglSecondaryColor3svEXT
+#define glSecondaryColor3ubEXT pglSecondaryColor3ubEXT
+#define glSecondaryColor3ubvEXT pglSecondaryColor3ubvEXT
+#define glSecondaryColor3uiEXT pglSecondaryColor3uiEXT
+#define glSecondaryColor3uivEXT pglSecondaryColor3uivEXT
+#define glSecondaryColor3usEXT pglSecondaryColor3usEXT
+#define glSecondaryColor3usvEXT pglSecondaryColor3usvEXT
+#define glSecondaryColorPointerEXT pglSecondaryColorPointerEXT
+#endif 
+
+/* GL_EXT_texture_perturb_normal */
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_EXT_texture_perturb_normal 1
+#define __GLEE_GL_EXT_texture_perturb_normal 1
+/* Constants */
+#define GL_PERTURB_EXT                                     0x85AE
+#define GL_TEXTURE_NORMAL_EXT                              0x85AF
+typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
+GLEE_EXTERN PFNGLTEXTURENORMALEXTPROC pglTextureNormalEXT;
+#define glTextureNormalEXT pglTextureNormalEXT
+#endif 
+
+/* GL_EXT_multi_draw_arrays */
+
+#ifndef GL_EXT_multi_draw_arrays
+#define GL_EXT_multi_draw_arrays 1
+#define __GLEE_GL_EXT_multi_draw_arrays 1
+/* Constants */
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint * first, GLsizei * count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei * count, GLenum type, const GLvoid* * indices, GLsizei primcount);
+GLEE_EXTERN PFNGLMULTIDRAWARRAYSEXTPROC pglMultiDrawArraysEXT;
+GLEE_EXTERN PFNGLMULTIDRAWELEMENTSEXTPROC pglMultiDrawElementsEXT;
+#define glMultiDrawArraysEXT pglMultiDrawArraysEXT
+#define glMultiDrawElementsEXT pglMultiDrawElementsEXT
+#endif 
+
+/* GL_EXT_fog_coord */
+
+#ifndef GL_EXT_fog_coord
+#define GL_EXT_fog_coord 1
+#define __GLEE_GL_EXT_fog_coord 1
+/* Constants */
+#define GL_FOG_COORDINATE_SOURCE_EXT                       0x8450
+#define GL_FOG_COORDINATE_EXT                              0x8451
+#define GL_FRAGMENT_DEPTH_EXT                              0x8452
+#define GL_CURRENT_FOG_COORDINATE_EXT                      0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT                   0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT                 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT                0x8456
+#define GL_FOG_COORDINATE_ARRAY_EXT                        0x8457
+typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
+typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat * coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble * coord);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid * pointer);
+GLEE_EXTERN PFNGLFOGCOORDFEXTPROC pglFogCoordfEXT;
+GLEE_EXTERN PFNGLFOGCOORDFVEXTPROC pglFogCoordfvEXT;
+GLEE_EXTERN PFNGLFOGCOORDDEXTPROC pglFogCoorddEXT;
+GLEE_EXTERN PFNGLFOGCOORDDVEXTPROC pglFogCoorddvEXT;
+GLEE_EXTERN PFNGLFOGCOORDPOINTEREXTPROC pglFogCoordPointerEXT;
+#define glFogCoordfEXT pglFogCoordfEXT
+#define glFogCoordfvEXT pglFogCoordfvEXT
+#define glFogCoorddEXT pglFogCoorddEXT
+#define glFogCoorddvEXT pglFogCoorddvEXT
+#define glFogCoordPointerEXT pglFogCoordPointerEXT
+#endif 
+
+/* GL_REND_screen_coordinates */
+
+#ifndef GL_REND_screen_coordinates
+#define GL_REND_screen_coordinates 1
+#define __GLEE_GL_REND_screen_coordinates 1
+/* Constants */
+#define GL_SCREEN_COORDINATES_REND                         0x8490
+#define GL_INVERTED_SCREEN_W_REND                          0x8491
+#endif 
+
+/* GL_EXT_coordinate_frame */
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_EXT_coordinate_frame 1
+#define __GLEE_GL_EXT_coordinate_frame 1
+/* Constants */
+#define GL_TANGENT_ARRAY_EXT                               0x8439
+#define GL_BINORMAL_ARRAY_EXT                              0x843A
+#define GL_CURRENT_TANGENT_EXT                             0x843B
+#define GL_CURRENT_BINORMAL_EXT                            0x843C
+#define GL_TANGENT_ARRAY_TYPE_EXT                          0x843E
+#define GL_TANGENT_ARRAY_STRIDE_EXT                        0x843F
+#define GL_BINORMAL_ARRAY_TYPE_EXT                         0x8440
+#define GL_BINORMAL_ARRAY_STRIDE_EXT                       0x8441
+#define GL_TANGENT_ARRAY_POINTER_EXT                       0x8442
+#define GL_BINORMAL_ARRAY_POINTER_EXT                      0x8443
+#define GL_MAP1_TANGENT_EXT                                0x8444
+#define GL_MAP2_TANGENT_EXT                                0x8445
+#define GL_MAP1_BINORMAL_EXT                               0x8446
+#define GL_MAP2_BINORMAL_EXT                               0x8447
+typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
+typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte * v);
+typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
+typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
+typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
+typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
+typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort * v);
+typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
+typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte * v);
+typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
+typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
+typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
+typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
+typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort * v);
+typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid * pointer);
+GLEE_EXTERN PFNGLTANGENT3BEXTPROC pglTangent3bEXT;
+GLEE_EXTERN PFNGLTANGENT3BVEXTPROC pglTangent3bvEXT;
+GLEE_EXTERN PFNGLTANGENT3DEXTPROC pglTangent3dEXT;
+GLEE_EXTERN PFNGLTANGENT3DVEXTPROC pglTangent3dvEXT;
+GLEE_EXTERN PFNGLTANGENT3FEXTPROC pglTangent3fEXT;
+GLEE_EXTERN PFNGLTANGENT3FVEXTPROC pglTangent3fvEXT;
+GLEE_EXTERN PFNGLTANGENT3IEXTPROC pglTangent3iEXT;
+GLEE_EXTERN PFNGLTANGENT3IVEXTPROC pglTangent3ivEXT;
+GLEE_EXTERN PFNGLTANGENT3SEXTPROC pglTangent3sEXT;
+GLEE_EXTERN PFNGLTANGENT3SVEXTPROC pglTangent3svEXT;
+GLEE_EXTERN PFNGLBINORMAL3BEXTPROC pglBinormal3bEXT;
+GLEE_EXTERN PFNGLBINORMAL3BVEXTPROC pglBinormal3bvEXT;
+GLEE_EXTERN PFNGLBINORMAL3DEXTPROC pglBinormal3dEXT;
+GLEE_EXTERN PFNGLBINORMAL3DVEXTPROC pglBinormal3dvEXT;
+GLEE_EXTERN PFNGLBINORMAL3FEXTPROC pglBinormal3fEXT;
+GLEE_EXTERN PFNGLBINORMAL3FVEXTPROC pglBinormal3fvEXT;
+GLEE_EXTERN PFNGLBINORMAL3IEXTPROC pglBinormal3iEXT;
+GLEE_EXTERN PFNGLBINORMAL3IVEXTPROC pglBinormal3ivEXT;
+GLEE_EXTERN PFNGLBINORMAL3SEXTPROC pglBinormal3sEXT;
+GLEE_EXTERN PFNGLBINORMAL3SVEXTPROC pglBinormal3svEXT;
+GLEE_EXTERN PFNGLTANGENTPOINTEREXTPROC pglTangentPointerEXT;
+GLEE_EXTERN PFNGLBINORMALPOINTEREXTPROC pglBinormalPointerEXT;
+#define glTangent3bEXT pglTangent3bEXT
+#define glTangent3bvEXT pglTangent3bvEXT
+#define glTangent3dEXT pglTangent3dEXT
+#define glTangent3dvEXT pglTangent3dvEXT
+#define glTangent3fEXT pglTangent3fEXT
+#define glTangent3fvEXT pglTangent3fvEXT
+#define glTangent3iEXT pglTangent3iEXT
+#define glTangent3ivEXT pglTangent3ivEXT
+#define glTangent3sEXT pglTangent3sEXT
+#define glTangent3svEXT pglTangent3svEXT
+#define glBinormal3bEXT pglBinormal3bEXT
+#define glBinormal3bvEXT pglBinormal3bvEXT
+#define glBinormal3dEXT pglBinormal3dEXT
+#define glBinormal3dvEXT pglBinormal3dvEXT
+#define glBinormal3fEXT pglBinormal3fEXT
+#define glBinormal3fvEXT pglBinormal3fvEXT
+#define glBinormal3iEXT pglBinormal3iEXT
+#define glBinormal3ivEXT pglBinormal3ivEXT
+#define glBinormal3sEXT pglBinormal3sEXT
+#define glBinormal3svEXT pglBinormal3svEXT
+#define glTangentPointerEXT pglTangentPointerEXT
+#define glBinormalPointerEXT pglBinormalPointerEXT
+#endif 
+
+/* GL_EXT_texture_env_combine */
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_EXT_texture_env_combine 1
+#define __GLEE_GL_EXT_texture_env_combine 1
+/* Constants */
+#define GL_COMBINE_EXT                                     0x8570
+#define GL_COMBINE_RGB_EXT                                 0x8571
+#define GL_COMBINE_ALPHA_EXT                               0x8572
+#define GL_RGB_SCALE_EXT                                   0x8573
+#define GL_ADD_SIGNED_EXT                                  0x8574
+#define GL_INTERPOLATE_EXT                                 0x8575
+#define GL_CONSTANT_EXT                                    0x8576
+#define GL_PRIMARY_COLOR_EXT                               0x8577
+#define GL_PREVIOUS_EXT                                    0x8578
+#define GL_SOURCE0_RGB_EXT                                 0x8580
+#define GL_SOURCE1_RGB_EXT                                 0x8581
+#define GL_SOURCE2_RGB_EXT                                 0x8582
+#define GL_SOURCE0_ALPHA_EXT                               0x8588
+#define GL_SOURCE1_ALPHA_EXT                               0x8589
+#define GL_SOURCE2_ALPHA_EXT                               0x858A
+#define GL_OPERAND0_RGB_EXT                                0x8590
+#define GL_OPERAND1_RGB_EXT                                0x8591
+#define GL_OPERAND2_RGB_EXT                                0x8592
+#define GL_OPERAND0_ALPHA_EXT                              0x8598
+#define GL_OPERAND1_ALPHA_EXT                              0x8599
+#define GL_OPERAND2_ALPHA_EXT                              0x859A
+#endif 
+
+/* GL_APPLE_specular_vector */
+
+#ifndef GL_APPLE_specular_vector
+#define GL_APPLE_specular_vector 1
+#define __GLEE_GL_APPLE_specular_vector 1
+/* Constants */
+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE               0x85B0
+#endif 
+
+/* GL_APPLE_transform_hint */
+
+#ifndef GL_APPLE_transform_hint
+#define GL_APPLE_transform_hint 1
+#define __GLEE_GL_APPLE_transform_hint 1
+/* Constants */
+#define GL_TRANSFORM_HINT_APPLE                            0x85B1
+#endif 
+
+/* GL_SGIX_fog_scale */
+
+#ifndef GL_SGIX_fog_scale
+#define GL_SGIX_fog_scale 1
+#define __GLEE_GL_SGIX_fog_scale 1
+/* Constants */
+#define GL_FOG_SCALE_SGIX                                  0x81FC
+#define GL_FOG_SCALE_VALUE_SGIX                            0x81FD
+#endif 
+
+/* GL_SUNX_constant_data */
+
+#ifndef GL_SUNX_constant_data
+#define GL_SUNX_constant_data 1
+#define __GLEE_GL_SUNX_constant_data 1
+/* Constants */
+#define GL_UNPACK_CONSTANT_DATA_SUNX                       0x81D5
+#define GL_TEXTURE_CONSTANT_DATA_SUNX                      0x81D6
+typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) ();
+GLEE_EXTERN PFNGLFINISHTEXTURESUNXPROC pglFinishTextureSUNX;
+#define glFinishTextureSUNX pglFinishTextureSUNX
+#endif 
+
+/* GL_SUN_global_alpha */
+
+#ifndef GL_SUN_global_alpha
+#define GL_SUN_global_alpha 1
+#define __GLEE_GL_SUN_global_alpha 1
+/* Constants */
+#define GL_GLOBAL_ALPHA_SUN                                0x81D9
+#define GL_GLOBAL_ALPHA_FACTOR_SUN                         0x81DA
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
+GLEE_EXTERN PFNGLGLOBALALPHAFACTORBSUNPROC pglGlobalAlphaFactorbSUN;
+GLEE_EXTERN PFNGLGLOBALALPHAFACTORSSUNPROC pglGlobalAlphaFactorsSUN;
+GLEE_EXTERN PFNGLGLOBALALPHAFACTORISUNPROC pglGlobalAlphaFactoriSUN;
+GLEE_EXTERN PFNGLGLOBALALPHAFACTORFSUNPROC pglGlobalAlphaFactorfSUN;
+GLEE_EXTERN PFNGLGLOBALALPHAFACTORDSUNPROC pglGlobalAlphaFactordSUN;
+GLEE_EXTERN PFNGLGLOBALALPHAFACTORUBSUNPROC pglGlobalAlphaFactorubSUN;
+GLEE_EXTERN PFNGLGLOBALALPHAFACTORUSSUNPROC pglGlobalAlphaFactorusSUN;
+GLEE_EXTERN PFNGLGLOBALALPHAFACTORUISUNPROC pglGlobalAlphaFactoruiSUN;
+#define glGlobalAlphaFactorbSUN pglGlobalAlphaFactorbSUN
+#define glGlobalAlphaFactorsSUN pglGlobalAlphaFactorsSUN
+#define glGlobalAlphaFactoriSUN pglGlobalAlphaFactoriSUN
+#define glGlobalAlphaFactorfSUN pglGlobalAlphaFactorfSUN
+#define glGlobalAlphaFactordSUN pglGlobalAlphaFactordSUN
+#define glGlobalAlphaFactorubSUN pglGlobalAlphaFactorubSUN
+#define glGlobalAlphaFactorusSUN pglGlobalAlphaFactorusSUN
+#define glGlobalAlphaFactoruiSUN pglGlobalAlphaFactoruiSUN
+#endif 
+
+/* GL_SUN_triangle_list */
+
+#ifndef GL_SUN_triangle_list
+#define GL_SUN_triangle_list 1
+#define __GLEE_GL_SUN_triangle_list 1
+/* Constants */
+#define GL_RESTART_SUN                                     0x0001
+#define GL_REPLACE_MIDDLE_SUN                              0x0002
+#define GL_REPLACE_OLDEST_SUN                              0x0003
+#define GL_TRIANGLE_LIST_SUN                               0x81D7
+#define GL_REPLACEMENT_CODE_SUN                            0x81D8
+#define GL_REPLACEMENT_CODE_ARRAY_SUN                      0x85C0
+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN                 0x85C1
+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN               0x85C2
+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN              0x85C3
+#define GL_R1UI_V3F_SUN                                    0x85C4
+#define GL_R1UI_C4UB_V3F_SUN                               0x85C5
+#define GL_R1UI_C3F_V3F_SUN                                0x85C6
+#define GL_R1UI_N3F_V3F_SUN                                0x85C7
+#define GL_R1UI_C4F_N3F_V3F_SUN                            0x85C8
+#define GL_R1UI_T2F_V3F_SUN                                0x85C9
+#define GL_R1UI_T2F_N3F_V3F_SUN                            0x85CA
+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN                        0x85CB
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint * code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort * code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte * code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* * pointer);
+GLEE_EXTERN PFNGLREPLACEMENTCODEUISUNPROC pglReplacementCodeuiSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUSSUNPROC pglReplacementCodeusSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUBSUNPROC pglReplacementCodeubSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUIVSUNPROC pglReplacementCodeuivSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUSVSUNPROC pglReplacementCodeusvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUBVSUNPROC pglReplacementCodeubvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEPOINTERSUNPROC pglReplacementCodePointerSUN;
+#define glReplacementCodeuiSUN pglReplacementCodeuiSUN
+#define glReplacementCodeusSUN pglReplacementCodeusSUN
+#define glReplacementCodeubSUN pglReplacementCodeubSUN
+#define glReplacementCodeuivSUN pglReplacementCodeuivSUN
+#define glReplacementCodeusvSUN pglReplacementCodeusvSUN
+#define glReplacementCodeubvSUN pglReplacementCodeubvSUN
+#define glReplacementCodePointerSUN pglReplacementCodePointerSUN
+#endif 
+
+/* GL_SUN_vertex */
+
+#ifndef GL_SUN_vertex
+#define GL_SUN_vertex 1
+#define __GLEE_GL_SUN_vertex 1
+/* Constants */
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte * c, const GLfloat * v);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte * c, const GLfloat * v);
+typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat * c, const GLfloat * v);
+typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat * n, const GLfloat * v);
+typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat * tc, const GLfloat * v);
+typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat * tc, const GLfloat * v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat * tc, const GLubyte * c, const GLfloat * v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat * tc, const GLfloat * c, const GLfloat * v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat * tc, const GLfloat * n, const GLfloat * v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint * rc, const GLubyte * c, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * c, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * n, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * tc, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * tc, const GLfloat * n, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+GLEE_EXTERN PFNGLCOLOR4UBVERTEX2FSUNPROC pglColor4ubVertex2fSUN;
+GLEE_EXTERN PFNGLCOLOR4UBVERTEX2FVSUNPROC pglColor4ubVertex2fvSUN;
+GLEE_EXTERN PFNGLCOLOR4UBVERTEX3FSUNPROC pglColor4ubVertex3fSUN;
+GLEE_EXTERN PFNGLCOLOR4UBVERTEX3FVSUNPROC pglColor4ubVertex3fvSUN;
+GLEE_EXTERN PFNGLCOLOR3FVERTEX3FSUNPROC pglColor3fVertex3fSUN;
+GLEE_EXTERN PFNGLCOLOR3FVERTEX3FVSUNPROC pglColor3fVertex3fvSUN;
+GLEE_EXTERN PFNGLNORMAL3FVERTEX3FSUNPROC pglNormal3fVertex3fSUN;
+GLEE_EXTERN PFNGLNORMAL3FVERTEX3FVSUNPROC pglNormal3fVertex3fvSUN;
+GLEE_EXTERN PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC pglColor4fNormal3fVertex3fSUN;
+GLEE_EXTERN PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglColor4fNormal3fVertex3fvSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FVERTEX3FSUNPROC pglTexCoord2fVertex3fSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FVERTEX3FVSUNPROC pglTexCoord2fVertex3fvSUN;
+GLEE_EXTERN PFNGLTEXCOORD4FVERTEX4FSUNPROC pglTexCoord4fVertex4fSUN;
+GLEE_EXTERN PFNGLTEXCOORD4FVERTEX4FVSUNPROC pglTexCoord4fVertex4fvSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC pglTexCoord2fColor4ubVertex3fSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC pglTexCoord2fColor4ubVertex3fvSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC pglTexCoord2fColor3fVertex3fSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC pglTexCoord2fColor3fVertex3fvSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC pglTexCoord2fNormal3fVertex3fSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC pglTexCoord2fNormal3fVertex3fvSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC pglTexCoord2fColor4fNormal3fVertex3fSUN;
+GLEE_EXTERN PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglTexCoord2fColor4fNormal3fVertex3fvSUN;
+GLEE_EXTERN PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC pglTexCoord4fColor4fNormal3fVertex4fSUN;
+GLEE_EXTERN PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC pglTexCoord4fColor4fNormal3fVertex4fvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC pglReplacementCodeuiVertex3fSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC pglReplacementCodeuiVertex3fvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC pglReplacementCodeuiColor4ubVertex3fSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC pglReplacementCodeuiColor4ubVertex3fvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC pglReplacementCodeuiColor3fVertex3fSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC pglReplacementCodeuiColor3fVertex3fvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiNormal3fVertex3fSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiNormal3fVertex3fvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiColor4fNormal3fVertex3fSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiColor4fNormal3fVertex3fvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fVertex3fSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fVertex3fvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fNormal3fVertex3fSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN;
+GLEE_EXTERN PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN;
+#define glColor4ubVertex2fSUN pglColor4ubVertex2fSUN
+#define glColor4ubVertex2fvSUN pglColor4ubVertex2fvSUN
+#define glColor4ubVertex3fSUN pglColor4ubVertex3fSUN
+#define glColor4ubVertex3fvSUN pglColor4ubVertex3fvSUN
+#define glColor3fVertex3fSUN pglColor3fVertex3fSUN
+#define glColor3fVertex3fvSUN pglColor3fVertex3fvSUN
+#define glNormal3fVertex3fSUN pglNormal3fVertex3fSUN
+#define glNormal3fVertex3fvSUN pglNormal3fVertex3fvSUN
+#define glColor4fNormal3fVertex3fSUN pglColor4fNormal3fVertex3fSUN
+#define glColor4fNormal3fVertex3fvSUN pglColor4fNormal3fVertex3fvSUN
+#define glTexCoord2fVertex3fSUN pglTexCoord2fVertex3fSUN
+#define glTexCoord2fVertex3fvSUN pglTexCoord2fVertex3fvSUN
+#define glTexCoord4fVertex4fSUN pglTexCoord4fVertex4fSUN
+#define glTexCoord4fVertex4fvSUN pglTexCoord4fVertex4fvSUN
+#define glTexCoord2fColor4ubVertex3fSUN pglTexCoord2fColor4ubVertex3fSUN
+#define glTexCoord2fColor4ubVertex3fvSUN pglTexCoord2fColor4ubVertex3fvSUN
+#define glTexCoord2fColor3fVertex3fSUN pglTexCoord2fColor3fVertex3fSUN
+#define glTexCoord2fColor3fVertex3fvSUN pglTexCoord2fColor3fVertex3fvSUN
+#define glTexCoord2fNormal3fVertex3fSUN pglTexCoord2fNormal3fVertex3fSUN
+#define glTexCoord2fNormal3fVertex3fvSUN pglTexCoord2fNormal3fVertex3fvSUN
+#define glTexCoord2fColor4fNormal3fVertex3fSUN pglTexCoord2fColor4fNormal3fVertex3fSUN
+#define glTexCoord2fColor4fNormal3fVertex3fvSUN pglTexCoord2fColor4fNormal3fVertex3fvSUN
+#define glTexCoord4fColor4fNormal3fVertex4fSUN pglTexCoord4fColor4fNormal3fVertex4fSUN
+#define glTexCoord4fColor4fNormal3fVertex4fvSUN pglTexCoord4fColor4fNormal3fVertex4fvSUN
+#define glReplacementCodeuiVertex3fSUN pglReplacementCodeuiVertex3fSUN
+#define glReplacementCodeuiVertex3fvSUN pglReplacementCodeuiVertex3fvSUN
+#define glReplacementCodeuiColor4ubVertex3fSUN pglReplacementCodeuiColor4ubVertex3fSUN
+#define glReplacementCodeuiColor4ubVertex3fvSUN pglReplacementCodeuiColor4ubVertex3fvSUN
+#define glReplacementCodeuiColor3fVertex3fSUN pglReplacementCodeuiColor3fVertex3fSUN
+#define glReplacementCodeuiColor3fVertex3fvSUN pglReplacementCodeuiColor3fVertex3fvSUN
+#define glReplacementCodeuiNormal3fVertex3fSUN pglReplacementCodeuiNormal3fVertex3fSUN
+#define glReplacementCodeuiNormal3fVertex3fvSUN pglReplacementCodeuiNormal3fVertex3fvSUN
+#define glReplacementCodeuiColor4fNormal3fVertex3fSUN pglReplacementCodeuiColor4fNormal3fVertex3fSUN
+#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN pglReplacementCodeuiColor4fNormal3fVertex3fvSUN
+#define glReplacementCodeuiTexCoord2fVertex3fSUN pglReplacementCodeuiTexCoord2fVertex3fSUN
+#define glReplacementCodeuiTexCoord2fVertex3fvSUN pglReplacementCodeuiTexCoord2fVertex3fvSUN
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN pglReplacementCodeuiTexCoord2fNormal3fVertex3fSUN
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN pglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN pglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN
+#endif 
+
+/* GL_EXT_blend_func_separate */
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_EXT_blend_func_separate 1
+#define __GLEE_GL_EXT_blend_func_separate 1
+/* Constants */
+#define GL_BLEND_DST_RGB_EXT                               0x80C8
+#define GL_BLEND_SRC_RGB_EXT                               0x80C9
+#define GL_BLEND_DST_ALPHA_EXT                             0x80CA
+#define GL_BLEND_SRC_ALPHA_EXT                             0x80CB
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+GLEE_EXTERN PFNGLBLENDFUNCSEPARATEEXTPROC pglBlendFuncSeparateEXT;
+#define glBlendFuncSeparateEXT pglBlendFuncSeparateEXT
+#endif 
+
+/* GL_INGR_color_clamp */
+
+#ifndef GL_INGR_color_clamp
+#define GL_INGR_color_clamp 1
+#define __GLEE_GL_INGR_color_clamp 1
+/* Constants */
+#define GL_RED_MIN_CLAMP_INGR                              0x8560
+#define GL_GREEN_MIN_CLAMP_INGR                            0x8561
+#define GL_BLUE_MIN_CLAMP_INGR                             0x8562
+#define GL_ALPHA_MIN_CLAMP_INGR                            0x8563
+#define GL_RED_MAX_CLAMP_INGR                              0x8564
+#define GL_GREEN_MAX_CLAMP_INGR                            0x8565
+#define GL_BLUE_MAX_CLAMP_INGR                             0x8566
+#define GL_ALPHA_MAX_CLAMP_INGR                            0x8567
+#endif 
+
+/* GL_INGR_interlace_read */
+
+#ifndef GL_INGR_interlace_read
+#define GL_INGR_interlace_read 1
+#define __GLEE_GL_INGR_interlace_read 1
+/* Constants */
+#define GL_INTERLACE_READ_INGR                             0x8568
+#endif 
+
+/* GL_EXT_stencil_wrap */
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_EXT_stencil_wrap 1
+#define __GLEE_GL_EXT_stencil_wrap 1
+/* Constants */
+#define GL_INCR_WRAP_EXT                                   0x8507
+#define GL_DECR_WRAP_EXT                                   0x8508
+#endif 
+
+/* GL_EXT_422_pixels */
+
+#ifndef GL_EXT_422_pixels
+#define GL_EXT_422_pixels 1
+#define __GLEE_GL_EXT_422_pixels 1
+/* Constants */
+#define GL_422_EXT                                         0x80CC
+#define GL_422_REV_EXT                                     0x80CD
+#define GL_422_AVERAGE_EXT                                 0x80CE
+#define GL_422_REV_AVERAGE_EXT                             0x80CF
+#endif 
+
+/* GL_NV_texgen_reflection */
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NV_texgen_reflection 1
+#define __GLEE_GL_NV_texgen_reflection 1
+/* Constants */
+#define GL_NORMAL_MAP_NV                                   0x8511
+#define GL_REFLECTION_MAP_NV                               0x8512
+#endif 
+
+/* GL_EXT_texture_cube_map */
+
+#ifndef GL_EXT_texture_cube_map
+#define GL_EXT_texture_cube_map 1
+#define __GLEE_GL_EXT_texture_cube_map 1
+/* Constants */
+#define GL_NORMAL_MAP_EXT                                  0x8511
+#define GL_REFLECTION_MAP_EXT                              0x8512
+#define GL_TEXTURE_CUBE_MAP_EXT                            0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT                    0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT                 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT                 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT                 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT                 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT                 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT                 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT                      0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT                   0x851C
+#endif 
+
+/* GL_SUN_convolution_border_modes */
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_SUN_convolution_border_modes 1
+#define __GLEE_GL_SUN_convolution_border_modes 1
+/* Constants */
+#define GL_WRAP_BORDER_SUN                                 0x81D4
+#endif 
+
+/* GL_EXT_texture_env_add */
+
+#ifndef GL_EXT_texture_env_add
+#define GL_EXT_texture_env_add 1
+#define __GLEE_GL_EXT_texture_env_add 1
+/* Constants */
+#endif 
+
+/* GL_EXT_texture_lod_bias */
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_EXT_texture_lod_bias 1
+#define __GLEE_GL_EXT_texture_lod_bias 1
+/* Constants */
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT                        0x84FD
+#define GL_TEXTURE_FILTER_CONTROL_EXT                      0x8500
+#define GL_TEXTURE_LOD_BIAS_EXT                            0x8501
+#endif 
+
+/* GL_EXT_texture_filter_anisotropic */
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_EXT_texture_filter_anisotropic 1
+#define __GLEE_GL_EXT_texture_filter_anisotropic 1
+/* Constants */
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT                      0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                  0x84FF
+#endif 
+
+/* GL_EXT_vertex_weighting */
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_EXT_vertex_weighting 1
+#define __GLEE_GL_EXT_vertex_weighting 1
+/* Constants */
+#define GL_MODELVIEW0_STACK_DEPTH_EXT                      GL_MODELVIEW_STACK_DEPTH
+#define GL_MODELVIEW1_STACK_DEPTH_EXT                      0x8502
+#define GL_MODELVIEW0_MATRIX_EXT                           GL_MODELVIEW_MATRIX
+#define GL_MODELVIEW1_MATRIX_EXT                           0x8506
+#define GL_VERTEX_WEIGHTING_EXT                            0x8509
+#define GL_MODELVIEW0_EXT                                  GL_MODELVIEW
+#define GL_MODELVIEW1_EXT                                  0x850A
+#define GL_CURRENT_VERTEX_WEIGHT_EXT                       0x850B
+#define GL_VERTEX_WEIGHT_ARRAY_EXT                         0x850C
+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT                    0x850D
+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT                    0x850E
+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT                  0x850F
+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT                 0x8510
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat * weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid * pointer);
+GLEE_EXTERN PFNGLVERTEXWEIGHTFEXTPROC pglVertexWeightfEXT;
+GLEE_EXTERN PFNGLVERTEXWEIGHTFVEXTPROC pglVertexWeightfvEXT;
+GLEE_EXTERN PFNGLVERTEXWEIGHTPOINTEREXTPROC pglVertexWeightPointerEXT;
+#define glVertexWeightfEXT pglVertexWeightfEXT
+#define glVertexWeightfvEXT pglVertexWeightfvEXT
+#define glVertexWeightPointerEXT pglVertexWeightPointerEXT
+#endif 
+
+/* GL_NV_light_max_exponent */
+
+#ifndef GL_NV_light_max_exponent
+#define GL_NV_light_max_exponent 1
+#define __GLEE_GL_NV_light_max_exponent 1
+/* Constants */
+#define GL_MAX_SHININESS_NV                                0x8504
+#define GL_MAX_SPOT_EXPONENT_NV                            0x8505
+#endif 
+
+/* GL_NV_vertex_array_range */
+
+#ifndef GL_NV_vertex_array_range
+#define GL_NV_vertex_array_range 1
+#define __GLEE_GL_NV_vertex_array_range 1
+/* Constants */
+#define GL_VERTEX_ARRAY_RANGE_NV                           0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV                    0x851E
+#define GL_VERTEX_ARRAY_RANGE_VALID_NV                     0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV               0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV                   0x8521
+typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) ();
+typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid * pointer);
+GLEE_EXTERN PFNGLFLUSHVERTEXARRAYRANGENVPROC pglFlushVertexArrayRangeNV;
+GLEE_EXTERN PFNGLVERTEXARRAYRANGENVPROC pglVertexArrayRangeNV;
+#define glFlushVertexArrayRangeNV pglFlushVertexArrayRangeNV
+#define glVertexArrayRangeNV pglVertexArrayRangeNV
+#endif 
+
+/* GL_NV_register_combiners */
+
+#ifndef GL_NV_register_combiners
+#define GL_NV_register_combiners 1
+#define __GLEE_GL_NV_register_combiners 1
+/* Constants */
+#define GL_REGISTER_COMBINERS_NV                           0x8522
+#define GL_VARIABLE_A_NV                                   0x8523
+#define GL_VARIABLE_B_NV                                   0x8524
+#define GL_VARIABLE_C_NV                                   0x8525
+#define GL_VARIABLE_D_NV                                   0x8526
+#define GL_VARIABLE_E_NV                                   0x8527
+#define GL_VARIABLE_F_NV                                   0x8528
+#define GL_VARIABLE_G_NV                                   0x8529
+#define GL_CONSTANT_COLOR0_NV                              0x852A
+#define GL_CONSTANT_COLOR1_NV                              0x852B
+#define GL_PRIMARY_COLOR_NV                                0x852C
+#define GL_SECONDARY_COLOR_NV                              0x852D
+#define GL_SPARE0_NV                                       0x852E
+#define GL_SPARE1_NV                                       0x852F
+#define GL_DISCARD_NV                                      0x8530
+#define GL_E_TIMES_F_NV                                    0x8531
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV                  0x8532
+#define GL_UNSIGNED_IDENTITY_NV                            0x8536
+#define GL_UNSIGNED_INVERT_NV                              0x8537
+#define GL_EXPAND_NORMAL_NV                                0x8538
+#define GL_EXPAND_NEGATE_NV                                0x8539
+#define GL_HALF_BIAS_NORMAL_NV                             0x853A
+#define GL_HALF_BIAS_NEGATE_NV                             0x853B
+#define GL_SIGNED_IDENTITY_NV                              0x853C
+#define GL_SIGNED_NEGATE_NV                                0x853D
+#define GL_SCALE_BY_TWO_NV                                 0x853E
+#define GL_SCALE_BY_FOUR_NV                                0x853F
+#define GL_SCALE_BY_ONE_HALF_NV                            0x8540
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV                    0x8541
+#define GL_COMBINER_INPUT_NV                               0x8542
+#define GL_COMBINER_MAPPING_NV                             0x8543
+#define GL_COMBINER_COMPONENT_USAGE_NV                     0x8544
+#define GL_COMBINER_AB_DOT_PRODUCT_NV                      0x8545
+#define GL_COMBINER_CD_DOT_PRODUCT_NV                      0x8546
+#define GL_COMBINER_MUX_SUM_NV                             0x8547
+#define GL_COMBINER_SCALE_NV                               0x8548
+#define GL_COMBINER_BIAS_NV                                0x8549
+#define GL_COMBINER_AB_OUTPUT_NV                           0x854A
+#define GL_COMBINER_CD_OUTPUT_NV                           0x854B
+#define GL_COMBINER_SUM_OUTPUT_NV                          0x854C
+#define GL_MAX_GENERAL_COMBINERS_NV                        0x854D
+#define GL_NUM_GENERAL_COMBINERS_NV                        0x854E
+#define GL_COLOR_SUM_CLAMP_NV                              0x854F
+#define GL_COMBINER0_NV                                    0x8550
+#define GL_COMBINER1_NV                                    0x8551
+#define GL_COMBINER2_NV                                    0x8552
+#define GL_COMBINER3_NV                                    0x8553
+#define GL_COMBINER4_NV                                    0x8554
+#define GL_COMBINER5_NV                                    0x8555
+#define GL_COMBINER6_NV                                    0x8556
+#define GL_COMBINER7_NV                                    0x8557
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint * params);
+GLEE_EXTERN PFNGLCOMBINERPARAMETERFVNVPROC pglCombinerParameterfvNV;
+GLEE_EXTERN PFNGLCOMBINERPARAMETERFNVPROC pglCombinerParameterfNV;
+GLEE_EXTERN PFNGLCOMBINERPARAMETERIVNVPROC pglCombinerParameterivNV;
+GLEE_EXTERN PFNGLCOMBINERPARAMETERINVPROC pglCombinerParameteriNV;
+GLEE_EXTERN PFNGLCOMBINERINPUTNVPROC pglCombinerInputNV;
+GLEE_EXTERN PFNGLCOMBINEROUTPUTNVPROC pglCombinerOutputNV;
+GLEE_EXTERN PFNGLFINALCOMBINERINPUTNVPROC pglFinalCombinerInputNV;
+GLEE_EXTERN PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC pglGetCombinerInputParameterfvNV;
+GLEE_EXTERN PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC pglGetCombinerInputParameterivNV;
+GLEE_EXTERN PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC pglGetCombinerOutputParameterfvNV;
+GLEE_EXTERN PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC pglGetCombinerOutputParameterivNV;
+GLEE_EXTERN PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC pglGetFinalCombinerInputParameterfvNV;
+GLEE_EXTERN PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC pglGetFinalCombinerInputParameterivNV;
+#define glCombinerParameterfvNV pglCombinerParameterfvNV
+#define glCombinerParameterfNV pglCombinerParameterfNV
+#define glCombinerParameterivNV pglCombinerParameterivNV
+#define glCombinerParameteriNV pglCombinerParameteriNV
+#define glCombinerInputNV pglCombinerInputNV
+#define glCombinerOutputNV pglCombinerOutputNV
+#define glFinalCombinerInputNV pglFinalCombinerInputNV
+#define glGetCombinerInputParameterfvNV pglGetCombinerInputParameterfvNV
+#define glGetCombinerInputParameterivNV pglGetCombinerInputParameterivNV
+#define glGetCombinerOutputParameterfvNV pglGetCombinerOutputParameterfvNV
+#define glGetCombinerOutputParameterivNV pglGetCombinerOutputParameterivNV
+#define glGetFinalCombinerInputParameterfvNV pglGetFinalCombinerInputParameterfvNV
+#define glGetFinalCombinerInputParameterivNV pglGetFinalCombinerInputParameterivNV
+#endif 
+
+/* GL_NV_fog_distance */
+
+#ifndef GL_NV_fog_distance
+#define GL_NV_fog_distance 1
+#define __GLEE_GL_NV_fog_distance 1
+/* Constants */
+#define GL_FOG_DISTANCE_MODE_NV                            0x855A
+#define GL_EYE_RADIAL_NV                                   0x855B
+#define GL_EYE_PLANE_ABSOLUTE_NV                           0x855C
+#endif 
+
+/* GL_NV_texgen_emboss */
+
+#ifndef GL_NV_texgen_emboss
+#define GL_NV_texgen_emboss 1
+#define __GLEE_GL_NV_texgen_emboss 1
+/* Constants */
+#define GL_EMBOSS_LIGHT_NV                                 0x855D
+#define GL_EMBOSS_CONSTANT_NV                              0x855E
+#define GL_EMBOSS_MAP_NV                                   0x855F
+#endif 
+
+/* GL_NV_blend_square */
+
+#ifndef GL_NV_blend_square
+#define GL_NV_blend_square 1
+#define __GLEE_GL_NV_blend_square 1
+/* Constants */
+#endif 
+
+/* GL_NV_texture_env_combine4 */
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_NV_texture_env_combine4 1
+#define __GLEE_GL_NV_texture_env_combine4 1
+/* Constants */
+#define GL_COMBINE4_NV                                     0x8503
+#define GL_SOURCE3_RGB_NV                                  0x8583
+#define GL_SOURCE3_ALPHA_NV                                0x858B
+#define GL_OPERAND3_RGB_NV                                 0x8593
+#define GL_OPERAND3_ALPHA_NV                               0x859B
+#endif 
+
+/* GL_MESA_resize_buffers */
+
+#ifndef GL_MESA_resize_buffers
+#define GL_MESA_resize_buffers 1
+#define __GLEE_GL_MESA_resize_buffers 1
+/* Constants */
+typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) ();
+GLEE_EXTERN PFNGLRESIZEBUFFERSMESAPROC pglResizeBuffersMESA;
+#define glResizeBuffersMESA pglResizeBuffersMESA
+#endif 
+
+/* GL_MESA_window_pos */
+
+#ifndef GL_MESA_window_pos
+#define GL_MESA_window_pos 1
+#define __GLEE_GL_MESA_window_pos 1
+/* Constants */
+typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint * v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort * v);
+GLEE_EXTERN PFNGLWINDOWPOS2DMESAPROC pglWindowPos2dMESA;
+GLEE_EXTERN PFNGLWINDOWPOS2DVMESAPROC pglWindowPos2dvMESA;
+GLEE_EXTERN PFNGLWINDOWPOS2FMESAPROC pglWindowPos2fMESA;
+GLEE_EXTERN PFNGLWINDOWPOS2FVMESAPROC pglWindowPos2fvMESA;
+GLEE_EXTERN PFNGLWINDOWPOS2IMESAPROC pglWindowPos2iMESA;
+GLEE_EXTERN PFNGLWINDOWPOS2IVMESAPROC pglWindowPos2ivMESA;
+GLEE_EXTERN PFNGLWINDOWPOS2SMESAPROC pglWindowPos2sMESA;
+GLEE_EXTERN PFNGLWINDOWPOS2SVMESAPROC pglWindowPos2svMESA;
+GLEE_EXTERN PFNGLWINDOWPOS3DMESAPROC pglWindowPos3dMESA;
+GLEE_EXTERN PFNGLWINDOWPOS3DVMESAPROC pglWindowPos3dvMESA;
+GLEE_EXTERN PFNGLWINDOWPOS3FMESAPROC pglWindowPos3fMESA;
+GLEE_EXTERN PFNGLWINDOWPOS3FVMESAPROC pglWindowPos3fvMESA;
+GLEE_EXTERN PFNGLWINDOWPOS3IMESAPROC pglWindowPos3iMESA;
+GLEE_EXTERN PFNGLWINDOWPOS3IVMESAPROC pglWindowPos3ivMESA;
+GLEE_EXTERN PFNGLWINDOWPOS3SMESAPROC pglWindowPos3sMESA;
+GLEE_EXTERN PFNGLWINDOWPOS3SVMESAPROC pglWindowPos3svMESA;
+GLEE_EXTERN PFNGLWINDOWPOS4DMESAPROC pglWindowPos4dMESA;
+GLEE_EXTERN PFNGLWINDOWPOS4DVMESAPROC pglWindowPos4dvMESA;
+GLEE_EXTERN PFNGLWINDOWPOS4FMESAPROC pglWindowPos4fMESA;
+GLEE_EXTERN PFNGLWINDOWPOS4FVMESAPROC pglWindowPos4fvMESA;
+GLEE_EXTERN PFNGLWINDOWPOS4IMESAPROC pglWindowPos4iMESA;
+GLEE_EXTERN PFNGLWINDOWPOS4IVMESAPROC pglWindowPos4ivMESA;
+GLEE_EXTERN PFNGLWINDOWPOS4SMESAPROC pglWindowPos4sMESA;
+GLEE_EXTERN PFNGLWINDOWPOS4SVMESAPROC pglWindowPos4svMESA;
+#define glWindowPos2dMESA pglWindowPos2dMESA
+#define glWindowPos2dvMESA pglWindowPos2dvMESA
+#define glWindowPos2fMESA pglWindowPos2fMESA
+#define glWindowPos2fvMESA pglWindowPos2fvMESA
+#define glWindowPos2iMESA pglWindowPos2iMESA
+#define glWindowPos2ivMESA pglWindowPos2ivMESA
+#define glWindowPos2sMESA pglWindowPos2sMESA
+#define glWindowPos2svMESA pglWindowPos2svMESA
+#define glWindowPos3dMESA pglWindowPos3dMESA
+#define glWindowPos3dvMESA pglWindowPos3dvMESA
+#define glWindowPos3fMESA pglWindowPos3fMESA
+#define glWindowPos3fvMESA pglWindowPos3fvMESA
+#define glWindowPos3iMESA pglWindowPos3iMESA
+#define glWindowPos3ivMESA pglWindowPos3ivMESA
+#define glWindowPos3sMESA pglWindowPos3sMESA
+#define glWindowPos3svMESA pglWindowPos3svMESA
+#define glWindowPos4dMESA pglWindowPos4dMESA
+#define glWindowPos4dvMESA pglWindowPos4dvMESA
+#define glWindowPos4fMESA pglWindowPos4fMESA
+#define glWindowPos4fvMESA pglWindowPos4fvMESA
+#define glWindowPos4iMESA pglWindowPos4iMESA
+#define glWindowPos4ivMESA pglWindowPos4ivMESA
+#define glWindowPos4sMESA pglWindowPos4sMESA
+#define glWindowPos4svMESA pglWindowPos4svMESA
+#endif 
+
+/* GL_EXT_texture_compression_s3tc */
+
+#ifndef GL_EXT_texture_compression_s3tc
+#define GL_EXT_texture_compression_s3tc 1
+#define __GLEE_GL_EXT_texture_compression_s3tc 1
+/* Constants */
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT                    0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                   0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT                   0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT                   0x83F3
+#endif 
+
+/* GL_IBM_cull_vertex */
+
+#ifndef GL_IBM_cull_vertex
+#define GL_IBM_cull_vertex 1
+#define __GLEE_GL_IBM_cull_vertex 1
+/* Constants */
+#define GL_CULL_VERTEX_IBM                                 103050
+#endif 
+
+/* GL_IBM_multimode_draw_arrays */
+
+#ifndef GL_IBM_multimode_draw_arrays
+#define GL_IBM_multimode_draw_arrays 1
+#define __GLEE_GL_IBM_multimode_draw_arrays 1
+/* Constants */
+typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
+typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei primcount, GLint modestride);
+GLEE_EXTERN PFNGLMULTIMODEDRAWARRAYSIBMPROC pglMultiModeDrawArraysIBM;
+GLEE_EXTERN PFNGLMULTIMODEDRAWELEMENTSIBMPROC pglMultiModeDrawElementsIBM;
+#define glMultiModeDrawArraysIBM pglMultiModeDrawArraysIBM
+#define glMultiModeDrawElementsIBM pglMultiModeDrawElementsIBM
+#endif 
+
+/* GL_IBM_vertex_array_lists */
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_IBM_vertex_array_lists 1
+#define __GLEE_GL_IBM_vertex_array_lists 1
+/* Constants */
+#define GL_VERTEX_ARRAY_LIST_IBM                           103070
+#define GL_NORMAL_ARRAY_LIST_IBM                           103071
+#define GL_COLOR_ARRAY_LIST_IBM                            103072
+#define GL_INDEX_ARRAY_LIST_IBM                            103073
+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM                    103074
+#define GL_EDGE_FLAG_ARRAY_LIST_IBM                        103075
+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM                   103076
+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM                  103077
+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM                    103080
+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM                    103081
+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM                     103082
+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM                     103083
+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM             103084
+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM                 103085
+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM            103086
+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM           103087
+typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* * pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride);
+GLEE_EXTERN PFNGLCOLORPOINTERLISTIBMPROC pglColorPointerListIBM;
+GLEE_EXTERN PFNGLSECONDARYCOLORPOINTERLISTIBMPROC pglSecondaryColorPointerListIBM;
+GLEE_EXTERN PFNGLEDGEFLAGPOINTERLISTIBMPROC pglEdgeFlagPointerListIBM;
+GLEE_EXTERN PFNGLFOGCOORDPOINTERLISTIBMPROC pglFogCoordPointerListIBM;
+GLEE_EXTERN PFNGLINDEXPOINTERLISTIBMPROC pglIndexPointerListIBM;
+GLEE_EXTERN PFNGLNORMALPOINTERLISTIBMPROC pglNormalPointerListIBM;
+GLEE_EXTERN PFNGLTEXCOORDPOINTERLISTIBMPROC pglTexCoordPointerListIBM;
+GLEE_EXTERN PFNGLVERTEXPOINTERLISTIBMPROC pglVertexPointerListIBM;
+#define glColorPointerListIBM pglColorPointerListIBM
+#define glSecondaryColorPointerListIBM pglSecondaryColorPointerListIBM
+#define glEdgeFlagPointerListIBM pglEdgeFlagPointerListIBM
+#define glFogCoordPointerListIBM pglFogCoordPointerListIBM
+#define glIndexPointerListIBM pglIndexPointerListIBM
+#define glNormalPointerListIBM pglNormalPointerListIBM
+#define glTexCoordPointerListIBM pglTexCoordPointerListIBM
+#define glVertexPointerListIBM pglVertexPointerListIBM
+#endif 
+
+/* GL_SGIX_subsample */
+
+#ifndef GL_SGIX_subsample
+#define GL_SGIX_subsample 1
+#define __GLEE_GL_SGIX_subsample 1
+/* Constants */
+#define GL_PACK_SUBSAMPLE_RATE_SGIX                        0x85A0
+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX                      0x85A1
+#define GL_PIXEL_SUBSAMPLE_4444_SGIX                       0x85A2
+#define GL_PIXEL_SUBSAMPLE_2424_SGIX                       0x85A3
+#define GL_PIXEL_SUBSAMPLE_4242_SGIX                       0x85A4
+#endif 
+
+/* GL_SGIX_ycrcb_subsample */
+
+#ifndef GL_SGIX_ycrcb_subsample
+#define GL_SGIX_ycrcb_subsample 1
+#define __GLEE_GL_SGIX_ycrcb_subsample 1
+/* Constants */
+#endif 
+
+/* GL_SGIX_ycrcba */
+
+#ifndef GL_SGIX_ycrcba
+#define GL_SGIX_ycrcba 1
+#define __GLEE_GL_SGIX_ycrcba 1
+/* Constants */
+#define GL_YCRCB_SGIX                                      0x8318
+#define GL_YCRCBA_SGIX                                     0x8319
+#endif 
+
+/* GL_SGI_depth_pass_instrument */
+
+#ifndef GL_SGI_depth_pass_instrument
+#define GL_SGI_depth_pass_instrument 1
+#define __GLEE_GL_SGI_depth_pass_instrument 1
+/* Constants */
+#define GL_DEPTH_PASS_INSTRUMENT_SGIX                      0x8310
+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX             0x8311
+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX                  0x8312
+#endif 
+
+/* GL_3DFX_texture_compression_FXT1 */
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_3DFX_texture_compression_FXT1 1
+#define __GLEE_GL_3DFX_texture_compression_FXT1 1
+/* Constants */
+#define GL_COMPRESSED_RGB_FXT1_3DFX                        0x86B0
+#define GL_COMPRESSED_RGBA_FXT1_3DFX                       0x86B1
+#endif 
+
+/* GL_3DFX_multisample */
+
+#ifndef GL_3DFX_multisample
+#define GL_3DFX_multisample 1
+#define __GLEE_GL_3DFX_multisample 1
+/* Constants */
+#define GL_MULTISAMPLE_3DFX                                0x86B2
+#define GL_SAMPLE_BUFFERS_3DFX                             0x86B3
+#define GL_SAMPLES_3DFX                                    0x86B4
+#define GL_MULTISAMPLE_BIT_3DFX                            0x20000000
+#endif 
+
+/* GL_3DFX_tbuffer */
+
+#ifndef GL_3DFX_tbuffer
+#define GL_3DFX_tbuffer 1
+#define __GLEE_GL_3DFX_tbuffer 1
+/* Constants */
+typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
+GLEE_EXTERN PFNGLTBUFFERMASK3DFXPROC pglTbufferMask3DFX;
+#define glTbufferMask3DFX pglTbufferMask3DFX
+#endif 
+
+/* GL_EXT_multisample */
+
+#ifndef GL_EXT_multisample
+#define GL_EXT_multisample 1
+#define __GLEE_GL_EXT_multisample 1
+/* Constants */
+#define GL_MULTISAMPLE_EXT                                 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_EXT                        0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT                         0x809F
+#define GL_SAMPLE_MASK_EXT                                 0x80A0
+#define GL_1PASS_EXT                                       0x80A1
+#define GL_2PASS_0_EXT                                     0x80A2
+#define GL_2PASS_1_EXT                                     0x80A3
+#define GL_4PASS_0_EXT                                     0x80A4
+#define GL_4PASS_1_EXT                                     0x80A5
+#define GL_4PASS_2_EXT                                     0x80A6
+#define GL_4PASS_3_EXT                                     0x80A7
+#define GL_SAMPLE_BUFFERS_EXT                              0x80A8
+#define GL_SAMPLES_EXT                                     0x80A9
+#define GL_SAMPLE_MASK_VALUE_EXT                           0x80AA
+#define GL_SAMPLE_MASK_INVERT_EXT                          0x80AB
+#define GL_SAMPLE_PATTERN_EXT                              0x80AC
+#define GL_MULTISAMPLE_BIT_EXT                             0x20000000
+typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
+GLEE_EXTERN PFNGLSAMPLEMASKEXTPROC pglSampleMaskEXT;
+GLEE_EXTERN PFNGLSAMPLEPATTERNEXTPROC pglSamplePatternEXT;
+#define glSampleMaskEXT pglSampleMaskEXT
+#define glSamplePatternEXT pglSamplePatternEXT
+#endif 
+
+/* GL_SGIX_vertex_preclip */
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_SGIX_vertex_preclip 1
+#define __GLEE_GL_SGIX_vertex_preclip 1
+/* Constants */
+#define GL_VERTEX_PRECLIP_SGIX                             0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX                        0x83EF
+#endif 
+
+/* GL_SGIX_convolution_accuracy */
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_SGIX_convolution_accuracy 1
+#define __GLEE_GL_SGIX_convolution_accuracy 1
+/* Constants */
+#define GL_CONVOLUTION_HINT_SGIX                           0x8316
+#endif 
+
+/* GL_SGIX_resample */
+
+#ifndef GL_SGIX_resample
+#define GL_SGIX_resample 1
+#define __GLEE_GL_SGIX_resample 1
+/* Constants */
+#define GL_PACK_RESAMPLE_SGIX                              0x842C
+#define GL_UNPACK_RESAMPLE_SGIX                            0x842D
+#define GL_RESAMPLE_REPLICATE_SGIX                         0x842E
+#define GL_RESAMPLE_ZERO_FILL_SGIX                         0x842F
+#define GL_RESAMPLE_DECIMATE_SGIX                          0x8430
+#endif 
+
+/* GL_SGIS_point_line_texgen */
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_SGIS_point_line_texgen 1
+#define __GLEE_GL_SGIS_point_line_texgen 1
+/* Constants */
+#define GL_EYE_DISTANCE_TO_POINT_SGIS                      0x81F0
+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS                   0x81F1
+#define GL_EYE_DISTANCE_TO_LINE_SGIS                       0x81F2
+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS                    0x81F3
+#define GL_EYE_POINT_SGIS                                  0x81F4
+#define GL_OBJECT_POINT_SGIS                               0x81F5
+#define GL_EYE_LINE_SGIS                                   0x81F6
+#define GL_OBJECT_LINE_SGIS                                0x81F7
+#endif 
+
+/* GL_SGIS_texture_color_mask */
+
+#ifndef GL_SGIS_texture_color_mask
+#define GL_SGIS_texture_color_mask 1
+#define __GLEE_GL_SGIS_texture_color_mask 1
+/* Constants */
+#define GL_TEXTURE_COLOR_WRITEMASK_SGIS                    0x81EF
+typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GLEE_EXTERN PFNGLTEXTURECOLORMASKSGISPROC pglTextureColorMaskSGIS;
+#define glTextureColorMaskSGIS pglTextureColorMaskSGIS
+#endif 
+
+/* GL_EXT_texture_env_dot3 */
+
+#ifndef GL_EXT_texture_env_dot3
+#define GL_EXT_texture_env_dot3 1
+#define __GLEE_GL_EXT_texture_env_dot3 1
+/* Constants */
+#define GL_DOT3_RGB_EXT                                    0x8740
+#define GL_DOT3_RGBA_EXT                                   0x8741
+#endif 
+
+/* GL_ATI_texture_mirror_once */
+
+#ifndef GL_ATI_texture_mirror_once
+#define GL_ATI_texture_mirror_once 1
+#define __GLEE_GL_ATI_texture_mirror_once 1
+/* Constants */
+#define GL_MIRROR_CLAMP_ATI                                0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_ATI                        0x8743
+#endif 
+
+/* GL_NV_fence */
+
+#ifndef GL_NV_fence
+#define GL_NV_fence 1
+#define __GLEE_GL_NV_fence 1
+/* Constants */
+#define GL_ALL_COMPLETED_NV                                0x84F2
+#define GL_FENCE_STATUS_NV                                 0x84F3
+#define GL_FENCE_CONDITION_NV                              0x84F4
+typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint * fences);
+typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint * fences);
+typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
+GLEE_EXTERN PFNGLDELETEFENCESNVPROC pglDeleteFencesNV;
+GLEE_EXTERN PFNGLGENFENCESNVPROC pglGenFencesNV;
+GLEE_EXTERN PFNGLISFENCENVPROC pglIsFenceNV;
+GLEE_EXTERN PFNGLTESTFENCENVPROC pglTestFenceNV;
+GLEE_EXTERN PFNGLGETFENCEIVNVPROC pglGetFenceivNV;
+GLEE_EXTERN PFNGLFINISHFENCENVPROC pglFinishFenceNV;
+GLEE_EXTERN PFNGLSETFENCENVPROC pglSetFenceNV;
+#define glDeleteFencesNV pglDeleteFencesNV
+#define glGenFencesNV pglGenFencesNV
+#define glIsFenceNV pglIsFenceNV
+#define glTestFenceNV pglTestFenceNV
+#define glGetFenceivNV pglGetFenceivNV
+#define glFinishFenceNV pglFinishFenceNV
+#define glSetFenceNV pglSetFenceNV
+#endif 
+
+/* GL_IBM_texture_mirrored_repeat */
+
+#ifndef GL_IBM_texture_mirrored_repeat
+#define GL_IBM_texture_mirrored_repeat 1
+#define __GLEE_GL_IBM_texture_mirrored_repeat 1
+/* Constants */
+#define GL_MIRRORED_REPEAT_IBM                             0x8370
+#endif 
+
+/* GL_NV_evaluators */
+
+#ifndef GL_NV_evaluators
+#define GL_NV_evaluators 1
+#define __GLEE_GL_NV_evaluators 1
+/* Constants */
+#define GL_EVAL_2D_NV                                      0x86C0
+#define GL_EVAL_TRIANGULAR_2D_NV                           0x86C1
+#define GL_MAP_TESSELLATION_NV                             0x86C2
+#define GL_MAP_ATTRIB_U_ORDER_NV                           0x86C3
+#define GL_MAP_ATTRIB_V_ORDER_NV                           0x86C4
+#define GL_EVAL_FRACTIONAL_TESSELLATION_NV                 0x86C5
+#define GL_EVAL_VERTEX_ATTRIB0_NV                          0x86C6
+#define GL_EVAL_VERTEX_ATTRIB1_NV                          0x86C7
+#define GL_EVAL_VERTEX_ATTRIB2_NV                          0x86C8
+#define GL_EVAL_VERTEX_ATTRIB3_NV                          0x86C9
+#define GL_EVAL_VERTEX_ATTRIB4_NV                          0x86CA
+#define GL_EVAL_VERTEX_ATTRIB5_NV                          0x86CB
+#define GL_EVAL_VERTEX_ATTRIB6_NV                          0x86CC
+#define GL_EVAL_VERTEX_ATTRIB7_NV                          0x86CD
+#define GL_EVAL_VERTEX_ATTRIB8_NV                          0x86CE
+#define GL_EVAL_VERTEX_ATTRIB9_NV                          0x86CF
+#define GL_EVAL_VERTEX_ATTRIB10_NV                         0x86D0
+#define GL_EVAL_VERTEX_ATTRIB11_NV                         0x86D1
+#define GL_EVAL_VERTEX_ATTRIB12_NV                         0x86D2
+#define GL_EVAL_VERTEX_ATTRIB13_NV                         0x86D3
+#define GL_EVAL_VERTEX_ATTRIB14_NV                         0x86D4
+#define GL_EVAL_VERTEX_ATTRIB15_NV                         0x86D5
+#define GL_MAX_MAP_TESSELLATION_NV                         0x86D6
+#define GL_MAX_RATIONAL_EVAL_ORDER_NV                      0x86D7
+typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid * points);
+typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid * points);
+typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
+GLEE_EXTERN PFNGLMAPCONTROLPOINTSNVPROC pglMapControlPointsNV;
+GLEE_EXTERN PFNGLMAPPARAMETERIVNVPROC pglMapParameterivNV;
+GLEE_EXTERN PFNGLMAPPARAMETERFVNVPROC pglMapParameterfvNV;
+GLEE_EXTERN PFNGLGETMAPCONTROLPOINTSNVPROC pglGetMapControlPointsNV;
+GLEE_EXTERN PFNGLGETMAPPARAMETERIVNVPROC pglGetMapParameterivNV;
+GLEE_EXTERN PFNGLGETMAPPARAMETERFVNVPROC pglGetMapParameterfvNV;
+GLEE_EXTERN PFNGLGETMAPATTRIBPARAMETERIVNVPROC pglGetMapAttribParameterivNV;
+GLEE_EXTERN PFNGLGETMAPATTRIBPARAMETERFVNVPROC pglGetMapAttribParameterfvNV;
+GLEE_EXTERN PFNGLEVALMAPSNVPROC pglEvalMapsNV;
+#define glMapControlPointsNV pglMapControlPointsNV
+#define glMapParameterivNV pglMapParameterivNV
+#define glMapParameterfvNV pglMapParameterfvNV
+#define glGetMapControlPointsNV pglGetMapControlPointsNV
+#define glGetMapParameterivNV pglGetMapParameterivNV
+#define glGetMapParameterfvNV pglGetMapParameterfvNV
+#define glGetMapAttribParameterivNV pglGetMapAttribParameterivNV
+#define glGetMapAttribParameterfvNV pglGetMapAttribParameterfvNV
+#define glEvalMapsNV pglEvalMapsNV
+#endif 
+
+/* GL_NV_packed_depth_stencil */
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_NV_packed_depth_stencil 1
+#define __GLEE_GL_NV_packed_depth_stencil 1
+/* Constants */
+#define GL_DEPTH_STENCIL_NV                                0x84F9
+#define GL_UNSIGNED_INT_24_8_NV                            0x84FA
+#endif 
+
+/* GL_NV_register_combiners2 */
+
+#ifndef GL_NV_register_combiners2
+#define GL_NV_register_combiners2 1
+#define __GLEE_GL_NV_register_combiners2 1
+/* Constants */
+#define GL_PER_STAGE_CONSTANTS_NV                          0x8535
+typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat * params);
+typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat * params);
+GLEE_EXTERN PFNGLCOMBINERSTAGEPARAMETERFVNVPROC pglCombinerStageParameterfvNV;
+GLEE_EXTERN PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC pglGetCombinerStageParameterfvNV;
+#define glCombinerStageParameterfvNV pglCombinerStageParameterfvNV
+#define glGetCombinerStageParameterfvNV pglGetCombinerStageParameterfvNV
+#endif 
+
+/* GL_NV_texture_compression_vtc */
+
+#ifndef GL_NV_texture_compression_vtc
+#define GL_NV_texture_compression_vtc 1
+#define __GLEE_GL_NV_texture_compression_vtc 1
+/* Constants */
+#endif 
+
+/* GL_NV_texture_rectangle */
+
+#ifndef GL_NV_texture_rectangle
+#define GL_NV_texture_rectangle 1
+#define __GLEE_GL_NV_texture_rectangle 1
+/* Constants */
+#define GL_TEXTURE_RECTANGLE_NV                            0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_NV                    0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_NV                      0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV                   0x84F8
+#endif 
+
+/* GL_NV_texture_shader */
+
+#ifndef GL_NV_texture_shader
+#define GL_NV_texture_shader 1
+#define __GLEE_GL_NV_texture_shader 1
+/* Constants */
+#define GL_OFFSET_TEXTURE_RECTANGLE_NV                     0x864C
+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV               0x864D
+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV                0x864E
+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV            0x86D9
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV                       0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV                   0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV                           0x86DC
+#define GL_SHADER_CONSISTENT_NV                            0x86DD
+#define GL_TEXTURE_SHADER_NV                               0x86DE
+#define GL_SHADER_OPERATION_NV                             0x86DF
+#define GL_CULL_MODES_NV                                   0x86E0
+#define GL_OFFSET_TEXTURE_MATRIX_NV                        0x86E1
+#define GL_OFFSET_TEXTURE_SCALE_NV                         0x86E2
+#define GL_OFFSET_TEXTURE_BIAS_NV                          0x86E3
+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV                     GL_OFFSET_TEXTURE_MATRIX_NV
+#define GL_OFFSET_TEXTURE_2D_SCALE_NV                      GL_OFFSET_TEXTURE_SCALE_NV
+#define GL_OFFSET_TEXTURE_2D_BIAS_NV                       GL_OFFSET_TEXTURE_BIAS_NV
+#define GL_PREVIOUS_TEXTURE_INPUT_NV                       0x86E4
+#define GL_CONST_EYE_NV                                    0x86E5
+#define GL_PASS_THROUGH_NV                                 0x86E6
+#define GL_CULL_FRAGMENT_NV                                0x86E7
+#define GL_OFFSET_TEXTURE_2D_NV                            0x86E8
+#define GL_DEPENDENT_AR_TEXTURE_2D_NV                      0x86E9
+#define GL_DEPENDENT_GB_TEXTURE_2D_NV                      0x86EA
+#define GL_DOT_PRODUCT_NV                                  0x86EC
+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV                    0x86ED
+#define GL_DOT_PRODUCT_TEXTURE_2D_NV                       0x86EE
+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV                 0x86F0
+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV                 0x86F1
+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV                 0x86F2
+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV       0x86F3
+#define GL_HILO_NV                                         0x86F4
+#define GL_DSDT_NV                                         0x86F5
+#define GL_DSDT_MAG_NV                                     0x86F6
+#define GL_DSDT_MAG_VIB_NV                                 0x86F7
+#define GL_HILO16_NV                                       0x86F8
+#define GL_SIGNED_HILO_NV                                  0x86F9
+#define GL_SIGNED_HILO16_NV                                0x86FA
+#define GL_SIGNED_RGBA_NV                                  0x86FB
+#define GL_SIGNED_RGBA8_NV                                 0x86FC
+#define GL_SIGNED_RGB_NV                                   0x86FE
+#define GL_SIGNED_RGB8_NV                                  0x86FF
+#define GL_SIGNED_LUMINANCE_NV                             0x8701
+#define GL_SIGNED_LUMINANCE8_NV                            0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV                       0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV                     0x8704
+#define GL_SIGNED_ALPHA_NV                                 0x8705
+#define GL_SIGNED_ALPHA8_NV                                0x8706
+#define GL_SIGNED_INTENSITY_NV                             0x8707
+#define GL_SIGNED_INTENSITY8_NV                            0x8708
+#define GL_DSDT8_NV                                        0x8709
+#define GL_DSDT8_MAG8_NV                                   0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV                        0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV                    0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV                  0x870D
+#define GL_HI_SCALE_NV                                     0x870E
+#define GL_LO_SCALE_NV                                     0x870F
+#define GL_DS_SCALE_NV                                     0x8710
+#define GL_DT_SCALE_NV                                     0x8711
+#define GL_MAGNITUDE_SCALE_NV                              0x8712
+#define GL_VIBRANCE_SCALE_NV                               0x8713
+#define GL_HI_BIAS_NV                                      0x8714
+#define GL_LO_BIAS_NV                                      0x8715
+#define GL_DS_BIAS_NV                                      0x8716
+#define GL_DT_BIAS_NV                                      0x8717
+#define GL_MAGNITUDE_BIAS_NV                               0x8718
+#define GL_VIBRANCE_BIAS_NV                                0x8719
+#define GL_TEXTURE_BORDER_VALUES_NV                        0x871A
+#define GL_TEXTURE_HI_SIZE_NV                              0x871B
+#define GL_TEXTURE_LO_SIZE_NV                              0x871C
+#define GL_TEXTURE_DS_SIZE_NV                              0x871D
+#define GL_TEXTURE_DT_SIZE_NV                              0x871E
+#define GL_TEXTURE_MAG_SIZE_NV                             0x871F
+#endif 
+
+/* GL_NV_texture_shader2 */
+
+#ifndef GL_NV_texture_shader2
+#define GL_NV_texture_shader2 1
+#define __GLEE_GL_NV_texture_shader2 1
+/* Constants */
+#define GL_DOT_PRODUCT_TEXTURE_3D_NV                       0x86EF
+#endif 
+
+/* GL_NV_vertex_array_range2 */
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_NV_vertex_array_range2 1
+#define __GLEE_GL_NV_vertex_array_range2 1
+/* Constants */
+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV             0x8533
+#endif 
+
+/* GL_NV_vertex_program */
+
+#ifndef GL_NV_vertex_program
+#define GL_NV_vertex_program 1
+#define __GLEE_GL_NV_vertex_program 1
+/* Constants */
+#define GL_VERTEX_PROGRAM_NV                               0x8620
+#define GL_VERTEX_STATE_PROGRAM_NV                         0x8621
+#define GL_ATTRIB_ARRAY_SIZE_NV                            0x8623
+#define GL_ATTRIB_ARRAY_STRIDE_NV                          0x8624
+#define GL_ATTRIB_ARRAY_TYPE_NV                            0x8625
+#define GL_CURRENT_ATTRIB_NV                               0x8626
+#define GL_PROGRAM_LENGTH_NV                               0x8627
+#define GL_PROGRAM_STRING_NV                               0x8628
+#define GL_MODELVIEW_PROJECTION_NV                         0x8629
+#define GL_IDENTITY_NV                                     0x862A
+#define GL_INVERSE_NV                                      0x862B
+#define GL_TRANSPOSE_NV                                    0x862C
+#define GL_INVERSE_TRANSPOSE_NV                            0x862D
+#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV                 0x862E
+#define GL_MAX_TRACK_MATRICES_NV                           0x862F
+#define GL_MATRIX0_NV                                      0x8630
+#define GL_MATRIX1_NV                                      0x8631
+#define GL_MATRIX2_NV                                      0x8632
+#define GL_MATRIX3_NV                                      0x8633
+#define GL_MATRIX4_NV                                      0x8634
+#define GL_MATRIX5_NV                                      0x8635
+#define GL_MATRIX6_NV                                      0x8636
+#define GL_MATRIX7_NV                                      0x8637
+#define GL_CURRENT_MATRIX_STACK_DEPTH_NV                   0x8640
+#define GL_CURRENT_MATRIX_NV                               0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_NV                    0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_NV                      0x8643
+#define GL_PROGRAM_PARAMETER_NV                            0x8644
+#define GL_ATTRIB_ARRAY_POINTER_NV                         0x8645
+#define GL_PROGRAM_TARGET_NV                               0x8646
+#define GL_PROGRAM_RESIDENT_NV                             0x8647
+#define GL_TRACK_MATRIX_NV                                 0x8648
+#define GL_TRACK_MATRIX_TRANSFORM_NV                       0x8649
+#define GL_VERTEX_PROGRAM_BINDING_NV                       0x864A
+#define GL_PROGRAM_ERROR_POSITION_NV                       0x864B
+#define GL_VERTEX_ATTRIB_ARRAY0_NV                         0x8650
+#define GL_VERTEX_ATTRIB_ARRAY1_NV                         0x8651
+#define GL_VERTEX_ATTRIB_ARRAY2_NV                         0x8652
+#define GL_VERTEX_ATTRIB_ARRAY3_NV                         0x8653
+#define GL_VERTEX_ATTRIB_ARRAY4_NV                         0x8654
+#define GL_VERTEX_ATTRIB_ARRAY5_NV                         0x8655
+#define GL_VERTEX_ATTRIB_ARRAY6_NV                         0x8656
+#define GL_VERTEX_ATTRIB_ARRAY7_NV                         0x8657
+#define GL_VERTEX_ATTRIB_ARRAY8_NV                         0x8658
+#define GL_VERTEX_ATTRIB_ARRAY9_NV                         0x8659
+#define GL_VERTEX_ATTRIB_ARRAY10_NV                        0x865A
+#define GL_VERTEX_ATTRIB_ARRAY11_NV                        0x865B
+#define GL_VERTEX_ATTRIB_ARRAY12_NV                        0x865C
+#define GL_VERTEX_ATTRIB_ARRAY13_NV                        0x865D
+#define GL_VERTEX_ATTRIB_ARRAY14_NV                        0x865E
+#define GL_VERTEX_ATTRIB_ARRAY15_NV                        0x865F
+#define GL_MAP1_VERTEX_ATTRIB0_4_NV                        0x8660
+#define GL_MAP1_VERTEX_ATTRIB1_4_NV                        0x8661
+#define GL_MAP1_VERTEX_ATTRIB2_4_NV                        0x8662
+#define GL_MAP1_VERTEX_ATTRIB3_4_NV                        0x8663
+#define GL_MAP1_VERTEX_ATTRIB4_4_NV                        0x8664
+#define GL_MAP1_VERTEX_ATTRIB5_4_NV                        0x8665
+#define GL_MAP1_VERTEX_ATTRIB6_4_NV                        0x8666
+#define GL_MAP1_VERTEX_ATTRIB7_4_NV                        0x8667
+#define GL_MAP1_VERTEX_ATTRIB8_4_NV                        0x8668
+#define GL_MAP1_VERTEX_ATTRIB9_4_NV                        0x8669
+#define GL_MAP1_VERTEX_ATTRIB10_4_NV                       0x866A
+#define GL_MAP1_VERTEX_ATTRIB11_4_NV                       0x866B
+#define GL_MAP1_VERTEX_ATTRIB12_4_NV                       0x866C
+#define GL_MAP1_VERTEX_ATTRIB13_4_NV                       0x866D
+#define GL_MAP1_VERTEX_ATTRIB14_4_NV                       0x866E
+#define GL_MAP1_VERTEX_ATTRIB15_4_NV                       0x866F
+#define GL_MAP2_VERTEX_ATTRIB0_4_NV                        0x8670
+#define GL_MAP2_VERTEX_ATTRIB1_4_NV                        0x8671
+#define GL_MAP2_VERTEX_ATTRIB2_4_NV                        0x8672
+#define GL_MAP2_VERTEX_ATTRIB3_4_NV                        0x8673
+#define GL_MAP2_VERTEX_ATTRIB4_4_NV                        0x8674
+#define GL_MAP2_VERTEX_ATTRIB5_4_NV                        0x8675
+#define GL_MAP2_VERTEX_ATTRIB6_4_NV                        0x8676
+#define GL_MAP2_VERTEX_ATTRIB7_4_NV                        0x8677
+#define GL_MAP2_VERTEX_ATTRIB8_4_NV                        0x8678
+#define GL_MAP2_VERTEX_ATTRIB9_4_NV                        0x8679
+#define GL_MAP2_VERTEX_ATTRIB10_4_NV                       0x867A
+#define GL_MAP2_VERTEX_ATTRIB11_4_NV                       0x867B
+#define GL_MAP2_VERTEX_ATTRIB12_4_NV                       0x867C
+#define GL_MAP2_VERTEX_ATTRIB13_4_NV                       0x867D
+#define GL_MAP2_VERTEX_ATTRIB14_4_NV                       0x867E
+#define GL_MAP2_VERTEX_ATTRIB15_4_NV                       0x867F
+typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint * programs, GLboolean * residences);
+typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint * programs);
+typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat * params);
+typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint * programs);
+typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte * program);
+typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* * pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte * program);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble * v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat * v);
+typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint * programs);
+typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte * v);
+GLEE_EXTERN PFNGLAREPROGRAMSRESIDENTNVPROC pglAreProgramsResidentNV;
+GLEE_EXTERN PFNGLBINDPROGRAMNVPROC pglBindProgramNV;
+GLEE_EXTERN PFNGLDELETEPROGRAMSNVPROC pglDeleteProgramsNV;
+GLEE_EXTERN PFNGLEXECUTEPROGRAMNVPROC pglExecuteProgramNV;
+GLEE_EXTERN PFNGLGENPROGRAMSNVPROC pglGenProgramsNV;
+GLEE_EXTERN PFNGLGETPROGRAMPARAMETERDVNVPROC pglGetProgramParameterdvNV;
+GLEE_EXTERN PFNGLGETPROGRAMPARAMETERFVNVPROC pglGetProgramParameterfvNV;
+GLEE_EXTERN PFNGLGETPROGRAMIVNVPROC pglGetProgramivNV;
+GLEE_EXTERN PFNGLGETPROGRAMSTRINGNVPROC pglGetProgramStringNV;
+GLEE_EXTERN PFNGLGETTRACKMATRIXIVNVPROC pglGetTrackMatrixivNV;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBDVNVPROC pglGetVertexAttribdvNV;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBFVNVPROC pglGetVertexAttribfvNV;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBIVNVPROC pglGetVertexAttribivNV;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBPOINTERVNVPROC pglGetVertexAttribPointervNV;
+GLEE_EXTERN PFNGLISPROGRAMNVPROC pglIsProgramNV;
+GLEE_EXTERN PFNGLLOADPROGRAMNVPROC pglLoadProgramNV;
+GLEE_EXTERN PFNGLPROGRAMPARAMETER4DNVPROC pglProgramParameter4dNV;
+GLEE_EXTERN PFNGLPROGRAMPARAMETER4DVNVPROC pglProgramParameter4dvNV;
+GLEE_EXTERN PFNGLPROGRAMPARAMETER4FNVPROC pglProgramParameter4fNV;
+GLEE_EXTERN PFNGLPROGRAMPARAMETER4FVNVPROC pglProgramParameter4fvNV;
+GLEE_EXTERN PFNGLPROGRAMPARAMETERS4DVNVPROC pglProgramParameters4dvNV;
+GLEE_EXTERN PFNGLPROGRAMPARAMETERS4FVNVPROC pglProgramParameters4fvNV;
+GLEE_EXTERN PFNGLREQUESTRESIDENTPROGRAMSNVPROC pglRequestResidentProgramsNV;
+GLEE_EXTERN PFNGLTRACKMATRIXNVPROC pglTrackMatrixNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBPOINTERNVPROC pglVertexAttribPointerNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB1DNVPROC pglVertexAttrib1dNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB1DVNVPROC pglVertexAttrib1dvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB1FNVPROC pglVertexAttrib1fNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB1FVNVPROC pglVertexAttrib1fvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB1SNVPROC pglVertexAttrib1sNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB1SVNVPROC pglVertexAttrib1svNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB2DNVPROC pglVertexAttrib2dNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB2DVNVPROC pglVertexAttrib2dvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB2FNVPROC pglVertexAttrib2fNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB2FVNVPROC pglVertexAttrib2fvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB2SNVPROC pglVertexAttrib2sNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB2SVNVPROC pglVertexAttrib2svNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB3DNVPROC pglVertexAttrib3dNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB3DVNVPROC pglVertexAttrib3dvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB3FNVPROC pglVertexAttrib3fNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB3FVNVPROC pglVertexAttrib3fvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB3SNVPROC pglVertexAttrib3sNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB3SVNVPROC pglVertexAttrib3svNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4DNVPROC pglVertexAttrib4dNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4DVNVPROC pglVertexAttrib4dvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4FNVPROC pglVertexAttrib4fNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4FVNVPROC pglVertexAttrib4fvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4SNVPROC pglVertexAttrib4sNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4SVNVPROC pglVertexAttrib4svNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4UBNVPROC pglVertexAttrib4ubNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4UBVNVPROC pglVertexAttrib4ubvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS1DVNVPROC pglVertexAttribs1dvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS1FVNVPROC pglVertexAttribs1fvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS1SVNVPROC pglVertexAttribs1svNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS2DVNVPROC pglVertexAttribs2dvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS2FVNVPROC pglVertexAttribs2fvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS2SVNVPROC pglVertexAttribs2svNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS3DVNVPROC pglVertexAttribs3dvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS3FVNVPROC pglVertexAttribs3fvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS3SVNVPROC pglVertexAttribs3svNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS4DVNVPROC pglVertexAttribs4dvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS4FVNVPROC pglVertexAttribs4fvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS4SVNVPROC pglVertexAttribs4svNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS4UBVNVPROC pglVertexAttribs4ubvNV;
+#define glAreProgramsResidentNV pglAreProgramsResidentNV
+#define glBindProgramNV pglBindProgramNV
+#define glDeleteProgramsNV pglDeleteProgramsNV
+#define glExecuteProgramNV pglExecuteProgramNV
+#define glGenProgramsNV pglGenProgramsNV
+#define glGetProgramParameterdvNV pglGetProgramParameterdvNV
+#define glGetProgramParameterfvNV pglGetProgramParameterfvNV
+#define glGetProgramivNV pglGetProgramivNV
+#define glGetProgramStringNV pglGetProgramStringNV
+#define glGetTrackMatrixivNV pglGetTrackMatrixivNV
+#define glGetVertexAttribdvNV pglGetVertexAttribdvNV
+#define glGetVertexAttribfvNV pglGetVertexAttribfvNV
+#define glGetVertexAttribivNV pglGetVertexAttribivNV
+#define glGetVertexAttribPointervNV pglGetVertexAttribPointervNV
+#define glIsProgramNV pglIsProgramNV
+#define glLoadProgramNV pglLoadProgramNV
+#define glProgramParameter4dNV pglProgramParameter4dNV
+#define glProgramParameter4dvNV pglProgramParameter4dvNV
+#define glProgramParameter4fNV pglProgramParameter4fNV
+#define glProgramParameter4fvNV pglProgramParameter4fvNV
+#define glProgramParameters4dvNV pglProgramParameters4dvNV
+#define glProgramParameters4fvNV pglProgramParameters4fvNV
+#define glRequestResidentProgramsNV pglRequestResidentProgramsNV
+#define glTrackMatrixNV pglTrackMatrixNV
+#define glVertexAttribPointerNV pglVertexAttribPointerNV
+#define glVertexAttrib1dNV pglVertexAttrib1dNV
+#define glVertexAttrib1dvNV pglVertexAttrib1dvNV
+#define glVertexAttrib1fNV pglVertexAttrib1fNV
+#define glVertexAttrib1fvNV pglVertexAttrib1fvNV
+#define glVertexAttrib1sNV pglVertexAttrib1sNV
+#define glVertexAttrib1svNV pglVertexAttrib1svNV
+#define glVertexAttrib2dNV pglVertexAttrib2dNV
+#define glVertexAttrib2dvNV pglVertexAttrib2dvNV
+#define glVertexAttrib2fNV pglVertexAttrib2fNV
+#define glVertexAttrib2fvNV pglVertexAttrib2fvNV
+#define glVertexAttrib2sNV pglVertexAttrib2sNV
+#define glVertexAttrib2svNV pglVertexAttrib2svNV
+#define glVertexAttrib3dNV pglVertexAttrib3dNV
+#define glVertexAttrib3dvNV pglVertexAttrib3dvNV
+#define glVertexAttrib3fNV pglVertexAttrib3fNV
+#define glVertexAttrib3fvNV pglVertexAttrib3fvNV
+#define glVertexAttrib3sNV pglVertexAttrib3sNV
+#define glVertexAttrib3svNV pglVertexAttrib3svNV
+#define glVertexAttrib4dNV pglVertexAttrib4dNV
+#define glVertexAttrib4dvNV pglVertexAttrib4dvNV
+#define glVertexAttrib4fNV pglVertexAttrib4fNV
+#define glVertexAttrib4fvNV pglVertexAttrib4fvNV
+#define glVertexAttrib4sNV pglVertexAttrib4sNV
+#define glVertexAttrib4svNV pglVertexAttrib4svNV
+#define glVertexAttrib4ubNV pglVertexAttrib4ubNV
+#define glVertexAttrib4ubvNV pglVertexAttrib4ubvNV
+#define glVertexAttribs1dvNV pglVertexAttribs1dvNV
+#define glVertexAttribs1fvNV pglVertexAttribs1fvNV
+#define glVertexAttribs1svNV pglVertexAttribs1svNV
+#define glVertexAttribs2dvNV pglVertexAttribs2dvNV
+#define glVertexAttribs2fvNV pglVertexAttribs2fvNV
+#define glVertexAttribs2svNV pglVertexAttribs2svNV
+#define glVertexAttribs3dvNV pglVertexAttribs3dvNV
+#define glVertexAttribs3fvNV pglVertexAttribs3fvNV
+#define glVertexAttribs3svNV pglVertexAttribs3svNV
+#define glVertexAttribs4dvNV pglVertexAttribs4dvNV
+#define glVertexAttribs4fvNV pglVertexAttribs4fvNV
+#define glVertexAttribs4svNV pglVertexAttribs4svNV
+#define glVertexAttribs4ubvNV pglVertexAttribs4ubvNV
+#endif 
+
+/* GL_SGIX_texture_coordinate_clamp */
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_SGIX_texture_coordinate_clamp 1
+#define __GLEE_GL_SGIX_texture_coordinate_clamp 1
+/* Constants */
+#define GL_TEXTURE_MAX_CLAMP_S_SGIX                        0x8369
+#define GL_TEXTURE_MAX_CLAMP_T_SGIX                        0x836A
+#define GL_TEXTURE_MAX_CLAMP_R_SGIX                        0x836B
+#endif 
+
+/* GL_SGIX_scalebias_hint */
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SGIX_scalebias_hint 1
+#define __GLEE_GL_SGIX_scalebias_hint 1
+/* Constants */
+#define GL_SCALEBIAS_HINT_SGIX                             0x8322
+#endif 
+
+/* GL_OML_interlace */
+
+#ifndef GL_OML_interlace
+#define GL_OML_interlace 1
+#define __GLEE_GL_OML_interlace 1
+/* Constants */
+#define GL_INTERLACE_OML                                   0x8980
+#define GL_INTERLACE_READ_OML                              0x8981
+#endif 
+
+/* GL_OML_subsample */
+
+#ifndef GL_OML_subsample
+#define GL_OML_subsample 1
+#define __GLEE_GL_OML_subsample 1
+/* Constants */
+#define GL_FORMAT_SUBSAMPLE_24_24_OML                      0x8982
+#define GL_FORMAT_SUBSAMPLE_244_244_OML                    0x8983
+#endif 
+
+/* GL_OML_resample */
+
+#ifndef GL_OML_resample
+#define GL_OML_resample 1
+#define __GLEE_GL_OML_resample 1
+/* Constants */
+#define GL_PACK_RESAMPLE_OML                               0x8984
+#define GL_UNPACK_RESAMPLE_OML                             0x8985
+#define GL_RESAMPLE_REPLICATE_OML                          0x8986
+#define GL_RESAMPLE_ZERO_FILL_OML                          0x8987
+#define GL_RESAMPLE_AVERAGE_OML                            0x8988
+#define GL_RESAMPLE_DECIMATE_OML                           0x8989
+#endif 
+
+/* GL_NV_copy_depth_to_color */
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_NV_copy_depth_to_color 1
+#define __GLEE_GL_NV_copy_depth_to_color 1
+/* Constants */
+#define GL_DEPTH_STENCIL_TO_RGBA_NV                        0x886E
+#define GL_DEPTH_STENCIL_TO_BGRA_NV                        0x886F
+#endif 
+
+/* GL_ATI_envmap_bumpmap */
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_ATI_envmap_bumpmap 1
+#define __GLEE_GL_ATI_envmap_bumpmap 1
+/* Constants */
+#define GL_BUMP_ROT_MATRIX_ATI                             0x8775
+#define GL_BUMP_ROT_MATRIX_SIZE_ATI                        0x8776
+#define GL_BUMP_NUM_TEX_UNITS_ATI                          0x8777
+#define GL_BUMP_TEX_UNITS_ATI                              0x8778
+#define GL_DUDV_ATI                                        0x8779
+#define GL_DU8DV8_ATI                                      0x877A
+#define GL_BUMP_ENVMAP_ATI                                 0x877B
+#define GL_BUMP_TARGET_ATI                                 0x877C
+typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint * param);
+typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat * param);
+typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint * param);
+typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat * param);
+GLEE_EXTERN PFNGLTEXBUMPPARAMETERIVATIPROC pglTexBumpParameterivATI;
+GLEE_EXTERN PFNGLTEXBUMPPARAMETERFVATIPROC pglTexBumpParameterfvATI;
+GLEE_EXTERN PFNGLGETTEXBUMPPARAMETERIVATIPROC pglGetTexBumpParameterivATI;
+GLEE_EXTERN PFNGLGETTEXBUMPPARAMETERFVATIPROC pglGetTexBumpParameterfvATI;
+#define glTexBumpParameterivATI pglTexBumpParameterivATI
+#define glTexBumpParameterfvATI pglTexBumpParameterfvATI
+#define glGetTexBumpParameterivATI pglGetTexBumpParameterivATI
+#define glGetTexBumpParameterfvATI pglGetTexBumpParameterfvATI
+#endif 
+
+/* GL_ATI_fragment_shader */
+
+#ifndef GL_ATI_fragment_shader
+#define GL_ATI_fragment_shader 1
+#define __GLEE_GL_ATI_fragment_shader 1
+/* Constants */
+#define GL_FRAGMENT_SHADER_ATI                             0x8920
+#define GL_REG_0_ATI                                       0x8921
+#define GL_REG_1_ATI                                       0x8922
+#define GL_REG_2_ATI                                       0x8923
+#define GL_REG_3_ATI                                       0x8924
+#define GL_REG_4_ATI                                       0x8925
+#define GL_REG_5_ATI                                       0x8926
+#define GL_REG_6_ATI                                       0x8927
+#define GL_REG_7_ATI                                       0x8928
+#define GL_REG_8_ATI                                       0x8929
+#define GL_REG_9_ATI                                       0x892A
+#define GL_REG_10_ATI                                      0x892B
+#define GL_REG_11_ATI                                      0x892C
+#define GL_REG_12_ATI                                      0x892D
+#define GL_REG_13_ATI                                      0x892E
+#define GL_REG_14_ATI                                      0x892F
+#define GL_REG_15_ATI                                      0x8930
+#define GL_REG_16_ATI                                      0x8931
+#define GL_REG_17_ATI                                      0x8932
+#define GL_REG_18_ATI                                      0x8933
+#define GL_REG_19_ATI                                      0x8934
+#define GL_REG_20_ATI                                      0x8935
+#define GL_REG_21_ATI                                      0x8936
+#define GL_REG_22_ATI                                      0x8937
+#define GL_REG_23_ATI                                      0x8938
+#define GL_REG_24_ATI                                      0x8939
+#define GL_REG_25_ATI                                      0x893A
+#define GL_REG_26_ATI                                      0x893B
+#define GL_REG_27_ATI                                      0x893C
+#define GL_REG_28_ATI                                      0x893D
+#define GL_REG_29_ATI                                      0x893E
+#define GL_REG_30_ATI                                      0x893F
+#define GL_REG_31_ATI                                      0x8940
+#define GL_CON_0_ATI                                       0x8941
+#define GL_CON_1_ATI                                       0x8942
+#define GL_CON_2_ATI                                       0x8943
+#define GL_CON_3_ATI                                       0x8944
+#define GL_CON_4_ATI                                       0x8945
+#define GL_CON_5_ATI                                       0x8946
+#define GL_CON_6_ATI                                       0x8947
+#define GL_CON_7_ATI                                       0x8948
+#define GL_CON_8_ATI                                       0x8949
+#define GL_CON_9_ATI                                       0x894A
+#define GL_CON_10_ATI                                      0x894B
+#define GL_CON_11_ATI                                      0x894C
+#define GL_CON_12_ATI                                      0x894D
+#define GL_CON_13_ATI                                      0x894E
+#define GL_CON_14_ATI                                      0x894F
+#define GL_CON_15_ATI                                      0x8950
+#define GL_CON_16_ATI                                      0x8951
+#define GL_CON_17_ATI                                      0x8952
+#define GL_CON_18_ATI                                      0x8953
+#define GL_CON_19_ATI                                      0x8954
+#define GL_CON_20_ATI                                      0x8955
+#define GL_CON_21_ATI                                      0x8956
+#define GL_CON_22_ATI                                      0x8957
+#define GL_CON_23_ATI                                      0x8958
+#define GL_CON_24_ATI                                      0x8959
+#define GL_CON_25_ATI                                      0x895A
+#define GL_CON_26_ATI                                      0x895B
+#define GL_CON_27_ATI                                      0x895C
+#define GL_CON_28_ATI                                      0x895D
+#define GL_CON_29_ATI                                      0x895E
+#define GL_CON_30_ATI                                      0x895F
+#define GL_CON_31_ATI                                      0x8960
+#define GL_MOV_ATI                                         0x8961
+#define GL_ADD_ATI                                         0x8963
+#define GL_MUL_ATI                                         0x8964
+#define GL_SUB_ATI                                         0x8965
+#define GL_DOT3_ATI                                        0x8966
+#define GL_DOT4_ATI                                        0x8967
+#define GL_MAD_ATI                                         0x8968
+#define GL_LERP_ATI                                        0x8969
+#define GL_CND_ATI                                         0x896A
+#define GL_CND0_ATI                                        0x896B
+#define GL_DOT2_ADD_ATI                                    0x896C
+#define GL_SECONDARY_INTERPOLATOR_ATI                      0x896D
+#define GL_NUM_FRAGMENT_REGISTERS_ATI                      0x896E
+#define GL_NUM_FRAGMENT_CONSTANTS_ATI                      0x896F
+#define GL_NUM_PASSES_ATI                                  0x8970
+#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI                   0x8971
+#define GL_NUM_INSTRUCTIONS_TOTAL_ATI                      0x8972
+#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI           0x8973
+#define GL_NUM_LOOPBACK_COMPONENTS_ATI                     0x8974
+#define GL_COLOR_ALPHA_PAIRING_ATI                         0x8975
+#define GL_SWIZZLE_STR_ATI                                 0x8976
+#define GL_SWIZZLE_STQ_ATI                                 0x8977
+#define GL_SWIZZLE_STR_DR_ATI                              0x8978
+#define GL_SWIZZLE_STQ_DQ_ATI                              0x8979
+#define GL_SWIZZLE_STRQ_ATI                                0x897A
+#define GL_SWIZZLE_STRQ_DQ_ATI                             0x897B
+#define GL_RED_BIT_ATI                                     0x00000001
+#define GL_GREEN_BIT_ATI                                   0x00000002
+#define GL_BLUE_BIT_ATI                                    0x00000004
+#define GL_2X_BIT_ATI                                      0x00000001
+#define GL_4X_BIT_ATI                                      0x00000002
+#define GL_8X_BIT_ATI                                      0x00000004
+#define GL_HALF_BIT_ATI                                    0x00000008
+#define GL_QUARTER_BIT_ATI                                 0x00000010
+#define GL_EIGHTH_BIT_ATI                                  0x00000020
+#define GL_SATURATE_BIT_ATI                                0x00000040
+#define GL_COMP_BIT_ATI                                    0x00000002
+#define GL_NEGATE_BIT_ATI                                  0x00000004
+#define GL_BIAS_BIT_ATI                                    0x00000008
+typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
+typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) ();
+typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) ();
+typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
+typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat * value);
+GLEE_EXTERN PFNGLGENFRAGMENTSHADERSATIPROC pglGenFragmentShadersATI;
+GLEE_EXTERN PFNGLBINDFRAGMENTSHADERATIPROC pglBindFragmentShaderATI;
+GLEE_EXTERN PFNGLDELETEFRAGMENTSHADERATIPROC pglDeleteFragmentShaderATI;
+GLEE_EXTERN PFNGLBEGINFRAGMENTSHADERATIPROC pglBeginFragmentShaderATI;
+GLEE_EXTERN PFNGLENDFRAGMENTSHADERATIPROC pglEndFragmentShaderATI;
+GLEE_EXTERN PFNGLPASSTEXCOORDATIPROC pglPassTexCoordATI;
+GLEE_EXTERN PFNGLSAMPLEMAPATIPROC pglSampleMapATI;
+GLEE_EXTERN PFNGLCOLORFRAGMENTOP1ATIPROC pglColorFragmentOp1ATI;
+GLEE_EXTERN PFNGLCOLORFRAGMENTOP2ATIPROC pglColorFragmentOp2ATI;
+GLEE_EXTERN PFNGLCOLORFRAGMENTOP3ATIPROC pglColorFragmentOp3ATI;
+GLEE_EXTERN PFNGLALPHAFRAGMENTOP1ATIPROC pglAlphaFragmentOp1ATI;
+GLEE_EXTERN PFNGLALPHAFRAGMENTOP2ATIPROC pglAlphaFragmentOp2ATI;
+GLEE_EXTERN PFNGLALPHAFRAGMENTOP3ATIPROC pglAlphaFragmentOp3ATI;
+GLEE_EXTERN PFNGLSETFRAGMENTSHADERCONSTANTATIPROC pglSetFragmentShaderConstantATI;
+#define glGenFragmentShadersATI pglGenFragmentShadersATI
+#define glBindFragmentShaderATI pglBindFragmentShaderATI
+#define glDeleteFragmentShaderATI pglDeleteFragmentShaderATI
+#define glBeginFragmentShaderATI pglBeginFragmentShaderATI
+#define glEndFragmentShaderATI pglEndFragmentShaderATI
+#define glPassTexCoordATI pglPassTexCoordATI
+#define glSampleMapATI pglSampleMapATI
+#define glColorFragmentOp1ATI pglColorFragmentOp1ATI
+#define glColorFragmentOp2ATI pglColorFragmentOp2ATI
+#define glColorFragmentOp3ATI pglColorFragmentOp3ATI
+#define glAlphaFragmentOp1ATI pglAlphaFragmentOp1ATI
+#define glAlphaFragmentOp2ATI pglAlphaFragmentOp2ATI
+#define glAlphaFragmentOp3ATI pglAlphaFragmentOp3ATI
+#define glSetFragmentShaderConstantATI pglSetFragmentShaderConstantATI
+#endif 
+
+/* GL_ATI_pn_triangles */
+
+#ifndef GL_ATI_pn_triangles
+#define GL_ATI_pn_triangles 1
+#define __GLEE_GL_ATI_pn_triangles 1
+/* Constants */
+#define GL_PN_TRIANGLES_ATI                                0x87F0
+#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI          0x87F1
+#define GL_PN_TRIANGLES_POINT_MODE_ATI                     0x87F2
+#define GL_PN_TRIANGLES_NORMAL_MODE_ATI                    0x87F3
+#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI              0x87F4
+#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI              0x87F5
+#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI               0x87F6
+#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI             0x87F7
+#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI          0x87F8
+typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
+GLEE_EXTERN PFNGLPNTRIANGLESIATIPROC pglPNTrianglesiATI;
+GLEE_EXTERN PFNGLPNTRIANGLESFATIPROC pglPNTrianglesfATI;
+#define glPNTrianglesiATI pglPNTrianglesiATI
+#define glPNTrianglesfATI pglPNTrianglesfATI
+#endif 
+
+/* GL_ATI_vertex_array_object */
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_ATI_vertex_array_object 1
+#define __GLEE_GL_ATI_vertex_array_object 1
+/* Constants */
+#define GL_STATIC_ATI                                      0x8760
+#define GL_DYNAMIC_ATI                                     0x8761
+#define GL_PRESERVE_ATI                                    0x8762
+#define GL_DISCARD_ATI                                     0x8763
+#define GL_OBJECT_BUFFER_SIZE_ATI                          0x8764
+#define GL_OBJECT_BUFFER_USAGE_ATI                         0x8765
+#define GL_ARRAY_OBJECT_BUFFER_ATI                         0x8766
+#define GL_ARRAY_OBJECT_OFFSET_ATI                         0x8767
+typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid * pointer, GLenum usage);
+typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid * pointer, GLenum preserve);
+typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint * params);
+GLEE_EXTERN PFNGLNEWOBJECTBUFFERATIPROC pglNewObjectBufferATI;
+GLEE_EXTERN PFNGLISOBJECTBUFFERATIPROC pglIsObjectBufferATI;
+GLEE_EXTERN PFNGLUPDATEOBJECTBUFFERATIPROC pglUpdateObjectBufferATI;
+GLEE_EXTERN PFNGLGETOBJECTBUFFERFVATIPROC pglGetObjectBufferfvATI;
+GLEE_EXTERN PFNGLGETOBJECTBUFFERIVATIPROC pglGetObjectBufferivATI;
+GLEE_EXTERN PFNGLFREEOBJECTBUFFERATIPROC pglFreeObjectBufferATI;
+GLEE_EXTERN PFNGLARRAYOBJECTATIPROC pglArrayObjectATI;
+GLEE_EXTERN PFNGLGETARRAYOBJECTFVATIPROC pglGetArrayObjectfvATI;
+GLEE_EXTERN PFNGLGETARRAYOBJECTIVATIPROC pglGetArrayObjectivATI;
+GLEE_EXTERN PFNGLVARIANTARRAYOBJECTATIPROC pglVariantArrayObjectATI;
+GLEE_EXTERN PFNGLGETVARIANTARRAYOBJECTFVATIPROC pglGetVariantArrayObjectfvATI;
+GLEE_EXTERN PFNGLGETVARIANTARRAYOBJECTIVATIPROC pglGetVariantArrayObjectivATI;
+#define glNewObjectBufferATI pglNewObjectBufferATI
+#define glIsObjectBufferATI pglIsObjectBufferATI
+#define glUpdateObjectBufferATI pglUpdateObjectBufferATI
+#define glGetObjectBufferfvATI pglGetObjectBufferfvATI
+#define glGetObjectBufferivATI pglGetObjectBufferivATI
+#define glFreeObjectBufferATI pglFreeObjectBufferATI
+#define glArrayObjectATI pglArrayObjectATI
+#define glGetArrayObjectfvATI pglGetArrayObjectfvATI
+#define glGetArrayObjectivATI pglGetArrayObjectivATI
+#define glVariantArrayObjectATI pglVariantArrayObjectATI
+#define glGetVariantArrayObjectfvATI pglGetVariantArrayObjectfvATI
+#define glGetVariantArrayObjectivATI pglGetVariantArrayObjectivATI
+#endif 
+
+/* GL_EXT_vertex_shader */
+
+#ifndef GL_EXT_vertex_shader
+#define GL_EXT_vertex_shader 1
+#define __GLEE_GL_EXT_vertex_shader 1
+/* Constants */
+#define GL_VERTEX_SHADER_EXT                               0x8780
+#define GL_VERTEX_SHADER_BINDING_EXT                       0x8781
+#define GL_OP_INDEX_EXT                                    0x8782
+#define GL_OP_NEGATE_EXT                                   0x8783
+#define GL_OP_DOT3_EXT                                     0x8784
+#define GL_OP_DOT4_EXT                                     0x8785
+#define GL_OP_MUL_EXT                                      0x8786
+#define GL_OP_ADD_EXT                                      0x8787
+#define GL_OP_MADD_EXT                                     0x8788
+#define GL_OP_FRAC_EXT                                     0x8789
+#define GL_OP_MAX_EXT                                      0x878A
+#define GL_OP_MIN_EXT                                      0x878B
+#define GL_OP_SET_GE_EXT                                   0x878C
+#define GL_OP_SET_LT_EXT                                   0x878D
+#define GL_OP_CLAMP_EXT                                    0x878E
+#define GL_OP_FLOOR_EXT                                    0x878F
+#define GL_OP_ROUND_EXT                                    0x8790
+#define GL_OP_EXP_BASE_2_EXT                               0x8791
+#define GL_OP_LOG_BASE_2_EXT                               0x8792
+#define GL_OP_POWER_EXT                                    0x8793
+#define GL_OP_RECIP_EXT                                    0x8794
+#define GL_OP_RECIP_SQRT_EXT                               0x8795
+#define GL_OP_SUB_EXT                                      0x8796
+#define GL_OP_CROSS_PRODUCT_EXT                            0x8797
+#define GL_OP_MULTIPLY_MATRIX_EXT                          0x8798
+#define GL_OP_MOV_EXT                                      0x8799
+#define GL_OUTPUT_VERTEX_EXT                               0x879A
+#define GL_OUTPUT_COLOR0_EXT                               0x879B
+#define GL_OUTPUT_COLOR1_EXT                               0x879C
+#define GL_OUTPUT_TEXTURE_COORD0_EXT                       0x879D
+#define GL_OUTPUT_TEXTURE_COORD1_EXT                       0x879E
+#define GL_OUTPUT_TEXTURE_COORD2_EXT                       0x879F
+#define GL_OUTPUT_TEXTURE_COORD3_EXT                       0x87A0
+#define GL_OUTPUT_TEXTURE_COORD4_EXT                       0x87A1
+#define GL_OUTPUT_TEXTURE_COORD5_EXT                       0x87A2
+#define GL_OUTPUT_TEXTURE_COORD6_EXT                       0x87A3
+#define GL_OUTPUT_TEXTURE_COORD7_EXT                       0x87A4
+#define GL_OUTPUT_TEXTURE_COORD8_EXT                       0x87A5
+#define GL_OUTPUT_TEXTURE_COORD9_EXT                       0x87A6
+#define GL_OUTPUT_TEXTURE_COORD10_EXT                      0x87A7
+#define GL_OUTPUT_TEXTURE_COORD11_EXT                      0x87A8
+#define GL_OUTPUT_TEXTURE_COORD12_EXT                      0x87A9
+#define GL_OUTPUT_TEXTURE_COORD13_EXT                      0x87AA
+#define GL_OUTPUT_TEXTURE_COORD14_EXT                      0x87AB
+#define GL_OUTPUT_TEXTURE_COORD15_EXT                      0x87AC
+#define GL_OUTPUT_TEXTURE_COORD16_EXT                      0x87AD
+#define GL_OUTPUT_TEXTURE_COORD17_EXT                      0x87AE
+#define GL_OUTPUT_TEXTURE_COORD18_EXT                      0x87AF
+#define GL_OUTPUT_TEXTURE_COORD19_EXT                      0x87B0
+#define GL_OUTPUT_TEXTURE_COORD20_EXT                      0x87B1
+#define GL_OUTPUT_TEXTURE_COORD21_EXT                      0x87B2
+#define GL_OUTPUT_TEXTURE_COORD22_EXT                      0x87B3
+#define GL_OUTPUT_TEXTURE_COORD23_EXT                      0x87B4
+#define GL_OUTPUT_TEXTURE_COORD24_EXT                      0x87B5
+#define GL_OUTPUT_TEXTURE_COORD25_EXT                      0x87B6
+#define GL_OUTPUT_TEXTURE_COORD26_EXT                      0x87B7
+#define GL_OUTPUT_TEXTURE_COORD27_EXT                      0x87B8
+#define GL_OUTPUT_TEXTURE_COORD28_EXT                      0x87B9
+#define GL_OUTPUT_TEXTURE_COORD29_EXT                      0x87BA
+#define GL_OUTPUT_TEXTURE_COORD30_EXT                      0x87BB
+#define GL_OUTPUT_TEXTURE_COORD31_EXT                      0x87BC
+#define GL_OUTPUT_FOG_EXT                                  0x87BD
+#define GL_SCALAR_EXT                                      0x87BE
+#define GL_VECTOR_EXT                                      0x87BF
+#define GL_MATRIX_EXT                                      0x87C0
+#define GL_VARIANT_EXT                                     0x87C1
+#define GL_INVARIANT_EXT                                   0x87C2
+#define GL_LOCAL_CONSTANT_EXT                              0x87C3
+#define GL_LOCAL_EXT                                       0x87C4
+#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT              0x87C5
+#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT                  0x87C6
+#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT                0x87C7
+#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT           0x87C8
+#define GL_MAX_VERTEX_SHADER_LOCALS_EXT                    0x87C9
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT    0x87CA
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT        0x87CB
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT      0x87CD
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT          0x87CE
+#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT                  0x87CF
+#define GL_VERTEX_SHADER_VARIANTS_EXT                      0x87D0
+#define GL_VERTEX_SHADER_INVARIANTS_EXT                    0x87D1
+#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT               0x87D2
+#define GL_VERTEX_SHADER_LOCALS_EXT                        0x87D3
+#define GL_VERTEX_SHADER_OPTIMIZED_EXT                     0x87D4
+#define GL_X_EXT                                           0x87D5
+#define GL_Y_EXT                                           0x87D6
+#define GL_Z_EXT                                           0x87D7
+#define GL_W_EXT                                           0x87D8
+#define GL_NEGATIVE_X_EXT                                  0x87D9
+#define GL_NEGATIVE_Y_EXT                                  0x87DA
+#define GL_NEGATIVE_Z_EXT                                  0x87DB
+#define GL_NEGATIVE_W_EXT                                  0x87DC
+#define GL_ZERO_EXT                                        0x87DD
+#define GL_ONE_EXT                                         0x87DE
+#define GL_NEGATIVE_ONE_EXT                                0x87DF
+#define GL_NORMALIZED_RANGE_EXT                            0x87E0
+#define GL_FULL_RANGE_EXT                                  0x87E1
+#define GL_CURRENT_VERTEX_EXT                              0x87E2
+#define GL_MVP_MATRIX_EXT                                  0x87E3
+#define GL_VARIANT_VALUE_EXT                               0x87E4
+#define GL_VARIANT_DATATYPE_EXT                            0x87E5
+#define GL_VARIANT_ARRAY_STRIDE_EXT                        0x87E6
+#define GL_VARIANT_ARRAY_TYPE_EXT                          0x87E7
+#define GL_VARIANT_ARRAY_EXT                               0x87E8
+#define GL_VARIANT_ARRAY_POINTER_EXT                       0x87E9
+#define GL_INVARIANT_VALUE_EXT                             0x87EA
+#define GL_INVARIANT_DATATYPE_EXT                          0x87EB
+#define GL_LOCAL_CONSTANT_VALUE_EXT                        0x87EC
+#define GL_LOCAL_CONSTANT_DATATYPE_EXT                     0x87ED
+typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) ();
+typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) ();
+typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
+typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
+typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
+typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid * addr);
+typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid * addr);
+typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte * addr);
+typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort * addr);
+typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint * addr);
+typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat * addr);
+typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble * addr);
+typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte * addr);
+typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort * addr);
+typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint * addr);
+typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid * addr);
+typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
+typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
+typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean * data);
+typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint * data);
+typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat * data);
+typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* * data);
+typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean * data);
+typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint * data);
+typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat * data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean * data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint * data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat * data);
+GLEE_EXTERN PFNGLBEGINVERTEXSHADEREXTPROC pglBeginVertexShaderEXT;
+GLEE_EXTERN PFNGLENDVERTEXSHADEREXTPROC pglEndVertexShaderEXT;
+GLEE_EXTERN PFNGLBINDVERTEXSHADEREXTPROC pglBindVertexShaderEXT;
+GLEE_EXTERN PFNGLGENVERTEXSHADERSEXTPROC pglGenVertexShadersEXT;
+GLEE_EXTERN PFNGLDELETEVERTEXSHADEREXTPROC pglDeleteVertexShaderEXT;
+GLEE_EXTERN PFNGLSHADEROP1EXTPROC pglShaderOp1EXT;
+GLEE_EXTERN PFNGLSHADEROP2EXTPROC pglShaderOp2EXT;
+GLEE_EXTERN PFNGLSHADEROP3EXTPROC pglShaderOp3EXT;
+GLEE_EXTERN PFNGLSWIZZLEEXTPROC pglSwizzleEXT;
+GLEE_EXTERN PFNGLWRITEMASKEXTPROC pglWriteMaskEXT;
+GLEE_EXTERN PFNGLINSERTCOMPONENTEXTPROC pglInsertComponentEXT;
+GLEE_EXTERN PFNGLEXTRACTCOMPONENTEXTPROC pglExtractComponentEXT;
+GLEE_EXTERN PFNGLGENSYMBOLSEXTPROC pglGenSymbolsEXT;
+GLEE_EXTERN PFNGLSETINVARIANTEXTPROC pglSetInvariantEXT;
+GLEE_EXTERN PFNGLSETLOCALCONSTANTEXTPROC pglSetLocalConstantEXT;
+GLEE_EXTERN PFNGLVARIANTBVEXTPROC pglVariantbvEXT;
+GLEE_EXTERN PFNGLVARIANTSVEXTPROC pglVariantsvEXT;
+GLEE_EXTERN PFNGLVARIANTIVEXTPROC pglVariantivEXT;
+GLEE_EXTERN PFNGLVARIANTFVEXTPROC pglVariantfvEXT;
+GLEE_EXTERN PFNGLVARIANTDVEXTPROC pglVariantdvEXT;
+GLEE_EXTERN PFNGLVARIANTUBVEXTPROC pglVariantubvEXT;
+GLEE_EXTERN PFNGLVARIANTUSVEXTPROC pglVariantusvEXT;
+GLEE_EXTERN PFNGLVARIANTUIVEXTPROC pglVariantuivEXT;
+GLEE_EXTERN PFNGLVARIANTPOINTEREXTPROC pglVariantPointerEXT;
+GLEE_EXTERN PFNGLENABLEVARIANTCLIENTSTATEEXTPROC pglEnableVariantClientStateEXT;
+GLEE_EXTERN PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC pglDisableVariantClientStateEXT;
+GLEE_EXTERN PFNGLBINDLIGHTPARAMETEREXTPROC pglBindLightParameterEXT;
+GLEE_EXTERN PFNGLBINDMATERIALPARAMETEREXTPROC pglBindMaterialParameterEXT;
+GLEE_EXTERN PFNGLBINDTEXGENPARAMETEREXTPROC pglBindTexGenParameterEXT;
+GLEE_EXTERN PFNGLBINDTEXTUREUNITPARAMETEREXTPROC pglBindTextureUnitParameterEXT;
+GLEE_EXTERN PFNGLBINDPARAMETEREXTPROC pglBindParameterEXT;
+GLEE_EXTERN PFNGLISVARIANTENABLEDEXTPROC pglIsVariantEnabledEXT;
+GLEE_EXTERN PFNGLGETVARIANTBOOLEANVEXTPROC pglGetVariantBooleanvEXT;
+GLEE_EXTERN PFNGLGETVARIANTINTEGERVEXTPROC pglGetVariantIntegervEXT;
+GLEE_EXTERN PFNGLGETVARIANTFLOATVEXTPROC pglGetVariantFloatvEXT;
+GLEE_EXTERN PFNGLGETVARIANTPOINTERVEXTPROC pglGetVariantPointervEXT;
+GLEE_EXTERN PFNGLGETINVARIANTBOOLEANVEXTPROC pglGetInvariantBooleanvEXT;
+GLEE_EXTERN PFNGLGETINVARIANTINTEGERVEXTPROC pglGetInvariantIntegervEXT;
+GLEE_EXTERN PFNGLGETINVARIANTFLOATVEXTPROC pglGetInvariantFloatvEXT;
+GLEE_EXTERN PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC pglGetLocalConstantBooleanvEXT;
+GLEE_EXTERN PFNGLGETLOCALCONSTANTINTEGERVEXTPROC pglGetLocalConstantIntegervEXT;
+GLEE_EXTERN PFNGLGETLOCALCONSTANTFLOATVEXTPROC pglGetLocalConstantFloatvEXT;
+#define glBeginVertexShaderEXT pglBeginVertexShaderEXT
+#define glEndVertexShaderEXT pglEndVertexShaderEXT
+#define glBindVertexShaderEXT pglBindVertexShaderEXT
+#define glGenVertexShadersEXT pglGenVertexShadersEXT
+#define glDeleteVertexShaderEXT pglDeleteVertexShaderEXT
+#define glShaderOp1EXT pglShaderOp1EXT
+#define glShaderOp2EXT pglShaderOp2EXT
+#define glShaderOp3EXT pglShaderOp3EXT
+#define glSwizzleEXT pglSwizzleEXT
+#define glWriteMaskEXT pglWriteMaskEXT
+#define glInsertComponentEXT pglInsertComponentEXT
+#define glExtractComponentEXT pglExtractComponentEXT
+#define glGenSymbolsEXT pglGenSymbolsEXT
+#define glSetInvariantEXT pglSetInvariantEXT
+#define glSetLocalConstantEXT pglSetLocalConstantEXT
+#define glVariantbvEXT pglVariantbvEXT
+#define glVariantsvEXT pglVariantsvEXT
+#define glVariantivEXT pglVariantivEXT
+#define glVariantfvEXT pglVariantfvEXT
+#define glVariantdvEXT pglVariantdvEXT
+#define glVariantubvEXT pglVariantubvEXT
+#define glVariantusvEXT pglVariantusvEXT
+#define glVariantuivEXT pglVariantuivEXT
+#define glVariantPointerEXT pglVariantPointerEXT
+#define glEnableVariantClientStateEXT pglEnableVariantClientStateEXT
+#define glDisableVariantClientStateEXT pglDisableVariantClientStateEXT
+#define glBindLightParameterEXT pglBindLightParameterEXT
+#define glBindMaterialParameterEXT pglBindMaterialParameterEXT
+#define glBindTexGenParameterEXT pglBindTexGenParameterEXT
+#define glBindTextureUnitParameterEXT pglBindTextureUnitParameterEXT
+#define glBindParameterEXT pglBindParameterEXT
+#define glIsVariantEnabledEXT pglIsVariantEnabledEXT
+#define glGetVariantBooleanvEXT pglGetVariantBooleanvEXT
+#define glGetVariantIntegervEXT pglGetVariantIntegervEXT
+#define glGetVariantFloatvEXT pglGetVariantFloatvEXT
+#define glGetVariantPointervEXT pglGetVariantPointervEXT
+#define glGetInvariantBooleanvEXT pglGetInvariantBooleanvEXT
+#define glGetInvariantIntegervEXT pglGetInvariantIntegervEXT
+#define glGetInvariantFloatvEXT pglGetInvariantFloatvEXT
+#define glGetLocalConstantBooleanvEXT pglGetLocalConstantBooleanvEXT
+#define glGetLocalConstantIntegervEXT pglGetLocalConstantIntegervEXT
+#define glGetLocalConstantFloatvEXT pglGetLocalConstantFloatvEXT
+#endif 
+
+/* GL_ATI_vertex_streams */
+
+#ifndef GL_ATI_vertex_streams
+#define GL_ATI_vertex_streams 1
+#define __GLEE_GL_ATI_vertex_streams 1
+/* Constants */
+#define GL_MAX_VERTEX_STREAMS_ATI                          0x876B
+#define GL_VERTEX_STREAM0_ATI                              0x876C
+#define GL_VERTEX_STREAM1_ATI                              0x876D
+#define GL_VERTEX_STREAM2_ATI                              0x876E
+#define GL_VERTEX_STREAM3_ATI                              0x876F
+#define GL_VERTEX_STREAM4_ATI                              0x8770
+#define GL_VERTEX_STREAM5_ATI                              0x8771
+#define GL_VERTEX_STREAM6_ATI                              0x8772
+#define GL_VERTEX_STREAM7_ATI                              0x8773
+#define GL_VERTEX_SOURCE_ATI                               0x8774
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat * coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble * coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte * coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort * coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint * coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat * coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble * coords);
+typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
+typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
+GLEE_EXTERN PFNGLVERTEXSTREAM1SATIPROC pglVertexStream1sATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM1SVATIPROC pglVertexStream1svATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM1IATIPROC pglVertexStream1iATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM1IVATIPROC pglVertexStream1ivATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM1FATIPROC pglVertexStream1fATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM1FVATIPROC pglVertexStream1fvATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM1DATIPROC pglVertexStream1dATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM1DVATIPROC pglVertexStream1dvATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM2SATIPROC pglVertexStream2sATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM2SVATIPROC pglVertexStream2svATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM2IATIPROC pglVertexStream2iATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM2IVATIPROC pglVertexStream2ivATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM2FATIPROC pglVertexStream2fATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM2FVATIPROC pglVertexStream2fvATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM2DATIPROC pglVertexStream2dATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM2DVATIPROC pglVertexStream2dvATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM3SATIPROC pglVertexStream3sATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM3SVATIPROC pglVertexStream3svATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM3IATIPROC pglVertexStream3iATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM3IVATIPROC pglVertexStream3ivATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM3FATIPROC pglVertexStream3fATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM3FVATIPROC pglVertexStream3fvATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM3DATIPROC pglVertexStream3dATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM3DVATIPROC pglVertexStream3dvATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM4SATIPROC pglVertexStream4sATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM4SVATIPROC pglVertexStream4svATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM4IATIPROC pglVertexStream4iATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM4IVATIPROC pglVertexStream4ivATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM4FATIPROC pglVertexStream4fATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM4FVATIPROC pglVertexStream4fvATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM4DATIPROC pglVertexStream4dATI;
+GLEE_EXTERN PFNGLVERTEXSTREAM4DVATIPROC pglVertexStream4dvATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3BATIPROC pglNormalStream3bATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3BVATIPROC pglNormalStream3bvATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3SATIPROC pglNormalStream3sATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3SVATIPROC pglNormalStream3svATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3IATIPROC pglNormalStream3iATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3IVATIPROC pglNormalStream3ivATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3FATIPROC pglNormalStream3fATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3FVATIPROC pglNormalStream3fvATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3DATIPROC pglNormalStream3dATI;
+GLEE_EXTERN PFNGLNORMALSTREAM3DVATIPROC pglNormalStream3dvATI;
+GLEE_EXTERN PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC pglClientActiveVertexStreamATI;
+GLEE_EXTERN PFNGLVERTEXBLENDENVIATIPROC pglVertexBlendEnviATI;
+GLEE_EXTERN PFNGLVERTEXBLENDENVFATIPROC pglVertexBlendEnvfATI;
+#define glVertexStream1sATI pglVertexStream1sATI
+#define glVertexStream1svATI pglVertexStream1svATI
+#define glVertexStream1iATI pglVertexStream1iATI
+#define glVertexStream1ivATI pglVertexStream1ivATI
+#define glVertexStream1fATI pglVertexStream1fATI
+#define glVertexStream1fvATI pglVertexStream1fvATI
+#define glVertexStream1dATI pglVertexStream1dATI
+#define glVertexStream1dvATI pglVertexStream1dvATI
+#define glVertexStream2sATI pglVertexStream2sATI
+#define glVertexStream2svATI pglVertexStream2svATI
+#define glVertexStream2iATI pglVertexStream2iATI
+#define glVertexStream2ivATI pglVertexStream2ivATI
+#define glVertexStream2fATI pglVertexStream2fATI
+#define glVertexStream2fvATI pglVertexStream2fvATI
+#define glVertexStream2dATI pglVertexStream2dATI
+#define glVertexStream2dvATI pglVertexStream2dvATI
+#define glVertexStream3sATI pglVertexStream3sATI
+#define glVertexStream3svATI pglVertexStream3svATI
+#define glVertexStream3iATI pglVertexStream3iATI
+#define glVertexStream3ivATI pglVertexStream3ivATI
+#define glVertexStream3fATI pglVertexStream3fATI
+#define glVertexStream3fvATI pglVertexStream3fvATI
+#define glVertexStream3dATI pglVertexStream3dATI
+#define glVertexStream3dvATI pglVertexStream3dvATI
+#define glVertexStream4sATI pglVertexStream4sATI
+#define glVertexStream4svATI pglVertexStream4svATI
+#define glVertexStream4iATI pglVertexStream4iATI
+#define glVertexStream4ivATI pglVertexStream4ivATI
+#define glVertexStream4fATI pglVertexStream4fATI
+#define glVertexStream4fvATI pglVertexStream4fvATI
+#define glVertexStream4dATI pglVertexStream4dATI
+#define glVertexStream4dvATI pglVertexStream4dvATI
+#define glNormalStream3bATI pglNormalStream3bATI
+#define glNormalStream3bvATI pglNormalStream3bvATI
+#define glNormalStream3sATI pglNormalStream3sATI
+#define glNormalStream3svATI pglNormalStream3svATI
+#define glNormalStream3iATI pglNormalStream3iATI
+#define glNormalStream3ivATI pglNormalStream3ivATI
+#define glNormalStream3fATI pglNormalStream3fATI
+#define glNormalStream3fvATI pglNormalStream3fvATI
+#define glNormalStream3dATI pglNormalStream3dATI
+#define glNormalStream3dvATI pglNormalStream3dvATI
+#define glClientActiveVertexStreamATI pglClientActiveVertexStreamATI
+#define glVertexBlendEnviATI pglVertexBlendEnviATI
+#define glVertexBlendEnvfATI pglVertexBlendEnvfATI
+#endif 
+
+/* GL_ATI_element_array */
+
+#ifndef GL_ATI_element_array
+#define GL_ATI_element_array 1
+#define __GLEE_GL_ATI_element_array 1
+/* Constants */
+#define GL_ELEMENT_ARRAY_ATI                               0x8768
+#define GL_ELEMENT_ARRAY_TYPE_ATI                          0x8769
+#define GL_ELEMENT_ARRAY_POINTER_ATI                       0x876A
+typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
+GLEE_EXTERN PFNGLELEMENTPOINTERATIPROC pglElementPointerATI;
+GLEE_EXTERN PFNGLDRAWELEMENTARRAYATIPROC pglDrawElementArrayATI;
+GLEE_EXTERN PFNGLDRAWRANGEELEMENTARRAYATIPROC pglDrawRangeElementArrayATI;
+#define glElementPointerATI pglElementPointerATI
+#define glDrawElementArrayATI pglDrawElementArrayATI
+#define glDrawRangeElementArrayATI pglDrawRangeElementArrayATI
+#endif 
+
+/* GL_SUN_mesh_array */
+
+#ifndef GL_SUN_mesh_array
+#define GL_SUN_mesh_array 1
+#define __GLEE_GL_SUN_mesh_array 1
+/* Constants */
+#define GL_QUAD_MESH_SUN                                   0x8614
+#define GL_TRIANGLE_MESH_SUN                               0x8615
+typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
+GLEE_EXTERN PFNGLDRAWMESHARRAYSSUNPROC pglDrawMeshArraysSUN;
+#define glDrawMeshArraysSUN pglDrawMeshArraysSUN
+#endif 
+
+/* GL_SUN_slice_accum */
+
+#ifndef GL_SUN_slice_accum
+#define GL_SUN_slice_accum 1
+#define __GLEE_GL_SUN_slice_accum 1
+/* Constants */
+#define GL_SLICE_ACCUM_SUN                                 0x85CC
+#endif 
+
+/* GL_NV_multisample_filter_hint */
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_NV_multisample_filter_hint 1
+#define __GLEE_GL_NV_multisample_filter_hint 1
+/* Constants */
+#define GL_MULTISAMPLE_FILTER_HINT_NV                      0x8534
+#endif 
+
+/* GL_NV_depth_clamp */
+
+#ifndef GL_NV_depth_clamp
+#define GL_NV_depth_clamp 1
+#define __GLEE_GL_NV_depth_clamp 1
+/* Constants */
+#define GL_DEPTH_CLAMP_NV                                  0x864F
+#endif 
+
+/* GL_NV_occlusion_query */
+
+#ifndef GL_NV_occlusion_query
+#define GL_NV_occlusion_query 1
+#define __GLEE_GL_NV_occlusion_query 1
+/* Constants */
+#define GL_PIXEL_COUNTER_BITS_NV                           0x8864
+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV                   0x8865
+#define GL_PIXEL_COUNT_NV                                  0x8866
+#define GL_PIXEL_COUNT_AVAILABLE_NV                        0x8867
+typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint * ids);
+typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint * ids);
+typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) ();
+typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint * params);
+GLEE_EXTERN PFNGLGENOCCLUSIONQUERIESNVPROC pglGenOcclusionQueriesNV;
+GLEE_EXTERN PFNGLDELETEOCCLUSIONQUERIESNVPROC pglDeleteOcclusionQueriesNV;
+GLEE_EXTERN PFNGLISOCCLUSIONQUERYNVPROC pglIsOcclusionQueryNV;
+GLEE_EXTERN PFNGLBEGINOCCLUSIONQUERYNVPROC pglBeginOcclusionQueryNV;
+GLEE_EXTERN PFNGLENDOCCLUSIONQUERYNVPROC pglEndOcclusionQueryNV;
+GLEE_EXTERN PFNGLGETOCCLUSIONQUERYIVNVPROC pglGetOcclusionQueryivNV;
+GLEE_EXTERN PFNGLGETOCCLUSIONQUERYUIVNVPROC pglGetOcclusionQueryuivNV;
+#define glGenOcclusionQueriesNV pglGenOcclusionQueriesNV
+#define glDeleteOcclusionQueriesNV pglDeleteOcclusionQueriesNV
+#define glIsOcclusionQueryNV pglIsOcclusionQueryNV
+#define glBeginOcclusionQueryNV pglBeginOcclusionQueryNV
+#define glEndOcclusionQueryNV pglEndOcclusionQueryNV
+#define glGetOcclusionQueryivNV pglGetOcclusionQueryivNV
+#define glGetOcclusionQueryuivNV pglGetOcclusionQueryuivNV
+#endif 
+
+/* GL_NV_point_sprite */
+
+#ifndef GL_NV_point_sprite
+#define GL_NV_point_sprite 1
+#define __GLEE_GL_NV_point_sprite 1
+/* Constants */
+#define GL_POINT_SPRITE_NV                                 0x8861
+#define GL_COORD_REPLACE_NV                                0x8862
+#define GL_POINT_SPRITE_R_MODE_NV                          0x8863
+typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint * params);
+GLEE_EXTERN PFNGLPOINTPARAMETERINVPROC pglPointParameteriNV;
+GLEE_EXTERN PFNGLPOINTPARAMETERIVNVPROC pglPointParameterivNV;
+#define glPointParameteriNV pglPointParameteriNV
+#define glPointParameterivNV pglPointParameterivNV
+#endif 
+
+/* GL_NV_texture_shader3 */
+
+#ifndef GL_NV_texture_shader3
+#define GL_NV_texture_shader3 1
+#define __GLEE_GL_NV_texture_shader3 1
+/* Constants */
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV                 0x8850
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV           0x8851
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV          0x8852
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV    0x8853
+#define GL_OFFSET_HILO_TEXTURE_2D_NV                       0x8854
+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV                0x8855
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV            0x8856
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV     0x8857
+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV                    0x8858
+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV                     0x8859
+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV               0x885A
+#define GL_DOT_PRODUCT_PASS_THROUGH_NV                     0x885B
+#define GL_DOT_PRODUCT_TEXTURE_1D_NV                       0x885C
+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV             0x885D
+#define GL_HILO8_NV                                        0x885E
+#define GL_SIGNED_HILO8_NV                                 0x885F
+#define GL_FORCE_BLUE_TO_ONE_NV                            0x8860
+#endif 
+
+/* GL_NV_vertex_program1_1 */
+
+#ifndef GL_NV_vertex_program1_1
+#define GL_NV_vertex_program1_1 1
+#define __GLEE_GL_NV_vertex_program1_1 1
+/* Constants */
+#endif 
+
+/* GL_EXT_shadow_funcs */
+
+#ifndef GL_EXT_shadow_funcs
+#define GL_EXT_shadow_funcs 1
+#define __GLEE_GL_EXT_shadow_funcs 1
+/* Constants */
+#endif 
+
+/* GL_EXT_stencil_two_side */
+
+#ifndef GL_EXT_stencil_two_side
+#define GL_EXT_stencil_two_side 1
+#define __GLEE_GL_EXT_stencil_two_side 1
+/* Constants */
+#define GL_STENCIL_TEST_TWO_SIDE_EXT                       0x8910
+#define GL_ACTIVE_STENCIL_FACE_EXT                         0x8911
+typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
+GLEE_EXTERN PFNGLACTIVESTENCILFACEEXTPROC pglActiveStencilFaceEXT;
+#define glActiveStencilFaceEXT pglActiveStencilFaceEXT
+#endif 
+
+/* GL_ATI_text_fragment_shader */
+
+#ifndef GL_ATI_text_fragment_shader
+#define GL_ATI_text_fragment_shader 1
+#define __GLEE_GL_ATI_text_fragment_shader 1
+/* Constants */
+#define GL_TEXT_FRAGMENT_SHADER_ATI                        0x8200
+#endif 
+
+/* GL_APPLE_client_storage */
+
+#ifndef GL_APPLE_client_storage
+#define GL_APPLE_client_storage 1
+#define __GLEE_GL_APPLE_client_storage 1
+/* Constants */
+#define GL_UNPACK_CLIENT_STORAGE_APPLE                     0x85B2
+#endif 
+
+/* GL_APPLE_element_array */
+
+#ifndef GL_APPLE_element_array
+#define GL_APPLE_element_array 1
+#define __GLEE_GL_APPLE_element_array 1
+/* Constants */
+#define GL_ELEMENT_ARRAY_APPLE                             0x8768
+#define GL_ELEMENT_ARRAY_TYPE_APPLE                        0x8769
+#define GL_ELEMENT_ARRAY_POINTER_APPLE                     0x876A
+typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint * first, const GLsizei * count, GLsizei primcount);
+GLEE_EXTERN PFNGLELEMENTPOINTERAPPLEPROC pglElementPointerAPPLE;
+GLEE_EXTERN PFNGLDRAWELEMENTARRAYAPPLEPROC pglDrawElementArrayAPPLE;
+GLEE_EXTERN PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC pglDrawRangeElementArrayAPPLE;
+GLEE_EXTERN PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC pglMultiDrawElementArrayAPPLE;
+GLEE_EXTERN PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC pglMultiDrawRangeElementArrayAPPLE;
+#define glElementPointerAPPLE pglElementPointerAPPLE
+#define glDrawElementArrayAPPLE pglDrawElementArrayAPPLE
+#define glDrawRangeElementArrayAPPLE pglDrawRangeElementArrayAPPLE
+#define glMultiDrawElementArrayAPPLE pglMultiDrawElementArrayAPPLE
+#define glMultiDrawRangeElementArrayAPPLE pglMultiDrawRangeElementArrayAPPLE
+#endif 
+
+/* GL_APPLE_fence */
+
+#ifndef GL_APPLE_fence
+#define GL_APPLE_fence 1
+#define __GLEE_GL_APPLE_fence 1
+/* Constants */
+#define GL_DRAW_PIXELS_APPLE                               0x8A0A
+#define GL_FENCE_APPLE                                     0x8A0B
+typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint * fences);
+typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint * fences);
+typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
+typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
+GLEE_EXTERN PFNGLGENFENCESAPPLEPROC pglGenFencesAPPLE;
+GLEE_EXTERN PFNGLDELETEFENCESAPPLEPROC pglDeleteFencesAPPLE;
+GLEE_EXTERN PFNGLSETFENCEAPPLEPROC pglSetFenceAPPLE;
+GLEE_EXTERN PFNGLISFENCEAPPLEPROC pglIsFenceAPPLE;
+GLEE_EXTERN PFNGLTESTFENCEAPPLEPROC pglTestFenceAPPLE;
+GLEE_EXTERN PFNGLFINISHFENCEAPPLEPROC pglFinishFenceAPPLE;
+GLEE_EXTERN PFNGLTESTOBJECTAPPLEPROC pglTestObjectAPPLE;
+GLEE_EXTERN PFNGLFINISHOBJECTAPPLEPROC pglFinishObjectAPPLE;
+#define glGenFencesAPPLE pglGenFencesAPPLE
+#define glDeleteFencesAPPLE pglDeleteFencesAPPLE
+#define glSetFenceAPPLE pglSetFenceAPPLE
+#define glIsFenceAPPLE pglIsFenceAPPLE
+#define glTestFenceAPPLE pglTestFenceAPPLE
+#define glFinishFenceAPPLE pglFinishFenceAPPLE
+#define glTestObjectAPPLE pglTestObjectAPPLE
+#define glFinishObjectAPPLE pglFinishObjectAPPLE
+#endif 
+
+/* GL_APPLE_vertex_array_object */
+
+#ifndef GL_APPLE_vertex_array_object
+#define GL_APPLE_vertex_array_object 1
+#define __GLEE_GL_APPLE_vertex_array_object 1
+/* Constants */
+#define GL_VERTEX_ARRAY_BINDING_APPLE                      0x85B5
+typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
+typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint * arrays);
+typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint * arrays);
+typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
+GLEE_EXTERN PFNGLBINDVERTEXARRAYAPPLEPROC pglBindVertexArrayAPPLE;
+GLEE_EXTERN PFNGLDELETEVERTEXARRAYSAPPLEPROC pglDeleteVertexArraysAPPLE;
+GLEE_EXTERN PFNGLGENVERTEXARRAYSAPPLEPROC pglGenVertexArraysAPPLE;
+GLEE_EXTERN PFNGLISVERTEXARRAYAPPLEPROC pglIsVertexArrayAPPLE;
+#define glBindVertexArrayAPPLE pglBindVertexArrayAPPLE
+#define glDeleteVertexArraysAPPLE pglDeleteVertexArraysAPPLE
+#define glGenVertexArraysAPPLE pglGenVertexArraysAPPLE
+#define glIsVertexArrayAPPLE pglIsVertexArrayAPPLE
+#endif 
+
+/* GL_APPLE_vertex_array_range */
+
+#ifndef GL_APPLE_vertex_array_range
+#define GL_APPLE_vertex_array_range 1
+#define __GLEE_GL_APPLE_vertex_array_range 1
+/* Constants */
+#define GL_VERTEX_ARRAY_RANGE_APPLE                        0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE                 0x851E
+#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE                 0x851F
+#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE                0x8521
+#define GL_STORAGE_CACHED_APPLE                            0x85BE
+#define GL_STORAGE_SHARED_APPLE                            0x85BF
+typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid * pointer);
+typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid * pointer);
+typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
+GLEE_EXTERN PFNGLVERTEXARRAYRANGEAPPLEPROC pglVertexArrayRangeAPPLE;
+GLEE_EXTERN PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC pglFlushVertexArrayRangeAPPLE;
+GLEE_EXTERN PFNGLVERTEXARRAYPARAMETERIAPPLEPROC pglVertexArrayParameteriAPPLE;
+#define glVertexArrayRangeAPPLE pglVertexArrayRangeAPPLE
+#define glFlushVertexArrayRangeAPPLE pglFlushVertexArrayRangeAPPLE
+#define glVertexArrayParameteriAPPLE pglVertexArrayParameteriAPPLE
+#endif 
+
+/* GL_APPLE_ycbcr_422 */
+
+#ifndef GL_APPLE_ycbcr_422
+#define GL_APPLE_ycbcr_422 1
+#define __GLEE_GL_APPLE_ycbcr_422 1
+/* Constants */
+#define GL_YCBCR_422_APPLE                                 0x85B9
+#define GL_UNSIGNED_SHORT_8_8_APPLE                        0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE                    0x85BB
+#endif 
+
+/* GL_S3_s3tc */
+
+#ifndef GL_S3_s3tc
+#define GL_S3_s3tc 1
+#define __GLEE_GL_S3_s3tc 1
+/* Constants */
+#define GL_RGB_S3TC                                        0x83A0
+#define GL_RGB4_S3TC                                       0x83A1
+#define GL_RGBA_S3TC                                       0x83A2
+#define GL_RGBA4_S3TC                                      0x83A3
+#endif 
+
+/* GL_ATI_draw_buffers */
+
+#ifndef GL_ATI_draw_buffers
+#define GL_ATI_draw_buffers 1
+#define __GLEE_GL_ATI_draw_buffers 1
+/* Constants */
+#define GL_MAX_DRAW_BUFFERS_ATI                            0x8824
+#define GL_DRAW_BUFFER0_ATI                                0x8825
+#define GL_DRAW_BUFFER1_ATI                                0x8826
+#define GL_DRAW_BUFFER2_ATI                                0x8827
+#define GL_DRAW_BUFFER3_ATI                                0x8828
+#define GL_DRAW_BUFFER4_ATI                                0x8829
+#define GL_DRAW_BUFFER5_ATI                                0x882A
+#define GL_DRAW_BUFFER6_ATI                                0x882B
+#define GL_DRAW_BUFFER7_ATI                                0x882C
+#define GL_DRAW_BUFFER8_ATI                                0x882D
+#define GL_DRAW_BUFFER9_ATI                                0x882E
+#define GL_DRAW_BUFFER10_ATI                               0x882F
+#define GL_DRAW_BUFFER11_ATI                               0x8830
+#define GL_DRAW_BUFFER12_ATI                               0x8831
+#define GL_DRAW_BUFFER13_ATI                               0x8832
+#define GL_DRAW_BUFFER14_ATI                               0x8833
+#define GL_DRAW_BUFFER15_ATI                               0x8834
+typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum * bufs);
+GLEE_EXTERN PFNGLDRAWBUFFERSATIPROC pglDrawBuffersATI;
+#define glDrawBuffersATI pglDrawBuffersATI
+#endif 
+
+/* GL_ATI_pixel_format_float */
+
+#ifndef GL_ATI_pixel_format_float
+#define GL_ATI_pixel_format_float 1
+#define __GLEE_GL_ATI_pixel_format_float 1
+/* Constants */
+#define GL_TYPE_RGBA_FLOAT_ATI                             0x8820
+#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI                 0x8835
+#endif 
+
+/* GL_ATI_texture_env_combine3 */
+
+#ifndef GL_ATI_texture_env_combine3
+#define GL_ATI_texture_env_combine3 1
+#define __GLEE_GL_ATI_texture_env_combine3 1
+/* Constants */
+#define GL_MODULATE_ADD_ATI                                0x8744
+#define GL_MODULATE_SIGNED_ADD_ATI                         0x8745
+#define GL_MODULATE_SUBTRACT_ATI                           0x8746
+#endif 
+
+/* GL_ATI_texture_float */
+
+#ifndef GL_ATI_texture_float
+#define GL_ATI_texture_float 1
+#define __GLEE_GL_ATI_texture_float 1
+/* Constants */
+#define GL_RGBA_FLOAT32_ATI                                0x8814
+#define GL_RGB_FLOAT32_ATI                                 0x8815
+#define GL_ALPHA_FLOAT32_ATI                               0x8816
+#define GL_INTENSITY_FLOAT32_ATI                           0x8817
+#define GL_LUMINANCE_FLOAT32_ATI                           0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_ATI                     0x8819
+#define GL_RGBA_FLOAT16_ATI                                0x881A
+#define GL_RGB_FLOAT16_ATI                                 0x881B
+#define GL_ALPHA_FLOAT16_ATI                               0x881C
+#define GL_INTENSITY_FLOAT16_ATI                           0x881D
+#define GL_LUMINANCE_FLOAT16_ATI                           0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_ATI                     0x881F
+#endif 
+
+/* GL_NV_float_buffer */
+
+#ifndef GL_NV_float_buffer
+#define GL_NV_float_buffer 1
+#define __GLEE_GL_NV_float_buffer 1
+/* Constants */
+#define GL_FLOAT_R_NV                                      0x8880
+#define GL_FLOAT_RG_NV                                     0x8881
+#define GL_FLOAT_RGB_NV                                    0x8882
+#define GL_FLOAT_RGBA_NV                                   0x8883
+#define GL_FLOAT_R16_NV                                    0x8884
+#define GL_FLOAT_R32_NV                                    0x8885
+#define GL_FLOAT_RG16_NV                                   0x8886
+#define GL_FLOAT_RG32_NV                                   0x8887
+#define GL_FLOAT_RGB16_NV                                  0x8888
+#define GL_FLOAT_RGB32_NV                                  0x8889
+#define GL_FLOAT_RGBA16_NV                                 0x888A
+#define GL_FLOAT_RGBA32_NV                                 0x888B
+#define GL_TEXTURE_FLOAT_COMPONENTS_NV                     0x888C
+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV                      0x888D
+#define GL_FLOAT_RGBA_MODE_NV                              0x888E
+#endif 
+
+/* GL_NV_fragment_program */
+
+#ifndef GL_NV_fragment_program
+#define GL_NV_fragment_program 1
+#define __GLEE_GL_NV_fragment_program 1
+/* Constants */
+#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV        0x8868
+#define GL_FRAGMENT_PROGRAM_NV                             0x8870
+#define GL_MAX_TEXTURE_COORDS_NV                           0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_NV                      0x8872
+#define GL_FRAGMENT_PROGRAM_BINDING_NV                     0x8873
+#define GL_PROGRAM_ERROR_STRING_NV                         0x8874
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v);
+typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte * name, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte * name, GLdouble * params);
+GLEE_EXTERN PFNGLPROGRAMNAMEDPARAMETER4FNVPROC pglProgramNamedParameter4fNV;
+GLEE_EXTERN PFNGLPROGRAMNAMEDPARAMETER4DNVPROC pglProgramNamedParameter4dNV;
+GLEE_EXTERN PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC pglProgramNamedParameter4fvNV;
+GLEE_EXTERN PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC pglProgramNamedParameter4dvNV;
+GLEE_EXTERN PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC pglGetProgramNamedParameterfvNV;
+GLEE_EXTERN PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC pglGetProgramNamedParameterdvNV;
+#define glProgramNamedParameter4fNV pglProgramNamedParameter4fNV
+#define glProgramNamedParameter4dNV pglProgramNamedParameter4dNV
+#define glProgramNamedParameter4fvNV pglProgramNamedParameter4fvNV
+#define glProgramNamedParameter4dvNV pglProgramNamedParameter4dvNV
+#define glGetProgramNamedParameterfvNV pglGetProgramNamedParameterfvNV
+#define glGetProgramNamedParameterdvNV pglGetProgramNamedParameterdvNV
+#endif 
+
+/* GL_NV_half_float */
+
+#ifndef GL_NV_half_float
+#define GL_NV_half_float 1
+#define __GLEE_GL_NV_half_float 1
+/* Constants */
+#define GL_HALF_FLOAT_NV                                   0x140B
+typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
+typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
+typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
+typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
+typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV * fog);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV * weight);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV * v);
+GLEE_EXTERN PFNGLVERTEX2HNVPROC pglVertex2hNV;
+GLEE_EXTERN PFNGLVERTEX2HVNVPROC pglVertex2hvNV;
+GLEE_EXTERN PFNGLVERTEX3HNVPROC pglVertex3hNV;
+GLEE_EXTERN PFNGLVERTEX3HVNVPROC pglVertex3hvNV;
+GLEE_EXTERN PFNGLVERTEX4HNVPROC pglVertex4hNV;
+GLEE_EXTERN PFNGLVERTEX4HVNVPROC pglVertex4hvNV;
+GLEE_EXTERN PFNGLNORMAL3HNVPROC pglNormal3hNV;
+GLEE_EXTERN PFNGLNORMAL3HVNVPROC pglNormal3hvNV;
+GLEE_EXTERN PFNGLCOLOR3HNVPROC pglColor3hNV;
+GLEE_EXTERN PFNGLCOLOR3HVNVPROC pglColor3hvNV;
+GLEE_EXTERN PFNGLCOLOR4HNVPROC pglColor4hNV;
+GLEE_EXTERN PFNGLCOLOR4HVNVPROC pglColor4hvNV;
+GLEE_EXTERN PFNGLTEXCOORD1HNVPROC pglTexCoord1hNV;
+GLEE_EXTERN PFNGLTEXCOORD1HVNVPROC pglTexCoord1hvNV;
+GLEE_EXTERN PFNGLTEXCOORD2HNVPROC pglTexCoord2hNV;
+GLEE_EXTERN PFNGLTEXCOORD2HVNVPROC pglTexCoord2hvNV;
+GLEE_EXTERN PFNGLTEXCOORD3HNVPROC pglTexCoord3hNV;
+GLEE_EXTERN PFNGLTEXCOORD3HVNVPROC pglTexCoord3hvNV;
+GLEE_EXTERN PFNGLTEXCOORD4HNVPROC pglTexCoord4hNV;
+GLEE_EXTERN PFNGLTEXCOORD4HVNVPROC pglTexCoord4hvNV;
+GLEE_EXTERN PFNGLMULTITEXCOORD1HNVPROC pglMultiTexCoord1hNV;
+GLEE_EXTERN PFNGLMULTITEXCOORD1HVNVPROC pglMultiTexCoord1hvNV;
+GLEE_EXTERN PFNGLMULTITEXCOORD2HNVPROC pglMultiTexCoord2hNV;
+GLEE_EXTERN PFNGLMULTITEXCOORD2HVNVPROC pglMultiTexCoord2hvNV;
+GLEE_EXTERN PFNGLMULTITEXCOORD3HNVPROC pglMultiTexCoord3hNV;
+GLEE_EXTERN PFNGLMULTITEXCOORD3HVNVPROC pglMultiTexCoord3hvNV;
+GLEE_EXTERN PFNGLMULTITEXCOORD4HNVPROC pglMultiTexCoord4hNV;
+GLEE_EXTERN PFNGLMULTITEXCOORD4HVNVPROC pglMultiTexCoord4hvNV;
+GLEE_EXTERN PFNGLFOGCOORDHNVPROC pglFogCoordhNV;
+GLEE_EXTERN PFNGLFOGCOORDHVNVPROC pglFogCoordhvNV;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3HNVPROC pglSecondaryColor3hNV;
+GLEE_EXTERN PFNGLSECONDARYCOLOR3HVNVPROC pglSecondaryColor3hvNV;
+GLEE_EXTERN PFNGLVERTEXWEIGHTHNVPROC pglVertexWeighthNV;
+GLEE_EXTERN PFNGLVERTEXWEIGHTHVNVPROC pglVertexWeighthvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB1HNVPROC pglVertexAttrib1hNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB1HVNVPROC pglVertexAttrib1hvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB2HNVPROC pglVertexAttrib2hNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB2HVNVPROC pglVertexAttrib2hvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB3HNVPROC pglVertexAttrib3hNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB3HVNVPROC pglVertexAttrib3hvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4HNVPROC pglVertexAttrib4hNV;
+GLEE_EXTERN PFNGLVERTEXATTRIB4HVNVPROC pglVertexAttrib4hvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS1HVNVPROC pglVertexAttribs1hvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS2HVNVPROC pglVertexAttribs2hvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS3HVNVPROC pglVertexAttribs3hvNV;
+GLEE_EXTERN PFNGLVERTEXATTRIBS4HVNVPROC pglVertexAttribs4hvNV;
+#define glVertex2hNV pglVertex2hNV
+#define glVertex2hvNV pglVertex2hvNV
+#define glVertex3hNV pglVertex3hNV
+#define glVertex3hvNV pglVertex3hvNV
+#define glVertex4hNV pglVertex4hNV
+#define glVertex4hvNV pglVertex4hvNV
+#define glNormal3hNV pglNormal3hNV
+#define glNormal3hvNV pglNormal3hvNV
+#define glColor3hNV pglColor3hNV
+#define glColor3hvNV pglColor3hvNV
+#define glColor4hNV pglColor4hNV
+#define glColor4hvNV pglColor4hvNV
+#define glTexCoord1hNV pglTexCoord1hNV
+#define glTexCoord1hvNV pglTexCoord1hvNV
+#define glTexCoord2hNV pglTexCoord2hNV
+#define glTexCoord2hvNV pglTexCoord2hvNV
+#define glTexCoord3hNV pglTexCoord3hNV
+#define glTexCoord3hvNV pglTexCoord3hvNV
+#define glTexCoord4hNV pglTexCoord4hNV
+#define glTexCoord4hvNV pglTexCoord4hvNV
+#define glMultiTexCoord1hNV pglMultiTexCoord1hNV
+#define glMultiTexCoord1hvNV pglMultiTexCoord1hvNV
+#define glMultiTexCoord2hNV pglMultiTexCoord2hNV
+#define glMultiTexCoord2hvNV pglMultiTexCoord2hvNV
+#define glMultiTexCoord3hNV pglMultiTexCoord3hNV
+#define glMultiTexCoord3hvNV pglMultiTexCoord3hvNV
+#define glMultiTexCoord4hNV pglMultiTexCoord4hNV
+#define glMultiTexCoord4hvNV pglMultiTexCoord4hvNV
+#define glFogCoordhNV pglFogCoordhNV
+#define glFogCoordhvNV pglFogCoordhvNV
+#define glSecondaryColor3hNV pglSecondaryColor3hNV
+#define glSecondaryColor3hvNV pglSecondaryColor3hvNV
+#define glVertexWeighthNV pglVertexWeighthNV
+#define glVertexWeighthvNV pglVertexWeighthvNV
+#define glVertexAttrib1hNV pglVertexAttrib1hNV
+#define glVertexAttrib1hvNV pglVertexAttrib1hvNV
+#define glVertexAttrib2hNV pglVertexAttrib2hNV
+#define glVertexAttrib2hvNV pglVertexAttrib2hvNV
+#define glVertexAttrib3hNV pglVertexAttrib3hNV
+#define glVertexAttrib3hvNV pglVertexAttrib3hvNV
+#define glVertexAttrib4hNV pglVertexAttrib4hNV
+#define glVertexAttrib4hvNV pglVertexAttrib4hvNV
+#define glVertexAttribs1hvNV pglVertexAttribs1hvNV
+#define glVertexAttribs2hvNV pglVertexAttribs2hvNV
+#define glVertexAttribs3hvNV pglVertexAttribs3hvNV
+#define glVertexAttribs4hvNV pglVertexAttribs4hvNV
+#endif 
+
+/* GL_NV_pixel_data_range */
+
+#ifndef GL_NV_pixel_data_range
+#define GL_NV_pixel_data_range 1
+#define __GLEE_GL_NV_pixel_data_range 1
+/* Constants */
+#define GL_WRITE_PIXEL_DATA_RANGE_NV                       0x8878
+#define GL_READ_PIXEL_DATA_RANGE_NV                        0x8879
+#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV                0x887A
+#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV                 0x887B
+#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV               0x887C
+#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV                0x887D
+typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid * pointer);
+typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
+GLEE_EXTERN PFNGLPIXELDATARANGENVPROC pglPixelDataRangeNV;
+GLEE_EXTERN PFNGLFLUSHPIXELDATARANGENVPROC pglFlushPixelDataRangeNV;
+#define glPixelDataRangeNV pglPixelDataRangeNV
+#define glFlushPixelDataRangeNV pglFlushPixelDataRangeNV
+#endif 
+
+/* GL_NV_primitive_restart */
+
+#ifndef GL_NV_primitive_restart
+#define GL_NV_primitive_restart 1
+#define __GLEE_GL_NV_primitive_restart 1
+/* Constants */
+#define GL_PRIMITIVE_RESTART_NV                            0x8558
+#define GL_PRIMITIVE_RESTART_INDEX_NV                      0x8559
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) ();
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
+GLEE_EXTERN PFNGLPRIMITIVERESTARTNVPROC pglPrimitiveRestartNV;
+GLEE_EXTERN PFNGLPRIMITIVERESTARTINDEXNVPROC pglPrimitiveRestartIndexNV;
+#define glPrimitiveRestartNV pglPrimitiveRestartNV
+#define glPrimitiveRestartIndexNV pglPrimitiveRestartIndexNV
+#endif 
+
+/* GL_NV_texture_expand_normal */
+
+#ifndef GL_NV_texture_expand_normal
+#define GL_NV_texture_expand_normal 1
+#define __GLEE_GL_NV_texture_expand_normal 1
+/* Constants */
+#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV                  0x888F
+#endif 
+
+/* GL_NV_vertex_program2 */
+
+#ifndef GL_NV_vertex_program2
+#define GL_NV_vertex_program2 1
+#define __GLEE_GL_NV_vertex_program2 1
+/* Constants */
+#endif 
+
+/* GL_ATI_map_object_buffer */
+
+#ifndef GL_ATI_map_object_buffer
+#define GL_ATI_map_object_buffer 1
+#define __GLEE_GL_ATI_map_object_buffer 1
+/* Constants */
+typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+GLEE_EXTERN PFNGLMAPOBJECTBUFFERATIPROC pglMapObjectBufferATI;
+GLEE_EXTERN PFNGLUNMAPOBJECTBUFFERATIPROC pglUnmapObjectBufferATI;
+#define glMapObjectBufferATI pglMapObjectBufferATI
+#define glUnmapObjectBufferATI pglUnmapObjectBufferATI
+#endif 
+
+/* GL_ATI_separate_stencil */
+
+#ifndef GL_ATI_separate_stencil
+#define GL_ATI_separate_stencil 1
+#define __GLEE_GL_ATI_separate_stencil 1
+/* Constants */
+#define GL_STENCIL_BACK_FUNC_ATI                           0x8800
+#define GL_STENCIL_BACK_FAIL_ATI                           0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI                0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI                0x8803
+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+GLEE_EXTERN PFNGLSTENCILOPSEPARATEATIPROC pglStencilOpSeparateATI;
+GLEE_EXTERN PFNGLSTENCILFUNCSEPARATEATIPROC pglStencilFuncSeparateATI;
+#define glStencilOpSeparateATI pglStencilOpSeparateATI
+#define glStencilFuncSeparateATI pglStencilFuncSeparateATI
+#endif 
+
+/* GL_ATI_vertex_attrib_array_object */
+
+#ifndef GL_ATI_vertex_attrib_array_object
+#define GL_ATI_vertex_attrib_array_object 1
+#define __GLEE_GL_ATI_vertex_attrib_array_object 1
+/* Constants */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint * params);
+GLEE_EXTERN PFNGLVERTEXATTRIBARRAYOBJECTATIPROC pglVertexAttribArrayObjectATI;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC pglGetVertexAttribArrayObjectfvATI;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC pglGetVertexAttribArrayObjectivATI;
+#define glVertexAttribArrayObjectATI pglVertexAttribArrayObjectATI
+#define glGetVertexAttribArrayObjectfvATI pglGetVertexAttribArrayObjectfvATI
+#define glGetVertexAttribArrayObjectivATI pglGetVertexAttribArrayObjectivATI
+#endif 
+
+/* GL_OES_read_format */
+
+#ifndef GL_OES_read_format
+#define GL_OES_read_format 1
+#define __GLEE_GL_OES_read_format 1
+/* Constants */
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES              0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES            0x8B9B
+#endif 
+
+/* GL_EXT_depth_bounds_test */
+
+#ifndef GL_EXT_depth_bounds_test
+#define GL_EXT_depth_bounds_test 1
+#define __GLEE_GL_EXT_depth_bounds_test 1
+/* Constants */
+#define GL_DEPTH_BOUNDS_TEST_EXT                           0x8890
+#define GL_DEPTH_BOUNDS_EXT                                0x8891
+typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
+GLEE_EXTERN PFNGLDEPTHBOUNDSEXTPROC pglDepthBoundsEXT;
+#define glDepthBoundsEXT pglDepthBoundsEXT
+#endif 
+
+/* GL_EXT_texture_mirror_clamp */
+
+#ifndef GL_EXT_texture_mirror_clamp
+#define GL_EXT_texture_mirror_clamp 1
+#define __GLEE_GL_EXT_texture_mirror_clamp 1
+/* Constants */
+#define GL_MIRROR_CLAMP_EXT                                0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_EXT                        0x8743
+#define GL_MIRROR_CLAMP_TO_BORDER_EXT                      0x8912
+#endif 
+
+/* GL_EXT_blend_equation_separate */
+
+#ifndef GL_EXT_blend_equation_separate
+#define GL_EXT_blend_equation_separate 1
+#define __GLEE_GL_EXT_blend_equation_separate 1
+/* Constants */
+#define GL_BLEND_EQUATION_RGB_EXT                          GL_BLEND_EQUATION
+#define GL_BLEND_EQUATION_ALPHA_EXT                        0x883D
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
+GLEE_EXTERN PFNGLBLENDEQUATIONSEPARATEEXTPROC pglBlendEquationSeparateEXT;
+#define glBlendEquationSeparateEXT pglBlendEquationSeparateEXT
+#endif 
+
+/* GL_MESA_pack_invert */
+
+#ifndef GL_MESA_pack_invert
+#define GL_MESA_pack_invert 1
+#define __GLEE_GL_MESA_pack_invert 1
+/* Constants */
+#define GL_PACK_INVERT_MESA                                0x8758
+#endif 
+
+/* GL_MESA_ycbcr_texture */
+
+#ifndef GL_MESA_ycbcr_texture
+#define GL_MESA_ycbcr_texture 1
+#define __GLEE_GL_MESA_ycbcr_texture 1
+/* Constants */
+#define GL_UNSIGNED_SHORT_8_8_MESA                         0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_MESA                     0x85BB
+#define GL_YCBCR_MESA                                      0x8757
+#endif 
+
+/* GL_EXT_pixel_buffer_object */
+
+#ifndef GL_EXT_pixel_buffer_object
+#define GL_EXT_pixel_buffer_object 1
+#define __GLEE_GL_EXT_pixel_buffer_object 1
+/* Constants */
+#define GL_PIXEL_PACK_BUFFER_EXT                           0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_EXT                         0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_EXT                   0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT                 0x88EF
+#endif 
+
+/* GL_NV_fragment_program_option */
+
+#ifndef GL_NV_fragment_program_option
+#define GL_NV_fragment_program_option 1
+#define __GLEE_GL_NV_fragment_program_option 1
+/* Constants */
+#endif 
+
+/* GL_NV_fragment_program2 */
+
+#ifndef GL_NV_fragment_program2
+#define GL_NV_fragment_program2 1
+#define __GLEE_GL_NV_fragment_program2 1
+/* Constants */
+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV                0x88F4
+#define GL_MAX_PROGRAM_CALL_DEPTH_NV                       0x88F5
+#define GL_MAX_PROGRAM_IF_DEPTH_NV                         0x88F6
+#define GL_MAX_PROGRAM_LOOP_DEPTH_NV                       0x88F7
+#define GL_MAX_PROGRAM_LOOP_COUNT_NV                       0x88F8
+#endif 
+
+/* GL_NV_vertex_program2_option */
+
+#ifndef GL_NV_vertex_program2_option
+#define GL_NV_vertex_program2_option 1
+#define __GLEE_GL_NV_vertex_program2_option 1
+/* Constants */
+#endif 
+
+/* GL_NV_vertex_program3 */
+
+#ifndef GL_NV_vertex_program3
+#define GL_NV_vertex_program3 1
+#define __GLEE_GL_NV_vertex_program3 1
+/* Constants */
+#endif 
+
+/* GL_EXT_framebuffer_object */
+
+#ifndef GL_EXT_framebuffer_object
+#define GL_EXT_framebuffer_object 1
+#define __GLEE_GL_EXT_framebuffer_object 1
+/* Constants */
+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT               0x0506
+#define GL_MAX_RENDERBUFFER_SIZE_EXT                       0x84E8
+#define GL_FRAMEBUFFER_BINDING_EXT                         0x8CA6
+#define GL_RENDERBUFFER_BINDING_EXT                        0x8CA7
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT          0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT          0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT        0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT   0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE_EXT                        0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT           0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT   0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT 0x8CD8
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT           0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT              0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT          0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT          0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT                     0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS_EXT                       0x8CDF
+#define GL_COLOR_ATTACHMENT0_EXT                           0x8CE0
+#define GL_COLOR_ATTACHMENT1_EXT                           0x8CE1
+#define GL_COLOR_ATTACHMENT2_EXT                           0x8CE2
+#define GL_COLOR_ATTACHMENT3_EXT                           0x8CE3
+#define GL_COLOR_ATTACHMENT4_EXT                           0x8CE4
+#define GL_COLOR_ATTACHMENT5_EXT                           0x8CE5
+#define GL_COLOR_ATTACHMENT6_EXT                           0x8CE6
+#define GL_COLOR_ATTACHMENT7_EXT                           0x8CE7
+#define GL_COLOR_ATTACHMENT8_EXT                           0x8CE8
+#define GL_COLOR_ATTACHMENT9_EXT                           0x8CE9
+#define GL_COLOR_ATTACHMENT10_EXT                          0x8CEA
+#define GL_COLOR_ATTACHMENT11_EXT                          0x8CEB
+#define GL_COLOR_ATTACHMENT12_EXT                          0x8CEC
+#define GL_COLOR_ATTACHMENT13_EXT                          0x8CED
+#define GL_COLOR_ATTACHMENT14_EXT                          0x8CEE
+#define GL_COLOR_ATTACHMENT15_EXT                          0x8CEF
+#define GL_DEPTH_ATTACHMENT_EXT                            0x8D00
+#define GL_STENCIL_ATTACHMENT_EXT                          0x8D20
+#define GL_FRAMEBUFFER_EXT                                 0x8D40
+#define GL_RENDERBUFFER_EXT                                0x8D41
+#define GL_RENDERBUFFER_WIDTH_EXT                          0x8D42
+#define GL_RENDERBUFFER_HEIGHT_EXT                         0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT                0x8D44
+#define GL_STENCIL_INDEX_EXT                               0x8D45
+#define GL_STENCIL_INDEX1_EXT                              0x8D46
+#define GL_STENCIL_INDEX4_EXT                              0x8D47
+#define GL_STENCIL_INDEX8_EXT                              0x8D48
+#define GL_STENCIL_INDEX16_EXT                             0x8D49
+#define GL_RENDERBUFFER_RED_SIZE_EXT                       0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_EXT                     0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_EXT                      0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT                     0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT                     0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT                   0x8D55
+typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint * renderbuffers);
+typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint * renderbuffers);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params);
+typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
+typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
+typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint * framebuffers);
+typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint * framebuffers);
+typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
+GLEE_EXTERN PFNGLISRENDERBUFFEREXTPROC pglIsRenderbufferEXT;
+GLEE_EXTERN PFNGLBINDRENDERBUFFEREXTPROC pglBindRenderbufferEXT;
+GLEE_EXTERN PFNGLDELETERENDERBUFFERSEXTPROC pglDeleteRenderbuffersEXT;
+GLEE_EXTERN PFNGLGENRENDERBUFFERSEXTPROC pglGenRenderbuffersEXT;
+GLEE_EXTERN PFNGLRENDERBUFFERSTORAGEEXTPROC pglRenderbufferStorageEXT;
+GLEE_EXTERN PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC pglGetRenderbufferParameterivEXT;
+GLEE_EXTERN PFNGLISFRAMEBUFFEREXTPROC pglIsFramebufferEXT;
+GLEE_EXTERN PFNGLBINDFRAMEBUFFEREXTPROC pglBindFramebufferEXT;
+GLEE_EXTERN PFNGLDELETEFRAMEBUFFERSEXTPROC pglDeleteFramebuffersEXT;
+GLEE_EXTERN PFNGLGENFRAMEBUFFERSEXTPROC pglGenFramebuffersEXT;
+GLEE_EXTERN PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC pglCheckFramebufferStatusEXT;
+GLEE_EXTERN PFNGLFRAMEBUFFERTEXTURE1DEXTPROC pglFramebufferTexture1DEXT;
+GLEE_EXTERN PFNGLFRAMEBUFFERTEXTURE2DEXTPROC pglFramebufferTexture2DEXT;
+GLEE_EXTERN PFNGLFRAMEBUFFERTEXTURE3DEXTPROC pglFramebufferTexture3DEXT;
+GLEE_EXTERN PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC pglFramebufferRenderbufferEXT;
+GLEE_EXTERN PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC pglGetFramebufferAttachmentParameterivEXT;
+GLEE_EXTERN PFNGLGENERATEMIPMAPEXTPROC pglGenerateMipmapEXT;
+#define glIsRenderbufferEXT pglIsRenderbufferEXT
+#define glBindRenderbufferEXT pglBindRenderbufferEXT
+#define glDeleteRenderbuffersEXT pglDeleteRenderbuffersEXT
+#define glGenRenderbuffersEXT pglGenRenderbuffersEXT
+#define glRenderbufferStorageEXT pglRenderbufferStorageEXT
+#define glGetRenderbufferParameterivEXT pglGetRenderbufferParameterivEXT
+#define glIsFramebufferEXT pglIsFramebufferEXT
+#define glBindFramebufferEXT pglBindFramebufferEXT
+#define glDeleteFramebuffersEXT pglDeleteFramebuffersEXT
+#define glGenFramebuffersEXT pglGenFramebuffersEXT
+#define glCheckFramebufferStatusEXT pglCheckFramebufferStatusEXT
+#define glFramebufferTexture1DEXT pglFramebufferTexture1DEXT
+#define glFramebufferTexture2DEXT pglFramebufferTexture2DEXT
+#define glFramebufferTexture3DEXT pglFramebufferTexture3DEXT
+#define glFramebufferRenderbufferEXT pglFramebufferRenderbufferEXT
+#define glGetFramebufferAttachmentParameterivEXT pglGetFramebufferAttachmentParameterivEXT
+#define glGenerateMipmapEXT pglGenerateMipmapEXT
+#endif 
+
+/* GL_GREMEDY_string_marker */
+
+#ifndef GL_GREMEDY_string_marker
+#define GL_GREMEDY_string_marker 1
+#define __GLEE_GL_GREMEDY_string_marker 1
+/* Constants */
+typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid * string);
+GLEE_EXTERN PFNGLSTRINGMARKERGREMEDYPROC pglStringMarkerGREMEDY;
+#define glStringMarkerGREMEDY pglStringMarkerGREMEDY
+#endif 
+
+/* GL_EXT_Cg_shader */
+
+#ifndef GL_EXT_Cg_shader
+#define GL_EXT_Cg_shader 1
+#define __GLEE_GL_EXT_Cg_shader 1
+/* Constants */
+#define GL_CG_VERTEX_SHADER_EXT                            0x890E
+#define GL_CG_FRAGMENT_SHADER_EXT                          0x890F
+#endif 
+
+/* GL_EXT_timer_query */
+
+#ifndef GL_EXT_timer_query
+#define GL_EXT_timer_query 1
+#define __GLEE_GL_EXT_timer_query 1
+/* Constants */
+#define GL_TIME_ELAPSED_EXT                                0x88BF
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT * params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT * params);
+GLEE_EXTERN PFNGLGETQUERYOBJECTI64VEXTPROC pglGetQueryObjecti64vEXT;
+GLEE_EXTERN PFNGLGETQUERYOBJECTUI64VEXTPROC pglGetQueryObjectui64vEXT;
+#define glGetQueryObjecti64vEXT pglGetQueryObjecti64vEXT
+#define glGetQueryObjectui64vEXT pglGetQueryObjectui64vEXT
+#endif 
+
+/* GL_EXT_texture_buffer_object */
+
+#ifndef GL_EXT_texture_buffer_object
+#define GL_EXT_texture_buffer_object 1
+#define __GLEE_GL_EXT_texture_buffer_object 1
+/* Constants */
+#define GL_TEXTURE_BUFFER_EXT                              0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT                     0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_EXT                      0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT           0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_EXT                       0x8C2E
+typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+GLEE_EXTERN PFNGLTEXBUFFEREXTPROC pglTexBufferEXT;
+#define glTexBufferEXT pglTexBufferEXT
+#endif 
+
+/* GL_EXT_gpu_shader4 */
+
+#ifndef GL_EXT_gpu_shader4
+#define GL_EXT_gpu_shader4 1
+#define __GLEE_GL_EXT_gpu_shader4 1
+/* Constants */
+#define GL_SAMPLER_1D_ARRAY_EXT                            0x8DC0
+#define GL_SAMPLER_2D_ARRAY_EXT                            0x8DC1
+#define GL_SAMPLER_BUFFER_EXT                              0x8DC2
+#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT                     0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT                     0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW_EXT                         0x8DC5
+#define GL_UNSIGNED_INT_VEC2_EXT                           0x8DC6
+#define GL_UNSIGNED_INT_VEC3_EXT                           0x8DC7
+#define GL_UNSIGNED_INT_VEC4_EXT                           0x8DC8
+#define GL_INT_SAMPLER_1D_EXT                              0x8DC9
+#define GL_INT_SAMPLER_2D_EXT                              0x8DCA
+#define GL_INT_SAMPLER_3D_EXT                              0x8DCB
+#define GL_INT_SAMPLER_CUBE_EXT                            0x8DCC
+#define GL_INT_SAMPLER_2D_RECT_EXT                         0x8DCD
+#define GL_INT_SAMPLER_1D_ARRAY_EXT                        0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY_EXT                        0x8DCF
+#define GL_INT_SAMPLER_BUFFER_EXT                          0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_1D_EXT                     0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D_EXT                     0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D_EXT                     0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT                   0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT                0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT               0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT               0x8DD7
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT                 0x8DD8
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT                 0x88FD
+typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint * params);
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar * name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar * name);
+typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint * value);
+typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint * value);
+typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint * value);
+typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint * value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort * v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint * params);
+GLEE_EXTERN PFNGLGETUNIFORMUIVEXTPROC pglGetUniformuivEXT;
+GLEE_EXTERN PFNGLBINDFRAGDATALOCATIONEXTPROC pglBindFragDataLocationEXT;
+GLEE_EXTERN PFNGLGETFRAGDATALOCATIONEXTPROC pglGetFragDataLocationEXT;
+GLEE_EXTERN PFNGLUNIFORM1UIEXTPROC pglUniform1uiEXT;
+GLEE_EXTERN PFNGLUNIFORM2UIEXTPROC pglUniform2uiEXT;
+GLEE_EXTERN PFNGLUNIFORM3UIEXTPROC pglUniform3uiEXT;
+GLEE_EXTERN PFNGLUNIFORM4UIEXTPROC pglUniform4uiEXT;
+GLEE_EXTERN PFNGLUNIFORM1UIVEXTPROC pglUniform1uivEXT;
+GLEE_EXTERN PFNGLUNIFORM2UIVEXTPROC pglUniform2uivEXT;
+GLEE_EXTERN PFNGLUNIFORM3UIVEXTPROC pglUniform3uivEXT;
+GLEE_EXTERN PFNGLUNIFORM4UIVEXTPROC pglUniform4uivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI1IEXTPROC pglVertexAttribI1iEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI2IEXTPROC pglVertexAttribI2iEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI3IEXTPROC pglVertexAttribI3iEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI4IEXTPROC pglVertexAttribI4iEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI1UIEXTPROC pglVertexAttribI1uiEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI2UIEXTPROC pglVertexAttribI2uiEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI3UIEXTPROC pglVertexAttribI3uiEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI4UIEXTPROC pglVertexAttribI4uiEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI1IVEXTPROC pglVertexAttribI1ivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI2IVEXTPROC pglVertexAttribI2ivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI3IVEXTPROC pglVertexAttribI3ivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI4IVEXTPROC pglVertexAttribI4ivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI1UIVEXTPROC pglVertexAttribI1uivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI2UIVEXTPROC pglVertexAttribI2uivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI3UIVEXTPROC pglVertexAttribI3uivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI4UIVEXTPROC pglVertexAttribI4uivEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI4BVEXTPROC pglVertexAttribI4bvEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI4SVEXTPROC pglVertexAttribI4svEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI4UBVEXTPROC pglVertexAttribI4ubvEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBI4USVEXTPROC pglVertexAttribI4usvEXT;
+GLEE_EXTERN PFNGLVERTEXATTRIBIPOINTEREXTPROC pglVertexAttribIPointerEXT;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBIIVEXTPROC pglGetVertexAttribIivEXT;
+GLEE_EXTERN PFNGLGETVERTEXATTRIBIUIVEXTPROC pglGetVertexAttribIuivEXT;
+#define glGetUniformuivEXT pglGetUniformuivEXT
+#define glBindFragDataLocationEXT pglBindFragDataLocationEXT
+#define glGetFragDataLocationEXT pglGetFragDataLocationEXT
+#define glUniform1uiEXT pglUniform1uiEXT
+#define glUniform2uiEXT pglUniform2uiEXT
+#define glUniform3uiEXT pglUniform3uiEXT
+#define glUniform4uiEXT pglUniform4uiEXT
+#define glUniform1uivEXT pglUniform1uivEXT
+#define glUniform2uivEXT pglUniform2uivEXT
+#define glUniform3uivEXT pglUniform3uivEXT
+#define glUniform4uivEXT pglUniform4uivEXT
+#define glVertexAttribI1iEXT pglVertexAttribI1iEXT
+#define glVertexAttribI2iEXT pglVertexAttribI2iEXT
+#define glVertexAttribI3iEXT pglVertexAttribI3iEXT
+#define glVertexAttribI4iEXT pglVertexAttribI4iEXT
+#define glVertexAttribI1uiEXT pglVertexAttribI1uiEXT
+#define glVertexAttribI2uiEXT pglVertexAttribI2uiEXT
+#define glVertexAttribI3uiEXT pglVertexAttribI3uiEXT
+#define glVertexAttribI4uiEXT pglVertexAttribI4uiEXT
+#define glVertexAttribI1ivEXT pglVertexAttribI1ivEXT
+#define glVertexAttribI2ivEXT pglVertexAttribI2ivEXT
+#define glVertexAttribI3ivEXT pglVertexAttribI3ivEXT
+#define glVertexAttribI4ivEXT pglVertexAttribI4ivEXT
+#define glVertexAttribI1uivEXT pglVertexAttribI1uivEXT
+#define glVertexAttribI2uivEXT pglVertexAttribI2uivEXT
+#define glVertexAttribI3uivEXT pglVertexAttribI3uivEXT
+#define glVertexAttribI4uivEXT pglVertexAttribI4uivEXT
+#define glVertexAttribI4bvEXT pglVertexAttribI4bvEXT
+#define glVertexAttribI4svEXT pglVertexAttribI4svEXT
+#define glVertexAttribI4ubvEXT pglVertexAttribI4ubvEXT
+#define glVertexAttribI4usvEXT pglVertexAttribI4usvEXT
+#define glVertexAttribIPointerEXT pglVertexAttribIPointerEXT
+#define glGetVertexAttribIivEXT pglGetVertexAttribIivEXT
+#define glGetVertexAttribIuivEXT pglGetVertexAttribIuivEXT
+#endif 
+
+/* GL_EXT_geometry_shader4 */
+
+#ifndef GL_EXT_geometry_shader4
+#define GL_EXT_geometry_shader4 1
+#define __GLEE_GL_EXT_geometry_shader4 1
+/* Constants */
+#define GL_GEOMETRY_SHADER_EXT                             0x8DD9
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT             0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT               0x8DDE
+#define GL_MAX_VARYING_COMPONENTS_EXT                      0x8B4B
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT             0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT                0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT        0x8DE1
+#define GL_GEOMETRY_VERTICES_OUT_EXT                       0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_EXT                         0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_EXT                        0x8DDC
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT            0x8C29
+#define GL_LINES_ADJACENCY_EXT                             0xA
+#define GL_LINE_STRIP_ADJACENCY_EXT                        0xB
+#define GL_TRIANGLES_ADJACENCY_EXT                         0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT                    0xD
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT              0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT        0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT          0x8DA9
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT        0x8CD4
+#define GL_PROGRAM_POINT_SIZE_EXT                          0x8642
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+GLEE_EXTERN PFNGLPROGRAMPARAMETERIEXTPROC pglProgramParameteriEXT;
+GLEE_EXTERN PFNGLFRAMEBUFFERTEXTUREEXTPROC pglFramebufferTextureEXT;
+GLEE_EXTERN PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC pglFramebufferTextureLayerEXT;
+GLEE_EXTERN PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC pglFramebufferTextureFaceEXT;
+#define glProgramParameteriEXT pglProgramParameteriEXT
+#define glFramebufferTextureEXT pglFramebufferTextureEXT
+#define glFramebufferTextureLayerEXT pglFramebufferTextureLayerEXT
+#define glFramebufferTextureFaceEXT pglFramebufferTextureFaceEXT
+#endif 
+
+/* GL_EXT_bindable_uniform */
+
+#ifndef GL_EXT_bindable_uniform
+#define GL_EXT_bindable_uniform 1
+#define __GLEE_GL_EXT_bindable_uniform 1
+/* Constants */
+#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT                0x8DE2
+#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT              0x8DE3
+#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT              0x8DE4
+#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT                   0x8DED
+#define GL_UNIFORM_BUFFER_EXT                              0x8DEE
+#define GL_UNIFORM_BUFFER_BINDING_EXT                      0x8DEF
+typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
+typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
+GLEE_EXTERN PFNGLUNIFORMBUFFEREXTPROC pglUniformBufferEXT;
+GLEE_EXTERN PFNGLGETUNIFORMBUFFERSIZEEXTPROC pglGetUniformBufferSizeEXT;
+GLEE_EXTERN PFNGLGETUNIFORMOFFSETEXTPROC pglGetUniformOffsetEXT;
+#define glUniformBufferEXT pglUniformBufferEXT
+#define glGetUniformBufferSizeEXT pglGetUniformBufferSizeEXT
+#define glGetUniformOffsetEXT pglGetUniformOffsetEXT
+#endif 
+
+/* GL_EXT_framebuffer_sRGB */
+
+#ifndef GL_EXT_framebuffer_sRGB
+#define GL_EXT_framebuffer_sRGB 1
+#define __GLEE_GL_EXT_framebuffer_sRGB 1
+/* Constants */
+#define GL_FRAMEBUFFER_SRGB_EXT                            0x8DB9
+#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT                    0x8DBA
+#endif 
+
+/* GL_EXT_texture_shared_exponent */
+
+#ifndef GL_EXT_texture_shared_exponent
+#define GL_EXT_texture_shared_exponent 1
+#define __GLEE_GL_EXT_texture_shared_exponent 1
+/* Constants */
+#define GL_RGB9_E5_EXT                                     0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT                    0x8C3E
+#define GL_TEXTURE_SHARED_SIZE_EXT                         0x8C3F
+#endif 
+
+/* GL_EXT_packed_float */
+
+#ifndef GL_EXT_packed_float
+#define GL_EXT_packed_float 1
+#define __GLEE_GL_EXT_packed_float 1
+/* Constants */
+#define GL_R11F_G11F_B10F_EXT                              0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT                0x8C3B
+#define GL_RGBA_SIGNED_COMPONENTS_EXT                      0x8C3C
+#endif 
+
+/* GL_EXT_texture_array */
+
+#ifndef GL_EXT_texture_array
+#define GL_EXT_texture_array 1
+#define __GLEE_GL_EXT_texture_array 1
+/* Constants */
+#define GL_TEXTURE_1D_ARRAY_EXT                            0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY_EXT                      0x8C19
+#define GL_TEXTURE_2D_ARRAY_EXT                            0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY_EXT                      0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY_EXT                    0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY_EXT                    0x8C1D
+#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT                    0x88FF
+#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT                0x884E
+#endif 
+
+/* GL_EXT_texture_integer */
+
+#ifndef GL_EXT_texture_integer
+#define GL_EXT_texture_integer 1
+#define __GLEE_GL_EXT_texture_integer 1
+/* Constants */
+#define GL_RGBA32UI_EXT                                    0x8D70
+#define GL_RGB32UI_EXT                                     0x8D71
+#define GL_ALPHA32UI_EXT                                   0x8D72
+#define GL_INTENSITY32UI_EXT                               0x8D73
+#define GL_LUMINANCE32UI_EXT                               0x8D74
+#define GL_LUMINANCE_ALPHA32UI_EXT                         0x8D75
+#define GL_RGBA16UI_EXT                                    0x8D76
+#define GL_RGB16UI_EXT                                     0x8D77
+#define GL_ALPHA16UI_EXT                                   0x8D78
+#define GL_INTENSITY16UI_EXT                               0x8D79
+#define GL_LUMINANCE16UI_EXT                               0x8D7A
+#define GL_LUMINANCE_ALPHA16UI_EXT                         0x8D7B
+#define GL_RGBA8UI_EXT                                     0x8D7C
+#define GL_RGB8UI_EXT                                      0x8D7D
+#define GL_ALPHA8UI_EXT                                    0x8D7E
+#define GL_INTENSITY8UI_EXT                                0x8D7F
+#define GL_LUMINANCE8UI_EXT                                0x8D80
+#define GL_LUMINANCE_ALPHA8UI_EXT                          0x8D81
+#define GL_RGBA32I_EXT                                     0x8D82
+#define GL_RGB32I_EXT                                      0x8D83
+#define GL_ALPHA32I_EXT                                    0x8D84
+#define GL_INTENSITY32I_EXT                                0x8D85
+#define GL_LUMINANCE32I_EXT                                0x8D86
+#define GL_LUMINANCE_ALPHA32I_EXT                          0x8D87
+#define GL_RGBA16I_EXT                                     0x8D88
+#define GL_RGB16I_EXT                                      0x8D89
+#define GL_ALPHA16I_EXT                                    0x8D8A
+#define GL_INTENSITY16I_EXT                                0x8D8B
+#define GL_LUMINANCE16I_EXT                                0x8D8C
+#define GL_LUMINANCE_ALPHA16I_EXT                          0x8D8D
+#define GL_RGBA8I_EXT                                      0x8D8E
+#define GL_RGB8I_EXT                                       0x8D8F
+#define GL_ALPHA8I_EXT                                     0x8D90
+#define GL_INTENSITY8I_EXT                                 0x8D91
+#define GL_LUMINANCE8I_EXT                                 0x8D92
+#define GL_LUMINANCE_ALPHA8I_EXT                           0x8D93
+#define GL_RED_INTEGER_EXT                                 0x8D94
+#define GL_GREEN_INTEGER_EXT                               0x8D95
+#define GL_BLUE_INTEGER_EXT                                0x8D96
+#define GL_ALPHA_INTEGER_EXT                               0x8D97
+#define GL_RGB_INTEGER_EXT                                 0x8D98
+#define GL_RGBA_INTEGER_EXT                                0x8D99
+#define GL_BGR_INTEGER_EXT                                 0x8D9A
+#define GL_BGRA_INTEGER_EXT                                0x8D9B
+#define GL_LUMINANCE_INTEGER_EXT                           0x8D9C
+#define GL_LUMINANCE_ALPHA_INTEGER_EXT                     0x8D9D
+#define GL_RGBA_INTEGER_MODE_EXT                           0x8D9E
+typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint * params);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint * params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint * params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint * params);
+typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
+typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+GLEE_EXTERN PFNGLTEXPARAMETERIIVEXTPROC pglTexParameterIivEXT;
+GLEE_EXTERN PFNGLTEXPARAMETERIUIVEXTPROC pglTexParameterIuivEXT;
+GLEE_EXTERN PFNGLGETTEXPARAMETERIIVEXTPROC pglGetTexParameterIivEXT;
+GLEE_EXTERN PFNGLGETTEXPARAMETERIUIVEXTPROC pglGetTexParameterIuivEXT;
+GLEE_EXTERN PFNGLCLEARCOLORIIEXTPROC pglClearColorIiEXT;
+GLEE_EXTERN PFNGLCLEARCOLORIUIEXTPROC pglClearColorIuiEXT;
+#define glTexParameterIivEXT pglTexParameterIivEXT
+#define glTexParameterIuivEXT pglTexParameterIuivEXT
+#define glGetTexParameterIivEXT pglGetTexParameterIivEXT
+#define glGetTexParameterIuivEXT pglGetTexParameterIuivEXT
+#define glClearColorIiEXT pglClearColorIiEXT
+#define glClearColorIuiEXT pglClearColorIuiEXT
+#endif 
+
+/* GL_NV_depth_buffer_float */
+
+#ifndef GL_NV_depth_buffer_float
+#define GL_NV_depth_buffer_float 1
+#define __GLEE_GL_NV_depth_buffer_float 1
+/* Constants */
+#define GL_DEPTH_COMPONENT32F_NV                           0x8DAB
+#define GL_DEPTH32F_STENCIL8_NV                            0x8DAC
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV               0x8DAD
+#define GL_DEPTH_BUFFER_FLOAT_MODE_NV                      0x8DAF
+typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
+typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
+GLEE_EXTERN PFNGLDEPTHRANGEDNVPROC pglDepthRangedNV;
+GLEE_EXTERN PFNGLCLEARDEPTHDNVPROC pglClearDepthdNV;
+GLEE_EXTERN PFNGLDEPTHBOUNDSDNVPROC pglDepthBoundsdNV;
+#define glDepthRangedNV pglDepthRangedNV
+#define glClearDepthdNV pglClearDepthdNV
+#define glDepthBoundsdNV pglDepthBoundsdNV
+#endif 
+
+/* GL_EXT_texture_compression_latc */
+
+#ifndef GL_EXT_texture_compression_latc
+#define GL_EXT_texture_compression_latc 1
+#define __GLEE_GL_EXT_texture_compression_latc 1
+/* Constants */
+#define GL_COMPRESSED_LUMINANCE_LATC1_EXT                  0x8C70
+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT           0x8C71
+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT            0x8C72
+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT     0x8C73
+#endif 
+
+/* GL_NV_transform_feedback */
+
+#ifndef GL_NV_transform_feedback
+#define GL_NV_transform_feedback 1
+#define __GLEE_GL_NV_transform_feedback 1
+/* Constants */
+#define GL_BACK_PRIMARY_COLOR_NV                           0x8C77
+#define GL_BACK_SECONDARY_COLOR_NV                         0x8C78
+#define GL_TEXTURE_COORD_NV                                0x8C79
+#define GL_CLIP_DISTANCE_NV                                0x8C7A
+#define GL_VERTEX_ID_NV                                    0x8C7B
+#define GL_PRIMITIVE_ID_NV                                 0x8C7C
+#define GL_GENERIC_ATTRIB_NV                               0x8C7D
+#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV                   0x8C7E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV               0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV   0x8C80
+#define GL_ACTIVE_VARYINGS_NV                              0x8C81
+#define GL_ACTIVE_VARYING_MAX_LENGTH_NV                    0x8C82
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV                  0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV              0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV               0x8C85
+#define GL_TRANSFORM_FEEDBACK_RECORD_NV                    0x8C86
+#define GL_PRIMITIVES_GENERATED_NV                         0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV        0x8C88
+#define GL_RASTERIZER_DISCARD_NV                           0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV   0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV      0x8C8B
+#define GL_INTERLEAVED_ATTRIBS_NV                          0x8C8C
+#define GL_SEPARATE_ATTRIBS_NV                             0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER_NV                    0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV            0x8C8F
+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) ();
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint * attribs, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint * locations, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar * name);
+typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar * name);
+typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint * location);
+GLEE_EXTERN PFNGLBEGINTRANSFORMFEEDBACKNVPROC pglBeginTransformFeedbackNV;
+GLEE_EXTERN PFNGLENDTRANSFORMFEEDBACKNVPROC pglEndTransformFeedbackNV;
+GLEE_EXTERN PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC pglTransformFeedbackAttribsNV;
+GLEE_EXTERN PFNGLBINDBUFFERRANGENVPROC pglBindBufferRangeNV;
+GLEE_EXTERN PFNGLBINDBUFFEROFFSETNVPROC pglBindBufferOffsetNV;
+GLEE_EXTERN PFNGLBINDBUFFERBASENVPROC pglBindBufferBaseNV;
+GLEE_EXTERN PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC pglTransformFeedbackVaryingsNV;
+GLEE_EXTERN PFNGLACTIVEVARYINGNVPROC pglActiveVaryingNV;
+GLEE_EXTERN PFNGLGETVARYINGLOCATIONNVPROC pglGetVaryingLocationNV;
+GLEE_EXTERN PFNGLGETACTIVEVARYINGNVPROC pglGetActiveVaryingNV;
+GLEE_EXTERN PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC pglGetTransformFeedbackVaryingNV;
+#define glBeginTransformFeedbackNV pglBeginTransformFeedbackNV
+#define glEndTransformFeedbackNV pglEndTransformFeedbackNV
+#define glTransformFeedbackAttribsNV pglTransformFeedbackAttribsNV
+#define glBindBufferRangeNV pglBindBufferRangeNV
+#define glBindBufferOffsetNV pglBindBufferOffsetNV
+#define glBindBufferBaseNV pglBindBufferBaseNV
+#define glTransformFeedbackVaryingsNV pglTransformFeedbackVaryingsNV
+#define glActiveVaryingNV pglActiveVaryingNV
+#define glGetVaryingLocationNV pglGetVaryingLocationNV
+#define glGetActiveVaryingNV pglGetActiveVaryingNV
+#define glGetTransformFeedbackVaryingNV pglGetTransformFeedbackVaryingNV
+#endif 
+
+/* GL_NV_geometry_program4 */
+
+#ifndef GL_NV_geometry_program4
+#define GL_NV_geometry_program4 1
+#define __GLEE_GL_NV_geometry_program4 1
+/* Constants */
+#define GL_GEOMETRY_PROGRAM_NV                             0x8C26
+#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV                  0x8C27
+#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV          0x8C28
+typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
+GLEE_EXTERN PFNGLPROGRAMVERTEXLIMITNVPROC pglProgramVertexLimitNV;
+#define glProgramVertexLimitNV pglProgramVertexLimitNV
+#endif 
+
+/* GL_NV_gpu_program4 */
+
+#ifndef GL_NV_gpu_program4
+#define GL_NV_gpu_program4 1
+#define __GLEE_GL_NV_gpu_program4 1
+/* Constants */
+#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV                     0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV                     0x8905
+#define GL_PROGRAM_ATTRIB_COMPONENTS_NV                    0x8906
+#define GL_PROGRAM_RESULT_COMPONENTS_NV                    0x8907
+#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV                0x8908
+#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV                0x8909
+#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV                  0x8DA5
+#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV                  0x8DA6
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint * params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint * params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint * params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint * params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint * params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint * params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint * params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint * params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint * params);
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETERI4INVPROC pglProgramLocalParameterI4iNV;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC pglProgramLocalParameterI4ivNV;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC pglProgramLocalParametersI4ivNV;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETERI4UINVPROC pglProgramLocalParameterI4uiNV;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC pglProgramLocalParameterI4uivNV;
+GLEE_EXTERN PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC pglProgramLocalParametersI4uivNV;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETERI4INVPROC pglProgramEnvParameterI4iNV;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETERI4IVNVPROC pglProgramEnvParameterI4ivNV;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETERSI4IVNVPROC pglProgramEnvParametersI4ivNV;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETERI4UINVPROC pglProgramEnvParameterI4uiNV;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETERI4UIVNVPROC pglProgramEnvParameterI4uivNV;
+GLEE_EXTERN PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC pglProgramEnvParametersI4uivNV;
+GLEE_EXTERN PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC pglGetProgramLocalParameterIivNV;
+GLEE_EXTERN PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC pglGetProgramLocalParameterIuivNV;
+GLEE_EXTERN PFNGLGETPROGRAMENVPARAMETERIIVNVPROC pglGetProgramEnvParameterIivNV;
+GLEE_EXTERN PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC pglGetProgramEnvParameterIuivNV;
+#define glProgramLocalParameterI4iNV pglProgramLocalParameterI4iNV
+#define glProgramLocalParameterI4ivNV pglProgramLocalParameterI4ivNV
+#define glProgramLocalParametersI4ivNV pglProgramLocalParametersI4ivNV
+#define glProgramLocalParameterI4uiNV pglProgramLocalParameterI4uiNV
+#define glProgramLocalParameterI4uivNV pglProgramLocalParameterI4uivNV
+#define glProgramLocalParametersI4uivNV pglProgramLocalParametersI4uivNV
+#define glProgramEnvParameterI4iNV pglProgramEnvParameterI4iNV
+#define glProgramEnvParameterI4ivNV pglProgramEnvParameterI4ivNV
+#define glProgramEnvParametersI4ivNV pglProgramEnvParametersI4ivNV
+#define glProgramEnvParameterI4uiNV pglProgramEnvParameterI4uiNV
+#define glProgramEnvParameterI4uivNV pglProgramEnvParameterI4uivNV
+#define glProgramEnvParametersI4uivNV pglProgramEnvParametersI4uivNV
+#define glGetProgramLocalParameterIivNV pglGetProgramLocalParameterIivNV
+#define glGetProgramLocalParameterIuivNV pglGetProgramLocalParameterIuivNV
+#define glGetProgramEnvParameterIivNV pglGetProgramEnvParameterIivNV
+#define glGetProgramEnvParameterIuivNV pglGetProgramEnvParameterIuivNV
+#endif 
+
+/* GL_NV_framebuffer_multisample_coverage */
+
+#ifndef GL_NV_framebuffer_multisample_coverage
+#define GL_NV_framebuffer_multisample_coverage 1
+#define __GLEE_GL_NV_framebuffer_multisample_coverage 1
+/* Constants */
+#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV                0x8CAB
+#define GL_RENDERBUFFER_COLOR_SAMPLES_NV                   0x8E10
+#define GL_MAX_RENDERBUFFER_COVERAGE_SAMPLES_NV            0x8D57
+#define GL_MAX_RENDERBUFFER_COLOR_SAMPLES_NV               0x8E11
+#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV               0x8E12
+#define GL_MULTISAMPLE_COVERAGE_MODES_NV                   0x8E13
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+GLEE_EXTERN PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC pglRenderbufferStorageMultisampleCoverageNV;
+#define glRenderbufferStorageMultisampleCoverageNV pglRenderbufferStorageMultisampleCoverageNV
+#endif 
+
+/* GL_EXT_framebuffer_multisample */
+
+#ifndef GL_EXT_framebuffer_multisample
+#define GL_EXT_framebuffer_multisample 1
+#define __GLEE_GL_EXT_framebuffer_multisample 1
+/* Constants */
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT          0x8D56
+#define GL_MAX_SAMPLES_EXT                                 0x8D57
+#define GL_RENDERBUFFER_SAMPLES_EXT                        0x8CAB
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLEE_EXTERN PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC pglRenderbufferStorageMultisampleEXT;
+#define glRenderbufferStorageMultisampleEXT pglRenderbufferStorageMultisampleEXT
+#endif 
+
+/* GL_EXT_framebuffer_blit */
+
+#ifndef GL_EXT_framebuffer_blit
+#define GL_EXT_framebuffer_blit 1
+#define __GLEE_GL_EXT_framebuffer_blit 1
+/* Constants */
+#define GL_READ_FRAMEBUFFER_EXT                            0x8CA8
+#define GL_DRAW_FRAMEBUFFER_EXT                            0x8CA9
+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT                    0x8CA6
+#define GL_READ_FRAMEBUFFER_BINDING_EXT                    0x8CAA
+typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+GLEE_EXTERN PFNGLBLITFRAMEBUFFEREXTPROC pglBlitFramebufferEXT;
+#define glBlitFramebufferEXT pglBlitFramebufferEXT
+#endif 
+
+/* GL_EXT_texture_compression_rgtc */
+
+#ifndef GL_EXT_texture_compression_rgtc
+#define GL_EXT_texture_compression_rgtc 1
+#define __GLEE_GL_EXT_texture_compression_rgtc 1
+/* Constants */
+#define GL_COMPRESSED_RED_RGTC1_EXT                        0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT                 0x8DBC
+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT                  0x8DBD
+#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT           0x8DBE
+#endif 
+
+/* GL_EXT_color_matrix */
+
+#ifndef GL_EXT_color_matrix
+#define GL_EXT_color_matrix 1
+#define __GLEE_GL_EXT_color_matrix 1
+/* Constants */
+#endif 
+
+/* GL_SGIX_texture_select */
+
+#ifndef GL_SGIX_texture_select
+#define GL_SGIX_texture_select 1
+#define __GLEE_GL_SGIX_texture_select 1
+/* Constants */
+#endif 
+
+/* GL_INGR_blend_func_separate */
+
+#ifndef GL_INGR_blend_func_separate
+#define GL_INGR_blend_func_separate 1
+#define __GLEE_GL_INGR_blend_func_separate 1
+/* Constants */
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+GLEE_EXTERN PFNGLBLENDFUNCSEPARATEINGRPROC pglBlendFuncSeparateINGR;
+#define glBlendFuncSeparateINGR pglBlendFuncSeparateINGR
+#endif 
+
+/* GL_SGIX_depth_pass_instrument */
+
+#ifndef GL_SGIX_depth_pass_instrument
+#define GL_SGIX_depth_pass_instrument 1
+#define __GLEE_GL_SGIX_depth_pass_instrument 1
+/* Constants */
+#endif 
+
+/* GL_SGIX_igloo_interface */
+
+#ifndef GL_SGIX_igloo_interface
+#define GL_SGIX_igloo_interface 1
+#define __GLEE_GL_SGIX_igloo_interface 1
+/* Constants */
+typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid * params);
+GLEE_EXTERN PFNGLIGLOOINTERFACESGIXPROC pglIglooInterfaceSGIX;
+#define glIglooInterfaceSGIX pglIglooInterfaceSGIX
+#endif 
+
+/* GL_EXT_draw_buffers2 */
+
+#ifndef GL_EXT_draw_buffers2
+#define GL_EXT_draw_buffers2 1
+#define __GLEE_GL_EXT_draw_buffers2 1
+/* Constants */
+typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean * data);
+typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint * data);
+typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
+GLEE_EXTERN PFNGLCOLORMASKINDEXEDEXTPROC pglColorMaskIndexedEXT;
+GLEE_EXTERN PFNGLGETBOOLEANINDEXEDVEXTPROC pglGetBooleanIndexedvEXT;
+GLEE_EXTERN PFNGLGETINTEGERINDEXEDVEXTPROC pglGetIntegerIndexedvEXT;
+GLEE_EXTERN PFNGLENABLEINDEXEDEXTPROC pglEnableIndexedEXT;
+GLEE_EXTERN PFNGLDISABLEINDEXEDEXTPROC pglDisableIndexedEXT;
+GLEE_EXTERN PFNGLISENABLEDINDEXEDEXTPROC pglIsEnabledIndexedEXT;
+#define glColorMaskIndexedEXT pglColorMaskIndexedEXT
+#define glGetBooleanIndexedvEXT pglGetBooleanIndexedvEXT
+#define glGetIntegerIndexedvEXT pglGetIntegerIndexedvEXT
+#define glEnableIndexedEXT pglEnableIndexedEXT
+#define glDisableIndexedEXT pglDisableIndexedEXT
+#define glIsEnabledIndexedEXT pglIsEnabledIndexedEXT
+#endif 
+
+/* GL_NV_parameter_buffer_object */
+
+#ifndef GL_NV_parameter_buffer_object
+#define GL_NV_parameter_buffer_object 1
+#define __GLEE_GL_NV_parameter_buffer_object 1
+/* Constants */
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat * params);
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint * params);
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint * params);
+GLEE_EXTERN PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC pglProgramBufferParametersfvNV;
+GLEE_EXTERN PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC pglProgramBufferParametersIivNV;
+GLEE_EXTERN PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC pglProgramBufferParametersIuivNV;
+#define glProgramBufferParametersfvNV pglProgramBufferParametersfvNV
+#define glProgramBufferParametersIivNV pglProgramBufferParametersIivNV
+#define glProgramBufferParametersIuivNV pglProgramBufferParametersIuivNV
+#endif 
+
+/* GL_EXT_draw_instanced */
+
+#ifndef GL_EXT_draw_instanced
+#define GL_EXT_draw_instanced 1
+#define __GLEE_GL_EXT_draw_instanced 1
+/* Constants */
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount);
+GLEE_EXTERN PFNGLDRAWARRAYSINSTANCEDEXTPROC pglDrawArraysInstancedEXT;
+GLEE_EXTERN PFNGLDRAWELEMENTSINSTANCEDEXTPROC pglDrawElementsInstancedEXT;
+#define glDrawArraysInstancedEXT pglDrawArraysInstancedEXT
+#define glDrawElementsInstancedEXT pglDrawElementsInstancedEXT
+#endif 
+
+/* GL_EXT_fragment_lighting */
+
+#ifndef GL_EXT_fragment_lighting
+#define GL_EXT_fragment_lighting 1
+#define __GLEE_GL_EXT_fragment_lighting 1
+/* Constants */
+#define GL_FRAGMENT_LIGHTING_EXT                           0x8400
+#define GL_FRAGMENT_COLOR_MATERIAL_EXT                     0x8401
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT                0x8402
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT           0x8403
+#define GL_MAX_FRAGMENT_LIGHTS_EXT                         0x8404
+#define GL_MAX_ACTIVE_LIGHTS_EXT                           0x8405
+#define GL_CURRENT_RASTER_NORMAL_EXT                       0x8406
+#define GL_LIGHT_ENV_MODE_EXT                              0x8407
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT           0x8408
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT               0x8409
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT                0x840A
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT   0x840B
+#define GL_FRAGMENT_LIGHT0_EXT                             0x840C
+#define GL_FRAGMENT_LIGHT7_EXT                             0x8413
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint * params);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat * params);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint * params);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat * params);
+typedef GLvoid (APIENTRYP PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint * params);
+typedef GLvoid (APIENTRYP PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat * params);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat * params);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint * params);
+typedef GLvoid (APIENTRYP PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode);
+typedef GLvoid (APIENTRYP PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat * params);
+typedef GLvoid (APIENTRYP PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint * params);
+typedef GLvoid (APIENTRYP PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param);
+GLEE_EXTERN PFNGLFRAGMENTLIGHTMODELIEXTPROC pglFragmentLightModeliEXT;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTMODELFEXTPROC pglFragmentLightModelfEXT;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTMODELIVEXTPROC pglFragmentLightModelivEXT;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTMODELFVEXTPROC pglFragmentLightModelfvEXT;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTIEXTPROC pglFragmentLightiEXT;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTFEXTPROC pglFragmentLightfEXT;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTIVEXTPROC pglFragmentLightivEXT;
+GLEE_EXTERN PFNGLFRAGMENTLIGHTFVEXTPROC pglFragmentLightfvEXT;
+GLEE_EXTERN PFNGLGETFRAGMENTLIGHTIVEXTPROC pglGetFragmentLightivEXT;
+GLEE_EXTERN PFNGLGETFRAGMENTLIGHTFVEXTPROC pglGetFragmentLightfvEXT;
+GLEE_EXTERN PFNGLFRAGMENTMATERIALFEXTPROC pglFragmentMaterialfEXT;
+GLEE_EXTERN PFNGLFRAGMENTMATERIALIEXTPROC pglFragmentMaterialiEXT;
+GLEE_EXTERN PFNGLFRAGMENTMATERIALFVEXTPROC pglFragmentMaterialfvEXT;
+GLEE_EXTERN PFNGLFRAGMENTMATERIALIVEXTPROC pglFragmentMaterialivEXT;
+GLEE_EXTERN PFNGLFRAGMENTCOLORMATERIALEXTPROC pglFragmentColorMaterialEXT;
+GLEE_EXTERN PFNGLGETFRAGMENTMATERIALFVEXTPROC pglGetFragmentMaterialfvEXT;
+GLEE_EXTERN PFNGLGETFRAGMENTMATERIALIVEXTPROC pglGetFragmentMaterialivEXT;
+GLEE_EXTERN PFNGLLIGHTENVIEXTPROC pglLightEnviEXT;
+#define glFragmentLightModeliEXT pglFragmentLightModeliEXT
+#define glFragmentLightModelfEXT pglFragmentLightModelfEXT
+#define glFragmentLightModelivEXT pglFragmentLightModelivEXT
+#define glFragmentLightModelfvEXT pglFragmentLightModelfvEXT
+#define glFragmentLightiEXT pglFragmentLightiEXT
+#define glFragmentLightfEXT pglFragmentLightfEXT
+#define glFragmentLightivEXT pglFragmentLightivEXT
+#define glFragmentLightfvEXT pglFragmentLightfvEXT
+#define glGetFragmentLightivEXT pglGetFragmentLightivEXT
+#define glGetFragmentLightfvEXT pglGetFragmentLightfvEXT
+#define glFragmentMaterialfEXT pglFragmentMaterialfEXT
+#define glFragmentMaterialiEXT pglFragmentMaterialiEXT
+#define glFragmentMaterialfvEXT pglFragmentMaterialfvEXT
+#define glFragmentMaterialivEXT pglFragmentMaterialivEXT
+#define glFragmentColorMaterialEXT pglFragmentColorMaterialEXT
+#define glGetFragmentMaterialfvEXT pglGetFragmentMaterialfvEXT
+#define glGetFragmentMaterialivEXT pglGetFragmentMaterialivEXT
+#define glLightEnviEXT pglLightEnviEXT
+#endif 
+
+/* GL_EXT_packed_depth_stencil */
+
+#ifndef GL_EXT_packed_depth_stencil
+#define GL_EXT_packed_depth_stencil 1
+#define __GLEE_GL_EXT_packed_depth_stencil 1
+/* Constants */
+#define GL_DEPTH_STENCIL_EXT                               0x84F9
+#define GL_UNSIGNED_INT_24_8_EXT                           0x84FA
+#define GL_DEPTH24_STENCIL8_EXT                            0x88F0
+#define GL_TEXTURE_STENCIL_SIZE_EXT                        0x88F1
+#endif 
+
+/* GL_EXT_scene_marker */
+
+#ifndef GL_EXT_scene_marker
+#define GL_EXT_scene_marker 1
+#define __GLEE_GL_EXT_scene_marker 1
+/* Constants */
+typedef GLvoid (APIENTRYP PFNGLBEGINSCENEEXTPROC) ();
+typedef GLvoid (APIENTRYP PFNGLENDSCENEEXTPROC) ();
+GLEE_EXTERN PFNGLBEGINSCENEEXTPROC pglBeginSceneEXT;
+GLEE_EXTERN PFNGLENDSCENEEXTPROC pglEndSceneEXT;
+#define glBeginSceneEXT pglBeginSceneEXT
+#define glEndSceneEXT pglEndSceneEXT
+#endif 
+
+/* GL_EXT_stencil_clear_tag */
+
+#ifndef GL_EXT_stencil_clear_tag
+#define GL_EXT_stencil_clear_tag 1
+#define __GLEE_GL_EXT_stencil_clear_tag 1
+/* Constants */
+#define GL_STENCIL_TAG_BITS_EXT                            0x88F2
+#define GL_STENCIL_CLEAR_TAG_VALUE_EXT                     0x88F3
+#endif 
+
+/* GL_EXT_texture_compression_dxt1 */
+
+#ifndef GL_EXT_texture_compression_dxt1
+#define GL_EXT_texture_compression_dxt1 1
+#define __GLEE_GL_EXT_texture_compression_dxt1 1
+/* Constants */
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT                    0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                   0x83F1
+#endif 
+
+/* GL_EXT_texture_env */
+
+#ifndef GL_EXT_texture_env
+#define GL_EXT_texture_env 1
+#define __GLEE_GL_EXT_texture_env 1
+/* Constants */
+#define GL_TEXTURE_ENV0_EXT                                0
+#define GL_TEXTURE_ENV_MODE_ALPHA_EXT                      0
+#define GL_ENV_COPY_EXT                                    0
+#define GL_ENV_REPLACE_EXT                                 0
+#define GL_ENV_MODULATE_EXT                                0
+#define GL_ENV_ADD_EXT                                     0
+#define GL_ENV_SUBTRACT_EXT                                0
+#define GL_ENV_REVERSE_SUBTRACT_EXT                        0
+#define GL_ENV_BLEND_EXT                                   0
+#define GL_ENV_REVERSE_BLEND_EXT                           0
+#define GL_TEXTURE_ENV_SHIFT_EXT                           0
+#endif 
+
+/* GL_EXT_texture_sRGB */
+
+#ifndef GL_EXT_texture_sRGB
+#define GL_EXT_texture_sRGB 1
+#define __GLEE_GL_EXT_texture_sRGB 1
+/* Constants */
+#define GL_SRGB_EXT                                        0x8C40
+#define GL_SRGB8_EXT                                       0x8C41
+#define GL_SRGB_ALPHA_EXT                                  0x8C42
+#define GL_SRGB8_ALPHA8_EXT                                0x8C43
+#define GL_SLUMINANCE_ALPHA_EXT                            0x8C44
+#define GL_SLUMINANCE8_ALPHA8_EXT                          0x8C45
+#define GL_SLUMINANCE_EXT                                  0x8C46
+#define GL_SLUMINANCE8_EXT                                 0x8C47
+#define GL_COMPRESSED_SRGB_EXT                             0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA_EXT                       0x8C49
+#define GL_COMPRESSED_SLUMINANCE_EXT                       0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT                 0x8C4B
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT                   0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT             0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT             0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT             0x8C4F
+#endif 
+
+/* GL_IBM_static_data */
+
+#ifndef GL_IBM_static_data
+#define GL_IBM_static_data 1
+#define __GLEE_GL_IBM_static_data 1
+/* Constants */
+#define GL_ALL_STATIC_DATA_IBM                             103060
+#define GL_STATIC_VERTEX_ARRAY_IBM                         103061
+#endif 
+
+/* GL_MESAX_texture_stack */
+
+#ifndef GL_MESAX_texture_stack
+#define GL_MESAX_texture_stack 1
+#define __GLEE_GL_MESAX_texture_stack 1
+/* Constants */
+#define GL_TEXTURE_1D_STACK_MESAX                          0x8759
+#define GL_TEXTURE_2D_STACK_MESAX                          0x875A
+#define GL_PROXY_TEXTURE_1D_STACK_MESAX                    0x875B
+#define GL_PROXY_TEXTURE_2D_STACK_MESAX                    0x875C
+#define GL_TEXTURE_1D_STACK_BINDING_MESAX                  0x875D
+#define GL_TEXTURE_2D_STACK_BINDING_MESAX                  0x875E
+#endif 
+
+/* GL_OES_byte_coordinates */
+
+#ifndef GL_OES_byte_coordinates
+#define GL_OES_byte_coordinates 1
+#define __GLEE_GL_OES_byte_coordinates 1
+/* Constants */
+#define GL_BYTE                                            0x1400
+#endif 
+
+/* GL_OES_compressed_paletted_texture */
+
+#ifndef GL_OES_compressed_paletted_texture
+#define GL_OES_compressed_paletted_texture 1
+#define __GLEE_GL_OES_compressed_paletted_texture 1
+/* Constants */
+#define GL_PALETTE4_RGB8_OES                               0x8B90
+#define GL_PALETTE4_RGBA8_OES                              0x8B91
+#define GL_PALETTE4_R5_G6_B5_OES                           0x8B92
+#define GL_PALETTE4_RGBA4_OES                              0x8B93
+#define GL_PALETTE4_RGB5_A1_OES                            0x8B94
+#define GL_PALETTE8_RGB8_OES                               0x8B95
+#define GL_PALETTE8_RGBA8_OES                              0x8B96
+#define GL_PALETTE8_R5_G6_B5_OES                           0x8B97
+#define GL_PALETTE8_RGBA4_OES                              0x8B98
+#define GL_PALETTE8_RGB5_A1_OES                            0x8B99
+#endif 
+
+/* GL_OES_single_precision */
+
+#ifndef GL_OES_single_precision
+#define GL_OES_single_precision 1
+#define __GLEE_GL_OES_single_precision 1
+/* Constants */
+typedef GLvoid (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);
+typedef GLvoid (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+typedef GLvoid (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+typedef GLvoid (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation);
+typedef GLvoid (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation);
+typedef GLvoid (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampd depth);
+GLEE_EXTERN PFNGLDEPTHRANGEFOESPROC pglDepthRangefOES;
+GLEE_EXTERN PFNGLFRUSTUMFOESPROC pglFrustumfOES;
+GLEE_EXTERN PFNGLORTHOFOESPROC pglOrthofOES;
+GLEE_EXTERN PFNGLCLIPPLANEFOESPROC pglClipPlanefOES;
+GLEE_EXTERN PFNGLGETCLIPPLANEFOESPROC pglGetClipPlanefOES;
+GLEE_EXTERN PFNGLCLEARDEPTHFOESPROC pglClearDepthfOES;
+#define glDepthRangefOES pglDepthRangefOES
+#define glFrustumfOES pglFrustumfOES
+#define glOrthofOES pglOrthofOES
+#define glClipPlanefOES pglClipPlanefOES
+#define glGetClipPlanefOES pglGetClipPlanefOES
+#define glClearDepthfOES pglClearDepthfOES
+#endif 
+
+/* GL_SGIX_pixel_texture_bits */
+
+#ifndef GL_SGIX_pixel_texture_bits
+#define GL_SGIX_pixel_texture_bits 1
+#define __GLEE_GL_SGIX_pixel_texture_bits 1
+/* Constants */
+#endif 
+
+/* GL_SGIX_texture_range */
+
+#ifndef GL_SGIX_texture_range
+#define GL_SGIX_texture_range 1
+#define __GLEE_GL_SGIX_texture_range 1
+/* Constants */
+#define GL_RGB_SIGNED_SGIX                                 0x85E0
+#define GL_RGBA_SIGNED_SGIX                                0x85E1
+#define GL_ALPHA_SIGNED_SGIX                               0x85E2
+#define GL_LUMINANCE_SIGNED_SGIX                           0x85E3
+#define GL_INTENSITY_SIGNED_SGIX                           0x85E4
+#define GL_LUMINANCE_ALPHA_SIGNED_SGIX                     0x85E5
+#define GL_RGB16_SIGNED_SGIX                               0x85E6
+#define GL_RGBA16_SIGNED_SGIX                              0x85E7
+#define GL_ALPHA16_SIGNED_SGIX                             0x85E8
+#define GL_LUMINANCE16_SIGNED_SGIX                         0x85E9
+#define GL_INTENSITY16_SIGNED_SGIX                         0x85EA
+#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX                 0x85EB
+#define GL_RGB_EXTENDED_RANGE_SGIX                         0x85EC
+#define GL_RGBA_EXTENDED_RANGE_SGIX                        0x85ED
+#define GL_ALPHA_EXTENDED_RANGE_SGIX                       0x85EE
+#define GL_LUMINANCE_EXTENDED_RANGE_SGIX                   0x85EF
+#define GL_INTENSITY_EXTENDED_RANGE_SGIX                   0x85F0
+#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX             0x85F1
+#define GL_RGB16_EXTENDED_RANGE_SGIX                       0x85F2
+#define GL_RGBA16_EXTENDED_RANGE_SGIX                      0x85F3
+#define GL_ALPHA16_EXTENDED_RANGE_SGIX                     0x85F4
+#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX                 0x85F5
+#define GL_INTENSITY16_EXTENDED_RANGE_SGIX                 0x85F6
+#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX         0x85F7
+#define GL_MIN_LUMINANCE_SGIS                              0x85F8
+#define GL_MAX_LUMINANCE_SGIS                              0x85F9
+#define GL_MIN_INTENSITY_SGIS                              0x85FA
+#define GL_MAX_INTENSITY_SGIS                              0x85FB
+#endif 
+
+/* WGL  */
+
+#ifdef WIN32
+
+/* Extension querying variables */
+
+GLEE_EXTERN GLboolean _GLEE_WGL_ARB_buffer_region;
+GLEE_EXTERN GLboolean _GLEE_WGL_ARB_multisample;
+GLEE_EXTERN GLboolean _GLEE_WGL_ARB_extensions_string;
+GLEE_EXTERN GLboolean _GLEE_WGL_ARB_pixel_format;
+GLEE_EXTERN GLboolean _GLEE_WGL_ARB_make_current_read;
+GLEE_EXTERN GLboolean _GLEE_WGL_ARB_pbuffer;
+GLEE_EXTERN GLboolean _GLEE_WGL_ARB_render_texture;
+GLEE_EXTERN GLboolean _GLEE_WGL_ARB_pixel_format_float;
+GLEE_EXTERN GLboolean _GLEE_WGL_EXT_make_current_read;
+GLEE_EXTERN GLboolean _GLEE_WGL_EXT_pixel_format;
+GLEE_EXTERN GLboolean _GLEE_WGL_EXT_pbuffer;
+GLEE_EXTERN GLboolean _GLEE_WGL_EXT_depth_float;
+GLEE_EXTERN GLboolean _GLEE_WGL_3DFX_multisample;
+GLEE_EXTERN GLboolean _GLEE_WGL_EXT_multisample;
+GLEE_EXTERN GLboolean _GLEE_WGL_I3D_digital_video_control;
+GLEE_EXTERN GLboolean _GLEE_WGL_I3D_gamma;
+GLEE_EXTERN GLboolean _GLEE_WGL_I3D_genlock;
+GLEE_EXTERN GLboolean _GLEE_WGL_I3D_image_buffer;
+GLEE_EXTERN GLboolean _GLEE_WGL_I3D_swap_frame_lock;
+GLEE_EXTERN GLboolean _GLEE_WGL_NV_render_depth_texture;
+GLEE_EXTERN GLboolean _GLEE_WGL_NV_render_texture_rectangle;
+GLEE_EXTERN GLboolean _GLEE_WGL_ATI_pixel_format_float;
+GLEE_EXTERN GLboolean _GLEE_WGL_NV_float_buffer;
+GLEE_EXTERN GLboolean _GLEE_WGL_EXT_display_color_table;
+GLEE_EXTERN GLboolean _GLEE_WGL_EXT_extensions_string;
+GLEE_EXTERN GLboolean _GLEE_WGL_EXT_swap_control;
+GLEE_EXTERN GLboolean _GLEE_WGL_NV_vertex_array_range;
+GLEE_EXTERN GLboolean _GLEE_WGL_OML_sync_control;
+GLEE_EXTERN GLboolean _GLEE_WGL_I3D_swap_frame_usage;
+GLEE_EXTERN GLboolean _GLEE_WGL_3DL_stereo_control;
+
+/* Aliases for extension querying variables */
+
+#define GLEE_WGL_ARB_buffer_region     GLeeEnabled(&_GLEE_WGL_ARB_buffer_region)
+#define GLEE_WGL_ARB_multisample     GLeeEnabled(&_GLEE_WGL_ARB_multisample)
+#define GLEE_WGL_ARB_extensions_string     GLeeEnabled(&_GLEE_WGL_ARB_extensions_string)
+#define GLEE_WGL_ARB_pixel_format     GLeeEnabled(&_GLEE_WGL_ARB_pixel_format)
+#define GLEE_WGL_ARB_make_current_read     GLeeEnabled(&_GLEE_WGL_ARB_make_current_read)
+#define GLEE_WGL_ARB_pbuffer     GLeeEnabled(&_GLEE_WGL_ARB_pbuffer)
+#define GLEE_WGL_ARB_render_texture     GLeeEnabled(&_GLEE_WGL_ARB_render_texture)
+#define GLEE_WGL_ARB_pixel_format_float     GLeeEnabled(&_GLEE_WGL_ARB_pixel_format_float)
+#define GLEE_WGL_EXT_make_current_read     GLeeEnabled(&_GLEE_WGL_EXT_make_current_read)
+#define GLEE_WGL_EXT_pixel_format     GLeeEnabled(&_GLEE_WGL_EXT_pixel_format)
+#define GLEE_WGL_EXT_pbuffer     GLeeEnabled(&_GLEE_WGL_EXT_pbuffer)
+#define GLEE_WGL_EXT_depth_float     GLeeEnabled(&_GLEE_WGL_EXT_depth_float)
+#define GLEE_WGL_3DFX_multisample     GLeeEnabled(&_GLEE_WGL_3DFX_multisample)
+#define GLEE_WGL_EXT_multisample     GLeeEnabled(&_GLEE_WGL_EXT_multisample)
+#define GLEE_WGL_I3D_digital_video_control     GLeeEnabled(&_GLEE_WGL_I3D_digital_video_control)
+#define GLEE_WGL_I3D_gamma     GLeeEnabled(&_GLEE_WGL_I3D_gamma)
+#define GLEE_WGL_I3D_genlock     GLeeEnabled(&_GLEE_WGL_I3D_genlock)
+#define GLEE_WGL_I3D_image_buffer     GLeeEnabled(&_GLEE_WGL_I3D_image_buffer)
+#define GLEE_WGL_I3D_swap_frame_lock     GLeeEnabled(&_GLEE_WGL_I3D_swap_frame_lock)
+#define GLEE_WGL_NV_render_depth_texture     GLeeEnabled(&_GLEE_WGL_NV_render_depth_texture)
+#define GLEE_WGL_NV_render_texture_rectangle     GLeeEnabled(&_GLEE_WGL_NV_render_texture_rectangle)
+#define GLEE_WGL_ATI_pixel_format_float     GLeeEnabled(&_GLEE_WGL_ATI_pixel_format_float)
+#define GLEE_WGL_NV_float_buffer     GLeeEnabled(&_GLEE_WGL_NV_float_buffer)
+#define GLEE_WGL_EXT_display_color_table     GLeeEnabled(&_GLEE_WGL_EXT_display_color_table)
+#define GLEE_WGL_EXT_extensions_string     GLeeEnabled(&_GLEE_WGL_EXT_extensions_string)
+#define GLEE_WGL_EXT_swap_control     GLeeEnabled(&_GLEE_WGL_EXT_swap_control)
+#define GLEE_WGL_NV_vertex_array_range     GLeeEnabled(&_GLEE_WGL_NV_vertex_array_range)
+#define GLEE_WGL_OML_sync_control     GLeeEnabled(&_GLEE_WGL_OML_sync_control)
+#define GLEE_WGL_I3D_swap_frame_usage     GLeeEnabled(&_GLEE_WGL_I3D_swap_frame_usage)
+#define GLEE_WGL_3DL_stereo_control     GLeeEnabled(&_GLEE_WGL_3DL_stereo_control)
+
+/* WGL_ARB_buffer_region */
+
+#ifndef WGL_ARB_buffer_region
+#define WGL_ARB_buffer_region 1
+#define __GLEE_WGL_ARB_buffer_region 1
+/* Constants */
+#define WGL_FRONT_COLOR_BUFFER_BIT_ARB                     0x00000001
+#define WGL_BACK_COLOR_BUFFER_BIT_ARB                      0x00000002
+#define WGL_DEPTH_BUFFER_BIT_ARB                           0x00000004
+#define WGL_STENCIL_BUFFER_BIT_ARB                         0x00000008
+typedef HANDLE (APIENTRYP PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
+typedef VOID (APIENTRYP PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
+typedef BOOL (APIENTRYP PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
+typedef BOOL (APIENTRYP PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
+GLEE_EXTERN PFNWGLCREATEBUFFERREGIONARBPROC pwglCreateBufferRegionARB;
+GLEE_EXTERN PFNWGLDELETEBUFFERREGIONARBPROC pwglDeleteBufferRegionARB;
+GLEE_EXTERN PFNWGLSAVEBUFFERREGIONARBPROC pwglSaveBufferRegionARB;
+GLEE_EXTERN PFNWGLRESTOREBUFFERREGIONARBPROC pwglRestoreBufferRegionARB;
+#define wglCreateBufferRegionARB pwglCreateBufferRegionARB
+#define wglDeleteBufferRegionARB pwglDeleteBufferRegionARB
+#define wglSaveBufferRegionARB pwglSaveBufferRegionARB
+#define wglRestoreBufferRegionARB pwglRestoreBufferRegionARB
+#endif 
+
+/* WGL_ARB_multisample */
+
+#ifndef WGL_ARB_multisample
+#define WGL_ARB_multisample 1
+#define __GLEE_WGL_ARB_multisample 1
+/* Constants */
+#define WGL_SAMPLE_BUFFERS_ARB                             0x2041
+#define WGL_SAMPLES_ARB                                    0x2042
+#endif 
+
+/* WGL_ARB_extensions_string */
+
+#ifndef WGL_ARB_extensions_string
+#define WGL_ARB_extensions_string 1
+#define __GLEE_WGL_ARB_extensions_string 1
+/* Constants */
+typedef const char * (APIENTRYP PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
+GLEE_EXTERN PFNWGLGETEXTENSIONSSTRINGARBPROC pwglGetExtensionsStringARB;
+#define wglGetExtensionsStringARB pwglGetExtensionsStringARB
+#endif 
+
+/* WGL_ARB_pixel_format */
+
+#ifndef WGL_ARB_pixel_format
+#define WGL_ARB_pixel_format 1
+#define __GLEE_WGL_ARB_pixel_format 1
+/* Constants */
+#define WGL_NUMBER_PIXEL_FORMATS_ARB                       0x2000
+#define WGL_DRAW_TO_WINDOW_ARB                             0x2001
+#define WGL_DRAW_TO_BITMAP_ARB                             0x2002
+#define WGL_ACCELERATION_ARB                               0x2003
+#define WGL_NEED_PALETTE_ARB                               0x2004
+#define WGL_NEED_SYSTEM_PALETTE_ARB                        0x2005
+#define WGL_SWAP_LAYER_BUFFERS_ARB                         0x2006
+#define WGL_SWAP_METHOD_ARB                                0x2007
+#define WGL_NUMBER_OVERLAYS_ARB                            0x2008
+#define WGL_NUMBER_UNDERLAYS_ARB                           0x2009
+#define WGL_TRANSPARENT_ARB                                0x200A
+#define WGL_TRANSPARENT_RED_VALUE_ARB                      0x2037
+#define WGL_TRANSPARENT_GREEN_VALUE_ARB                    0x2038
+#define WGL_TRANSPARENT_BLUE_VALUE_ARB                     0x2039
+#define WGL_TRANSPARENT_ALPHA_VALUE_ARB                    0x203A
+#define WGL_TRANSPARENT_INDEX_VALUE_ARB                    0x203B
+#define WGL_SHARE_DEPTH_ARB                                0x200C
+#define WGL_SHARE_STENCIL_ARB                              0x200D
+#define WGL_SHARE_ACCUM_ARB                                0x200E
+#define WGL_SUPPORT_GDI_ARB                                0x200F
+#define WGL_SUPPORT_OPENGL_ARB                             0x2010
+#define WGL_DOUBLE_BUFFER_ARB                              0x2011
+#define WGL_STEREO_ARB                                     0x2012
+#define WGL_PIXEL_TYPE_ARB                                 0x2013
+#define WGL_COLOR_BITS_ARB                                 0x2014
+#define WGL_RED_BITS_ARB                                   0x2015
+#define WGL_RED_SHIFT_ARB                                  0x2016
+#define WGL_GREEN_BITS_ARB                                 0x2017
+#define WGL_GREEN_SHIFT_ARB                                0x2018
+#define WGL_BLUE_BITS_ARB                                  0x2019
+#define WGL_BLUE_SHIFT_ARB                                 0x201A
+#define WGL_ALPHA_BITS_ARB                                 0x201B
+#define WGL_ALPHA_SHIFT_ARB                                0x201C
+#define WGL_ACCUM_BITS_ARB                                 0x201D
+#define WGL_ACCUM_RED_BITS_ARB                             0x201E
+#define WGL_ACCUM_GREEN_BITS_ARB                           0x201F
+#define WGL_ACCUM_BLUE_BITS_ARB                            0x2020
+#define WGL_ACCUM_ALPHA_BITS_ARB                           0x2021
+#define WGL_DEPTH_BITS_ARB                                 0x2022
+#define WGL_STENCIL_BITS_ARB                               0x2023
+#define WGL_AUX_BUFFERS_ARB                                0x2024
+#define WGL_NO_ACCELERATION_ARB                            0x2025
+#define WGL_GENERIC_ACCELERATION_ARB                       0x2026
+#define WGL_FULL_ACCELERATION_ARB                          0x2027
+#define WGL_SWAP_EXCHANGE_ARB                              0x2028
+#define WGL_SWAP_COPY_ARB                                  0x2029
+#define WGL_SWAP_UNDEFINED_ARB                             0x202A
+#define WGL_TYPE_RGBA_ARB                                  0x202B
+#define WGL_TYPE_COLORINDEX_ARB                            0x202C
+typedef BOOL (APIENTRYP PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, int * piValues);
+typedef BOOL (APIENTRYP PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, FLOAT * pfValues);
+typedef BOOL (APIENTRYP PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats);
+GLEE_EXTERN PFNWGLGETPIXELFORMATATTRIBIVARBPROC pwglGetPixelFormatAttribivARB;
+GLEE_EXTERN PFNWGLGETPIXELFORMATATTRIBFVARBPROC pwglGetPixelFormatAttribfvARB;
+GLEE_EXTERN PFNWGLCHOOSEPIXELFORMATARBPROC pwglChoosePixelFormatARB;
+#define wglGetPixelFormatAttribivARB pwglGetPixelFormatAttribivARB
+#define wglGetPixelFormatAttribfvARB pwglGetPixelFormatAttribfvARB
+#define wglChoosePixelFormatARB pwglChoosePixelFormatARB
+#endif 
+
+/* WGL_ARB_make_current_read */
+
+#ifndef WGL_ARB_make_current_read
+#define WGL_ARB_make_current_read 1
+#define __GLEE_WGL_ARB_make_current_read 1
+/* Constants */
+#define ERROR_INVALID_PIXEL_TYPE_ARB                       0x2043
+#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB             0x2054
+typedef BOOL (APIENTRYP PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+typedef HDC (APIENTRYP PFNWGLGETCURRENTREADDCARBPROC) ();
+GLEE_EXTERN PFNWGLMAKECONTEXTCURRENTARBPROC pwglMakeContextCurrentARB;
+GLEE_EXTERN PFNWGLGETCURRENTREADDCARBPROC pwglGetCurrentReadDCARB;
+#define wglMakeContextCurrentARB pwglMakeContextCurrentARB
+#define wglGetCurrentReadDCARB pwglGetCurrentReadDCARB
+#endif 
+
+/* WGL_ARB_pbuffer */
+
+#ifndef WGL_ARB_pbuffer
+#define WGL_ARB_pbuffer 1
+#define __GLEE_WGL_ARB_pbuffer 1
+/* Constants */
+#define WGL_DRAW_TO_PBUFFER_ARB                            0x202D
+#define WGL_MAX_PBUFFER_PIXELS_ARB                         0x202E
+#define WGL_MAX_PBUFFER_WIDTH_ARB                          0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_ARB                         0x2030
+#define WGL_PBUFFER_LARGEST_ARB                            0x2033
+#define WGL_PBUFFER_WIDTH_ARB                              0x2034
+#define WGL_PBUFFER_HEIGHT_ARB                             0x2035
+#define WGL_PBUFFER_LOST_ARB                               0x2036
+typedef HPBUFFERARB (APIENTRYP PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList);
+typedef HDC (APIENTRYP PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
+typedef int (APIENTRYP PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
+typedef BOOL (APIENTRYP PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
+typedef BOOL (APIENTRYP PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int * piValue);
+GLEE_EXTERN PFNWGLCREATEPBUFFERARBPROC pwglCreatePbufferARB;
+GLEE_EXTERN PFNWGLGETPBUFFERDCARBPROC pwglGetPbufferDCARB;
+GLEE_EXTERN PFNWGLRELEASEPBUFFERDCARBPROC pwglReleasePbufferDCARB;
+GLEE_EXTERN PFNWGLDESTROYPBUFFERARBPROC pwglDestroyPbufferARB;
+GLEE_EXTERN PFNWGLQUERYPBUFFERARBPROC pwglQueryPbufferARB;
+#define wglCreatePbufferARB pwglCreatePbufferARB
+#define wglGetPbufferDCARB pwglGetPbufferDCARB
+#define wglReleasePbufferDCARB pwglReleasePbufferDCARB
+#define wglDestroyPbufferARB pwglDestroyPbufferARB
+#define wglQueryPbufferARB pwglQueryPbufferARB
+#endif 
+
+/* WGL_ARB_render_texture */
+
+#ifndef WGL_ARB_render_texture
+#define WGL_ARB_render_texture 1
+#define __GLEE_WGL_ARB_render_texture 1
+/* Constants */
+#define WGL_BIND_TO_TEXTURE_RGB_ARB                        0x2070
+#define WGL_BIND_TO_TEXTURE_RGBA_ARB                       0x2071
+#define WGL_TEXTURE_FORMAT_ARB                             0x2072
+#define WGL_TEXTURE_TARGET_ARB                             0x2073
+#define WGL_MIPMAP_TEXTURE_ARB                             0x2074
+#define WGL_TEXTURE_RGB_ARB                                0x2075
+#define WGL_TEXTURE_RGBA_ARB                               0x2076
+#define WGL_NO_TEXTURE_ARB                                 0x2077
+#define WGL_TEXTURE_CUBE_MAP_ARB                           0x2078
+#define WGL_TEXTURE_1D_ARB                                 0x2079
+#define WGL_TEXTURE_2D_ARB                                 0x207A
+#define WGL_MIPMAP_LEVEL_ARB                               0x207B
+#define WGL_CUBE_MAP_FACE_ARB                              0x207C
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB                0x207D
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB                0x207E
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB                0x207F
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB                0x2080
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB                0x2081
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB                0x2082
+#define WGL_FRONT_LEFT_ARB                                 0x2083
+#define WGL_FRONT_RIGHT_ARB                                0x2084
+#define WGL_BACK_LEFT_ARB                                  0x2085
+#define WGL_BACK_RIGHT_ARB                                 0x2086
+#define WGL_AUX0_ARB                                       0x2087
+#define WGL_AUX1_ARB                                       0x2088
+#define WGL_AUX2_ARB                                       0x2089
+#define WGL_AUX3_ARB                                       0x208A
+#define WGL_AUX4_ARB                                       0x208B
+#define WGL_AUX5_ARB                                       0x208C
+#define WGL_AUX6_ARB                                       0x208D
+#define WGL_AUX7_ARB                                       0x208E
+#define WGL_AUX8_ARB                                       0x208F
+#define WGL_AUX9_ARB                                       0x2090
+typedef BOOL (APIENTRYP PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
+typedef BOOL (APIENTRYP PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
+typedef BOOL (APIENTRYP PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int * piAttribList);
+GLEE_EXTERN PFNWGLBINDTEXIMAGEARBPROC pwglBindTexImageARB;
+GLEE_EXTERN PFNWGLRELEASETEXIMAGEARBPROC pwglReleaseTexImageARB;
+GLEE_EXTERN PFNWGLSETPBUFFERATTRIBARBPROC pwglSetPbufferAttribARB;
+#define wglBindTexImageARB pwglBindTexImageARB
+#define wglReleaseTexImageARB pwglReleaseTexImageARB
+#define wglSetPbufferAttribARB pwglSetPbufferAttribARB
+#endif 
+
+/* WGL_ARB_pixel_format_float */
+
+#ifndef WGL_ARB_pixel_format_float
+#define WGL_ARB_pixel_format_float 1
+#define __GLEE_WGL_ARB_pixel_format_float 1
+/* Constants */
+#define WGL_TYPE_RGBA_FLOAT_ARB                            0x21A0
+#endif 
+
+/* WGL_EXT_make_current_read */
+
+#ifndef WGL_EXT_make_current_read
+#define WGL_EXT_make_current_read 1
+#define __GLEE_WGL_EXT_make_current_read 1
+/* Constants */
+#define ERROR_INVALID_PIXEL_TYPE_EXT                       0x2043
+typedef BOOL (APIENTRYP PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+typedef HDC (APIENTRYP PFNWGLGETCURRENTREADDCEXTPROC) ();
+GLEE_EXTERN PFNWGLMAKECONTEXTCURRENTEXTPROC pwglMakeContextCurrentEXT;
+GLEE_EXTERN PFNWGLGETCURRENTREADDCEXTPROC pwglGetCurrentReadDCEXT;
+#define wglMakeContextCurrentEXT pwglMakeContextCurrentEXT
+#define wglGetCurrentReadDCEXT pwglGetCurrentReadDCEXT
+#endif 
+
+/* WGL_EXT_pixel_format */
+
+#ifndef WGL_EXT_pixel_format
+#define WGL_EXT_pixel_format 1
+#define __GLEE_WGL_EXT_pixel_format 1
+/* Constants */
+#define WGL_NUMBER_PIXEL_FORMATS_EXT                       0x2000
+#define WGL_DRAW_TO_WINDOW_EXT                             0x2001
+#define WGL_DRAW_TO_BITMAP_EXT                             0x2002
+#define WGL_ACCELERATION_EXT                               0x2003
+#define WGL_NEED_PALETTE_EXT                               0x2004
+#define WGL_NEED_SYSTEM_PALETTE_EXT                        0x2005
+#define WGL_SWAP_LAYER_BUFFERS_EXT                         0x2006
+#define WGL_SWAP_METHOD_EXT                                0x2007
+#define WGL_NUMBER_OVERLAYS_EXT                            0x2008
+#define WGL_NUMBER_UNDERLAYS_EXT                           0x2009
+#define WGL_TRANSPARENT_EXT                                0x200A
+#define WGL_TRANSPARENT_VALUE_EXT                          0x200B
+#define WGL_SHARE_DEPTH_EXT                                0x200C
+#define WGL_SHARE_STENCIL_EXT                              0x200D
+#define WGL_SHARE_ACCUM_EXT                                0x200E
+#define WGL_SUPPORT_GDI_EXT                                0x200F
+#define WGL_SUPPORT_OPENGL_EXT                             0x2010
+#define WGL_DOUBLE_BUFFER_EXT                              0x2011
+#define WGL_STEREO_EXT                                     0x2012
+#define WGL_PIXEL_TYPE_EXT                                 0x2013
+#define WGL_COLOR_BITS_EXT                                 0x2014
+#define WGL_RED_BITS_EXT                                   0x2015
+#define WGL_RED_SHIFT_EXT                                  0x2016
+#define WGL_GREEN_BITS_EXT                                 0x2017
+#define WGL_GREEN_SHIFT_EXT                                0x2018
+#define WGL_BLUE_BITS_EXT                                  0x2019
+#define WGL_BLUE_SHIFT_EXT                                 0x201A
+#define WGL_ALPHA_BITS_EXT                                 0x201B
+#define WGL_ALPHA_SHIFT_EXT                                0x201C
+#define WGL_ACCUM_BITS_EXT                                 0x201D
+#define WGL_ACCUM_RED_BITS_EXT                             0x201E
+#define WGL_ACCUM_GREEN_BITS_EXT                           0x201F
+#define WGL_ACCUM_BLUE_BITS_EXT                            0x2020
+#define WGL_ACCUM_ALPHA_BITS_EXT                           0x2021
+#define WGL_DEPTH_BITS_EXT                                 0x2022
+#define WGL_STENCIL_BITS_EXT                               0x2023
+#define WGL_AUX_BUFFERS_EXT                                0x2024
+#define WGL_NO_ACCELERATION_EXT                            0x2025
+#define WGL_GENERIC_ACCELERATION_EXT                       0x2026
+#define WGL_FULL_ACCELERATION_EXT                          0x2027
+#define WGL_SWAP_EXCHANGE_EXT                              0x2028
+#define WGL_SWAP_COPY_EXT                                  0x2029
+#define WGL_SWAP_UNDEFINED_EXT                             0x202A
+#define WGL_TYPE_RGBA_EXT                                  0x202B
+#define WGL_TYPE_COLORINDEX_EXT                            0x202C
+typedef BOOL (APIENTRYP PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, int * piValues);
+typedef BOOL (APIENTRYP PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, FLOAT * pfValues);
+typedef BOOL (APIENTRYP PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats);
+GLEE_EXTERN PFNWGLGETPIXELFORMATATTRIBIVEXTPROC pwglGetPixelFormatAttribivEXT;
+GLEE_EXTERN PFNWGLGETPIXELFORMATATTRIBFVEXTPROC pwglGetPixelFormatAttribfvEXT;
+GLEE_EXTERN PFNWGLCHOOSEPIXELFORMATEXTPROC pwglChoosePixelFormatEXT;
+#define wglGetPixelFormatAttribivEXT pwglGetPixelFormatAttribivEXT
+#define wglGetPixelFormatAttribfvEXT pwglGetPixelFormatAttribfvEXT
+#define wglChoosePixelFormatEXT pwglChoosePixelFormatEXT
+#endif 
+
+/* WGL_EXT_pbuffer */
+
+#ifndef WGL_EXT_pbuffer
+#define WGL_EXT_pbuffer 1
+#define __GLEE_WGL_EXT_pbuffer 1
+/* Constants */
+#define WGL_DRAW_TO_PBUFFER_EXT                            0x202D
+#define WGL_MAX_PBUFFER_PIXELS_EXT                         0x202E
+#define WGL_MAX_PBUFFER_WIDTH_EXT                          0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_EXT                         0x2030
+#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT                      0x2031
+#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT                     0x2032
+#define WGL_PBUFFER_LARGEST_EXT                            0x2033
+#define WGL_PBUFFER_WIDTH_EXT                              0x2034
+#define WGL_PBUFFER_HEIGHT_EXT                             0x2035
+typedef HPBUFFEREXT (APIENTRYP PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList);
+typedef HDC (APIENTRYP PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
+typedef int (APIENTRYP PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
+typedef BOOL (APIENTRYP PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
+typedef BOOL (APIENTRYP PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int * piValue);
+GLEE_EXTERN PFNWGLCREATEPBUFFEREXTPROC pwglCreatePbufferEXT;
+GLEE_EXTERN PFNWGLGETPBUFFERDCEXTPROC pwglGetPbufferDCEXT;
+GLEE_EXTERN PFNWGLRELEASEPBUFFERDCEXTPROC pwglReleasePbufferDCEXT;
+GLEE_EXTERN PFNWGLDESTROYPBUFFEREXTPROC pwglDestroyPbufferEXT;
+GLEE_EXTERN PFNWGLQUERYPBUFFEREXTPROC pwglQueryPbufferEXT;
+#define wglCreatePbufferEXT pwglCreatePbufferEXT
+#define wglGetPbufferDCEXT pwglGetPbufferDCEXT
+#define wglReleasePbufferDCEXT pwglReleasePbufferDCEXT
+#define wglDestroyPbufferEXT pwglDestroyPbufferEXT
+#define wglQueryPbufferEXT pwglQueryPbufferEXT
+#endif 
+
+/* WGL_EXT_depth_float */
+
+#ifndef WGL_EXT_depth_float
+#define WGL_EXT_depth_float 1
+#define __GLEE_WGL_EXT_depth_float 1
+/* Constants */
+#define WGL_DEPTH_FLOAT_EXT                                0x2040
+#endif 
+
+/* WGL_3DFX_multisample */
+
+#ifndef WGL_3DFX_multisample
+#define WGL_3DFX_multisample 1
+#define __GLEE_WGL_3DFX_multisample 1
+/* Constants */
+#define WGL_SAMPLE_BUFFERS_3DFX                            0x2060
+#define WGL_SAMPLES_3DFX                                   0x2061
+#endif 
+
+/* WGL_EXT_multisample */
+
+#ifndef WGL_EXT_multisample
+#define WGL_EXT_multisample 1
+#define __GLEE_WGL_EXT_multisample 1
+/* Constants */
+#define WGL_SAMPLE_BUFFERS_EXT                             0x2041
+#define WGL_SAMPLES_EXT                                    0x2042
+#endif 
+
+/* WGL_I3D_digital_video_control */
+
+#ifndef WGL_I3D_digital_video_control
+#define WGL_I3D_digital_video_control 1
+#define __GLEE_WGL_I3D_digital_video_control 1
+/* Constants */
+#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D     0x2050
+#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D           0x2051
+#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D              0x2052
+#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D              0x2053
+typedef BOOL (APIENTRYP PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int * piValue);
+typedef BOOL (APIENTRYP PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int * piValue);
+GLEE_EXTERN PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC pwglGetDigitalVideoParametersI3D;
+GLEE_EXTERN PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC pwglSetDigitalVideoParametersI3D;
+#define wglGetDigitalVideoParametersI3D pwglGetDigitalVideoParametersI3D
+#define wglSetDigitalVideoParametersI3D pwglSetDigitalVideoParametersI3D
+#endif 
+
+/* WGL_I3D_gamma */
+
+#ifndef WGL_I3D_gamma
+#define WGL_I3D_gamma 1
+#define __GLEE_WGL_I3D_gamma 1
+/* Constants */
+#define WGL_GAMMA_TABLE_SIZE_I3D                           0x204E
+#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D                      0x204F
+typedef BOOL (APIENTRYP PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int * piValue);
+typedef BOOL (APIENTRYP PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int * piValue);
+typedef BOOL (APIENTRYP PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT * puRed, USHORT * puGreen, USHORT * puBlue);
+typedef BOOL (APIENTRYP PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT * puRed, const USHORT * puGreen, const USHORT * puBlue);
+GLEE_EXTERN PFNWGLGETGAMMATABLEPARAMETERSI3DPROC pwglGetGammaTableParametersI3D;
+GLEE_EXTERN PFNWGLSETGAMMATABLEPARAMETERSI3DPROC pwglSetGammaTableParametersI3D;
+GLEE_EXTERN PFNWGLGETGAMMATABLEI3DPROC pwglGetGammaTableI3D;
+GLEE_EXTERN PFNWGLSETGAMMATABLEI3DPROC pwglSetGammaTableI3D;
+#define wglGetGammaTableParametersI3D pwglGetGammaTableParametersI3D
+#define wglSetGammaTableParametersI3D pwglSetGammaTableParametersI3D
+#define wglGetGammaTableI3D pwglGetGammaTableI3D
+#define wglSetGammaTableI3D pwglSetGammaTableI3D
+#endif 
+
+/* WGL_I3D_genlock */
+
+#ifndef WGL_I3D_genlock
+#define WGL_I3D_genlock 1
+#define __GLEE_WGL_I3D_genlock 1
+/* Constants */
+#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D                   0x2044
+#define WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D                0x2045
+#define WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D               0x2046
+#define WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D                 0x2047
+#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D                0x2048
+#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D               0x2049
+#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D                0x204A
+#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D                 0x204B
+#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D                   0x204C
+typedef BOOL (APIENTRYP PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
+typedef BOOL (APIENTRYP PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
+typedef BOOL (APIENTRYP PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL * pFlag);
+typedef BOOL (APIENTRYP PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
+typedef BOOL (APIENTRYP PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT * uSource);
+typedef BOOL (APIENTRYP PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
+typedef BOOL (APIENTRYP PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT * uEdge);
+typedef BOOL (APIENTRYP PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
+typedef BOOL (APIENTRYP PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT * uRate);
+typedef BOOL (APIENTRYP PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
+typedef BOOL (APIENTRYP PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT * uDelay);
+typedef BOOL (APIENTRYP PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT * uMaxLineDelay, UINT * uMaxPixelDelay);
+GLEE_EXTERN PFNWGLENABLEGENLOCKI3DPROC pwglEnableGenlockI3D;
+GLEE_EXTERN PFNWGLDISABLEGENLOCKI3DPROC pwglDisableGenlockI3D;
+GLEE_EXTERN PFNWGLISENABLEDGENLOCKI3DPROC pwglIsEnabledGenlockI3D;
+GLEE_EXTERN PFNWGLGENLOCKSOURCEI3DPROC pwglGenlockSourceI3D;
+GLEE_EXTERN PFNWGLGETGENLOCKSOURCEI3DPROC pwglGetGenlockSourceI3D;
+GLEE_EXTERN PFNWGLGENLOCKSOURCEEDGEI3DPROC pwglGenlockSourceEdgeI3D;
+GLEE_EXTERN PFNWGLGETGENLOCKSOURCEEDGEI3DPROC pwglGetGenlockSourceEdgeI3D;
+GLEE_EXTERN PFNWGLGENLOCKSAMPLERATEI3DPROC pwglGenlockSampleRateI3D;
+GLEE_EXTERN PFNWGLGETGENLOCKSAMPLERATEI3DPROC pwglGetGenlockSampleRateI3D;
+GLEE_EXTERN PFNWGLGENLOCKSOURCEDELAYI3DPROC pwglGenlockSourceDelayI3D;
+GLEE_EXTERN PFNWGLGETGENLOCKSOURCEDELAYI3DPROC pwglGetGenlockSourceDelayI3D;
+GLEE_EXTERN PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC pwglQueryGenlockMaxSourceDelayI3D;
+#define wglEnableGenlockI3D pwglEnableGenlockI3D
+#define wglDisableGenlockI3D pwglDisableGenlockI3D
+#define wglIsEnabledGenlockI3D pwglIsEnabledGenlockI3D
+#define wglGenlockSourceI3D pwglGenlockSourceI3D
+#define wglGetGenlockSourceI3D pwglGetGenlockSourceI3D
+#define wglGenlockSourceEdgeI3D pwglGenlockSourceEdgeI3D
+#define wglGetGenlockSourceEdgeI3D pwglGetGenlockSourceEdgeI3D
+#define wglGenlockSampleRateI3D pwglGenlockSampleRateI3D
+#define wglGetGenlockSampleRateI3D pwglGetGenlockSampleRateI3D
+#define wglGenlockSourceDelayI3D pwglGenlockSourceDelayI3D
+#define wglGetGenlockSourceDelayI3D pwglGetGenlockSourceDelayI3D
+#define wglQueryGenlockMaxSourceDelayI3D pwglQueryGenlockMaxSourceDelayI3D
+#endif 
+
+/* WGL_I3D_image_buffer */
+
+#ifndef WGL_I3D_image_buffer
+#define WGL_I3D_image_buffer 1
+#define __GLEE_WGL_I3D_image_buffer 1
+/* Constants */
+#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D                    0x00000001
+#define WGL_IMAGE_BUFFER_LOCK_I3D                          0x00000002
+typedef LPVOID (APIENTRYP PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
+typedef BOOL (APIENTRYP PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
+typedef BOOL (APIENTRYP PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE * pEvent, const LPVOID * pAddress, const DWORD * pSize, UINT count);
+typedef BOOL (APIENTRYP PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID * pAddress, UINT count);
+GLEE_EXTERN PFNWGLCREATEIMAGEBUFFERI3DPROC pwglCreateImageBufferI3D;
+GLEE_EXTERN PFNWGLDESTROYIMAGEBUFFERI3DPROC pwglDestroyImageBufferI3D;
+GLEE_EXTERN PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC pwglAssociateImageBufferEventsI3D;
+GLEE_EXTERN PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC pwglReleaseImageBufferEventsI3D;
+#define wglCreateImageBufferI3D pwglCreateImageBufferI3D
+#define wglDestroyImageBufferI3D pwglDestroyImageBufferI3D
+#define wglAssociateImageBufferEventsI3D pwglAssociateImageBufferEventsI3D
+#define wglReleaseImageBufferEventsI3D pwglReleaseImageBufferEventsI3D
+#endif 
+
+/* WGL_I3D_swap_frame_lock */
+
+#ifndef WGL_I3D_swap_frame_lock
+#define WGL_I3D_swap_frame_lock 1
+#define __GLEE_WGL_I3D_swap_frame_lock 1
+/* Constants */
+typedef BOOL (APIENTRYP PFNWGLENABLEFRAMELOCKI3DPROC) ();
+typedef BOOL (APIENTRYP PFNWGLDISABLEFRAMELOCKI3DPROC) ();
+typedef BOOL (APIENTRYP PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL * pFlag);
+typedef BOOL (APIENTRYP PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL * pFlag);
+GLEE_EXTERN PFNWGLENABLEFRAMELOCKI3DPROC pwglEnableFrameLockI3D;
+GLEE_EXTERN PFNWGLDISABLEFRAMELOCKI3DPROC pwglDisableFrameLockI3D;
+GLEE_EXTERN PFNWGLISENABLEDFRAMELOCKI3DPROC pwglIsEnabledFrameLockI3D;
+GLEE_EXTERN PFNWGLQUERYFRAMELOCKMASTERI3DPROC pwglQueryFrameLockMasterI3D;
+#define wglEnableFrameLockI3D pwglEnableFrameLockI3D
+#define wglDisableFrameLockI3D pwglDisableFrameLockI3D
+#define wglIsEnabledFrameLockI3D pwglIsEnabledFrameLockI3D
+#define wglQueryFrameLockMasterI3D pwglQueryFrameLockMasterI3D
+#endif 
+
+/* WGL_NV_render_depth_texture */
+
+#ifndef WGL_NV_render_depth_texture
+#define WGL_NV_render_depth_texture 1
+#define __GLEE_WGL_NV_render_depth_texture 1
+/* Constants */
+#define WGL_BIND_TO_TEXTURE_DEPTH_NV                       0x20A3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV             0x20A4
+#define WGL_DEPTH_TEXTURE_FORMAT_NV                        0x20A5
+#define WGL_TEXTURE_DEPTH_COMPONENT_NV                     0x20A6
+#define WGL_DEPTH_COMPONENT_NV                             0x20A7
+#endif 
+
+/* WGL_NV_render_texture_rectangle */
+
+#ifndef WGL_NV_render_texture_rectangle
+#define WGL_NV_render_texture_rectangle 1
+#define __GLEE_WGL_NV_render_texture_rectangle 1
+/* Constants */
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV               0x20A0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV              0x20A1
+#define WGL_TEXTURE_RECTANGLE_NV                           0x20A2
+#endif 
+
+/* WGL_ATI_pixel_format_float */
+
+#ifndef WGL_ATI_pixel_format_float
+#define WGL_ATI_pixel_format_float 1
+#define __GLEE_WGL_ATI_pixel_format_float 1
+/* Constants */
+#define WGL_TYPE_RGBA_FLOAT_ATI                            0x21A0
+#endif 
+
+/* WGL_NV_float_buffer */
+
+#ifndef WGL_NV_float_buffer
+#define WGL_NV_float_buffer 1
+#define __GLEE_WGL_NV_float_buffer 1
+/* Constants */
+#define WGL_FLOAT_COMPONENTS_NV                            0x20B0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV           0x20B1
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV          0x20B2
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV         0x20B3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV        0x20B4
+#define WGL_TEXTURE_FLOAT_R_NV                             0x20B5
+#define WGL_TEXTURE_FLOAT_RG_NV                            0x20B6
+#define WGL_TEXTURE_FLOAT_RGB_NV                           0x20B7
+#define WGL_TEXTURE_FLOAT_RGBA_NV                          0x20B8
+#endif 
+
+/* WGL_EXT_display_color_table */
+
+#ifndef WGL_EXT_display_color_table
+#define WGL_EXT_display_color_table 1
+#define __GLEE_WGL_EXT_display_color_table 1
+/* Constants */
+typedef GLboolean (APIENTRYP PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef GLboolean (APIENTRYP PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort * table, GLuint length);
+typedef GLboolean (APIENTRYP PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef VOID (APIENTRYP PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+GLEE_EXTERN PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC pwglCreateDisplayColorTableEXT;
+GLEE_EXTERN PFNWGLLOADDISPLAYCOLORTABLEEXTPROC pwglLoadDisplayColorTableEXT;
+GLEE_EXTERN PFNWGLBINDDISPLAYCOLORTABLEEXTPROC pwglBindDisplayColorTableEXT;
+GLEE_EXTERN PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC pwglDestroyDisplayColorTableEXT;
+#define wglCreateDisplayColorTableEXT pwglCreateDisplayColorTableEXT
+#define wglLoadDisplayColorTableEXT pwglLoadDisplayColorTableEXT
+#define wglBindDisplayColorTableEXT pwglBindDisplayColorTableEXT
+#define wglDestroyDisplayColorTableEXT pwglDestroyDisplayColorTableEXT
+#endif 
+
+/* WGL_EXT_extensions_string */
+
+#ifndef WGL_EXT_extensions_string
+#define WGL_EXT_extensions_string 1
+#define __GLEE_WGL_EXT_extensions_string 1
+/* Constants */
+typedef const char * (APIENTRYP PFNWGLGETEXTENSIONSSTRINGEXTPROC) ();
+GLEE_EXTERN PFNWGLGETEXTENSIONSSTRINGEXTPROC pwglGetExtensionsStringEXT;
+#define wglGetExtensionsStringEXT pwglGetExtensionsStringEXT
+#endif 
+
+/* WGL_EXT_swap_control */
+
+#ifndef WGL_EXT_swap_control
+#define WGL_EXT_swap_control 1
+#define __GLEE_WGL_EXT_swap_control 1
+/* Constants */
+typedef BOOL (APIENTRYP PFNWGLSWAPINTERVALEXTPROC) (int interval);
+typedef int (APIENTRYP PFNWGLGETSWAPINTERVALEXTPROC) ();
+GLEE_EXTERN PFNWGLSWAPINTERVALEXTPROC pwglSwapIntervalEXT;
+GLEE_EXTERN PFNWGLGETSWAPINTERVALEXTPROC pwglGetSwapIntervalEXT;
+#define wglSwapIntervalEXT pwglSwapIntervalEXT
+#define wglGetSwapIntervalEXT pwglGetSwapIntervalEXT
+#endif 
+
+/* WGL_NV_vertex_array_range */
+
+#ifndef WGL_NV_vertex_array_range
+#define WGL_NV_vertex_array_range 1
+#define __GLEE_WGL_NV_vertex_array_range 1
+/* Constants */
+typedef void* (APIENTRYP PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+typedef void (APIENTRYP PFNWGLFREEMEMORYNVPROC) (void * pointer);
+GLEE_EXTERN PFNWGLALLOCATEMEMORYNVPROC pwglAllocateMemoryNV;
+GLEE_EXTERN PFNWGLFREEMEMORYNVPROC pwglFreeMemoryNV;
+#define wglAllocateMemoryNV pwglAllocateMemoryNV
+#define wglFreeMemoryNV pwglFreeMemoryNV
+#endif 
+
+/* WGL_OML_sync_control */
+
+#ifndef WGL_OML_sync_control
+#define WGL_OML_sync_control 1
+#define __GLEE_WGL_OML_sync_control 1
+/* Constants */
+typedef BOOL (APIENTRYP PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 * ust, INT64 * msc, INT64 * sbc);
+typedef BOOL (APIENTRYP PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 * numerator, INT32 * denominator);
+typedef INT64 (APIENTRYP PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
+typedef INT64 (APIENTRYP PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
+typedef BOOL (APIENTRYP PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 * ust, INT64 * msc, INT64 * sbc);
+typedef BOOL (APIENTRYP PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 * ust, INT64 * msc, INT64 * sbc);
+GLEE_EXTERN PFNWGLGETSYNCVALUESOMLPROC pwglGetSyncValuesOML;
+GLEE_EXTERN PFNWGLGETMSCRATEOMLPROC pwglGetMscRateOML;
+GLEE_EXTERN PFNWGLSWAPBUFFERSMSCOMLPROC pwglSwapBuffersMscOML;
+GLEE_EXTERN PFNWGLSWAPLAYERBUFFERSMSCOMLPROC pwglSwapLayerBuffersMscOML;
+GLEE_EXTERN PFNWGLWAITFORMSCOMLPROC pwglWaitForMscOML;
+GLEE_EXTERN PFNWGLWAITFORSBCOMLPROC pwglWaitForSbcOML;
+#define wglGetSyncValuesOML pwglGetSyncValuesOML
+#define wglGetMscRateOML pwglGetMscRateOML
+#define wglSwapBuffersMscOML pwglSwapBuffersMscOML
+#define wglSwapLayerBuffersMscOML pwglSwapLayerBuffersMscOML
+#define wglWaitForMscOML pwglWaitForMscOML
+#define wglWaitForSbcOML pwglWaitForSbcOML
+#endif 
+
+/* WGL_I3D_swap_frame_usage */
+
+#ifndef WGL_I3D_swap_frame_usage
+#define WGL_I3D_swap_frame_usage 1
+#define __GLEE_WGL_I3D_swap_frame_usage 1
+/* Constants */
+typedef BOOL (APIENTRYP PFNWGLGETFRAMEUSAGEI3DPROC) (float * pUsage);
+typedef BOOL (APIENTRYP PFNWGLBEGINFRAMETRACKINGI3DPROC) ();
+typedef BOOL (APIENTRYP PFNWGLENDFRAMETRACKINGI3DPROC) ();
+typedef BOOL (APIENTRYP PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD * pFrameCount, DWORD * pMissedFrames, float * pLastMissedUsage);
+GLEE_EXTERN PFNWGLGETFRAMEUSAGEI3DPROC pwglGetFrameUsageI3D;
+GLEE_EXTERN PFNWGLBEGINFRAMETRACKINGI3DPROC pwglBeginFrameTrackingI3D;
+GLEE_EXTERN PFNWGLENDFRAMETRACKINGI3DPROC pwglEndFrameTrackingI3D;
+GLEE_EXTERN PFNWGLQUERYFRAMETRACKINGI3DPROC pwglQueryFrameTrackingI3D;
+#define wglGetFrameUsageI3D pwglGetFrameUsageI3D
+#define wglBeginFrameTrackingI3D pwglBeginFrameTrackingI3D
+#define wglEndFrameTrackingI3D pwglEndFrameTrackingI3D
+#define wglQueryFrameTrackingI3D pwglQueryFrameTrackingI3D
+#endif 
+
+/* WGL_3DL_stereo_control */
+
+#ifndef WGL_3DL_stereo_control
+#define WGL_3DL_stereo_control 1
+#define __GLEE_WGL_3DL_stereo_control 1
+/* Constants */
+#define WGL_STEREO_EMITTER_ENABLE_3DL                      0x2055
+#define WGL_STEREO_EMITTER_DISABLE_3DL                     0x2056
+#define WGL_STEREO_POLARITY_NORMAL_3DL                     0x2057
+#define WGL_STEREO_POLARITY_INVERT_3DL                     0x2058
+typedef BOOL (APIENTRYP PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState);
+GLEE_EXTERN PFNWGLSETSTEREOEMITTERSTATE3DLPROC pwglSetStereoEmitterState3DL;
+#define wglSetStereoEmitterState3DL pwglSetStereoEmitterState3DL
+#endif 
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else /* GLX */
+
+/* Extension querying variables */
+
+GLEE_EXTERN GLboolean _GLEE_GLX_VERSION_1_3;
+GLEE_EXTERN GLboolean _GLEE_GLX_VERSION_1_4;
+GLEE_EXTERN GLboolean _GLEE_GLX_ARB_multisample;
+GLEE_EXTERN GLboolean _GLEE_GLX_ARB_fbconfig_float;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIS_multisample;
+GLEE_EXTERN GLboolean _GLEE_GLX_EXT_visual_info;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGI_swap_control;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGI_video_sync;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGI_make_current_read;
+GLEE_EXTERN GLboolean _GLEE_GLX_EXT_visual_rating;
+GLEE_EXTERN GLboolean _GLEE_GLX_EXT_import_context;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_fbconfig;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_pbuffer;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGI_cushion;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_video_resize;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_swap_group;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_swap_barrier;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIS_blended_overlay;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIS_shared_multisample;
+GLEE_EXTERN GLboolean _GLEE_GLX_SUN_get_transparent_index;
+GLEE_EXTERN GLboolean _GLEE_GLX_3DFX_multisample;
+GLEE_EXTERN GLboolean _GLEE_GLX_MESA_copy_sub_buffer;
+GLEE_EXTERN GLboolean _GLEE_GLX_MESA_pixmap_colormap;
+GLEE_EXTERN GLboolean _GLEE_GLX_MESA_release_buffers;
+GLEE_EXTERN GLboolean _GLEE_GLX_MESA_set_3dfx_mode;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_visual_select_group;
+GLEE_EXTERN GLboolean _GLEE_GLX_OML_swap_method;
+GLEE_EXTERN GLboolean _GLEE_GLX_OML_sync_control;
+GLEE_EXTERN GLboolean _GLEE_GLX_NV_float_buffer;
+GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_hyperpipe;
+GLEE_EXTERN GLboolean _GLEE_GLX_MESA_agp_offset;
+GLEE_EXTERN GLboolean _GLEE_GLX_EXT_scene_marker;
+
+/* Aliases for extension querying variables */
+
+#define GLEE_GLX_VERSION_1_3     GLeeEnabled(&_GLEE_GLX_VERSION_1_3)
+#define GLEE_GLX_VERSION_1_4     GLeeEnabled(&_GLEE_GLX_VERSION_1_4)
+#define GLEE_GLX_ARB_multisample     GLeeEnabled(&_GLEE_GLX_ARB_multisample)
+#define GLEE_GLX_ARB_fbconfig_float     GLeeEnabled(&_GLEE_GLX_ARB_fbconfig_float)
+#define GLEE_GLX_SGIS_multisample     GLeeEnabled(&_GLEE_GLX_SGIS_multisample)
+#define GLEE_GLX_EXT_visual_info     GLeeEnabled(&_GLEE_GLX_EXT_visual_info)
+#define GLEE_GLX_SGI_swap_control     GLeeEnabled(&_GLEE_GLX_SGI_swap_control)
+#define GLEE_GLX_SGI_video_sync     GLeeEnabled(&_GLEE_GLX_SGI_video_sync)
+#define GLEE_GLX_SGI_make_current_read     GLeeEnabled(&_GLEE_GLX_SGI_make_current_read)
+#define GLEE_GLX_EXT_visual_rating     GLeeEnabled(&_GLEE_GLX_EXT_visual_rating)
+#define GLEE_GLX_EXT_import_context     GLeeEnabled(&_GLEE_GLX_EXT_import_context)
+#define GLEE_GLX_SGIX_fbconfig     GLeeEnabled(&_GLEE_GLX_SGIX_fbconfig)
+#define GLEE_GLX_SGIX_pbuffer     GLeeEnabled(&_GLEE_GLX_SGIX_pbuffer)
+#define GLEE_GLX_SGI_cushion     GLeeEnabled(&_GLEE_GLX_SGI_cushion)
+#define GLEE_GLX_SGIX_video_resize     GLeeEnabled(&_GLEE_GLX_SGIX_video_resize)
+#define GLEE_GLX_SGIX_swap_group     GLeeEnabled(&_GLEE_GLX_SGIX_swap_group)
+#define GLEE_GLX_SGIX_swap_barrier     GLeeEnabled(&_GLEE_GLX_SGIX_swap_barrier)
+#define GLEE_GLX_SGIS_blended_overlay     GLeeEnabled(&_GLEE_GLX_SGIS_blended_overlay)
+#define GLEE_GLX_SGIS_shared_multisample     GLeeEnabled(&_GLEE_GLX_SGIS_shared_multisample)
+#define GLEE_GLX_SUN_get_transparent_index     GLeeEnabled(&_GLEE_GLX_SUN_get_transparent_index)
+#define GLEE_GLX_3DFX_multisample     GLeeEnabled(&_GLEE_GLX_3DFX_multisample)
+#define GLEE_GLX_MESA_copy_sub_buffer     GLeeEnabled(&_GLEE_GLX_MESA_copy_sub_buffer)
+#define GLEE_GLX_MESA_pixmap_colormap     GLeeEnabled(&_GLEE_GLX_MESA_pixmap_colormap)
+#define GLEE_GLX_MESA_release_buffers     GLeeEnabled(&_GLEE_GLX_MESA_release_buffers)
+#define GLEE_GLX_MESA_set_3dfx_mode     GLeeEnabled(&_GLEE_GLX_MESA_set_3dfx_mode)
+#define GLEE_GLX_SGIX_visual_select_group     GLeeEnabled(&_GLEE_GLX_SGIX_visual_select_group)
+#define GLEE_GLX_OML_swap_method     GLeeEnabled(&_GLEE_GLX_OML_swap_method)
+#define GLEE_GLX_OML_sync_control     GLeeEnabled(&_GLEE_GLX_OML_sync_control)
+#define GLEE_GLX_NV_float_buffer     GLeeEnabled(&_GLEE_GLX_NV_float_buffer)
+#define GLEE_GLX_SGIX_hyperpipe     GLeeEnabled(&_GLEE_GLX_SGIX_hyperpipe)
+#define GLEE_GLX_MESA_agp_offset     GLeeEnabled(&_GLEE_GLX_MESA_agp_offset)
+#define GLEE_GLX_EXT_scene_marker     GLeeEnabled(&_GLEE_GLX_EXT_scene_marker)
+
+/* GLX_VERSION_1_3 */
+
+#ifndef GLX_VERSION_1_3
+#define GLX_VERSION_1_3 1
+#define __GLEE_GLX_VERSION_1_3 1
+/* Constants */
+#define GLX_WINDOW_BIT                                     0x00000001
+#define GLX_PIXMAP_BIT                                     0x00000002
+#define GLX_PBUFFER_BIT                                    0x00000004
+#define GLX_RGBA_BIT                                       0x00000001
+#define GLX_COLOR_INDEX_BIT                                0x00000002
+#define GLX_PBUFFER_CLOBBER_MASK                           0x08000000
+#define GLX_FRONT_LEFT_BUFFER_BIT                          0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT                         0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT                           0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT                          0x00000008
+#define GLX_AUX_BUFFERS_BIT                                0x00000010
+#define GLX_DEPTH_BUFFER_BIT                               0x00000020
+#define GLX_STENCIL_BUFFER_BIT                             0x00000040
+#define GLX_ACCUM_BUFFER_BIT                               0x00000080
+#define GLX_CONFIG_CAVEAT                                  0x20
+#define GLX_X_VISUAL_TYPE                                  0x22
+#define GLX_TRANSPARENT_TYPE                               0x23
+#define GLX_TRANSPARENT_INDEX_VALUE                        0x24
+#define GLX_TRANSPARENT_RED_VALUE                          0x25
+#define GLX_TRANSPARENT_GREEN_VALUE                        0x26
+#define GLX_TRANSPARENT_BLUE_VALUE                         0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE                        0x28
+#define GLX_DONT_CARE                                      0xFFFFFFFF
+#define GLX_NONE                                           0x8000
+#define GLX_SLOW_CONFIG                                    0x8001
+#define GLX_TRUE_COLOR                                     0x8002
+#define GLX_DIRECT_COLOR                                   0x8003
+#define GLX_PSEUDO_COLOR                                   0x8004
+#define GLX_STATIC_COLOR                                   0x8005
+#define GLX_GRAY_SCALE                                     0x8006
+#define GLX_STATIC_GRAY                                    0x8007
+#define GLX_TRANSPARENT_RGB                                0x8008
+#define GLX_TRANSPARENT_INDEX                              0x8009
+#define GLX_VISUAL_ID                                      0x800B
+#define GLX_SCREEN                                         0x800C
+#define GLX_NON_CONFORMANT_CONFIG                          0x800D
+#define GLX_DRAWABLE_TYPE                                  0x8010
+#define GLX_RENDER_TYPE                                    0x8011
+#define GLX_X_RENDERABLE                                   0x8012
+#define GLX_FBCONFIG_ID                                    0x8013
+#define GLX_RGBA_TYPE                                      0x8014
+#define GLX_COLOR_INDEX_TYPE                               0x8015
+#define GLX_MAX_PBUFFER_WIDTH                              0x8016
+#define GLX_MAX_PBUFFER_HEIGHT                             0x8017
+#define GLX_MAX_PBUFFER_PIXELS                             0x8018
+#define GLX_PRESERVED_CONTENTS                             0x801B
+#define GLX_LARGEST_PBUFFER                                0x801C
+#define GLX_WIDTH                                          0x801D
+#define GLX_HEIGHT                                         0x801E
+#define GLX_EVENT_MASK                                     0x801F
+#define GLX_DAMAGED                                        0x8020
+#define GLX_SAVED                                          0x8021
+#define GLX_WINDOW                                         0x8022
+#define GLX_PBUFFER                                        0x8023
+#define GLX_PBUFFER_HEIGHT                                 0x8040
+#define GLX_PBUFFER_WIDTH                                  0x8041
+typedef GLXFBConfig * (APIENTRYP PFNGLXGETFBCONFIGSPROC) (Display * dpy, int screen, int * nelements);
+typedef GLXFBConfig * (APIENTRYP PFNGLXCHOOSEFBCONFIGPROC) (Display * dpy, int screen, const int * attrib_list, int * nelements);
+typedef int (APIENTRYP PFNGLXGETFBCONFIGATTRIBPROC) (Display * dpy, GLXFBConfig config, int attribute, int * value);
+typedef XVisualInfo * (APIENTRYP PFNGLXGETVISUALFROMFBCONFIGPROC) (Display * dpy, GLXFBConfig config);
+typedef GLXWindow (APIENTRYP PFNGLXCREATEWINDOWPROC) (Display * dpy, GLXFBConfig config, Window win, const int * attrib_list);
+typedef void (APIENTRYP PFNGLXDESTROYWINDOWPROC) (Display * dpy, GLXWindow win);
+typedef GLXPixmap (APIENTRYP PFNGLXCREATEPIXMAPPROC) (Display * dpy, GLXFBConfig config, Pixmap pixmap, const int * attrib_list);
+typedef void (APIENTRYP PFNGLXDESTROYPIXMAPPROC) (Display * dpy, GLXPixmap pixmap);
+typedef GLXPbuffer (APIENTRYP PFNGLXCREATEPBUFFERPROC) (Display * dpy, GLXFBConfig config, const int * attrib_list);
+typedef void (APIENTRYP PFNGLXDESTROYPBUFFERPROC) (Display * dpy, GLXPbuffer pbuf);
+typedef void (APIENTRYP PFNGLXQUERYDRAWABLEPROC) (Display * dpy, GLXDrawable draw, int attribute, unsigned int * value);
+typedef GLXContext (APIENTRYP PFNGLXCREATENEWCONTEXTPROC) (Display * dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
+typedef Bool (APIENTRYP PFNGLXMAKECONTEXTCURRENTPROC) (Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef GLXDrawable (APIENTRYP PFNGLXGETCURRENTREADDRAWABLEPROC) ();
+typedef Display * (APIENTRYP PFNGLXGETCURRENTDISPLAYPROC) ();
+typedef int (APIENTRYP PFNGLXQUERYCONTEXTPROC) (Display * dpy, GLXContext ctx, int attribute, int * value);
+typedef void (APIENTRYP PFNGLXSELECTEVENTPROC) (Display * dpy, GLXDrawable draw, unsigned long event_mask);
+typedef void (APIENTRYP PFNGLXGETSELECTEDEVENTPROC) (Display * dpy, GLXDrawable draw, unsigned long * event_mask);
+GLEE_EXTERN PFNGLXGETFBCONFIGSPROC pglXGetFBConfigs;
+GLEE_EXTERN PFNGLXCHOOSEFBCONFIGPROC pglXChooseFBConfig;
+GLEE_EXTERN PFNGLXGETFBCONFIGATTRIBPROC pglXGetFBConfigAttrib;
+GLEE_EXTERN PFNGLXGETVISUALFROMFBCONFIGPROC pglXGetVisualFromFBConfig;
+GLEE_EXTERN PFNGLXCREATEWINDOWPROC pglXCreateWindow;
+GLEE_EXTERN PFNGLXDESTROYWINDOWPROC pglXDestroyWindow;
+GLEE_EXTERN PFNGLXCREATEPIXMAPPROC pglXCreatePixmap;
+GLEE_EXTERN PFNGLXDESTROYPIXMAPPROC pglXDestroyPixmap;
+GLEE_EXTERN PFNGLXCREATEPBUFFERPROC pglXCreatePbuffer;
+GLEE_EXTERN PFNGLXDESTROYPBUFFERPROC pglXDestroyPbuffer;
+GLEE_EXTERN PFNGLXQUERYDRAWABLEPROC pglXQueryDrawable;
+GLEE_EXTERN PFNGLXCREATENEWCONTEXTPROC pglXCreateNewContext;
+GLEE_EXTERN PFNGLXMAKECONTEXTCURRENTPROC pglXMakeContextCurrent;
+GLEE_EXTERN PFNGLXGETCURRENTREADDRAWABLEPROC pglXGetCurrentReadDrawable;
+GLEE_EXTERN PFNGLXGETCURRENTDISPLAYPROC pglXGetCurrentDisplay;
+GLEE_EXTERN PFNGLXQUERYCONTEXTPROC pglXQueryContext;
+GLEE_EXTERN PFNGLXSELECTEVENTPROC pglXSelectEvent;
+GLEE_EXTERN PFNGLXGETSELECTEDEVENTPROC pglXGetSelectedEvent;
+#define glXGetFBConfigs pglXGetFBConfigs
+#define glXChooseFBConfig pglXChooseFBConfig
+#define glXGetFBConfigAttrib pglXGetFBConfigAttrib
+#define glXGetVisualFromFBConfig pglXGetVisualFromFBConfig
+#define glXCreateWindow pglXCreateWindow
+#define glXDestroyWindow pglXDestroyWindow
+#define glXCreatePixmap pglXCreatePixmap
+#define glXDestroyPixmap pglXDestroyPixmap
+#define glXCreatePbuffer pglXCreatePbuffer
+#define glXDestroyPbuffer pglXDestroyPbuffer
+#define glXQueryDrawable pglXQueryDrawable
+#define glXCreateNewContext pglXCreateNewContext
+#define glXMakeContextCurrent pglXMakeContextCurrent
+#define glXGetCurrentReadDrawable pglXGetCurrentReadDrawable
+#define glXGetCurrentDisplay pglXGetCurrentDisplay
+#define glXQueryContext pglXQueryContext
+#define glXSelectEvent pglXSelectEvent
+#define glXGetSelectedEvent pglXGetSelectedEvent
+#endif 
+
+/* GLX_VERSION_1_4 */
+
+#ifndef GLX_VERSION_1_4
+#define GLX_VERSION_1_4 1
+#define __GLEE_GLX_VERSION_1_4 1
+/* Constants */
+#define GLX_SAMPLE_BUFFERS                                 100000
+#define GLX_SAMPLES                                        100001
+typedef __GLXextFuncPtr (APIENTRYP PFNGLXGETPROCADDRESSPROC) (const GLubyte * procName);
+GLEE_EXTERN PFNGLXGETPROCADDRESSPROC pglXGetProcAddress;
+#define glXGetProcAddress pglXGetProcAddress
+#endif 
+
+/* GLX_ARB_multisample */
+
+#ifndef GLX_ARB_multisample
+#define GLX_ARB_multisample 1
+#define __GLEE_GLX_ARB_multisample 1
+/* Constants */
+#define GLX_SAMPLE_BUFFERS_ARB                             100000
+#define GLX_SAMPLES_ARB                                    100001
+#endif 
+
+/* GLX_ARB_fbconfig_float */
+
+#ifndef GLX_ARB_fbconfig_float
+#define GLX_ARB_fbconfig_float 1
+#define __GLEE_GLX_ARB_fbconfig_float 1
+/* Constants */
+#define GLX_RGBA_FLOAT_TYPE_ARB                            0x20B9
+#define GLX_RGBA_FLOAT_BIT_ARB                             0x00000004
+#endif 
+
+/* GLX_SGIS_multisample */
+
+#ifndef GLX_SGIS_multisample
+#define GLX_SGIS_multisample 1
+#define __GLEE_GLX_SGIS_multisample 1
+/* Constants */
+#define GLX_SAMPLE_BUFFERS_SGIS                            100000
+#define GLX_SAMPLES_SGIS                                   100001
+#endif 
+
+/* GLX_EXT_visual_info */
+
+#ifndef GLX_EXT_visual_info
+#define GLX_EXT_visual_info 1
+#define __GLEE_GLX_EXT_visual_info 1
+/* Constants */
+#define GLX_X_VISUAL_TYPE_EXT                              0x22
+#define GLX_TRANSPARENT_TYPE_EXT                           0x23
+#define GLX_TRANSPARENT_INDEX_VALUE_EXT                    0x24
+#define GLX_TRANSPARENT_RED_VALUE_EXT                      0x25
+#define GLX_TRANSPARENT_GREEN_VALUE_EXT                    0x26
+#define GLX_TRANSPARENT_BLUE_VALUE_EXT                     0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE_EXT                    0x28
+#define GLX_NONE_EXT                                       0x8000
+#define GLX_TRUE_COLOR_EXT                                 0x8002
+#define GLX_DIRECT_COLOR_EXT                               0x8003
+#define GLX_PSEUDO_COLOR_EXT                               0x8004
+#define GLX_STATIC_COLOR_EXT                               0x8005
+#define GLX_GRAY_SCALE_EXT                                 0x8006
+#define GLX_STATIC_GRAY_EXT                                0x8007
+#define GLX_TRANSPARENT_RGB_EXT                            0x8008
+#define GLX_TRANSPARENT_INDEX_EXT                          0x8009
+#endif 
+
+/* GLX_SGI_swap_control */
+
+#ifndef GLX_SGI_swap_control
+#define GLX_SGI_swap_control 1
+#define __GLEE_GLX_SGI_swap_control 1
+/* Constants */
+typedef int (APIENTRYP PFNGLXSWAPINTERVALSGIPROC) (int interval);
+GLEE_EXTERN PFNGLXSWAPINTERVALSGIPROC pglXSwapIntervalSGI;
+#define glXSwapIntervalSGI pglXSwapIntervalSGI
+#endif 
+
+/* GLX_SGI_video_sync */
+
+#ifndef GLX_SGI_video_sync
+#define GLX_SGI_video_sync 1
+#define __GLEE_GLX_SGI_video_sync 1
+/* Constants */
+typedef int (APIENTRYP PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int * count);
+typedef int (APIENTRYP PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int * count);
+GLEE_EXTERN PFNGLXGETVIDEOSYNCSGIPROC pglXGetVideoSyncSGI;
+GLEE_EXTERN PFNGLXWAITVIDEOSYNCSGIPROC pglXWaitVideoSyncSGI;
+#define glXGetVideoSyncSGI pglXGetVideoSyncSGI
+#define glXWaitVideoSyncSGI pglXWaitVideoSyncSGI
+#endif 
+
+/* GLX_SGI_make_current_read */
+
+#ifndef GLX_SGI_make_current_read
+#define GLX_SGI_make_current_read 1
+#define __GLEE_GLX_SGI_make_current_read 1
+/* Constants */
+typedef Bool (APIENTRYP PFNGLXMAKECURRENTREADSGIPROC) (Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef GLXDrawable (APIENTRYP PFNGLXGETCURRENTREADDRAWABLESGIPROC) ();
+GLEE_EXTERN PFNGLXMAKECURRENTREADSGIPROC pglXMakeCurrentReadSGI;
+GLEE_EXTERN PFNGLXGETCURRENTREADDRAWABLESGIPROC pglXGetCurrentReadDrawableSGI;
+#define glXMakeCurrentReadSGI pglXMakeCurrentReadSGI
+#define glXGetCurrentReadDrawableSGI pglXGetCurrentReadDrawableSGI
+#endif 
+
+/* GLX_EXT_visual_rating */
+
+#ifndef GLX_EXT_visual_rating
+#define GLX_EXT_visual_rating 1
+#define __GLEE_GLX_EXT_visual_rating 1
+/* Constants */
+#define GLX_VISUAL_CAVEAT_EXT                              0x20
+#define GLX_SLOW_VISUAL_EXT                                0x8001
+#define GLX_NON_CONFORMANT_VISUAL_EXT                      0x800D
+#endif 
+
+/* GLX_EXT_import_context */
+
+#ifndef GLX_EXT_import_context
+#define GLX_EXT_import_context 1
+#define __GLEE_GLX_EXT_import_context 1
+/* Constants */
+#define GLX_SHARE_CONTEXT_EXT                              0x800A
+#define GLX_VISUAL_ID_EXT                                  0x800B
+#define GLX_SCREEN_EXT                                     0x800C
+typedef Display * (APIENTRYP PFNGLXGETCURRENTDISPLAYEXTPROC) ();
+typedef int (APIENTRYP PFNGLXQUERYCONTEXTINFOEXTPROC) (Display * dpy, GLXContext context, int attribute, int * value);
+typedef GLXContextID (APIENTRYP PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
+typedef GLXContext (APIENTRYP PFNGLXIMPORTCONTEXTEXTPROC) (Display * dpy, GLXContextID contextID);
+typedef void (APIENTRYP PFNGLXFREECONTEXTEXTPROC) (Display * dpy, GLXContext context);
+GLEE_EXTERN PFNGLXGETCURRENTDISPLAYEXTPROC pglXGetCurrentDisplayEXT;
+GLEE_EXTERN PFNGLXQUERYCONTEXTINFOEXTPROC pglXQueryContextInfoEXT;
+GLEE_EXTERN PFNGLXGETCONTEXTIDEXTPROC pglXGetContextIDEXT;
+GLEE_EXTERN PFNGLXIMPORTCONTEXTEXTPROC pglXImportContextEXT;
+GLEE_EXTERN PFNGLXFREECONTEXTEXTPROC pglXFreeContextEXT;
+#define glXGetCurrentDisplayEXT pglXGetCurrentDisplayEXT
+#define glXQueryContextInfoEXT pglXQueryContextInfoEXT
+#define glXGetContextIDEXT pglXGetContextIDEXT
+#define glXImportContextEXT pglXImportContextEXT
+#define glXFreeContextEXT pglXFreeContextEXT
+#endif 
+
+/* GLX_SGIX_fbconfig */
+
+#ifndef GLX_SGIX_fbconfig
+#define GLX_SGIX_fbconfig 1
+#define __GLEE_GLX_SGIX_fbconfig 1
+/* Constants */
+#define GLX_WINDOW_BIT_SGIX                                0x00000001
+#define GLX_PIXMAP_BIT_SGIX                                0x00000002
+#define GLX_RGBA_BIT_SGIX                                  0x00000001
+#define GLX_COLOR_INDEX_BIT_SGIX                           0x00000002
+#define GLX_DRAWABLE_TYPE_SGIX                             0x8010
+#define GLX_RENDER_TYPE_SGIX                               0x8011
+#define GLX_X_RENDERABLE_SGIX                              0x8012
+#define GLX_FBCONFIG_ID_SGIX                               0x8013
+#define GLX_RGBA_TYPE_SGIX                                 0x8014
+#define GLX_COLOR_INDEX_TYPE_SGIX                          0x8015
+typedef int (APIENTRYP PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display * dpy, GLXFBConfigSGIX config, int attribute, int * value);
+typedef GLXFBConfigSGIX * (APIENTRYP PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display * dpy, int screen, int * attrib_list, int * nelements);
+typedef GLXPixmap (APIENTRYP PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display * dpy, GLXFBConfigSGIX config, Pixmap pixmap);
+typedef GLXContext (APIENTRYP PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display * dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
+typedef XVisualInfo * (APIENTRYP PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display * dpy, GLXFBConfigSGIX config);
+typedef GLXFBConfigSGIX (APIENTRYP PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display * dpy, XVisualInfo * vis);
+GLEE_EXTERN PFNGLXGETFBCONFIGATTRIBSGIXPROC pglXGetFBConfigAttribSGIX;
+GLEE_EXTERN PFNGLXCHOOSEFBCONFIGSGIXPROC pglXChooseFBConfigSGIX;
+GLEE_EXTERN PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC pglXCreateGLXPixmapWithConfigSGIX;
+GLEE_EXTERN PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC pglXCreateContextWithConfigSGIX;
+GLEE_EXTERN PFNGLXGETVISUALFROMFBCONFIGSGIXPROC pglXGetVisualFromFBConfigSGIX;
+GLEE_EXTERN PFNGLXGETFBCONFIGFROMVISUALSGIXPROC pglXGetFBConfigFromVisualSGIX;
+#define glXGetFBConfigAttribSGIX pglXGetFBConfigAttribSGIX
+#define glXChooseFBConfigSGIX pglXChooseFBConfigSGIX
+#define glXCreateGLXPixmapWithConfigSGIX pglXCreateGLXPixmapWithConfigSGIX
+#define glXCreateContextWithConfigSGIX pglXCreateContextWithConfigSGIX
+#define glXGetVisualFromFBConfigSGIX pglXGetVisualFromFBConfigSGIX
+#define glXGetFBConfigFromVisualSGIX pglXGetFBConfigFromVisualSGIX
+#endif 
+
+/* GLX_SGIX_pbuffer */
+
+#ifndef GLX_SGIX_pbuffer
+#define GLX_SGIX_pbuffer 1
+#define __GLEE_GLX_SGIX_pbuffer 1
+/* Constants */
+#define GLX_PBUFFER_BIT_SGIX                               0x00000004
+#define GLX_BUFFER_CLOBBER_MASK_SGIX                       0x08000000
+#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX                     0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX                    0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT_SGIX                      0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX                     0x00000008
+#define GLX_AUX_BUFFERS_BIT_SGIX                           0x00000010
+#define GLX_DEPTH_BUFFER_BIT_SGIX                          0x00000020
+#define GLX_STENCIL_BUFFER_BIT_SGIX                        0x00000040
+#define GLX_ACCUM_BUFFER_BIT_SGIX                          0x00000080
+#define GLX_SAMPLE_BUFFERS_BIT_SGIX                        0x00000100
+#define GLX_MAX_PBUFFER_WIDTH_SGIX                         0x8016
+#define GLX_MAX_PBUFFER_HEIGHT_SGIX                        0x8017
+#define GLX_MAX_PBUFFER_PIXELS_SGIX                        0x8018
+#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX                     0x8019
+#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX                    0x801A
+#define GLX_PRESERVED_CONTENTS_SGIX                        0x801B
+#define GLX_LARGEST_PBUFFER_SGIX                           0x801C
+#define GLX_WIDTH_SGIX                                     0x801D
+#define GLX_HEIGHT_SGIX                                    0x801E
+#define GLX_EVENT_MASK_SGIX                                0x801F
+#define GLX_DAMAGED_SGIX                                   0x8020
+#define GLX_SAVED_SGIX                                     0x8021
+#define GLX_WINDOW_SGIX                                    0x8022
+#define GLX_PBUFFER_SGIX                                   0x8023
+typedef GLXPbufferSGIX (APIENTRYP PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display * dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int * attrib_list);
+typedef void (APIENTRYP PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display * dpy, GLXPbufferSGIX pbuf);
+typedef int (APIENTRYP PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display * dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int * value);
+typedef void (APIENTRYP PFNGLXSELECTEVENTSGIXPROC) (Display * dpy, GLXDrawable drawable, unsigned long mask);
+typedef void (APIENTRYP PFNGLXGETSELECTEDEVENTSGIXPROC) (Display * dpy, GLXDrawable drawable, unsigned long * mask);
+GLEE_EXTERN PFNGLXCREATEGLXPBUFFERSGIXPROC pglXCreateGLXPbufferSGIX;
+GLEE_EXTERN PFNGLXDESTROYGLXPBUFFERSGIXPROC pglXDestroyGLXPbufferSGIX;
+GLEE_EXTERN PFNGLXQUERYGLXPBUFFERSGIXPROC pglXQueryGLXPbufferSGIX;
+GLEE_EXTERN PFNGLXSELECTEVENTSGIXPROC pglXSelectEventSGIX;
+GLEE_EXTERN PFNGLXGETSELECTEDEVENTSGIXPROC pglXGetSelectedEventSGIX;
+#define glXCreateGLXPbufferSGIX pglXCreateGLXPbufferSGIX
+#define glXDestroyGLXPbufferSGIX pglXDestroyGLXPbufferSGIX
+#define glXQueryGLXPbufferSGIX pglXQueryGLXPbufferSGIX
+#define glXSelectEventSGIX pglXSelectEventSGIX
+#define glXGetSelectedEventSGIX pglXGetSelectedEventSGIX
+#endif 
+
+/* GLX_SGI_cushion */
+
+#ifndef GLX_SGI_cushion
+#define GLX_SGI_cushion 1
+#define __GLEE_GLX_SGI_cushion 1
+/* Constants */
+typedef void (APIENTRYP PFNGLXCUSHIONSGIPROC) (Display * dpy, Window window, float cushion);
+GLEE_EXTERN PFNGLXCUSHIONSGIPROC pglXCushionSGI;
+#define glXCushionSGI pglXCushionSGI
+#endif 
+
+/* GLX_SGIX_video_resize */
+
+#ifndef GLX_SGIX_video_resize
+#define GLX_SGIX_video_resize 1
+#define __GLEE_GLX_SGIX_video_resize 1
+/* Constants */
+#define GLX_SYNC_FRAME_SGIX                                0x00000000
+#define GLX_SYNC_SWAP_SGIX                                 0x00000001
+typedef int (APIENTRYP PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display * display, int screen, int channel, Window window);
+typedef int (APIENTRYP PFNGLXCHANNELRECTSGIXPROC) (Display * display, int screen, int channel, int x, int y, int w, int h);
+typedef int (APIENTRYP PFNGLXQUERYCHANNELRECTSGIXPROC) (Display * display, int screen, int channel, int * dx, int * dy, int * dw, int * dh);
+typedef int (APIENTRYP PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display * display, int screen, int channel, int * x, int * y, int * w, int * h);
+typedef int (APIENTRYP PFNGLXCHANNELRECTSYNCSGIXPROC) (Display * display, int screen, int channel, GLenum synctype);
+GLEE_EXTERN PFNGLXBINDCHANNELTOWINDOWSGIXPROC pglXBindChannelToWindowSGIX;
+GLEE_EXTERN PFNGLXCHANNELRECTSGIXPROC pglXChannelRectSGIX;
+GLEE_EXTERN PFNGLXQUERYCHANNELRECTSGIXPROC pglXQueryChannelRectSGIX;
+GLEE_EXTERN PFNGLXQUERYCHANNELDELTASSGIXPROC pglXQueryChannelDeltasSGIX;
+GLEE_EXTERN PFNGLXCHANNELRECTSYNCSGIXPROC pglXChannelRectSyncSGIX;
+#define glXBindChannelToWindowSGIX pglXBindChannelToWindowSGIX
+#define glXChannelRectSGIX pglXChannelRectSGIX
+#define glXQueryChannelRectSGIX pglXQueryChannelRectSGIX
+#define glXQueryChannelDeltasSGIX pglXQueryChannelDeltasSGIX
+#define glXChannelRectSyncSGIX pglXChannelRectSyncSGIX
+#endif 
+
+/* GLX_SGIX_swap_group */
+
+#ifndef GLX_SGIX_swap_group
+#define GLX_SGIX_swap_group 1
+#define __GLEE_GLX_SGIX_swap_group 1
+/* Constants */
+typedef void (APIENTRYP PFNGLXJOINSWAPGROUPSGIXPROC) (Display * dpy, GLXDrawable drawable, GLXDrawable member);
+GLEE_EXTERN PFNGLXJOINSWAPGROUPSGIXPROC pglXJoinSwapGroupSGIX;
+#define glXJoinSwapGroupSGIX pglXJoinSwapGroupSGIX
+#endif 
+
+/* GLX_SGIX_swap_barrier */
+
+#ifndef GLX_SGIX_swap_barrier
+#define GLX_SGIX_swap_barrier 1
+#define __GLEE_GLX_SGIX_swap_barrier 1
+/* Constants */
+typedef void (APIENTRYP PFNGLXBINDSWAPBARRIERSGIXPROC) (Display * dpy, GLXDrawable drawable, int barrier);
+typedef Bool (APIENTRYP PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display * dpy, int screen, int * max);
+GLEE_EXTERN PFNGLXBINDSWAPBARRIERSGIXPROC pglXBindSwapBarrierSGIX;
+GLEE_EXTERN PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC pglXQueryMaxSwapBarriersSGIX;
+#define glXBindSwapBarrierSGIX pglXBindSwapBarrierSGIX
+#define glXQueryMaxSwapBarriersSGIX pglXQueryMaxSwapBarriersSGIX
+#endif 
+
+/* GLX_SGIS_blended_overlay */
+
+#ifndef GLX_SGIS_blended_overlay
+#define GLX_SGIS_blended_overlay 1
+#define __GLEE_GLX_SGIS_blended_overlay 1
+/* Constants */
+#define GLX_BLENDED_RGBA_SGIS                              0x8025
+#endif 
+
+/* GLX_SGIS_shared_multisample */
+
+#ifndef GLX_SGIS_shared_multisample
+#define GLX_SGIS_shared_multisample 1
+#define __GLEE_GLX_SGIS_shared_multisample 1
+/* Constants */
+#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS                0x8026
+#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS               0x8027
+#endif 
+
+/* GLX_SUN_get_transparent_index */
+
+#ifndef GLX_SUN_get_transparent_index
+#define GLX_SUN_get_transparent_index 1
+#define __GLEE_GLX_SUN_get_transparent_index 1
+/* Constants */
+typedef Status (APIENTRYP PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display * dpy, Window overlay, Window underlay, long * pTransparentIndex);
+GLEE_EXTERN PFNGLXGETTRANSPARENTINDEXSUNPROC pglXGetTransparentIndexSUN;
+#define glXGetTransparentIndexSUN pglXGetTransparentIndexSUN
+#endif 
+
+/* GLX_3DFX_multisample */
+
+#ifndef GLX_3DFX_multisample
+#define GLX_3DFX_multisample 1
+#define __GLEE_GLX_3DFX_multisample 1
+/* Constants */
+#define GLX_SAMPLE_BUFFERS_3DFX                            0x8050
+#define GLX_SAMPLES_3DFX                                   0x8051
+#endif 
+
+/* GLX_MESA_copy_sub_buffer */
+
+#ifndef GLX_MESA_copy_sub_buffer
+#define GLX_MESA_copy_sub_buffer 1
+#define __GLEE_GLX_MESA_copy_sub_buffer 1
+/* Constants */
+typedef void (APIENTRYP PFNGLXCOPYSUBBUFFERMESAPROC) (Display * dpy, GLXDrawable drawable, int x, int y, int width, int height);
+GLEE_EXTERN PFNGLXCOPYSUBBUFFERMESAPROC pglXCopySubBufferMESA;
+#define glXCopySubBufferMESA pglXCopySubBufferMESA
+#endif 
+
+/* GLX_MESA_pixmap_colormap */
+
+#ifndef GLX_MESA_pixmap_colormap
+#define GLX_MESA_pixmap_colormap 1
+#define __GLEE_GLX_MESA_pixmap_colormap 1
+/* Constants */
+typedef GLXPixmap (APIENTRYP PFNGLXCREATEGLXPIXMAPMESAPROC) (Display * dpy, XVisualInfo * visual, Pixmap pixmap, Colormap cmap);
+GLEE_EXTERN PFNGLXCREATEGLXPIXMAPMESAPROC pglXCreateGLXPixmapMESA;
+#define glXCreateGLXPixmapMESA pglXCreateGLXPixmapMESA
+#endif 
+
+/* GLX_MESA_release_buffers */
+
+#ifndef GLX_MESA_release_buffers
+#define GLX_MESA_release_buffers 1
+#define __GLEE_GLX_MESA_release_buffers 1
+/* Constants */
+typedef Bool (APIENTRYP PFNGLXRELEASEBUFFERSMESAPROC) (Display * dpy, GLXDrawable drawable);
+GLEE_EXTERN PFNGLXRELEASEBUFFERSMESAPROC pglXReleaseBuffersMESA;
+#define glXReleaseBuffersMESA pglXReleaseBuffersMESA
+#endif 
+
+/* GLX_MESA_set_3dfx_mode */
+
+#ifndef GLX_MESA_set_3dfx_mode
+#define GLX_MESA_set_3dfx_mode 1
+#define __GLEE_GLX_MESA_set_3dfx_mode 1
+/* Constants */
+#define GLX_3DFX_WINDOW_MODE_MESA                          0x1
+#define GLX_3DFX_FULLSCREEN_MODE_MESA                      0x2
+typedef Bool (APIENTRYP PFNGLXSET3DFXMODEMESAPROC) (int mode);
+GLEE_EXTERN PFNGLXSET3DFXMODEMESAPROC pglXSet3DfxModeMESA;
+#define glXSet3DfxModeMESA pglXSet3DfxModeMESA
+#endif 
+
+/* GLX_SGIX_visual_select_group */
+
+#ifndef GLX_SGIX_visual_select_group
+#define GLX_SGIX_visual_select_group 1
+#define __GLEE_GLX_SGIX_visual_select_group 1
+/* Constants */
+#define GLX_VISUAL_SELECT_GROUP_SGIX                       0x8028
+#endif 
+
+/* GLX_OML_swap_method */
+
+#ifndef GLX_OML_swap_method
+#define GLX_OML_swap_method 1
+#define __GLEE_GLX_OML_swap_method 1
+/* Constants */
+#define GLX_SWAP_METHOD_OML                                0x8060
+#define GLX_SWAP_EXCHANGE_OML                              0x8061
+#define GLX_SWAP_COPY_OML                                  0x8062
+#define GLX_SWAP_UNDEFINED_OML                             0x8063
+#endif 
+
+/* GLX_OML_sync_control */
+
+#ifndef GLX_OML_sync_control
+#define GLX_OML_sync_control 1
+#define __GLEE_GLX_OML_sync_control 1
+/* Constants */
+typedef Bool (APIENTRYP PFNGLXGETSYNCVALUESOMLPROC) (Display * dpy, GLXDrawable drawable, int64_t * ust, int64_t * msc, int64_t * sbc);
+typedef Bool (APIENTRYP PFNGLXGETMSCRATEOMLPROC) (Display * dpy, GLXDrawable drawable, int32_t * numerator, int32_t * denominator);
+typedef int64_t (APIENTRYP PFNGLXSWAPBUFFERSMSCOMLPROC) (Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
+typedef Bool (APIENTRYP PFNGLXWAITFORMSCOMLPROC) (Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc, int64_t * sbc);
+typedef Bool (APIENTRYP PFNGLXWAITFORSBCOMLPROC) (Display * dpy, GLXDrawable drawable, int64_t target_sbc, int64_t * ust, int64_t * msc, int64_t * sbc);
+GLEE_EXTERN PFNGLXGETSYNCVALUESOMLPROC pglXGetSyncValuesOML;
+GLEE_EXTERN PFNGLXGETMSCRATEOMLPROC pglXGetMscRateOML;
+GLEE_EXTERN PFNGLXSWAPBUFFERSMSCOMLPROC pglXSwapBuffersMscOML;
+GLEE_EXTERN PFNGLXWAITFORMSCOMLPROC pglXWaitForMscOML;
+GLEE_EXTERN PFNGLXWAITFORSBCOMLPROC pglXWaitForSbcOML;
+#define glXGetSyncValuesOML pglXGetSyncValuesOML
+#define glXGetMscRateOML pglXGetMscRateOML
+#define glXSwapBuffersMscOML pglXSwapBuffersMscOML
+#define glXWaitForMscOML pglXWaitForMscOML
+#define glXWaitForSbcOML pglXWaitForSbcOML
+#endif 
+
+/* GLX_NV_float_buffer */
+
+#ifndef GLX_NV_float_buffer
+#define GLX_NV_float_buffer 1
+#define __GLEE_GLX_NV_float_buffer 1
+/* Constants */
+#define GLX_FLOAT_COMPONENTS_NV                            0x20B0
+#endif 
+
+/* GLX_SGIX_hyperpipe */
+
+#ifndef GLX_SGIX_hyperpipe
+#define GLX_SGIX_hyperpipe 1
+#define __GLEE_GLX_SGIX_hyperpipe 1
+/* Constants */
+#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX                80
+#define GLX_BAD_HYPERPIPE_CONFIG_SGIX                      91
+#define GLX_BAD_HYPERPIPE_SGIX                             92
+#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX                    0x00000001
+#define GLX_HYPERPIPE_RENDER_PIPE_SGIX                     0x00000002
+#define GLX_PIPE_RECT_SGIX                                 0x00000001
+#define GLX_PIPE_RECT_LIMITS_SGIX                          0x00000002
+#define GLX_HYPERPIPE_STEREO_SGIX                          0x00000003
+#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX                   0x00000004
+#define GLX_HYPERPIPE_ID_SGIX                              0x8030
+typedef GLXHyperpipeNetworkSGIX * (APIENTRYP PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display * dpy, int * npipes);
+typedef int (APIENTRYP PFNGLXHYPERPIPECONFIGSGIXPROC) (Display * dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX * cfg, int * hpId);
+typedef GLXHyperpipeConfigSGIX * (APIENTRYP PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display * dpy, int hpId, int * npipes);
+typedef int (APIENTRYP PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display * dpy, int hpId);
+typedef int (APIENTRYP PFNGLXBINDHYPERPIPESGIXPROC) (Display * dpy, int hpId);
+typedef int (APIENTRYP PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display * dpy, int timeSlice, int attrib, int size, void * attribList, void * returnAttribList);
+typedef int (APIENTRYP PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display * dpy, int timeSlice, int attrib, int size, void * attribList);
+typedef int (APIENTRYP PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display * dpy, int timeSlice, int attrib, int size, void * returnAttribList);
+GLEE_EXTERN PFNGLXQUERYHYPERPIPENETWORKSGIXPROC pglXQueryHyperpipeNetworkSGIX;
+GLEE_EXTERN PFNGLXHYPERPIPECONFIGSGIXPROC pglXHyperpipeConfigSGIX;
+GLEE_EXTERN PFNGLXQUERYHYPERPIPECONFIGSGIXPROC pglXQueryHyperpipeConfigSGIX;
+GLEE_EXTERN PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC pglXDestroyHyperpipeConfigSGIX;
+GLEE_EXTERN PFNGLXBINDHYPERPIPESGIXPROC pglXBindHyperpipeSGIX;
+GLEE_EXTERN PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC pglXQueryHyperpipeBestAttribSGIX;
+GLEE_EXTERN PFNGLXHYPERPIPEATTRIBSGIXPROC pglXHyperpipeAttribSGIX;
+GLEE_EXTERN PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC pglXQueryHyperpipeAttribSGIX;
+#define glXQueryHyperpipeNetworkSGIX pglXQueryHyperpipeNetworkSGIX
+#define glXHyperpipeConfigSGIX pglXHyperpipeConfigSGIX
+#define glXQueryHyperpipeConfigSGIX pglXQueryHyperpipeConfigSGIX
+#define glXDestroyHyperpipeConfigSGIX pglXDestroyHyperpipeConfigSGIX
+#define glXBindHyperpipeSGIX pglXBindHyperpipeSGIX
+#define glXQueryHyperpipeBestAttribSGIX pglXQueryHyperpipeBestAttribSGIX
+#define glXHyperpipeAttribSGIX pglXHyperpipeAttribSGIX
+#define glXQueryHyperpipeAttribSGIX pglXQueryHyperpipeAttribSGIX
+#endif 
+
+/* GLX_MESA_agp_offset */
+
+#ifndef GLX_MESA_agp_offset
+#define GLX_MESA_agp_offset 1
+#define __GLEE_GLX_MESA_agp_offset 1
+/* Constants */
+typedef unsigned int (APIENTRYP PFNGLXGETAGPOFFSETMESAPROC) (const void * pointer);
+GLEE_EXTERN PFNGLXGETAGPOFFSETMESAPROC pglXGetAGPOffsetMESA;
+#define glXGetAGPOffsetMESA pglXGetAGPOffsetMESA
+#endif 
+
+/* GLX_EXT_scene_marker */
+
+#ifndef GLX_EXT_scene_marker
+#define GLX_EXT_scene_marker 1
+#define __GLEE_GLX_EXT_scene_marker 1
+/* Constants */
+#endif 
+#endif /*end GLX */
+
+/*****************************************************************
+ * GLee functions
+ *****************************************************************/
+ 
+GLEE_EXTERN GLboolean GLeeInit();
+GLEE_EXTERN GLint GLeeForceLink(const char * extensionName);
+GLEE_EXTERN const char * GLeeGetErrorString();
+GLEE_EXTERN const char * GLeeGetExtStrGL();
+GLEE_EXTERN GLboolean GLeeEnabled(GLboolean * extensionQueryingVariable);
+
+#ifdef WIN32
+GLEE_EXTERN const char * GLeeGetExtStrWGL();
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#else 
+GLEE_EXTERN const char * GLeeGetExtStrGLX();
+#endif
+
+#ifdef __cplusplus
+}	/* end C linkage */
+#endif
+
+#endif /* __glee_h_ defined */
diff --git a/debian/libvd-dev.install b/.svn/pristine/ca/caad7bd26c2695182e9303830c34a0b1788b1ce3.svn-base
similarity index 100%
rename from debian/libvd-dev.install
rename to .svn/pristine/ca/caad7bd26c2695182e9303830c34a0b1788b1ce3.svn-base
diff --git a/.svn/pristine/cc/cc4ddd7be3516c9f42d1f9e2d39ca12f37104035.svn-base b/.svn/pristine/cc/cc4ddd7be3516c9f42d1f9e2d39ca12f37104035.svn-base
new file mode 100644
index 0000000..c0cd5b6
--- /dev/null
+++ b/.svn/pristine/cc/cc4ddd7be3516c9f42d1f9e2d39ca12f37104035.svn-base
@@ -0,0 +1,468 @@
+/** @file	smoothmask4d.h
+ *	@author	Herve Lombaert
+ *	@date	March 1st, 2007
+ *
+ *	From a orthogonal mask, create a smooth mesh, and display it
+ */
+
+#ifndef SMOOTHMASK4D_H
+#define SMOOTHMASK4D_H
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+#include <queue>
+#include <cmath>
+#include <error.h>
+
+namespace libvdDisplay
+{
+	/**
+	 * @class SmoothMask4D
+	 * @brief Display an smoothed mesh for a 4D mask
+	 *
+	 * Display a mesh for a mask. It is an isosurface whose isovalue
+	 * represents the boundary of the mask.
+	 *
+	 * This classes uses a binary mask of any type. Possible values
+	 * of the masks are 0 and anything but 0.
+	 *
+	 * For better results use the following OpenGL initialization:
+	 *
+	 * \code
+	 *   glShadeModel(GL_SMOOTH);
+	 *   glEnable(GL_DEPTH_TEST);
+	 *   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+	 * \endcode
+	 *
+	 * To use it, use:
+	 *
+	 * \code
+	 *   unsigned char* volume; // e.g., [512*512*512*10] volume
+	 *   unsigned char* mask;   // e.g., [512*512*512*10] fill mask
+	 *   Display::SmoothMask4D displayMask;
+	 *
+	 *   displayMask.update(volume, mask, 512,512,512,10);
+	 *
+	 *   glColor3f(0.8,0,0); // color of the mask
+	 *   displayMask.display();
+	 * \endcode
+	 *
+	 */
+
+	class SmoothMask4D
+	{
+	public:
+		SmoothMask4D();
+		~SmoothMask4D();
+
+		/** update the visualizer with a new mask
+		 *  internally creates or update the display list
+		 * @param data  volume data (we will get its gradient for the surface normal
+		 * @param mask  binary mask (either 0 or else)
+		 */
+		template <typename DataType, typename MaskType>
+		void update(const DataType* data,
+					const MaskType* mask,
+		            unsigned int width,
+		            unsigned int height,
+		            unsigned int depth,
+					unsigned int nb_frames);
+
+		/** set the frame number to display */
+		void setFrame(unsigned int frame);
+
+		/** display the display list */
+		void display() const;
+
+		/** clear the 4D mask, remove any display list */
+		void clear();
+
+	private:
+		template <typename DataType>
+		void distanceTransform(const DataType* data,
+							  unsigned char* phi,
+							  std::vector<int> &band_index,
+							  unsigned int width,
+							  unsigned int height,
+							  unsigned int depth);
+
+		/** march all cubes */
+		template <typename DataType>
+		void march_cubes(const DataType* data, ///< volume data
+						 const unsigned char* mask, ///< band
+						 std::vector<int> &band_index, ///< voxels in band
+						 unsigned int width,
+						 unsigned int height,
+						 unsigned int depth);
+
+		/** Marching a single cube
+		 * Code from Paul Bourke (http://local.wasp.uwa.edu.au/~pbourke/modelling/polygonise/) */
+		struct XYZ { double x,y,z; };
+		struct TRIANGLE { XYZ p[3]; };
+		struct GRIDCELL { XYZ p[8]; double val[8]; };
+		static XYZ VertexInterp(double isolevel, XYZ p1, XYZ p2, double valp1, double valp2);
+		static int Polygonise(GRIDCELL grid,double isolevel,TRIANGLE *triangles);
+
+	private:
+		GLuint m_meshid;          ///< mesh display list (id of first frame display list)
+		unsigned int m_nb_frames; ///< how many frames
+		unsigned int m_frame;     ///< current frame
+	};
+
+} // namespace
+
+
+
+namespace libvdDisplay
+{
+
+	template <typename DataType, typename MaskType>
+	void SmoothMask4D::update(const DataType* data,
+							  const MaskType* mask,
+							  unsigned int width,
+							  unsigned int height,
+							  unsigned int depth,
+							  unsigned int nb_frames)
+	{
+		/* Create a new display list */
+		if(glIsList(m_meshid)) glDeleteLists(m_meshid,m_nb_frames);
+		m_nb_frames = nb_frames;
+		m_meshid = glGenLists(m_nb_frames);
+
+		/* distance transform */
+		unsigned char* phi = new unsigned char [width*height*depth];
+
+		for(unsigned int frame = 0; frame<m_nb_frames; ++frame)
+		{
+			glNewList(m_meshid+frame, GL_COMPILE);
+
+			/* Scale to volume space */
+			glMatrixMode(GL_MODELVIEW);
+			glPushMatrix();
+			glTranslatef(-0.5f,-0.5f,-0.5f);
+			glScalef(1.0f/width, 1.0f/height, 1.0f/depth);
+
+			/* Nice coloring for the mesh */
+			glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+			glEnable(GL_COLOR_MATERIAL);
+
+			/* Lighting helps visualization of the mesh */
+			glEnable(GL_LIGHTING);
+			glEnable(GL_LIGHT0);
+
+			/* create smoothed mask */
+			std::vector<int> band_index;
+			distanceTransform(&mask[frame*width*height*depth], phi, band_index, width, height, depth);
+
+			/* Create mesh */
+			if(data)
+				march_cubes(&data[frame*width*height*depth], phi, band_index, width, height, depth);
+			else
+				march_cubes(&mask[frame*width*height*depth], phi, band_index, width, height, depth);
+
+			/* Leaving function */
+			glDisable(GL_LIGHT0);
+			glDisable(GL_LIGHTING);
+			glDisable(GL_COLOR_MATERIAL);
+
+			/* End list */
+			glPopMatrix();
+			glEndList();
+		}
+
+		/* distance transform */
+		delete [] phi;
+	}
+
+
+	template <typename DataType>
+	void SmoothMask4D::distanceTransform(const DataType* mask,
+										unsigned char* phi,
+										std::vector<int> &band_index, // voxels in band (only inner layers)
+										unsigned int width,
+										unsigned int height,
+										unsigned int depth)
+	{
+		int neighbors[][3] = {
+			{0,0,-1}, {0,-1,0}, {-1,0,0},
+			{0,0,+1}, {0,+1,0}, {+1,0,0}
+		};
+
+		/////////////////////////////////////////////////
+		// Build a distance transform within a small band
+
+		// ping-pong boundaries
+		std::queue<int> inner_boundary[2];
+		std::queue<int> outer_boundary[2];
+		bool current_list = 0;
+		unsigned char zero = 128;
+		const int max_radius = 5; // narrow band radius
+
+		// empty phi
+		for(unsigned int i=0; i<width*height*depth; ++i) phi[i] = zero;
+
+		// find boundary and place +1 inside mask
+		for(unsigned int k=0; k<depth; ++k)
+			for(unsigned int j=0; j<height; ++j)
+				for(unsigned int i=0; i<width; ++i)
+		{
+			int index = (k*height+j)*width+i;
+			if(mask[index] != 0)
+			{
+				for(unsigned int m=0; m<6; ++m)
+				{
+					int ii = i + neighbors[m][0];
+					int jj = j + neighbors[m][1];
+					int kk = k + neighbors[m][2];
+
+					if(ii >=0 && ii < (int)width && jj >= 0 && jj < (int)height && kk>=0 && kk<(int)depth)
+					{
+						// if on boundary inside mask
+						if(mask[(kk*height+jj)*width+ii] == 0)
+						{
+							phi[index] = zero+1;
+							inner_boundary[current_list].push(index); // inside
+							break;
+						}
+					}
+				}
+			}
+		}
+		
+		// find boundary and place -1 outside mask
+		for(unsigned int k=0; k<depth; ++k)
+			for(unsigned int j=0; j<height; ++j)
+				for(unsigned int i=0; i<width; ++i)
+		{
+			int index = (k*height+j)*width+i;
+			if(mask[index] == 0)
+			{
+				for(unsigned int m=0; m<6; ++m)
+				{
+					int ii = i + neighbors[m][0];
+					int jj = j + neighbors[m][1];
+					int kk = k + neighbors[m][2];
+
+					if(ii >=0 && ii < (int)width && jj >= 0 && jj < (int)height && kk>=0 && kk<(int)depth)
+					{
+						// if on boundary outside mask
+						if(mask[(kk*height+jj)*width+ii] != 0)
+						{
+							phi[index] = zero-1;
+							outer_boundary[current_list].push(index); // outside
+							break;
+						}
+					}
+				}
+			}
+		}
+
+		// grow inner layer until it is done
+		current_list = 0;
+		int layer = 1;
+		while(!inner_boundary[current_list].empty() && layer < max_radius)
+		{
+			// get neighbors
+			while(!inner_boundary[current_list].empty())
+			{
+				// get point
+				int index = inner_boundary[current_list].front();
+				inner_boundary[current_list].pop();
+
+				// mark point
+				if(phi[index] == zero+layer)
+				{
+					// put in list of voxels in band
+					if(layer < max_radius-1)
+						band_index.push_back(index);
+
+					int k = index / (width*height);
+					int j = (index - k*width*height) / width;
+					int i = index - (k*height+j)*width;
+
+					// push all neighbors
+					for(unsigned int m=0; m<6; ++m)
+					{
+						int ii = i + neighbors[m][0];
+						int jj = j + neighbors[m][1];
+						int kk = k + neighbors[m][2];
+
+						if(ii >=0 && ii < (int)width && jj >= 0 && jj < (int)height && kk>=0 && kk<(int)depth)
+						{
+							int nindex = (kk*height+jj)*width+ii;
+							if(phi[nindex] == zero)
+							{
+								phi[nindex] = zero+layer+1;
+								inner_boundary[!current_list].push(nindex);
+							}
+						}
+					}
+				}
+			}
+
+			// switch list
+			current_list = !current_list;
+			++layer;
+		}
+		
+		// grow outer layer until it is done
+		current_list = 0;
+		layer = 1;
+		while(!outer_boundary[current_list].empty() && layer < max_radius)
+		{
+			// get neighbors
+			while(!outer_boundary[current_list].empty())
+			{
+				// get point
+				int index = outer_boundary[current_list].front();
+				outer_boundary[current_list].pop();
+
+				// mark point
+				if(phi[index] == zero-layer)
+				{
+					// put in list of voxels in band
+					if(layer < max_radius-1)
+						band_index.push_back(index);
+
+					int k = index / (width*height);
+					int j = (index - k*width*height) / width;
+					int i = index - (k*height+j)*width;
+
+					// push all neighbors
+					for(unsigned int m=0; m<6; ++m)
+					{
+						int ii = i + neighbors[m][0];
+						int jj = j + neighbors[m][1];
+						int kk = k + neighbors[m][2];
+
+						if(ii >=0 && ii < (int)width && jj >= 0 && jj < (int)height && kk>=0 && kk<(int)depth)
+						{
+							int nindex = (kk*height+jj)*width+ii;
+							if(phi[nindex] == zero)
+							{
+								phi[nindex] = zero-layer-1;
+								outer_boundary[!current_list].push(nindex);
+							}
+						}
+					}
+				}
+			}
+
+			// switch list
+			current_list = !current_list;
+			++layer;
+		}
+	}
+
+	/* march all voxel of the volume, we want all isosurfaces */
+	template <typename DataType>
+	void SmoothMask4D::march_cubes(const DataType* data, // volume data
+								   const unsigned char* mask, // band
+								   std::vector<int> &band_index, // voxels in band
+								   unsigned int width,
+								   unsigned int height,
+								   unsigned int depth)
+	{
+		try
+		{
+			float isovalue = 128; // zero in the unsigned char distance transform
+
+			// iterate in the band
+			for(std::vector<int>::const_iterator it = band_index.begin(); it != band_index.end(); ++it)
+			{
+				int k = *it / (width*height);
+				int j = (*it - k*width*height) / width;
+				int i = *it - (k*height+j)*width;
+
+				if(i == (int)width-1 || j == (int)height-1 || k == (int)depth-1) continue; // cannot march cube in this case
+
+				GRIDCELL cell;
+				cell.p[0].x = i+0; cell.p[0].y = j+0; cell.p[0].z = k+0; cell.val[0] = mask[((k+0)*height+(j+0))*width+(i+0)];
+				cell.p[1].x = i+1; cell.p[1].y = j+0; cell.p[1].z = k+0; cell.val[1] = mask[((k+0)*height+(j+0))*width+(i+1)];
+				cell.p[2].x = i+1; cell.p[2].y = j+1; cell.p[2].z = k+0; cell.val[2] = mask[((k+0)*height+(j+1))*width+(i+1)];
+				cell.p[3].x = i+0; cell.p[3].y = j+1; cell.p[3].z = k+0; cell.val[3] = mask[((k+0)*height+(j+1))*width+(i+0)];
+				cell.p[4].x = i+0; cell.p[4].y = j+0; cell.p[4].z = k+1; cell.val[4] = mask[((k+1)*height+(j+0))*width+(i+0)];
+				cell.p[5].x = i+1; cell.p[5].y = j+0; cell.p[5].z = k+1; cell.val[5] = mask[((k+1)*height+(j+0))*width+(i+1)];
+				cell.p[6].x = i+1; cell.p[6].y = j+1; cell.p[6].z = k+1; cell.val[6] = mask[((k+1)*height+(j+1))*width+(i+1)];
+				cell.p[7].x = i+0; cell.p[7].y = j+1; cell.p[7].z = k+1; cell.val[7] = mask[((k+1)*height+(j+1))*width+(i+0)];
+		
+				TRIANGLE triangles[5];
+				int nbTriangles = 0;
+		
+				nbTriangles = Polygonise(cell,isovalue,triangles);
+
+				/* use triangle normal to check if the volume gradient has to be inverted or not */
+				for(int m=0; m<nbTriangles; ++m)
+				{
+					/* triangle points */
+					float x1 = triangles[m].p[0].x; float y1 = triangles[m].p[0].y; float z1 = triangles[m].p[0].z;
+					float x2 = triangles[m].p[1].x; float y2 = triangles[m].p[1].y; float z2 = triangles[m].p[1].z;
+					float x3 = triangles[m].p[2].x; float y3 = triangles[m].p[2].y; float z3 = triangles[m].p[2].z;
+
+					/* normal is (x1->x2) cross (x2->x3) */
+					float u[3] = {x2-x1, y2-y1, z2-z1};
+					float v[3] = {x3-x2, y3-y2, z3-z2};
+					float nx = + (u[1]*v[2] - v[1]*u[2]);
+					float ny = - (u[0]*v[2] - v[0]*u[2]);
+					float nz = + (u[0]*v[1] - v[0]*u[1]);
+
+					/* draw opengl triangle */
+					if(!data)
+					{
+						glBegin(GL_TRIANGLES);
+							glNormal3f(nx,ny,nz);
+							glVertex3f(x1,y1,z1);
+							glVertex3f(x2,y2,z2);
+							glVertex3f(x3,y3,z3);
+						glEnd();
+					}
+
+					/* if a volume is provided, use data gradient for normals */
+					else
+					{
+						glBegin(GL_TRIANGLES);
+						for(unsigned int p=0; p<3; ++p)
+						{
+							/* get vertex coordinate and gradient (central difference) */
+							float x = triangles[m].p[p].x; float y = triangles[m].p[p].y; float z = triangles[m].p[p].z;
+							int xp = (int)((x>0) ? x-1 : x);       // previous point (x+1)
+							int xn = (int)((x<width-1) ? x+1 : x); // next point     (x-1)
+							int yp = (int)((y>0) ? y-1 : y);
+							int yn = (int)((y<height-1) ? y+1 : y);
+							int zp = (int)((z>0) ? z-1 : z);
+							int zn = (int)((z<depth-1) ? z+1 : z);
+
+							/* compute volume gradient and normalize it */
+							float gx = data[(((int)z)*height+((int)y))*width+(xn)] - data[(((int)z)*height+((int)y))*width+(xp)];
+							float gy = data[(((int)z)*height+(yn))*width+((int)x)] - data[(((int)z)*height+(yp))*width+((int)x)];
+							float gz = data[((zn)*height+((int)y))*width+((int)x)] - data[((zp)*height+((int)y))*width+((int)x)];
+							float g = sqrt(gx*gx + gy*gy + gz*gz); // norm
+							gx = gx/g; gy = gy/g; gz = gz/g; // normalize
+
+							/* check if gradient points to the same direction as the triangle normal */
+							float cos_theta = nx*gx + ny*gy + nz*gz;
+							if(cos_theta < 0) // revert gradient
+							{
+								gx = -gx,
+								gy = -gy,
+								gz = -gz;
+							}
+
+							/* draw triangle */
+							glNormal3f(gx,gy,gz); // normal
+							glVertex3f(x,y,z);    // vertex
+						}
+						glEnd();
+					}
+				} // end for
+			} // end band iteration
+		}
+		catch(Error &e) { e.tag("IsoSurface::march_cubes"); throw e; }
+	}
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/ce/cec77a65cbcf2407724f554d3a378c67ca15899b.svn-base b/.svn/pristine/ce/cec77a65cbcf2407724f554d3a378c67ca15899b.svn-base
new file mode 100644
index 0000000..b997123
Binary files /dev/null and b/.svn/pristine/ce/cec77a65cbcf2407724f554d3a378c67ca15899b.svn-base differ
diff --git a/.svn/pristine/d1/d1d6fe749a732acb8165812ee711c7ff83f22fe4.svn-base b/.svn/pristine/d1/d1d6fe749a732acb8165812ee711c7ff83f22fe4.svn-base
new file mode 100644
index 0000000..b74bd8b
--- /dev/null
+++ b/.svn/pristine/d1/d1d6fe749a732acb8165812ee711c7ff83f22fe4.svn-base
@@ -0,0 +1,316 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <io/ioraw.h>
+#include <tools/manipworld.h>
+#include <tools/transferfunction/editor.h>
+#include <tools/transferfunction/ramp.h>
+#include <tools/slidebar.h>
+#include <tools/clip.h>
+
+#include <display/display4d.h>
+
+/**
+ * @test Testing 4D volume rendering
+ */
+
+namespace TestDisplay4D
+{
+
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static int gModifiers = 0; // ctrl,alt,shift
+	static MouseButton gButton = NONE;
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+	int winh = 0;
+
+
+	Tools::TransferFunction::Editor tfe;
+	Tools::ManipWorld manipWorld;
+	Tools::SlideBar bar;
+	Tools::Clip clip;
+	Display::Volume4D displayVolume;
+	unsigned char* volume;
+	unsigned int size[4];
+	float spacing[4];
+	unsigned int frame = 0;
+	bool pause = 1;
+
+
+	void init()
+	{
+		glClearColor (0.25, 0.4, 0.6, 1.0);
+		
+		manipWorld.init();
+		manipWorld.translate(0,0,-3.6);
+
+		displayVolume.update(volume, size[0], size[1], size[2], size[3]);
+		tfe.update(&volume[frame*size[0]*size[1]*size[2]], size[0]*size[1]*size[2]);
+		tfe.clamp(0,1500);
+		tfe.add(new Tools::TransferFunction::Ramp(1000,1600));
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+		glMatrixMode(GL_MODELVIEW);
+
+		tfe.place(0,0, 200,100, w,h);
+		bar.place(20,h-50, w-40,20, w,h);
+		winh = h;
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		
+		/* Rotate volume with mouse movement */
+		manipWorld.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(spacing[0],spacing[1],spacing[2]);
+
+		glEnable(GL_DEPTH_TEST);
+
+		clip.enable();
+		clip.display();
+		displayVolume.display();
+		clip.disable();
+
+		glDisable(GL_DEPTH_TEST);
+
+		glPopMatrix();
+
+		tfe.display();
+		bar.display();
+		
+		glutSwapBuffers();
+	}
+
+	void mouse(int button, int state, int x, int y)
+	{
+		gModifiers = glutGetModifiers();
+
+		/* degrade the volume when moving the mouse, so the rendering is interactive */
+		if(state == GLUT_DOWN) displayVolume.setQuality(0.50);                         // low resolution (interactive)
+		else                 { displayVolume.setQuality(1.0f); glutPostRedisplay(); }  // full resolution
+
+		/* pick if shift is pressed */
+		if(gModifiers == GLUT_ACTIVE_SHIFT && button == GLUT_LEFT_BUTTON)
+		{
+		}
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				tfe.mouse(x,winh-y);
+				bar.mouse(x,winh-y);
+				
+				break;
+
+			case GLUT_RIGHT_BUTTON:
+				gButton = RIGHT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				if(tfe.mouse(x,winh-y))
+				{
+					tfe.colorMode();
+					glutPostRedisplay();
+				}
+				break;
+
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+			{
+				float dx = (x - gPrevMouse[0]);
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				if(bar.motion(x,winh-y))
+				{
+					frame = (int)(bar.get() * size[3]);
+					frame = min(size[3]-1, frame);
+					frame = max(0, frame);
+
+					if(volume) displayVolume.setFrame(frame);
+				}
+				else if(tfe.motion(x,winh-y))
+				{
+					if(tfe.lutchanged())
+						displayVolume.updateLut(tfe);
+				}
+				else
+				{
+					if(gModifiers == GLUT_ACTIVE_SHIFT)
+					{
+						clip.rotateWithScreen(dx, dy);
+						float plane_matrix[16]; clip.getPlaneMatrix(plane_matrix); displayVolume.setMprMatrix(plane_matrix);
+					}
+					else
+					{
+						manipWorld.rotateYAxis(dx);
+						manipWorld.rotateXAxis(dy);
+					}
+				}
+				glutPostRedisplay();
+				break;
+			}
+			case RIGHT:
+			{
+				float dy = ( gPrevMouse[1] - y);
+				gPrevMouse[1] = y;
+
+				if(gModifiers == GLUT_ACTIVE_SHIFT)
+				{
+					clip.slide(dy/40);
+					float plane_matrix[16]; clip.getPlaneMatrix(plane_matrix); displayVolume.setMprMatrix(plane_matrix);
+				}
+				else
+				{
+					float deltaZoom = 1.0f + dy / 100.0f;
+					manipWorld.zoom(deltaZoom);
+				}
+				glutPostRedisplay();
+				break;
+			}
+			default:
+				break;
+		}
+	}
+
+	void idle()
+	{
+		++frame; if(frame==size[3]) frame = 0;
+
+		if(gButton == NONE)
+			tfe.update(&volume[frame*size[0]*size[1]*size[2]], size[0]*size[1]*size[2]);
+
+		bar.set((float)frame/size[3]);
+
+		if(volume) displayVolume.setFrame(frame);
+
+		glutPostRedisplay();
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		bool refresh = true;
+
+		switch(key)
+		{
+		case ' ':
+			pause = !pause;
+			glutIdleFunc( (pause) ? NULL : idle );
+			break;
+
+		case 'q':
+			glutDestroyWindow(winid); // close window, terminate glut loop
+			exit(0); // on OSX for some reason the program does not terminate
+		default:
+			break;
+		}
+
+		if(refresh) glutPostRedisplay();
+	}
+
+	void specialkeyboard(int key, int x, int y)
+	{
+		bool refresh = true;
+
+		switch(key)
+		{
+		case GLUT_KEY_LEFT:
+			if(frame==0) frame = size[3];
+			--frame;
+			break;
+
+		case GLUT_KEY_RIGHT:
+			++frame; if(frame==size[3]) frame = 0;
+			break;
+
+		default: refresh = false; break;
+		}
+
+		if(refresh)
+		{
+			// Change accessories
+			if(gButton == NONE)
+				if(volume) tfe.update(&volume[frame*size[0]*size[1]*size[2]], size[0]*size[1]*size[2]);
+
+			bar.set((float)frame/size[3]);
+
+			// Change volume
+			if(volume) displayVolume.setFrame(frame);
+
+			glutPostRedisplay();
+		}
+	}
+
+
+	int main_init()
+	{
+		try
+		{
+			size[0] = 256,
+			size[1] = 80,
+			size[2] = 84,
+			size[3] = 32;
+
+			spacing[0] = 2/1.0f,
+			spacing[1] = 2/1.0f,
+			spacing[2] = 2/1.3f;
+
+			IO::Raw::read("data/uchar-256-80-84-32-baby.raw", volume, size[0]*size[1]*size[2]*size[3]);
+			
+			glutInitWindowSize(250, 250);
+			winid = glutCreateWindow("display4d");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+			glutSpecialFunc(specialkeyboard);
+		
+			//glutMainLoop();
+			
+			return 0;
+		}
+		catch(const Error &e) { e.print(); }
+		catch(...) { printf("unknown error\n"); }
+
+		return 1;
+	}
+
+} // namespace
diff --git a/debian/libvd-dev.dirs b/.svn/pristine/d4/d43a01d72cbb9e74877e19e70423d61ee3a866be.svn-base
similarity index 100%
rename from debian/libvd-dev.dirs
rename to .svn/pristine/d4/d43a01d72cbb9e74877e19e70423d61ee3a866be.svn-base
diff --git a/.svn/pristine/d4/d43d4285205f14bf138585bb4d0580159885db34.svn-base b/.svn/pristine/d4/d43d4285205f14bf138585bb4d0580159885db34.svn-base
new file mode 100644
index 0000000..8035149
--- /dev/null
+++ b/.svn/pristine/d4/d43d4285205f14bf138585bb4d0580159885db34.svn-base
@@ -0,0 +1,152 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	point3d.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <display/point3d.h>
+#include <error.h>
+
+namespace libvdDisplay
+{
+	Point3D::Point3D()
+	:	m_id(0)
+	{
+	}
+
+
+	Point3D::~Point3D()
+	{
+		if(glIsList(m_id)) glDeleteLists(m_id,1);
+	}
+
+
+	void Point3D::display()
+	{
+		if(!glIsList(m_id)) return;
+
+		/* draw list */
+		glCallList(m_id);
+	}
+
+
+	void Point3D::update(const float* points,
+	                     unsigned int nbPoints)
+	{
+		if(nbPoints && !points) throw LOCATE(Error("invalid list of points"));
+		/* Create a new display list */
+		if(glIsList(m_id)) glDeleteLists(m_id,1);
+		m_id = glGenLists(1); glCheckError();
+		glNewList(m_id, GL_COMPILE); glCheckError();
+
+		/* Display list of points */
+		for(unsigned int i=0; i<nbPoints; ++i)
+			display(&points[i*3]);
+
+		/* End list */
+		glEndList();
+	}
+
+
+	void Point3D::display(const float* point)
+	{
+		// list of face points and normals
+		// 4 first triplets are clockwise face point
+		// last triplet is the face normal
+		float offset[6][5][3] = {
+		{	{-0.5,+0.5,+0.5}, // 74033047
+			{-0.5,-0.5,+0.5},
+			{-0.5,-0.5,-0.5},
+			{-0.5,+0.5,-0.5},
+			{-1,0,0}	},
+		{	{+0.5,-0.5,+0.5}, // 56211265
+			{+0.5,+0.5,+0.5},
+			{+0.5,+0.5,-0.5},
+			{+0.5,-0.5,-0.5},
+			{+1,0,0}	},
+		{	{-0.5,-0.5,+0.5}, // 45100154
+			{+0.5,-0.5,+0.5},
+			{+0.5,-0.5,-0.5},
+			{-0.5,-0.5,-0.5},
+			{0,-1,0}	},
+		{	{+0.5,+0.5,+0.5}, // 67322376
+			{-0.5,+0.5,+0.5},
+			{-0.5,+0.5,-0.5},
+			{+0.5,+0.5,-0.5},
+			{0,+1,0}	},
+		{	{-0.5,-0.5,-0.5}, // 01233210
+			{+0.5,-0.5,-0.5},
+			{+0.5,+0.5,-0.5},
+			{-0.5,+0.5,-0.5},
+			{0,0,-1}	},
+		{	{-0.5,+0.5,+0.5}, // 76544567
+			{+0.5,+0.5,+0.5},
+			{+0.5,-0.5,+0.5},
+			{-0.5,-0.5,+0.5},
+			{0,0,+1}	}	};
+  
+		/* Translate in world space */
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glTranslatef(point[0], point[1], point[2]);
+
+		/* Lighting helps visualization of the mesh */
+		/* Nice coloring for the mesh */
+		glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
+		glEnable(GL_COLOR_MATERIAL);
+
+		//glEnable(GL_LIGHTING); // lignthing should be enabled outside
+		//glEnable(GL_LIGHT0);
+
+		/* start lists of quads */
+		glBegin(GL_QUADS);
+
+		for(unsigned int m=0; m<6; ++m)
+		{
+			glNormal3f(offset[m][4][0], offset[m][4][1], offset[m][4][2]);
+			glVertex3f(offset[m][0][0], offset[m][0][1], offset[m][0][2]);
+			glVertex3f(offset[m][1][0], offset[m][1][1], offset[m][1][2]);
+			glVertex3f(offset[m][2][0], offset[m][2][1], offset[m][2][2]);
+			glVertex3f(offset[m][3][0], offset[m][3][1], offset[m][3][2]);
+		}
+
+		glEnd();
+
+		glPopMatrix();
+
+		/* Leaving function */
+		//glDisable(GL_LIGHT0);
+		//glDisable(GL_LIGHTING);
+		glDisable(GL_COLOR_MATERIAL);
+  	}
+
+} // namespace
diff --git a/debian/patches/create_symlink_so.patch b/.svn/pristine/d6/d680b01fe7a8eed047eb75166a94f154c2a7f936.svn-base
similarity index 82%
rename from debian/patches/create_symlink_so.patch
rename to .svn/pristine/d6/d680b01fe7a8eed047eb75166a94f154c2a7f936.svn-base
index 16c6dcf..39cf690 100644
--- a/debian/patches/create_symlink_so.patch
+++ b/.svn/pristine/d6/d680b01fe7a8eed047eb75166a94f154c2a7f936.svn-base
@@ -1,7 +1,7 @@
-Index: libvd-1.1.0+svn7/src/Makefile
+Index: libvd-1.1.0/src/Makefile
 ===================================================================
---- libvd-1.1.0+svn7.orig/src/Makefile	2017-09-18 01:12:26.807780099 +0200
-+++ libvd-1.1.0+svn7/src/Makefile	2017-09-18 01:12:49.255641819 +0200
+--- libvd-1.1.0.orig/src/Makefile
++++ libvd-1.1.0/src/Makefile
 @@ -4,9 +4,13 @@
  
  ### FILES #
@@ -17,7 +17,7 @@ Index: libvd-1.1.0+svn7/src/Makefile
  else
  EXEC    = ../lib/libvd.a
  endif
-@@ -26,7 +30,7 @@
+@@ -26,7 +30,7 @@ LIBS      = `if [ -f /mach_kernel ]; the
  INCLUDES  = -I../
  
  #Used in SONAME for shared library
@@ -26,7 +26,7 @@ Index: libvd-1.1.0+svn7/src/Makefile
  
  ### MAKEFILES RULES #
  
-@@ -45,6 +49,7 @@
+@@ -45,6 +49,7 @@ ifeq ($(DESTDIR),"")
  	DESTDIR=/usr/
  endif
  
@@ -34,16 +34,16 @@ Index: libvd-1.1.0+svn7/src/Makefile
  .PHONY : all clean depend tar
  
  
-@@ -53,7 +58,7 @@
+@@ -53,7 +58,7 @@ all : $(EXEC)
  $(EXEC) : $(OBJECTS)
  ifeq ($(SHARED),1)
  	#Build shared library
 -	gcc -fPIC --shared -o $@ $+ -Wl,-soname,libvd.so.$(LIBVD_VERSION)  
-+	gcc -fPIC --shared -o $@ $+ $(LDFLAGS) -Wl,-soname,libvd.so.$(MAJOR_VERSION)
++	gcc -fPIC --shared -o $@ $+ -Wl,-soname,libvd.so.$(MAJOR_VERSION)
  else
  	#build static library
  	ar -r $@ $+
-@@ -90,18 +95,20 @@
+@@ -90,18 +95,20 @@ zip: clean depend
  
  .PHONY: install
  install: 
diff --git a/.svn/pristine/db/db3fab1d4c89faa41b12f1c786b8ca29e46f07ca.svn-base b/.svn/pristine/db/db3fab1d4c89faa41b12f1c786b8ca29e46f07ca.svn-base
new file mode 100644
index 0000000..1851fa3
--- /dev/null
+++ b/.svn/pristine/db/db3fab1d4c89faa41b12f1c786b8ca29e46f07ca.svn-base
@@ -0,0 +1,134 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	display2d_drawpixels.h
+ * @author	Herve Lombaert
+ * @date	Tue Jun 6 2006
+ */
+
+#ifndef DISPLAY2D_DRAWPIXELS_H
+#define DISPLAY2D_DRAWPIXELS_H
+
+
+#include <cstdlib>
+
+
+namespace libvdDisplay
+{
+	/**
+	 * Draw an image with \c glDrawPixels() (write to frame buffer)
+	 * Currently support any native image type
+	 * (ie. unsigned char, unsigned short, and others)
+	 * use update and display when image is changed:
+	 *
+	 * \code
+	 *	unsigned char* image = new unsigned char [100*100]; // fill data
+	 *	Display::ImageDrawPixels disp;
+	 *
+	 *	disp.update(image, 100, 100);
+	 *	disp.display();
+	 * \endcode
+	 *
+	 * \image html displayimage.png
+	 * \image latex displayimage.png
+	 *
+	 * Texture are not used, there is some performance issue when
+	 * the texture needs to be update very fast (eg. playing a movie)
+	 */
+
+
+	class ImageDrawPixels {
+	public:
+		ImageDrawPixels();
+		~ImageDrawPixels();
+		
+		/** Update the viewer with a new 2D image */
+		template <typename DataType>
+		void update(const DataType* image, unsigned int width, unsigned int height);
+
+		/** Draw the image with glDrawPixels
+		 * if you need to position the image somewhere else
+		 * use glRaster(x,y) instead of glTranslate, also glScale cannot be used */
+		void display() const;
+
+		void* m_frame;            ///< frame buffer
+		unsigned int m_size[2];   ///< frame size
+		GLenum m_format;          ///< glDrawPixels param
+		GLenum m_type;            ///< glDrawPixels param
+
+	private:
+		/// DrawPixels Arguments
+		template <typename T>
+		struct DrawPixelsArgs { static GLenum format, type; };
+	};
+
+
+	template <typename DataType>
+	void ImageDrawPixels::update(const DataType* image, unsigned int width, unsigned int height)
+	{
+		if(m_size[0] != width ||
+		   m_size[1] != height ||
+		   m_format  != DrawPixelsArgs<DataType>::format ||
+		   m_type    != DrawPixelsArgs<DataType>::type)
+		{
+			if(m_frame) free(m_frame); // delete any allocated memory
+
+			// image size
+			m_size[0] = width;
+			m_size[1] = height;
+
+			// allocate new memory
+			m_frame = malloc(m_size[0]*m_size[1]*sizeof(DataType));
+			
+			// glDrawPixels arguments
+			m_format = DrawPixelsArgs<DataType>::format;
+			m_type   = DrawPixelsArgs<DataType>::type;
+		}
+
+		// fill frame buffer
+		DataType* ptr = reinterpret_cast<DataType*>(m_frame);
+		for(unsigned int i=0; i<width*height; ++i)
+			ptr[i] = image[i];
+	}
+
+
+	// specialization for image type
+	template <typename T> GLenum ImageDrawPixels::DrawPixelsArgs<T>   ::format = GL_LUMINANCE;
+
+
+#ifdef COLOR_H
+
+#ifndef GL_BGR
+#define GL_BGR GL_BGR_EXT
+#endif
+
+	// specialization for image type when it is template of template
+	template <typename T> struct ImageDrawPixels::DrawPixelsArgs<color<T> > { static GLenum format, type; };
+	template <typename T> GLenum ImageDrawPixels::DrawPixelsArgs<color<T> >::type = DrawPixelsArgs<T>::type;
+	template <typename T> GLenum ImageDrawPixels::DrawPixelsArgs<color<T> >::format = GL_BGR;
+
+#endif
+
+
+} // namespace
+
+
+#endif
diff --git a/.svn/pristine/dc/dc86f20b990aff4a9114df7097d748fa40a5805c.svn-base b/.svn/pristine/dc/dc86f20b990aff4a9114df7097d748fa40a5805c.svn-base
new file mode 100644
index 0000000..690ba89
--- /dev/null
+++ b/.svn/pristine/dc/dc86f20b990aff4a9114df7097d748fa40a5805c.svn-base
@@ -0,0 +1,467 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/** @file	SmoothMask4D.h
+ *	@author	Herve Lombaert
+ *	@date	March 1st, 2007
+ *
+ *	From a orthogonal mask, create a smooth mesh, and display it
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <display/smoothmask4d.h>
+
+
+namespace libvdDisplay
+{
+
+	SmoothMask4D::SmoothMask4D()
+	:	m_meshid(0),
+		m_nb_frames(0),
+		m_frame(0)
+	{
+	}
+
+
+	SmoothMask4D::~SmoothMask4D()
+	{
+		if(glIsList(m_meshid)) glDeleteLists(m_meshid,m_nb_frames);
+	}
+
+
+	void SmoothMask4D::display() const
+	{
+		if(!glIsList(m_meshid)) return;
+
+		/* draw list */
+		glCallList(m_meshid+m_frame);
+	}
+
+	
+	void SmoothMask4D::clear()
+	{
+		if(glIsList(m_meshid)) glDeleteLists(m_meshid,m_nb_frames);
+		m_meshid    = 0;
+		m_nb_frames = 0;
+		m_frame     = 0;
+	}
+
+
+	void SmoothMask4D::setFrame(unsigned int frame)
+	{
+		CHECKRANGE("frame out of range", frame, 0, m_nb_frames);
+		m_frame = frame;
+	}
+
+
+	/*
+	   Given a grid cell and an isolevel, calculate the triangular
+	   facets required to represent the isosurface through the cell.
+	   Return the number of triangular facets, the array "triangles"
+	   will be loaded up with the vertices at most 5 triangular facets.
+		0 will be returned if the grid cell is either totally above
+	   of totally below the isolevel.
+	*/
+	int SmoothMask4D::Polygonise(GRIDCELL grid,double isolevel,TRIANGLE *triangles)
+	{
+		int i,ntriang;
+		int cubeindex;
+		XYZ vertlist[12];
+
+		int edgeTable[256]={
+			0x0  , 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c,
+			0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,
+			0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c,
+			0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,
+			0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c,
+			0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,
+			0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac,
+			0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,
+			0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c,
+			0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,
+			0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc,
+			0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,
+			0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c,
+			0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,
+			0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc ,
+			0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,
+			0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc,
+			0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,
+			0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c,
+			0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,
+			0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc,
+			0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,
+			0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c,
+			0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460,
+			0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac,
+			0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0,
+			0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c,
+			0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230,
+			0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c,
+			0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190,
+			0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c,
+			0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0   };
+		int triTable[256][16] =
+			{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1},
+			{3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1},
+			{3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1},
+			{3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1},
+			{9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},
+			{2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1},
+			{8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},
+			{4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1},
+			{3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1},
+			{1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1},
+			{4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1},
+			{4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
+			{5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1},
+			{2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1},
+			{9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
+			{0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},
+			{2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1},
+			{10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1},
+			{5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1},
+			{5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1},
+			{9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1},
+			{1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1},
+			{10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1},
+			{8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1},
+			{2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1},
+			{7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1},
+			{2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1},
+			{11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1},
+			{5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1},
+			{11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1},
+			{11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1},
+			{9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1},
+			{2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1},
+			{6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1},
+			{3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1},
+			{6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},
+			{10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1},
+			{6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1},
+			{8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1},
+			{7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1},
+			{3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1},
+			{0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1},
+			{9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1},
+			{8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1},
+			{5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1},
+			{0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1},
+			{6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1},
+			{10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1},
+			{10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1},
+			{8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1},
+			{1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1},
+			{0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1},
+			{10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1},
+			{3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1},
+			{6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1},
+			{9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1},
+			{8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1},
+			{3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1},
+			{6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1},
+			{0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1},
+			{10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1},
+			{10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1},
+			{2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1},
+			{7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1},
+			{7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1},
+			{2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1},
+			{1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1},
+			{11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1},
+			{8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1},
+			{0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1},
+			{7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
+			{10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
+			{2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
+			{6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1},
+			{7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1},
+			{2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1},
+			{10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1},
+			{10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1},
+			{0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1},
+			{7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1},
+			{6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1},
+			{8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1},
+			{6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1},
+			{4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1},
+			{10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1},
+			{8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1},
+			{0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1},
+			{1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1},
+			{8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1},
+			{10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1},
+			{4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1},
+			{10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},
+			{11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1},
+			{9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},
+			{6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1},
+			{7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1},
+			{3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1},
+			{7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1},
+			{3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1},
+			{6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1},
+			{9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1},
+			{1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1},
+			{4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1},
+			{7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1},
+			{6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1},
+			{3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1},
+			{0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1},
+			{6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1},
+			{0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1},
+			{11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1},
+			{6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1},
+			{5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1},
+			{9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1},
+			{1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1},
+			{1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1},
+			{10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1},
+			{0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1},
+			{5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1},
+			{10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1},
+			{11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1},
+			{9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1},
+			{7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1},
+			{2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1},
+			{8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1},
+			{9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1},
+			{9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1},
+			{1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1},
+			{9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1},
+			{5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1},
+			{0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1},
+			{10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1},
+			{2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1},
+			{0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1},
+			{0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1},
+			{9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1},
+			{5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1},
+			{3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1},
+			{5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1},
+			{8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1},
+			{9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1},
+			{1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1},
+			{3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1},
+			{4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1},
+			{9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1},
+			{11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1},
+			{11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1},
+			{2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1},
+			{9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1},
+			{3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1},
+			{1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1},
+			{4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1},
+			{3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1},
+			{0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1},
+			{1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}};
+
+		/*
+		   Determine the index into the edge table which
+		   tells us which vertices are inside of the surface
+		*/
+		cubeindex = 0;
+		if (grid.val[0] < isolevel) cubeindex |= 1;
+		if (grid.val[1] < isolevel) cubeindex |= 2;
+		if (grid.val[2] < isolevel) cubeindex |= 4;
+		if (grid.val[3] < isolevel) cubeindex |= 8;
+		if (grid.val[4] < isolevel) cubeindex |= 16;
+		if (grid.val[5] < isolevel) cubeindex |= 32;
+		if (grid.val[6] < isolevel) cubeindex |= 64;
+		if (grid.val[7] < isolevel) cubeindex |= 128;
+
+		/* Cube is entirely in/out of the surface */
+		if (edgeTable[cubeindex] == 0)
+		   return(0);
+
+		/* Find the vertices where the surface intersects the cube */
+		if (edgeTable[cubeindex] & 1)
+		   vertlist[0] = VertexInterp(isolevel,grid.p[0],grid.p[1],grid.val[0],grid.val[1]);
+		if (edgeTable[cubeindex] & 2)
+		   vertlist[1] = VertexInterp(isolevel,grid.p[1],grid.p[2],grid.val[1],grid.val[2]);
+		if (edgeTable[cubeindex] & 4)
+		   vertlist[2] = VertexInterp(isolevel,grid.p[2],grid.p[3],grid.val[2],grid.val[3]);
+		if (edgeTable[cubeindex] & 8)
+		   vertlist[3] = VertexInterp(isolevel,grid.p[3],grid.p[0],grid.val[3],grid.val[0]);
+		if (edgeTable[cubeindex] & 16)
+		   vertlist[4] = VertexInterp(isolevel,grid.p[4],grid.p[5],grid.val[4],grid.val[5]);
+		if (edgeTable[cubeindex] & 32)
+		   vertlist[5] = VertexInterp(isolevel,grid.p[5],grid.p[6],grid.val[5],grid.val[6]);
+		if (edgeTable[cubeindex] & 64)
+		   vertlist[6] = VertexInterp(isolevel,grid.p[6],grid.p[7],grid.val[6],grid.val[7]);
+		if (edgeTable[cubeindex] & 128)
+		   vertlist[7] = VertexInterp(isolevel,grid.p[7],grid.p[4],grid.val[7],grid.val[4]);
+		if (edgeTable[cubeindex] & 256)
+		   vertlist[8] = VertexInterp(isolevel,grid.p[0],grid.p[4],grid.val[0],grid.val[4]);
+		if (edgeTable[cubeindex] & 512)
+		   vertlist[9] = VertexInterp(isolevel,grid.p[1],grid.p[5],grid.val[1],grid.val[5]);
+		if (edgeTable[cubeindex] & 1024)
+		   vertlist[10] = VertexInterp(isolevel,grid.p[2],grid.p[6],grid.val[2],grid.val[6]);
+		if (edgeTable[cubeindex] & 2048)
+		   vertlist[11] = VertexInterp(isolevel,grid.p[3],grid.p[7],grid.val[3],grid.val[7]);
+
+		/* Create the triangle */
+		ntriang = 0;
+		for (i=0;triTable[cubeindex][i]!=-1;i+=3) {
+		   triangles[ntriang].p[0] = vertlist[triTable[cubeindex][i  ]];
+		   triangles[ntriang].p[1] = vertlist[triTable[cubeindex][i+1]];
+		   triangles[ntriang].p[2] = vertlist[triTable[cubeindex][i+2]];
+		   ntriang++;
+		}
+
+		return(ntriang);
+	}
+
+	/*
+	   Linearly interpolate the position where an isosurface cuts
+	   an edge between two vertices, each with their own scalar value
+	*/
+	SmoothMask4D::XYZ SmoothMask4D::VertexInterp(double isolevel, XYZ p1, XYZ p2, double valp1, double valp2)
+	{
+		double mu;
+		XYZ p;
+
+		if (fabs(isolevel-valp1) < 0.00001)
+		   return(p1);
+		if (fabs(isolevel-valp2) < 0.00001)
+		   return(p2);
+		if (fabs(valp1-valp2) < 0.00001)
+		   return(p1);
+		mu = (isolevel - valp1) / (valp2 - valp1);
+		p.x = p1.x + mu * (p2.x - p1.x);
+		p.y = p1.y + mu * (p2.y - p1.y);
+		p.z = p1.z + mu * (p2.z - p1.z);
+
+		return(p);
+	}
+
+
+} // namespace
\ No newline at end of file
diff --git a/.svn/pristine/dd/dd34aaca6f4b7a9f37de65794f5551a18b889c3d.svn-base b/.svn/pristine/dd/dd34aaca6f4b7a9f37de65794f5551a18b889c3d.svn-base
new file mode 100644
index 0000000..5994d69
--- /dev/null
+++ b/.svn/pristine/dd/dd34aaca6f4b7a9f37de65794f5551a18b889c3d.svn-base
@@ -0,0 +1,46 @@
+/**
+ * @mainpage libvd - visualization library
+ *
+ * \section What
+ * libvd is a very simple OpenGL visualization library. It has a 3D volume renderer.
+ * As each functionnality is well isolated and commented, this library is perfect for
+ * quick visualization, or for learning.
+ *
+ * \image html libvd-demo.png "A clip plane is used to visualize the cardiac chambers (the left atrium is picked with the red marker) from a 128x128x128 volume.<br>Visualization is controled with a transfer function on the lower left corner"
+ * \image latex libvd-demo.png "A clip plane is used to visualize the cardiac chambers (the left atrium is picked with the red marker) from a 128x128x128 volume.<br>Visualization is controled with a transfer function on the lower left corner"
+ *
+ * \section Why
+ * While much larger scale visualization libraries exist out there (e.g. vtk), the learning
+ * curve might be steep. If you like simple code that works in almost any situation, or if
+ * if you like to h ack your own code, this library will be great for you.
+ *
+ * \section How
+ * Here are some lines required to visualize a volume:
+ *
+ * \code
+ *	// Create and read a volume
+ *	unsigned short* volume = NULL;
+ *	IO::Raw::read(volume, "volume.img", 512,512,370);
+ *
+ *	// Create a volume renderer
+ *	Display::Volume renderer;
+ *	renderer.update(volume);
+ *
+ *	// Display the volume in OpenGL
+ *	renderer.display();
+ * \endcode
+ *
+ * Pretty simple, eh?
+ *
+ * \section When
+ * When I started my PhD in 2005, I needed a 3D visualization library. So I
+ * decided to code my own, just because I like coding.
+ *
+ * \section But
+ * As this project has no commercial target, and as it is still a work
+ * in progress, the code and interface will change from time to time.
+ * If you are willing to do some serious visualization you should probably
+ * be using VTK. This project is just for fun. It might be handy if you
+ * like to hack code.
+ *
+ */
diff --git a/.svn/pristine/de/decef8e9c050ad1af9f2b2c4c8a071dc5a30251c.svn-base b/.svn/pristine/de/decef8e9c050ad1af9f2b2c4c8a071dc5a30251c.svn-base
new file mode 100644
index 0000000..f200c06
--- /dev/null
+++ b/.svn/pristine/de/decef8e9c050ad1af9f2b2c4c8a071dc5a30251c.svn-base
@@ -0,0 +1,431 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ *	@file	display3d.h
+ *	@author	Herve Lombaert
+ *	@date	October 10th, 2006
+ *
+ */
+
+#ifndef DISPLAY3D_H
+#define DISPLAY3D_H
+
+#ifdef __linux__
+#define GL_GLEXT_PROTOTYPES 1
+#include <GL/gl.h>
+#include <GL/glext.h>
+#endif
+
+#include <limits>
+#include <error.h>
+
+
+namespace libvdDisplay
+{
+	/**
+	 * @class Volume
+	 * @brief 3D volume renderer
+	 *
+	 * This class is a simple volume renderer. The rendered planes are
+	 * aligned with the screen.
+	 *
+	 * \image html displayvolume.png "A human heart"
+	 * \image latex displayvolume.png "A human heart"
+	 *
+	 * A 3D texture is used to render the volume and a fragment shader
+	 * changes the way the volume is colorized with a lookup table.
+	 *
+	 * When drawing the volume it is centered at (0,0,0) and has the
+	 * unit size (1,1,1). You can scale or modify its orientation with
+	 * \c glScale() and \c glMultMatrix() when drawing it in your application.
+	 *
+	 * Here is an example of code:
+	 *
+	 * \code
+	 *	unsigned short* volume; // also fill the data
+	 *	Display::Volume disp;
+	 *
+	 *	disp.update(volume, 100,100,100);
+	 *	disp.updateRamp(0,500);
+	 *	disp.display();
+	 * \endcode
+	 *
+	 * If you want to blend an object with the volume, enable \c GL_DEPTH_TEST
+	 * and draw the objects first before the volume.
+	 *
+	 * Internally, it uses 3D texture, as well as a fragment shader. That
+	 * means you need to load OpenGL extensions before using this code.
+	 * You can do it with for instance Glew, GLee.
+	 *
+	 * Internally, the lookup table has typically 4096 bins (the maximum
+	 * texture size). This may be a problem if you have more than 4096
+	 * values in your volume, the lut resolution decreases.
+	 *
+	 * Internally, it creates a temporary volume with normalized intensities
+	 * with the right opengl compatible size. If the volume is too large
+	 * the texture data is going to be smaller. This can be set with
+	 * \c setMaxTextureSize().
+	 *
+	 * Different display modes are available:
+	 *   VRT - the regular volume renderer where intensities accumulates
+	 *   MIP - maximum intensity projection where only the max intensity is
+	 *         displayed
+	 *   MPR - shows an arbitrary slice of the volume, it might be usefull
+	 *         to use this mode with alignWithScreen() to display the
+	 *         mpr in a 2D window with other geometries, and with
+	 *         setMprMatrix() to set the mpr plane orientation and position
+	 */
+
+	class Volume
+	{
+	public:
+		enum Mode {
+			VRT,	///< Volume Rendering Technique, accumulate voxel intensities (default)
+			MIP,	///< Maximum Intensity Projection, display the brightest voxels
+			MPR,	///< Multi Planar Reconstruction, an arbitrary slice of the volume
+		};
+
+		Volume();
+		~Volume();
+
+	public:
+
+		/** update visualizer with a new volume
+		 *  this creates a 3D texture on the graphic memory
+		 *  (the max size is set with setMaxTextureSize) */
+		template <typename DataType>
+		void update(const DataType* data, unsigned int w, unsigned int h, unsigned int d);
+
+		/** display the 3D volume */
+		void display() const;
+
+		/** set rendering mode
+		 *  @param mode rendering mode can be either VRT, MIP, MPR */
+		void setMode(Mode mode);
+
+		/** get rendering mode */
+		Mode getMode() const;
+
+		/** set mpr plane matrix */
+		void setMprMatrix(const float matrix[]);
+
+	public:
+
+		/** update the lookup table, this uses a ramp to defines redish colors
+		 *  @param min lower bound of the ramp
+		 *  @param max higher bound of the ramp */
+		void updateRamp(float min, float max);
+
+		/** update lookup table, this uses an arbitrary lut
+		 *  @param lut RGBA values, ranges from 0..1
+		 *  @param lutSize number of RGBA entries, ranges from all posible data intensities */
+		void updateLut(const float* lut, unsigned int lutSize);
+
+		/** update lookup table with an external lut object
+		 *  @param lut lut object, must implement the method "get(intensity, r,g,b,a)"
+		 *  which takes an intensity and returns the corresponding rgba (normalized between 0..1)
+		 *  @see Tools::TransferFunction::Ramp
+		 *  @see Tools::TransferFunction::Trapezoid
+		 *  @see Tools::TransferFunction::Editor */
+		template <typename Lut>
+		void updateLut(const Lut &lut);
+
+		/** align geometry with screen
+		 *  all further geometry will be aligned with the screen,
+		 *  it multiplies the modelview matrix by the inverse of the mpr plane matrix
+		 *  make sure to apply all transformations (e.g., scaling) before aligning with screen
+		 *  usefull when displaying the mpr plane */
+		void alignWithScreen() const;
+
+		/** set the rendering quality (default is 1)
+		 *  it changes the number of rendering planes, usefull when interactivity becomes important
+		 *  @param quality if quality is < 1, less planes are used however the rendering is much faster
+		 *                 if the quality is > 1, more planes are used, however the rendering gets slower */
+		void setQuality(float quality);
+
+		/** use interpolation to generate intervoxels
+		 *  @param interpolation 0 (no interpolation, use the nearest neighbor), 1 (use linear interpolation)
+		 */
+		void setInterpolation(int interpolation);
+
+		/** set the maximum texture size
+		 *  this must be a opengl compatible size (2^m) */
+		void setMaxTextureSize(unsigned int w, unsigned int h, unsigned int d);
+
+		/** get the intensity range of the displayed volume (values casted to float) */
+		void getIntensityRange(float &min, float &max) const;
+
+	protected:
+
+		/** initialize the shader */
+		void initShader();
+
+		/** get the texture size
+		 *  the texture size is opengl compatible */
+		static void getTextureSize(const unsigned int data_size[],
+								   unsigned int texture_size[],
+								   const unsigned int max_texture_size[]);
+
+		/** create texture data
+		 *  the texture size is opengl compatible
+		 *  intensities are normalized for a better lut resolution
+		 *  @param min,max min and max intensity value of the data */
+		template <typename DataType, typename DataOutType>
+		static DataOutType* createTextureData(const DataType* data,
+											  const unsigned int data_size[],
+											  DataType &min,
+											  DataType& max,
+											  const unsigned int texture_size[]);
+
+		/** render the planes in 3D
+		 *  this is the actual volume renderer */
+		void render() const;
+
+		/** render a slice in 3D 
+		 *  @param m plane matrix */
+		void renderSlice(const float m[]) const;
+
+		/** compute the number of rendering planes
+		 *  evaluate how many pixels are used to display the volume */
+		int getNbRenderingPlanes() const;
+
+		/** transform a point with a matrix (pp = m*pp) */
+		static void transf(const float p[], const float m[], float pp[]);
+
+		/** transpose, also invert a orthonormal matrix */
+		static void transp(float m[]);
+
+		/** normalize the rotation part of the matrix */
+		static void normalize(float m[]);
+
+	protected:
+		Mode m_rendering_mode;              ///< Rendering mode (default is VRT)
+		float m_quality;                    ///< Rendering quality, this affects the number of rendering planes
+		GLint m_interpolation;              ///< what interpolation to use
+		GLuint m_data_texture;              ///< handle on 3D texture
+		unsigned int m_max_texture_size[3]; ///< maximum texture size (default is 256^3)
+		float m_texture_scale[3];           ///< texture scale (scale to opengl compatible size)
+		float m_intensity_range[2];         ///< data intensity range (min and max value of the data)
+		float m_mpr_matrix[16];             ///< mpr plane matrix
+
+	protected:
+		GLuint m_gpu_program;     ///< handle on the GPU program (0 when uninitialized)
+		GLuint m_fragment_shader; ///< handle on the fragment shader
+		float* m_internal_lut;    ///< normalized lookup table (0..GL_MAX_TEXTURE_SIZE)
+		GLuint m_lut_texture;     ///< handle on lookup table texture
+
+	protected:
+		/// provides usefull constants depending on the data type
+		template <typename DataType>
+		struct OpenGLArgs {
+			static GLenum type;  ///< eg. GL_UNSIGNED_BYTE, or GL_FLOAT
+			static DataType min; ///< eg. 0   for uchar, or -1.0f for float
+			static DataType max; ///< eg. 255 for uchar, or +1.0f for float
+		};
+	};
+
+} // namespace
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Implementation
+//////////////////////////////////////////////////////////////////////////////
+
+namespace libvdDisplay
+{
+	/**
+	 *	Create a 3D texture
+	 *	Template tools creates the right 3D texture
+	 *  Initialize shader is this is the first update
+	 */
+	template <typename DataType>
+	void Volume::update(const DataType* data, unsigned int width, unsigned int height, unsigned int depth)
+	{
+		/* internal texture data */
+		typedef unsigned char TextureType; // save some memory here
+		//typedef typename DataType TextureType;
+
+		/* check inputs */
+		if(!data || !width || !height || !depth) throw LOCATE(Error("wrong inputs"));
+
+		/* if this is the first function call, create shaders */
+		if(!m_gpu_program) initShader();
+
+		/* use the GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* create texture buffer */
+		unsigned int data_size[3] = {width, height, depth};
+		unsigned int texture_size[3];
+		DataType min, max;
+		getTextureSize(data_size, texture_size, m_max_texture_size);
+		TextureType* buffer = createTextureData<DataType, TextureType>(data, data_size, min, max, texture_size);
+
+		/* set the texture scale */
+		for(unsigned int i=0; i<3; ++i) m_texture_scale[i] = (float)data_size[i] / texture_size[i];
+
+		/* Create and send 3D texture */
+		if(!glIsTexture(m_data_texture)) glGenTextures(1, &m_data_texture); glCheckError();
+		glBindTexture(GL_TEXTURE_3D, m_data_texture); glCheckError();
+		glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
+		glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
+		glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);
+		glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, m_interpolation);
+		glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, m_interpolation);
+		glTexImage3D(GL_TEXTURE_3D,
+				 0,
+				 GL_LUMINANCE,
+				 texture_size[0],
+				 texture_size[1],
+				 texture_size[2],
+				 0,
+				 GL_LUMINANCE,
+				 OpenGLArgs<TextureType>::type,
+				 buffer);
+		glCheckError();
+
+		/* Check if memory has been allocated on graphic card */
+		glEnable(GL_TEXTURE_3D);
+		glBindTexture(GL_TEXTURE_3D, m_data_texture); glCheckError();
+		glDisable(GL_TEXTURE_3D);
+
+		/* delete texture buffer, it is now transfered to the graphic card */
+		delete [] buffer;
+
+		/* use a default lookup table */
+		m_intensity_range[0] = static_cast<float>(min);
+		m_intensity_range[1] = static_cast<float>(max);
+		updateRamp(m_intensity_range[0], m_intensity_range[1]);
+
+		/* stop using the GPU program until requested */
+		glUseProgram(0);
+	}
+
+
+	template <typename Lut>
+	void Volume::updateLut(const Lut& lut)
+	{
+		/* use the GPU program */
+		glUseProgram(m_gpu_program);
+
+		/* internal lut is normalized (maximum texture size)
+		 * lut[0] is the lowest volume value and
+		 * lut[size-1] is the highest voluem value */
+		GLint size = 4096;
+		glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); // query what the graphic card max texture size
+
+		/* set lookup table */
+		if(!m_internal_lut) m_internal_lut = new float [size*4];
+
+		/* copy lut */
+		float scale = (float)(m_intensity_range[1]-m_intensity_range[0])/size;
+		for(int i=0; i<size; ++i)
+		{
+			/* find where i should be in given lut
+			 * need to convert i which ranges from m_minVal to m_maxVal (normalized to 0..size)
+			 * to the lut size which is 0 to lutSize */
+			float intensity = i*scale + m_intensity_range[0];
+
+			float r=0,g=0,b=0,a=0;
+			lut.get(intensity, r,g,b,a);
+
+			m_internal_lut[i*4+0] = r;
+			m_internal_lut[i*4+1] = g;
+			m_internal_lut[i*4+2] = b;
+			m_internal_lut[i*4+3] = a;
+		}
+
+		/* Create 1D texture for lookup table */
+		if(!glIsTexture(m_lut_texture)) glGenTextures(1, &m_lut_texture);
+		glBindTexture(GL_TEXTURE_2D, m_lut_texture); glCheckError();
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+		glTexImage2D(GL_TEXTURE_2D,
+		             0,
+		             GL_RGBA8,
+		             size, // lut size
+		             1,
+		             0,
+		             GL_RGBA, // color lookup table
+		             GL_FLOAT,
+		             m_internal_lut);
+		glCheckError();
+
+		/* NB: instead of freeing this unused memory, keep it there
+			   so when updating it the next time, no time will be lost in memory allocation/deallocation */
+		//delete [] m_internal_lut; m_internal_lut = 0;
+
+		/* stop using the GPU program until requested */
+		glUseProgram(0);
+	}
+
+
+	/**
+	 *  create texture data
+	 *  the texture size is opengl compatible
+	 *  intensities are normalized for a better lut resolution
+	 */
+	template <typename DataType, typename DataOutType>
+	DataOutType* Volume::createTextureData(const DataType* data,
+										const unsigned int data_size[],
+										DataType &min,
+										DataType& max,
+										const unsigned int texture_size[])
+	{
+		/* find max and min value of volume */
+		min = OpenGLArgs<DataType>::max;
+		max = OpenGLArgs<DataType>::min;
+		for(const DataType* it=data; it!=&data[data_size[0]*data_size[1]*data_size[2]]; ++it)
+		{
+			if(*it < min) min = *it;
+			if(*it > max) max = *it;
+		}
+
+		/* create new volume */
+		DataOutType* buffer = new DataOutType [texture_size[0]*texture_size[1]*texture_size[2]];
+
+		/* fill new volume voxel per voxel */
+		for(unsigned int k=0; k<texture_size[2]; ++k)
+			for(unsigned int j=0; j<texture_size[1]; ++j)
+				for(unsigned int i=0; i<texture_size[0]; ++i)
+		{
+			/* texture value (either from volume, or 0 if outside) */
+			DataType val = 0;
+			if(i<data_size[0] && j<data_size[1] && k<data_size[2])
+				val = data[(k*data_size[1]+j)*data_size[0]+i];
+
+			/* normalize between 0..1.0 0..255 or 0..65535 */
+			if(max>min)
+				val = (val-min) * OpenGLArgs<DataOutType>::max / (max-min);
+
+			/* fill texture buffer */
+			buffer[(k*texture_size[1]+j)*texture_size[0]+i] = static_cast<DataOutType>(val);
+		}
+
+		return buffer;
+	}
+
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/e3/e38caace2a18c00a2d831d6e84d79d75f896660a.svn-base b/.svn/pristine/e3/e38caace2a18c00a2d831d6e84d79d75f896660a.svn-base
new file mode 100644
index 0000000..e8dae60
Binary files /dev/null and b/.svn/pristine/e3/e38caace2a18c00a2d831d6e84d79d75f896660a.svn-base differ
diff --git a/.svn/pristine/e5/e5002d77d79fcea5e273c15ed7128e0187776e62.svn-base b/.svn/pristine/e5/e5002d77d79fcea5e273c15ed7128e0187776e62.svn-base
new file mode 100644
index 0000000..f96b068
--- /dev/null
+++ b/.svn/pristine/e5/e5002d77d79fcea5e273c15ed7128e0187776e62.svn-base
@@ -0,0 +1,259 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/** @file mask4d.h
+ *  @author Herve Lombaert
+ *  @date March 6th, 2007
+ *
+ */
+
+#ifndef MASK4D_H
+#define MASK4D_H
+
+#include <error.h>
+
+namespace libvdDisplay
+{
+	/**
+	 * @class Mask4D
+	 * @brief Display an orthogonal mesh for a 4D mask
+	 *
+	 * Display a mesh for a mask. It is made of tiny small cubes
+	 * showing where the boundary of the mask is.
+	 *
+	 * This classes uses a binary mask of any type. Possible values
+	 * of the masks are 0 and anything but 0.
+	 *
+	 * For better results use the following OpenGL initialization:
+	 *
+	 * \code
+	 *   glShadeModel(GL_SMOOTH);
+	 *   glEnable(GL_DEPTH_TEST);
+	 *   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+	 * \endcode
+	 *
+	 * To use it, use:
+	 *
+	 * \code
+	 *   unsigned char* mask [512*512*512 * 4]; // fill mask
+	 *   Display::Mask4D displayMask;
+	 *
+	 *   displayMask.update(mask, 512,512,512,4);
+	 *
+	 *   glColor3f(0.8,0,0); // color of the mask
+	 *   displayMask.display();
+	 * \endcode
+	 *
+	 */
+
+	class Mask4D
+	{
+	public:
+		Mask4D();
+		~Mask4D();
+
+		/** update the visualizer with a new mask
+		 *  internally creates or update the display list */
+		template <typename DataType>
+		void update(const DataType* data,
+		            unsigned int width,
+		            unsigned int height,
+		            unsigned int depth,
+					unsigned int nb_frames);
+
+		/** set the frame number to display */
+		void setFrame(unsigned int frame);
+
+		/** get the current frame number */
+		unsigned int getFrame() const;
+
+		/** get the number of frames */
+		unsigned int getNbFrames() const;
+
+		/** display the display list */
+		void display();
+
+		/** display directly the mask without using a display list
+		 *  this can be used when the mask is interactively updated */
+		template <typename DataType>
+		void display(const DataType* data,
+		             unsigned int width,
+		             unsigned int height,
+		             unsigned int depth);
+
+		/** clear the 4D mask, remove any display list */
+		void clear();
+
+	private:
+		GLuint m_id;              ///< mesh display list (id of first frame display list)
+		unsigned int m_nb_frames; ///< how many frames
+		unsigned int m_frame;     ///< current frame
+	};
+
+
+	template <typename DataType>
+	void Mask4D::update(const DataType* data,
+	                    unsigned int width,
+	                    unsigned int height,
+	                    unsigned int depth,
+						unsigned int nb_frames)
+	{
+		/* Create a new display list */
+		if(glIsList(m_id)) glDeleteLists(m_id,m_nb_frames);
+		m_nb_frames = nb_frames;
+		m_id = glGenLists(m_nb_frames); glCheckError();
+
+		for(unsigned int frame = 0; frame < m_nb_frames; ++frame)
+		{
+			glNewList(m_id+frame, GL_COMPILE); glCheckError();
+
+			/* Create mesh */
+			display(&data[frame*width*height*depth], width, height, depth);
+
+			/* End list */
+			glEndList();
+		}
+	}
+
+
+	template <typename DataType>
+	void Mask4D::display(const DataType* data,
+	                     unsigned int width,
+	                     unsigned int height,
+	                     unsigned int depth)
+	{
+		int neighbors[6][3] = { {-1,0,0},{+1,0,0},{0,-1,0},{0,+1,0},{0,0,-1},{0,0,+1} };
+
+		/* cube
+		 *
+		 *      4----------5
+		 *      |\         |\
+		 *      | \        | \
+		 *      |  7----------6
+		 *      |  |       |  |
+		 *      0--|-------1  |
+		 *       \ |        \ |
+		 *        \|         \|
+		 *         3----------2
+		 *
+		 */
+
+		// list of face points and normals
+		// 4 first triplets are counter clockwise face point
+		// last triplet is the face normal
+		float offset[6][5][3] = {
+		{	{-0.5,+0.5,+0.5}, // 74033047
+			{-0.5,-0.5,+0.5},
+			{-0.5,-0.5,-0.5},
+			{-0.5,+0.5,-0.5},
+			{-1,0,0}	},
+		{	{+0.5,-0.5,+0.5}, // 56211265
+			{+0.5,+0.5,+0.5},
+			{+0.5,+0.5,-0.5},
+			{+0.5,-0.5,-0.5},
+			{+1,0,0}	},
+		{	{-0.5,-0.5,+0.5}, // 45100154
+			{+0.5,-0.5,+0.5},
+			{+0.5,-0.5,-0.5},
+			{-0.5,-0.5,-0.5},
+			{0,-1,0}	},
+		{	{+0.5,+0.5,+0.5}, // 67322376
+			{-0.5,+0.5,+0.5},
+			{-0.5,+0.5,-0.5},
+			{+0.5,+0.5,-0.5},
+			{0,+1,0}	},
+		{	{-0.5,-0.5,-0.5}, // 01233210
+			{+0.5,-0.5,-0.5},
+			{+0.5,+0.5,-0.5},
+			{-0.5,+0.5,-0.5},
+			{0,0,-1}	},
+		{	{-0.5,+0.5,+0.5}, // 76544567
+			{+0.5,+0.5,+0.5},
+			{+0.5,-0.5,+0.5},
+			{-0.5,-0.5,+0.5},
+			{0,0,+1}	}	};
+  
+		/* Scale to volume space */
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glTranslatef(-0.5,-0.5,-0.5);                  // offset half the volume
+		glScalef(1.0f/width, 1.0f/height, 1.0f/depth); // unit is voxel
+		glTranslatef(+0.5,+0.5,+0.5);                  // offset half voxel size
+
+		/* Lighting helps visualization of the mesh */
+		/* Nice coloring for the mesh */
+		glPushAttrib(GL_ENABLE_BIT);
+		glEnable(GL_COLOR_MATERIAL);
+		glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+
+		glEnable(GL_LIGHTING);
+		glEnable(GL_LIGHT0);
+
+		/* start lists of quads */
+		glBegin(GL_QUADS);
+
+		for(unsigned int k=0; k<depth; ++k)
+			for(unsigned int j=0; j<height; ++j)
+				for(unsigned int i=0; i<width; ++i)
+		{
+			if(data[(k*height+j)*width+i] != 0)
+			{
+				for(int m=0; m<6; ++m)
+				{
+					bool drawFace = false;
+
+					int ni = i+neighbors[m][0];
+					int nj = j+neighbors[m][1];
+					int nk = k+neighbors[m][2];
+
+					if(ni>=0 && ni<(int)width &&
+					   nj>=0 && nj<(int)height &&
+					   nk>=0 && nk<(int)depth)
+					{
+						if(data[(nk*height+nj)*width+ni] == 0)
+							drawFace = true;
+					}
+					else
+						drawFace = true;
+
+					if(drawFace)
+					{
+						/* Draw one face (outward), the interface of the mask */
+						glNormal3f(offset[m][4][0], offset[m][4][1], offset[m][4][2]);
+						glVertex3f(i+offset[m][0][0], j+offset[m][0][1], k+offset[m][0][2]);
+						glVertex3f(i+offset[m][1][0], j+offset[m][1][1], k+offset[m][1][2]);
+						glVertex3f(i+offset[m][2][0], j+offset[m][2][1], k+offset[m][2][2]);
+						glVertex3f(i+offset[m][3][0], j+offset[m][3][1], k+offset[m][3][2]);
+					}
+				}
+			}
+		}
+
+		glEnd();
+
+		glPopMatrix();
+
+		/* Leaving function */
+		glPopAttrib();
+  	}
+
+} // namespace
+
+#endif
diff --git a/.svn/pristine/e5/e5ec148c577ed240cb53177cc5ca70a8cb3e5af5.svn-base b/.svn/pristine/e5/e5ec148c577ed240cb53177cc5ca70a8cb3e5af5.svn-base
new file mode 100644
index 0000000..0d3f66e
--- /dev/null
+++ b/.svn/pristine/e5/e5ec148c577ed240cb53177cc5ca70a8cb3e5af5.svn-base
@@ -0,0 +1,220 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#include <iostream>
+#include <cmath>
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <tools/manipworld.h>
+#include <display/display3d.h>
+#include <tools/pick.h>
+
+
+/**
+ * @test Testing 3D picking
+ */
+
+namespace Test3DPick
+{
+
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static MouseButton gButton = NONE;
+	static int gPrevMouse[2] = { 0,0 };
+	static float gPos[3] = {0,0,0}; // position of picked point
+	int winid = 0; // window id, so we can destroy it later
+	unsigned int winw = 0;
+	unsigned int winh = 0;
+
+	Tools::Pick pick;
+	Tools::ManipWorld manip;
+	Display::Volume displayVolume;
+	unsigned short* volume;
+	unsigned int volumeSize[3];
+
+
+
+	void convertVolumeToVoxel(float x, float y, float z, int &xx, int &yy, int &zz)
+	{
+		xx = static_cast<int>((x+0.5)*volumeSize[0]+0.5);
+		yy = static_cast<int>((y+0.5)*volumeSize[1]+0.5);
+		zz = static_cast<int>((z+0.5)*volumeSize[2]+0.5);
+	}
+
+
+	void displayMarker()
+	{
+		glPushMatrix();
+		glTranslatef(gPos[0], gPos[1], gPos[2]);
+
+		glScalef(0.3,0.3,0.3);
+
+		glColor3f(1,0,0);
+
+		glBegin(GL_LINES);
+		glVertex3f(-0.5,0,0);
+		glVertex3f(+0.5,0,0);
+		glVertex3f(0,-0.5,0);
+		glVertex3f(0,+0.5,0);
+		glVertex3f(0,0,+0.5);
+		glVertex3f(0,0,-0.5);
+		glEnd();
+
+		glPopMatrix();
+	}
+
+	void init()
+	{
+		glClearColor (0.0, 0.0, 0.5, 1.0);
+
+		manip.init();
+		manip.translate(0,0,-3.6);
+
+		displayVolume.update(volume,volumeSize[0],volumeSize[1],volumeSize[2]);
+		displayVolume.updateRamp(10,125);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+
+		glMatrixMode(GL_MODELVIEW);
+
+		winw = w;
+		winh = h;
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		
+		/* Rotate volume with mouse movement */
+		manip.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(2,2,2);
+
+		/* display the volume */
+		glEnable(GL_DEPTH_TEST);
+		displayMarker();
+
+		pick.enable(); // every object between enable and disable can be picked
+		displayVolume.display();
+		pick.disable(); // stop defining the selection
+
+		glDisable(GL_DEPTH_TEST);
+
+		glPopMatrix();
+
+		glutSwapBuffers();
+	}
+
+
+	void mouse(int button, int state, int x, int y)
+	{
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+			{
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				
+				if(state == GLUT_DOWN)
+				{
+					float xx,yy,zz; // volume coordinate (-0.5..0.5)
+					if(pick.get(x,winh-y, xx,yy,zz))
+					{
+						gPos[0] = xx;
+						gPos[1] = yy;
+						gPos[2] = zz;
+			
+						int vx,vy,vz; // voxel coordinate (0..volsize)
+						convertVolumeToVoxel(xx,yy,zz, vx,vy,vz);
+			
+						printf("xyz: %d %d %d\n", vx,vy,vz);
+						glutPostRedisplay();
+					}
+				}
+				break;
+			}
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+				manip.rotateYAxis(x-gPrevMouse[0]);
+				manip.rotateXAxis(gPrevMouse[1]-y);
+
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				glutPostRedisplay();
+				break;
+			default:
+				break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		switch(key)
+		{
+			case 'q':
+				glutDestroyWindow(winid); // close window, terminate glut loop
+				exit(0); // on OSX for some reason the program does not terminate
+			default:
+				break;
+		}
+	}
+
+	int main_init()
+	{
+		try
+		{
+			volumeSize[0] = 128,
+			volumeSize[1] = 128,
+			volumeSize[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", volume, volumeSize[0]*volumeSize[1]*volumeSize[2]);
+			
+			glutInitWindowSize(250, 250);
+			winid = glutCreateWindow("3D picking");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+		
+			//glutMainLoop();
+			
+			return 0;
+		}
+		catch(const Error &e) {
+			e.print();
+		}
+
+		return 1;
+	}
+} // namespace
diff --git a/.svn/pristine/e5/e5f27637b92d371a5d9abf5581083b21d29c7d53.svn-base b/.svn/pristine/e5/e5f27637b92d371a5d9abf5581083b21d29c7d53.svn-base
new file mode 100644
index 0000000..fde63f5
Binary files /dev/null and b/.svn/pristine/e5/e5f27637b92d371a5d9abf5581083b21d29c7d53.svn-base differ
diff --git a/.svn/pristine/ea/ea5c18b9a48c79095ae860a2252bc2b418aefac3.svn-base b/.svn/pristine/ea/ea5c18b9a48c79095ae860a2252bc2b418aefac3.svn-base
new file mode 100644
index 0000000..1600d93
--- /dev/null
+++ b/.svn/pristine/ea/ea5c18b9a48c79095ae860a2252bc2b418aefac3.svn-base
@@ -0,0 +1,266 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	manipworld.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#include <GL/glu.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#include <OpenGL/glu.h>
+#else
+#include <GL/gl.h>
+#include <GL/glu.h>
+#endif
+
+#include <tools/manipworld.h>
+
+namespace Tools
+{
+	ManipWorld::ManipWorld()
+	{
+		init();
+	}
+
+
+	ManipWorld::~ManipWorld()
+	{
+	}
+
+
+	void ManipWorld::init()
+	{
+		m_modelview[0]  = 1.0f;
+		m_modelview[1]  = 0.0f;
+		m_modelview[2]  = 0.0f;
+		m_modelview[3]  = 0.0f;
+
+		m_modelview[4]  = 0.0f;
+		m_modelview[5]  = 1.0f;
+		m_modelview[6]  = 0.0f;
+		m_modelview[7]  = 0.0f;
+
+		m_modelview[8]  = 0.0f;
+		m_modelview[9]  = 0.0f;
+		m_modelview[10] = 1.0f;
+		m_modelview[11] = 0.0f;
+
+		m_modelview[12] = 0.0f;
+		m_modelview[13] = 0.0f;
+		m_modelview[14] = 0.0f;
+		m_modelview[15] = 1.0f;
+	}
+
+
+	void ManipWorld::translateAxis(float dx, float dy, float dz)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview); // modelview is controled by this object
+		float inv_modelview[16]; for(unsigned int m=0; m<16; ++m) inv_modelview[m] = m_modelview[m];
+		transp(inv_modelview); // invert modelview matrix, ignore translation
+		glTranslatef(dx*inv_modelview[0],dx*inv_modelview[1],dx*inv_modelview[2]);     // do some translation in the X screen axis
+		glTranslatef(dy*inv_modelview[4],dy*inv_modelview[5],dy*inv_modelview[6]);     // do some translation in the Y screen axis
+		glTranslatef(dz*inv_modelview[8],dz*inv_modelview[9],dz*inv_modelview[10]);    // do some translation in the Z screen axis
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::translate(float dx, float dy, float dz)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview); // modelview is controled by this object
+		glTranslatef(dx,dy,dz);     // do some translation in the world
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::zoom(float zoom)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview);
+		glScalef(zoom,zoom,zoom);
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::rotateXAxis(float delta)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview);
+		float inv_modelview[16]; for(unsigned int m=0; m<16; ++m) inv_modelview[m] = m_modelview[m];
+		transp(inv_modelview); // invert modelview matrix, ignore translation
+		glRotatef(-delta, inv_modelview[0], inv_modelview[1], inv_modelview[2]);
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::rotateYAxis(float delta)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview);
+		float inv_modelview[16]; for(unsigned int m=0; m<16; ++m) inv_modelview[m] = m_modelview[m];
+		transp(inv_modelview); // invert modelview matrix, ignore translation
+		glRotatef(delta, inv_modelview[4], inv_modelview[5], inv_modelview[6]);
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::rotateZAxis(float delta)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview);
+		float inv_modelview[16]; for(unsigned int m=0; m<16; ++m) inv_modelview[m] = m_modelview[m];
+		transp(inv_modelview); // invert modelview matrix, ignore translation
+		glRotatef(delta, inv_modelview[8], inv_modelview[9], inv_modelview[10]); // tilt
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::rotateX(float delta)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview); // modelview is controled by this object
+		glRotatef(-delta, 1,0,0);
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::rotateY(float delta)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview); // modelview is controled by this object
+		glRotatef(delta, 0,1,0);
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::rotateZ(float delta)
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		glLoadMatrixf(m_modelview); // modelview is controled by this object
+		glRotatef(delta, 0,0,1);
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview); // modelview matrix is updated
+		glPopMatrix();
+	}
+
+
+	void ManipWorld::loadModelViewMatrix() const
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glLoadMatrixf(m_modelview);
+	}
+
+
+	void ManipWorld::loadInverseModelViewMatrix() const
+	{
+		// invert rotation
+		float inv_modelview[16]; for(unsigned int m=0; m<16; ++m) inv_modelview[m] = m_modelview[m];
+		transp(inv_modelview); // invert modelview matrix, ignore translation
+
+		// invert translation
+		inv_modelview[12] = -( inv_modelview[0]*m_modelview[12] + inv_modelview[4]*m_modelview[13] + inv_modelview[8 ]*m_modelview[14] );
+		inv_modelview[13] = -( inv_modelview[1]*m_modelview[12] + inv_modelview[5]*m_modelview[13] + inv_modelview[9 ]*m_modelview[14] );
+		inv_modelview[14] = -( inv_modelview[2]*m_modelview[12] + inv_modelview[6]*m_modelview[13] + inv_modelview[10]*m_modelview[14] );
+
+		glMatrixMode(GL_MODELVIEW);
+		glLoadMatrixf(inv_modelview);
+	}
+
+
+	void ManipWorld::saveModelViewMatrix()
+	{
+		glMatrixMode(GL_MODELVIEW);
+		glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview);
+	}
+
+
+	void ManipWorld::getModelViewMatrix(float m[]) const
+	{
+		for(unsigned int i=0; i<16; ++i) m[i] = m_modelview[i];
+	}
+
+
+	void ManipWorld::setModelViewMatrix(const float m[])
+	{
+		for(unsigned int i=0; i<16; ++i) m_modelview[i] = m[i];
+	}
+
+
+	bool ManipWorld::pick(int mouse_x, int mouse_y, float &x, float &y, float &z)
+	{
+		/* NB: assume this object controls the modelview matrix
+		 * and the current projection matrix is untouched since the last
+		 * scene display */
+
+		/* get some matrices */
+		GLint    viewport[4];    glGetIntegerv(GL_VIEWPORT, viewport);
+		GLdouble projection[16]; glGetDoublev(GL_PROJECTION_MATRIX, projection);
+		GLdouble modelview[16];  glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
+
+		/* depth of pixel (x,y) */
+		GLfloat mouse_z = 0;
+		glReadPixels(mouse_x, mouse_y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &mouse_z);
+
+		/* what is the 3D position of pixel (x,y) */
+		GLdouble xx,yy,zz;
+		gluUnProject(mouse_x, mouse_y, mouse_z, modelview, projection, viewport, &xx, &yy, &zz);
+		x = (float)xx, y = (float)yy, z = (float)zz;
+
+		/* if the Z buffer is not the far plane, an object has been hit */
+		if(mouse_z < 1) return true; // object is hit
+		else            return false;
+	}
+
+
+	void ManipWorld::transp(float m[])
+	{
+		for(unsigned int j=0; j<4; ++j)
+			for(unsigned int i=0; i<j; ++i)
+		{
+			float a = m[j*4+i];
+			m[j*4+i] = m[i*4+j];
+			m[i*4+j] = a;
+		}
+	}
+
+} // namespace
diff --git a/.svn/pristine/ea/ea83fc3e20ff40829173b2213f8df411f84d44c3.svn-base b/.svn/pristine/ea/ea83fc3e20ff40829173b2213f8df411f84d44c3.svn-base
new file mode 100644
index 0000000..e0835da
--- /dev/null
+++ b/.svn/pristine/ea/ea83fc3e20ff40829173b2213f8df411f84d44c3.svn-base
@@ -0,0 +1,456 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/** @file	smoothmask3d.h
+ *	@author	Herve Lombaert
+ *	@date	March 1st, 2007
+ *
+ *	From a orthogonal mask, create a smooth mesh, and display it
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <display/smoothmask3d.h>
+
+
+namespace libvdDisplay
+{
+
+	SmoothMask3D::SmoothMask3D()
+	:	m_meshid(0)
+	{
+	}
+
+
+	SmoothMask3D::~SmoothMask3D()
+	{
+		if(glIsList(m_meshid)) glDeleteLists(m_meshid,1);
+	}
+
+
+	void SmoothMask3D::display() const
+	{
+		if(!glIsList(m_meshid)) return;
+
+		/* draw list */
+		glCallList(m_meshid);
+	}
+
+
+	void SmoothMask3D::clear()
+	{
+		if(glIsList(m_meshid)) glDeleteLists(m_meshid,1);
+		m_meshid = 0;
+	}
+
+
+	/*
+	   Given a grid cell and an isolevel, calculate the triangular
+	   facets required to represent the isosurface through the cell.
+	   Return the number of triangular facets, the array "triangles"
+	   will be loaded up with the vertices at most 5 triangular facets.
+		0 will be returned if the grid cell is either totally above
+	   of totally below the isolevel.
+	*/
+	int SmoothMask3D::Polygonise(GRIDCELL grid,double isolevel,TRIANGLE *triangles)
+	{
+		int i,ntriang;
+		int cubeindex;
+		XYZ vertlist[12];
+
+		int edgeTable[256]={
+			0x0  , 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c,
+			0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,
+			0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c,
+			0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,
+			0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c,
+			0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,
+			0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac,
+			0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,
+			0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c,
+			0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,
+			0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc,
+			0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,
+			0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c,
+			0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,
+			0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc ,
+			0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,
+			0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc,
+			0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,
+			0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c,
+			0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,
+			0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc,
+			0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,
+			0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c,
+			0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460,
+			0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac,
+			0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0,
+			0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c,
+			0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230,
+			0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c,
+			0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190,
+			0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c,
+			0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0   };
+		int triTable[256][16] =
+			{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1},
+			{3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1},
+			{3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1},
+			{3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1},
+			{9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},
+			{2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1},
+			{8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},
+			{4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1},
+			{3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1},
+			{1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1},
+			{4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1},
+			{4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
+			{5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1},
+			{2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1},
+			{9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
+			{0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},
+			{2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1},
+			{10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1},
+			{5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1},
+			{5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1},
+			{9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1},
+			{1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1},
+			{10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1},
+			{8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1},
+			{2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1},
+			{7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1},
+			{2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1},
+			{11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1},
+			{5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1},
+			{11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1},
+			{11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1},
+			{9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1},
+			{2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1},
+			{6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1},
+			{3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1},
+			{6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},
+			{10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1},
+			{6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1},
+			{8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1},
+			{7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1},
+			{3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1},
+			{0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1},
+			{9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1},
+			{8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1},
+			{5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1},
+			{0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1},
+			{6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1},
+			{10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1},
+			{10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1},
+			{8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1},
+			{1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1},
+			{0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1},
+			{10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1},
+			{3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1},
+			{6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1},
+			{9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1},
+			{8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1},
+			{3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1},
+			{6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1},
+			{0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1},
+			{10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1},
+			{10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1},
+			{2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1},
+			{7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1},
+			{7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1},
+			{2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1},
+			{1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1},
+			{11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1},
+			{8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1},
+			{0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1},
+			{7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
+			{10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
+			{2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
+			{6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1},
+			{7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1},
+			{2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1},
+			{10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1},
+			{10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1},
+			{0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1},
+			{7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1},
+			{6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1},
+			{8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1},
+			{6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1},
+			{4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1},
+			{10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1},
+			{8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1},
+			{0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1},
+			{1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1},
+			{8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1},
+			{10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1},
+			{4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1},
+			{10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},
+			{11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1},
+			{9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},
+			{6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1},
+			{7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1},
+			{3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1},
+			{7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1},
+			{3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1},
+			{6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1},
+			{9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1},
+			{1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1},
+			{4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1},
+			{7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1},
+			{6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1},
+			{3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1},
+			{0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1},
+			{6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1},
+			{0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1},
+			{11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1},
+			{6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1},
+			{5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1},
+			{9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1},
+			{1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1},
+			{1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1},
+			{10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1},
+			{0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1},
+			{5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1},
+			{10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1},
+			{11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1},
+			{9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1},
+			{7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1},
+			{2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1},
+			{8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1},
+			{9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1},
+			{9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1},
+			{1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1},
+			{9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1},
+			{5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1},
+			{0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1},
+			{10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1},
+			{2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1},
+			{0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1},
+			{0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1},
+			{9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1},
+			{5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1},
+			{3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1},
+			{5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1},
+			{8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1},
+			{9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1},
+			{1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1},
+			{3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1},
+			{4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1},
+			{9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1},
+			{11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1},
+			{11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1},
+			{2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1},
+			{9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1},
+			{3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1},
+			{1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1},
+			{4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1},
+			{3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1},
+			{0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1},
+			{1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}};
+
+		/*
+		   Determine the index into the edge table which
+		   tells us which vertices are inside of the surface
+		*/
+		cubeindex = 0;
+		if (grid.val[0] < isolevel) cubeindex |= 1;
+		if (grid.val[1] < isolevel) cubeindex |= 2;
+		if (grid.val[2] < isolevel) cubeindex |= 4;
+		if (grid.val[3] < isolevel) cubeindex |= 8;
+		if (grid.val[4] < isolevel) cubeindex |= 16;
+		if (grid.val[5] < isolevel) cubeindex |= 32;
+		if (grid.val[6] < isolevel) cubeindex |= 64;
+		if (grid.val[7] < isolevel) cubeindex |= 128;
+
+		/* Cube is entirely in/out of the surface */
+		if (edgeTable[cubeindex] == 0)
+		   return(0);
+
+		/* Find the vertices where the surface intersects the cube */
+		if (edgeTable[cubeindex] & 1)
+		   vertlist[0] = VertexInterp(isolevel,grid.p[0],grid.p[1],grid.val[0],grid.val[1]);
+		if (edgeTable[cubeindex] & 2)
+		   vertlist[1] = VertexInterp(isolevel,grid.p[1],grid.p[2],grid.val[1],grid.val[2]);
+		if (edgeTable[cubeindex] & 4)
+		   vertlist[2] = VertexInterp(isolevel,grid.p[2],grid.p[3],grid.val[2],grid.val[3]);
+		if (edgeTable[cubeindex] & 8)
+		   vertlist[3] = VertexInterp(isolevel,grid.p[3],grid.p[0],grid.val[3],grid.val[0]);
+		if (edgeTable[cubeindex] & 16)
+		   vertlist[4] = VertexInterp(isolevel,grid.p[4],grid.p[5],grid.val[4],grid.val[5]);
+		if (edgeTable[cubeindex] & 32)
+		   vertlist[5] = VertexInterp(isolevel,grid.p[5],grid.p[6],grid.val[5],grid.val[6]);
+		if (edgeTable[cubeindex] & 64)
+		   vertlist[6] = VertexInterp(isolevel,grid.p[6],grid.p[7],grid.val[6],grid.val[7]);
+		if (edgeTable[cubeindex] & 128)
+		   vertlist[7] = VertexInterp(isolevel,grid.p[7],grid.p[4],grid.val[7],grid.val[4]);
+		if (edgeTable[cubeindex] & 256)
+		   vertlist[8] = VertexInterp(isolevel,grid.p[0],grid.p[4],grid.val[0],grid.val[4]);
+		if (edgeTable[cubeindex] & 512)
+		   vertlist[9] = VertexInterp(isolevel,grid.p[1],grid.p[5],grid.val[1],grid.val[5]);
+		if (edgeTable[cubeindex] & 1024)
+		   vertlist[10] = VertexInterp(isolevel,grid.p[2],grid.p[6],grid.val[2],grid.val[6]);
+		if (edgeTable[cubeindex] & 2048)
+		   vertlist[11] = VertexInterp(isolevel,grid.p[3],grid.p[7],grid.val[3],grid.val[7]);
+
+		/* Create the triangle */
+		ntriang = 0;
+		for (i=0;triTable[cubeindex][i]!=-1;i+=3) {
+		   triangles[ntriang].p[0] = vertlist[triTable[cubeindex][i  ]];
+		   triangles[ntriang].p[1] = vertlist[triTable[cubeindex][i+1]];
+		   triangles[ntriang].p[2] = vertlist[triTable[cubeindex][i+2]];
+		   ntriang++;
+		}
+
+		return(ntriang);
+	}
+
+	/*
+	   Linearly interpolate the position where an isosurface cuts
+	   an edge between two vertices, each with their own scalar value
+	*/
+	SmoothMask3D::XYZ SmoothMask3D::VertexInterp(double isolevel, XYZ p1, XYZ p2, double valp1, double valp2)
+	{
+		double mu;
+		XYZ p;
+
+		if (fabs(isolevel-valp1) < 0.00001)
+		   return(p1);
+		if (fabs(isolevel-valp2) < 0.00001)
+		   return(p2);
+		if (fabs(valp1-valp2) < 0.00001)
+		   return(p1);
+		mu = (isolevel - valp1) / (valp2 - valp1);
+		p.x = p1.x + mu * (p2.x - p1.x);
+		p.y = p1.y + mu * (p2.y - p1.y);
+		p.z = p1.z + mu * (p2.z - p1.z);
+
+		return(p);
+	}
+
+
+} // namespace
\ No newline at end of file
diff --git a/.svn/pristine/f0/f07e963d33c8a6f0c78d7b94047ebc2aadbcc01b.svn-base b/.svn/pristine/f0/f07e963d33c8a6f0c78d7b94047ebc2aadbcc01b.svn-base
new file mode 100644
index 0000000..3d650ef
--- /dev/null
+++ b/.svn/pristine/f0/f07e963d33c8a6f0c78d7b94047ebc2aadbcc01b.svn-base
@@ -0,0 +1,445 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	isosurface.cpp
+ * @author	Herve Lombaert
+ * @date	January 17th 2006
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#include <GL/gl.h>
+#elif __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+#include <display/isosurface.h>
+
+namespace libvdDisplay
+{
+	IsoSurface::IsoSurface()
+	:	m_meshid(0)
+	{
+	}
+
+
+	IsoSurface::~IsoSurface()
+	{
+		if(glIsList(m_meshid)) glDeleteLists(m_meshid,1);
+	}
+
+
+	void IsoSurface::display() const
+	{
+		if(!glIsList(m_meshid)) return;
+
+		/* draw list */
+		glCallList(m_meshid);
+	}
+
+
+	/*
+	   Given a grid cell and an isolevel, calculate the triangular
+	   facets required to represent the isosurface through the cell.
+	   Return the number of triangular facets, the array "triangles"
+	   will be loaded up with the vertices at most 5 triangular facets.
+		0 will be returned if the grid cell is either totally above
+	   of totally below the isolevel.
+	*/
+	int IsoSurface::Polygonise(GRIDCELL grid,double isolevel,TRIANGLE *triangles)
+	{
+		int i,ntriang;
+		int cubeindex;
+		XYZ vertlist[12];
+
+		int edgeTable[256]={
+			0x0  , 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c,
+			0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,
+			0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c,
+			0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,
+			0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c,
+			0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,
+			0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac,
+			0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,
+			0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c,
+			0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,
+			0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc,
+			0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,
+			0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c,
+			0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,
+			0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc ,
+			0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,
+			0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc,
+			0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,
+			0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c,
+			0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,
+			0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc,
+			0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,
+			0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c,
+			0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460,
+			0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac,
+			0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0,
+			0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c,
+			0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230,
+			0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c,
+			0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190,
+			0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c,
+			0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0   };
+		int triTable[256][16] =
+			{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1},
+			{3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1},
+			{3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1},
+			{3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1},
+			{9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},
+			{2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1},
+			{8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},
+			{4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1},
+			{3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1},
+			{1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1},
+			{4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1},
+			{4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
+			{5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1},
+			{2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1},
+			{9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
+			{0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},
+			{2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1},
+			{10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1},
+			{5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1},
+			{5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1},
+			{9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1},
+			{1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1},
+			{10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1},
+			{8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1},
+			{2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1},
+			{7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1},
+			{2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1},
+			{11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1},
+			{5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1},
+			{11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1},
+			{11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1},
+			{9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1},
+			{2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1},
+			{6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1},
+			{3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1},
+			{6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},
+			{10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1},
+			{6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1},
+			{8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1},
+			{7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1},
+			{3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
+			{5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1},
+			{0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1},
+			{9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1},
+			{8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1},
+			{5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1},
+			{0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1},
+			{6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1},
+			{10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1},
+			{10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1},
+			{8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1},
+			{1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1},
+			{0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1},
+			{10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1},
+			{3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1},
+			{6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1},
+			{9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1},
+			{8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1},
+			{3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1},
+			{6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1},
+			{0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1},
+			{10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1},
+			{10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1},
+			{2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1},
+			{7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1},
+			{7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1},
+			{2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1},
+			{1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1},
+			{11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1},
+			{8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1},
+			{0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1},
+			{7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
+			{10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
+			{2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
+			{6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1},
+			{7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1},
+			{2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1},
+			{1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1},
+			{10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1},
+			{10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1},
+			{0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1},
+			{7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1},
+			{6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1},
+			{8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1},
+			{6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1},
+			{4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1},
+			{10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1},
+			{8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1},
+			{0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1},
+			{1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1},
+			{8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1},
+			{10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1},
+			{4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1},
+			{10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
+			{5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},
+			{11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1},
+			{9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},
+			{6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1},
+			{7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1},
+			{3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1},
+			{7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1},
+			{3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1},
+			{6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1},
+			{9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1},
+			{1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1},
+			{4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1},
+			{7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1},
+			{6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1},
+			{3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1},
+			{0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1},
+			{6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1},
+			{0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1},
+			{11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1},
+			{6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1},
+			{5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1},
+			{9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1},
+			{1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1},
+			{1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1},
+			{10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1},
+			{0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1},
+			{5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1},
+			{10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1},
+			{11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1},
+			{9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1},
+			{7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1},
+			{2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1},
+			{8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1},
+			{9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1},
+			{9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1},
+			{1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1},
+			{9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1},
+			{9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1},
+			{5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1},
+			{0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1},
+			{10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1},
+			{2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1},
+			{0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1},
+			{0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1},
+			{9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1},
+			{5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1},
+			{3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1},
+			{5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1},
+			{8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1},
+			{9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1},
+			{0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1},
+			{1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1},
+			{3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1},
+			{4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1},
+			{9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1},
+			{11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1},
+			{11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1},
+			{2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1},
+			{9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1},
+			{3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1},
+			{1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1},
+			{4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1},
+			{4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1},
+			{0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1},
+			{3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1},
+			{3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1},
+			{0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1},
+			{9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1},
+			{1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+			{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}};
+
+		/*
+		   Determine the index into the edge table which
+		   tells us which vertices are inside of the surface
+		*/
+		cubeindex = 0;
+		if (grid.val[0] < isolevel) cubeindex |= 1;
+		if (grid.val[1] < isolevel) cubeindex |= 2;
+		if (grid.val[2] < isolevel) cubeindex |= 4;
+		if (grid.val[3] < isolevel) cubeindex |= 8;
+		if (grid.val[4] < isolevel) cubeindex |= 16;
+		if (grid.val[5] < isolevel) cubeindex |= 32;
+		if (grid.val[6] < isolevel) cubeindex |= 64;
+		if (grid.val[7] < isolevel) cubeindex |= 128;
+
+		/* Cube is entirely in/out of the surface */
+		if (edgeTable[cubeindex] == 0)
+		   return(0);
+
+		/* Find the vertices where the surface intersects the cube */
+		if (edgeTable[cubeindex] & 1)
+		   vertlist[0] = VertexInterp(isolevel,grid.p[0],grid.p[1],grid.val[0],grid.val[1]);
+		if (edgeTable[cubeindex] & 2)
+		   vertlist[1] = VertexInterp(isolevel,grid.p[1],grid.p[2],grid.val[1],grid.val[2]);
+		if (edgeTable[cubeindex] & 4)
+		   vertlist[2] = VertexInterp(isolevel,grid.p[2],grid.p[3],grid.val[2],grid.val[3]);
+		if (edgeTable[cubeindex] & 8)
+		   vertlist[3] = VertexInterp(isolevel,grid.p[3],grid.p[0],grid.val[3],grid.val[0]);
+		if (edgeTable[cubeindex] & 16)
+		   vertlist[4] = VertexInterp(isolevel,grid.p[4],grid.p[5],grid.val[4],grid.val[5]);
+		if (edgeTable[cubeindex] & 32)
+		   vertlist[5] = VertexInterp(isolevel,grid.p[5],grid.p[6],grid.val[5],grid.val[6]);
+		if (edgeTable[cubeindex] & 64)
+		   vertlist[6] = VertexInterp(isolevel,grid.p[6],grid.p[7],grid.val[6],grid.val[7]);
+		if (edgeTable[cubeindex] & 128)
+		   vertlist[7] = VertexInterp(isolevel,grid.p[7],grid.p[4],grid.val[7],grid.val[4]);
+		if (edgeTable[cubeindex] & 256)
+		   vertlist[8] = VertexInterp(isolevel,grid.p[0],grid.p[4],grid.val[0],grid.val[4]);
+		if (edgeTable[cubeindex] & 512)
+		   vertlist[9] = VertexInterp(isolevel,grid.p[1],grid.p[5],grid.val[1],grid.val[5]);
+		if (edgeTable[cubeindex] & 1024)
+		   vertlist[10] = VertexInterp(isolevel,grid.p[2],grid.p[6],grid.val[2],grid.val[6]);
+		if (edgeTable[cubeindex] & 2048)
+		   vertlist[11] = VertexInterp(isolevel,grid.p[3],grid.p[7],grid.val[3],grid.val[7]);
+
+		/* Create the triangle */
+		ntriang = 0;
+		for (i=0;triTable[cubeindex][i]!=-1;i+=3) {
+		   triangles[ntriang].p[0] = vertlist[triTable[cubeindex][i  ]];
+		   triangles[ntriang].p[1] = vertlist[triTable[cubeindex][i+1]];
+		   triangles[ntriang].p[2] = vertlist[triTable[cubeindex][i+2]];
+		   ntriang++;
+		}
+
+		return(ntriang);
+	}
+
+	/*
+	   Linearly interpolate the position where an isosurface cuts
+	   an edge between two vertices, each with their own scalar value
+	*/
+	IsoSurface::XYZ IsoSurface::VertexInterp(double isolevel, XYZ p1, XYZ p2, double valp1, double valp2)
+	{
+		double mu;
+		XYZ p;
+
+		if (fabs(isolevel-valp1) < 0.00001)
+		   return(p1);
+		if (fabs(isolevel-valp2) < 0.00001)
+		   return(p2);
+		if (fabs(valp1-valp2) < 0.00001)
+		   return(p1);
+		mu = (isolevel - valp1) / (valp2 - valp1);
+		p.x = p1.x + mu * (p2.x - p1.x);
+		p.y = p1.y + mu * (p2.y - p1.y);
+		p.z = p1.z + mu * (p2.z - p1.z);
+
+		return(p);
+	}
+
+} // namespace
diff --git a/debian/patches/fix-cflags-handling.patch b/.svn/pristine/f0/f0cca3a97e216ae7250f709f643290c1824525a0.svn-base
similarity index 100%
rename from debian/patches/fix-cflags-handling.patch
rename to .svn/pristine/f0/f0cca3a97e216ae7250f709f643290c1824525a0.svn-base
diff --git a/.svn/pristine/f2/f2f5c4ac3852081840cf6306d740b3eb4428742c.svn-base b/.svn/pristine/f2/f2f5c4ac3852081840cf6306d740b3eb4428742c.svn-base
new file mode 100644
index 0000000..13f777c
--- /dev/null
+++ b/.svn/pristine/f2/f2f5c4ac3852081840cf6306d740b3eb4428742c.svn-base
@@ -0,0 +1,222 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Herve Lombaert
+ *   herve.lombaert at polymtl.ca
+ ***************************************************************************/
+
+#ifdef __APPLE__
+#include <GLUT/glut.h>
+#else
+#include <GL/gl.h>
+#include <GL/glut.h>
+#endif
+
+#include <io/ioraw.h>
+#include <tools/manipworld.h>
+#include <tools/clip.h>
+
+#include <display/display3d.h>
+
+/**
+ * @test Test object clipping
+ */
+
+namespace TestDisplay3DClip
+{
+	enum MouseButton { NONE, LEFT, MIDDLE, RIGHT };
+	static int gModifiers = 0; // ctrl,alt,shift
+	static MouseButton gButton = NONE;
+	static int gPrevMouse[2] = { 0,0 };
+	int winid = 0; // window id, so we can destroy it later
+	int winh = 0;
+
+
+	Tools::Clip clip;
+	Tools::ManipWorld manipWorld;
+	Display::Volume displayVolume;
+	unsigned short* volume;
+	unsigned int size[3];
+
+
+	void init()
+	{
+		glClearColor (0.25, 0.4, 0.6, 1.0);
+
+		manipWorld.init();
+		manipWorld.translate(0,0,-3.6);
+
+		displayVolume.update(volume, size[0], size[1], size[2]);
+	}
+
+	void reshape(int w, int h) 
+	{
+		glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+
+		glMatrixMode(GL_PROJECTION);
+		glLoadIdentity();
+		gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
+		glMatrixMode(GL_MODELVIEW);
+
+		winh = h;
+	}
+
+	void display(void)
+	{
+		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+		glMatrixMode(GL_MODELVIEW);
+		glPushMatrix();
+		
+		/* Rotate volume with mouse movement */
+		manipWorld.loadModelViewMatrix();
+
+		/* zoom a little bit */
+		glScalef(2,2,2);
+
+		glEnable(GL_DEPTH_TEST);
+
+		clip.enable();
+
+		clip.display();
+		displayVolume.display();
+
+		clip.disable();
+
+		glDisable(GL_DEPTH_TEST);
+
+		glPopMatrix();
+		
+		glutSwapBuffers();
+	}
+
+	void mouse(int button, int state, int x, int y)
+	{
+		gModifiers = glutGetModifiers();
+
+		/* degrade the volume when moving the mouse, so the rendering is interactive */
+		if(state == GLUT_DOWN) displayVolume.setQuality(0.50);                         // low resolution (interactive)
+		else                 { displayVolume.setQuality(1.0f); glutPostRedisplay(); }  // full resolution
+
+		/* pick if shift is pressed */
+		if(gModifiers == GLUT_ACTIVE_SHIFT && button == GLUT_LEFT_BUTTON)
+		{
+		}
+
+		switch(button)
+		{
+			case GLUT_LEFT_BUTTON:
+				gButton = LEFT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				break;
+
+			case GLUT_RIGHT_BUTTON:
+				gButton = RIGHT;
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+				break;
+
+			default:
+				gButton = NONE;
+				break;
+		}
+	}
+
+	void motion(int x, int y)
+	{
+		switch(gButton)
+		{
+			case LEFT:
+			{
+				float dx = (x - gPrevMouse[0]);
+				float dy = (gPrevMouse[1] - y);
+				gPrevMouse[0] = x;
+				gPrevMouse[1] = y;
+
+				if(gModifiers == GLUT_ACTIVE_SHIFT)
+				{
+					clip.rotateWithScreen(dx, dy);
+					float plane_matrix[16]; clip.getPlaneMatrix(plane_matrix); displayVolume.setMprMatrix(plane_matrix);
+					glutPostRedisplay();
+				}
+				else
+				{
+					manipWorld.rotateYAxis(dx);
+					manipWorld.rotateXAxis(dy);
+					glutPostRedisplay();
+				}
+				break;
+			}
+			case RIGHT:
+			{
+				float dy = (y - gPrevMouse[1]);
+				gPrevMouse[1] = y;
+
+				if(gModifiers == GLUT_ACTIVE_SHIFT)
+				{
+					clip.slide(dy/40);
+					glutPostRedisplay();
+				}
+				else
+				{
+					float deltaZoom = 1.0f + dy / 100.0f;
+					manipWorld.zoom(deltaZoom);
+					glutPostRedisplay();
+				}
+				break;
+			}
+			default:
+				break;
+		}
+	}
+
+	void keyboard (unsigned char key, int x, int y)
+	{
+		bool refresh = true;
+
+		switch(key)
+		{
+		case 'q':
+			glutDestroyWindow(winid); // close window, terminate glut loop
+			exit(0); // on OSX for some reason the program does not terminate
+		default:
+			break;
+		}
+
+		if(refresh) glutPostRedisplay();
+	}
+
+	int main_init()
+	{
+		try
+		{
+			size[0] = 128,
+			size[1] = 128,
+			size[2] = 128;
+
+			IO::Raw::read("data/ushort-128x128x128-volume.raw", volume, size[0]*size[1]*size[2]);
+			
+			glutInitWindowSize(250, 250);
+			//glutInitWindowPosition(100, 100);
+			winid = glutCreateWindow("clip");
+		
+			init();
+		
+			glutDisplayFunc(display);
+			glutReshapeFunc(reshape);
+			glutMouseFunc(mouse);
+			glutMotionFunc(motion);
+			glutKeyboardFunc(keyboard);
+		
+			//glutMainLoop();
+			
+			return 0;
+		}
+		catch(const Error &e) {
+			e.print();
+		}
+
+		return 1;
+	}
+
+} // namespace
diff --git a/debian/rules b/.svn/pristine/f3/f362ce8a1ece460b8c012c1526c267caf1379cc9.svn-base
old mode 100755
new mode 100644
similarity index 100%
rename from debian/rules
rename to .svn/pristine/f3/f362ce8a1ece460b8c012c1526c267caf1379cc9.svn-base
diff --git a/debian/libvd-docs.docs b/.svn/pristine/f4/f4d7c86e83e502d44dddf6eb0063c208f21cd98c.svn-base
similarity index 100%
rename from debian/libvd-docs.docs
rename to .svn/pristine/f4/f4d7c86e83e502d44dddf6eb0063c208f21cd98c.svn-base
diff --git a/.svn/pristine/f6/f6aa0181cc92bca3c54cd4986effd738c697cdd8.svn-base b/.svn/pristine/f6/f6aa0181cc92bca3c54cd4986effd738c697cdd8.svn-base
new file mode 100644
index 0000000..a40b5c2
Binary files /dev/null and b/.svn/pristine/f6/f6aa0181cc92bca3c54cd4986effd738c697cdd8.svn-base differ
diff --git a/.svn/pristine/ff/ff2254d0199204f99ba83419a4245447871f961c.svn-base b/.svn/pristine/ff/ff2254d0199204f99ba83419a4245447871f961c.svn-base
new file mode 100644
index 0000000..6a6322b
--- /dev/null
+++ b/.svn/pristine/ff/ff2254d0199204f99ba83419a4245447871f961c.svn-base
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	stereo.h
+ * @author	Herve Lombaert
+ * @date	March 19th 2007
+ */
+
+#ifndef STEREO_H
+#define STEREO_H
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+#include <error.h>
+
+
+namespace Tools
+{
+	/**
+	 * @class Stereo
+	 * @brief Render a stereographic view
+	 *
+	 * Renders a stereo view for red/blue 3D glasses. All drawings rendered between
+	 * \c enable() and \c disable() will be displayed twice in red and in blue. Each
+	 * drawing will have a slight offset.
+	 *
+	 * \code
+	 *   Tools::Stereo stereo;
+	 *   stereo.enable();
+	 *   // drawings
+	 *   stereo.disable();
+	 * \endcode
+	 */
+
+	class Stereo
+	{
+	public:
+		Stereo();
+		~Stereo();
+
+		/** Start defining the stereoscopic view */
+		void enable();
+
+		/** Stop defining the stereoscopic view and draw it in stereo */
+		void disable();
+
+	private:
+		GLdouble m_modelview[16]; ///< modelview matrix of the scene
+		GLuint   m_id;            ///< scene display list
+		bool     m_listcreated;   ///< check if display list is created by this object
+		GLdouble m_eye_shift;     ///< translation for each eye
+	};
+};
+
+#endif
diff --git a/.svn/pristine/ff/ff3650fc70009ecbb64165a158b5780df9473b92.svn-base b/.svn/pristine/ff/ff3650fc70009ecbb64165a158b5780df9473b92.svn-base
new file mode 100644
index 0000000..202f33a
--- /dev/null
+++ b/.svn/pristine/ff/ff3650fc70009ecbb64165a158b5780df9473b92.svn-base
@@ -0,0 +1,380 @@
+/*****************************************************************************
+ * Copyright (C) 2007 Herve Lombaert <herve.lombaert at polymtl.ca>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ ****************************************************************************/
+
+
+/**
+ * @file	image.h
+ * @author	Herve Lombaert
+ * @date	Tue Jun 6 2006
+ */
+
+
+#ifndef IMAGE_H
+#define IMAGE_H
+
+#include <error.h>
+
+
+/**
+ * This is a template image class. It can be used to create
+ * Images of any type, float, int, or even color.
+ *
+ * This interface can be used as a model for algorithm inputs
+ * and outputs. Simply copy this file and start your own
+ * implementation of your own image type.
+ *
+ * Internally, it keeps a continuous memory of the image data
+ */
+
+
+template <typename T, unsigned int N=2>
+class Image {
+public:
+	typedef T type;   ///< type of image (eg. float, uchar, color)
+	enum { dim = N }; ///< dimension of image (eg. 2, 3)
+	typedef unsigned int uint; /// index type
+
+public:
+	// Some constructors creating an image with a given size
+	Image();                                                   ///< no image
+	Image(uint width, uint height);                            ///< 2D image
+	Image(uint width, uint height, uint depth);                ///< 3D image
+	Image(const T* data, uint width, uint height);             ///< 2D image with data
+	Image(const T* data, uint width, uint height, uint depth); ///< 3D image with data
+	Image(const uint size[]); ///< N-D
+	Image(const Image&);      ///< copy constructor
+	~Image();                 ///< destructor
+
+	// Set/Get image size
+	void        setSize(const uint size[]);              ///< set image size
+	const uint* getSize()       const { return m_size; } ///< get image size
+	      uint  getSize(uint n) const;                   ///< Get size of a dimension
+	const uint*    size()       const { return m_size; } ///< get image size
+	      uint     size(uint n) const;                   ///< Get size of a dimension
+
+	// Set/Get image size - 2D/3D shortcuts
+	void        setSize(uint width, uint height);             ///< set size in 2D
+	void        setSize(uint width, uint height, uint depth); ///< set size in 3D
+	
+	// Set/Get image data
+	const T& get(const uint index[])         const; ///< get data
+	void     set(const uint index[], const T &val); ///< set data
+
+	// Set/Get image data - 2D/3D shortcuts
+	const T& get(uint i, uint j)         const; ///< get data in 2D
+	const T& get(uint i, uint j, uint k) const; ///< get data in 3D
+	void     set(uint i, uint j, const T &val); ///< set data in 2D
+	void     set(uint i, uint j, uint k, const T &val); ///< set data in 3D
+	
+public:
+	typedef T* iterator; ///< iterator definition
+
+	/** get an iterator pointing at the beginning of the image data */
+	iterator begin()
+	{ return reinterpret_cast<iterator>(&m_data[0]); }
+
+	/** get an iterator pointing at the end of the image data */
+	iterator end()
+	{ uint size = 1; for(uint m=0; m<N; ++m) size = size * m_size[m];
+	  return reinterpret_cast<iterator>(&m_data[size-1]+1); }
+
+
+	typedef const T* const_iterator; ///< const iterator definition
+
+	/** get an iterator pointing at the beginning of the image data */
+	const_iterator begin() const
+	{ return reinterpret_cast<const_iterator>(&m_data[0]); }
+
+	/** get an iterator pointing at the end of the image data */
+	const_iterator end() const
+	{ uint size = 1; for(uint m=0; m<N; ++m) size = size * m_size[m];
+	  return reinterpret_cast<const_iterator>(&m_data[size-1]+1); }
+
+protected:
+	T* m_data;      ///< image data
+	uint m_size[N]; ///< image size (width, height)
+};
+
+
+/****************************************************************************/
+/* Implementation Below                                                     */
+/****************************************************************************/
+
+
+template <typename T, unsigned int N>
+Image<T, N>::Image()
+:	m_data(0)
+{
+	for(unsigned int n=0; n<N; ++n) m_size[n] = 0;
+}
+
+
+template <typename T, unsigned int N>
+Image<T, N>::Image(uint width, uint height)
+:	m_data(0)
+{
+	// Allocate memory for image
+	setSize(width, height);
+}
+
+
+template <typename T, unsigned int N>
+Image<T, N>::Image(uint width, uint height, uint depth)
+:	m_data(0)
+{
+	// Allocate memory for image
+	setSize(width, height, depth);
+}
+
+
+template <typename T, unsigned int N>
+Image<T, N>::Image(const T* data, uint width, uint height)
+:	m_data(0)
+{
+	// Allocate memory for image
+	setSize(width, height);
+
+	for(unsigned int i=0; i<width*height; ++i) m_data[i] = data[i];
+}
+
+
+template <typename T, unsigned int N>
+Image<T, N>::Image(const T* data, uint width, uint height, uint depth)
+:	m_data(0)
+{
+	// Allocate memory for image
+	setSize(width, height, depth);
+
+	for(unsigned int i=0; i<width*height*depth; ++i) m_data[i] = data[i];
+}
+
+
+template <typename T, unsigned int N>
+Image<T, N>::Image(const uint size[])
+:	m_data(0)
+{
+	// Allocate memory for image
+	setSize(size);
+}
+
+
+template <typename T, unsigned int N>
+Image<T, N>::Image(const Image& image)
+:	m_data(0)
+{
+	// Allocate memory for image
+	for(uint n=0; n<N; ++n) m_size[n] = image.m_size[n];
+	setSize(m_size);
+	
+	// Copy image
+	uint totalmem = 1;
+	for(uint n=0; n<N; ++n) totalmem *= m_size[n];
+	for(uint i=0; i<totalmem; ++i) m_data[i] = image.m_data[i];
+}
+
+
+template <typename T, unsigned int N>
+Image<T, N>::~Image()
+{
+	// Destroy data memory
+	if(m_data) delete [] m_data;
+}
+
+
+template <typename T, unsigned int N>
+void Image<T, N>::setSize(uint width, uint height)
+{
+	// Set the new image size
+	m_size[0] = width;
+	m_size[1] = height;
+	
+	// Delete any previous memory
+	if(m_data) delete [] m_data;
+	m_data = 0;
+	
+	// If a dimension is 0, leave data uninitialized
+	if(!m_size[0] || !m_size[1]) return;
+	
+	// Allocate memory
+	m_data = new T [width*height];
+	CHECK("allocated memory", m_data); // check if memory is allocated
+	
+	// Initialize it with 0s
+	for(uint i=0; i<width*height; ++i)
+		m_data[i] = 0;
+}
+
+
+template <typename T, unsigned int N>
+void Image<T, N>::setSize(uint width, uint height, uint depth)
+{
+	// Set the new image size
+	m_size[0] = width;
+	m_size[1] = height;
+	m_size[2] = depth;
+	
+	// Delete any previous memory
+	if(m_data) delete [] m_data;
+	m_data = 0;
+	
+	// If a dimension is 0, leave data uninitialized
+	if(!m_size[0] || !m_size[1] || !m_size[2]) return;
+	
+	// Allocate memory
+	m_data = new T [width*height*depth];
+	CHECK("allocated memory", m_data); // check if memory is allocated
+	
+	// Initialize it with 0s
+	for(uint i=0; i<width*height*depth; ++i)
+		m_data[i] = 0;
+}
+
+
+template <typename T, unsigned int N>
+void Image<T, N>::setSize(const uint size[])
+{
+	// Set the new image size
+	for(uint n=0; n<N; ++n) m_size[n] = size[n];
+	
+	// Delete any previous memory
+	if(m_data) delete [] m_data;
+	m_data = 0;
+	
+	// If a dimension is 0, leave data uninitialized
+	for(uint n=0; n<N; ++n) if(!m_size[n]) return;
+	
+	// Allocate memory
+	uint totalmem = 1;
+	for(uint n=0; n<N; ++n) totalmem *= m_size[n];
+	m_data = new T [totalmem];
+	CHECK("allocated memory", m_data); // check if memory is allocated
+	
+	// Initialize it with 0s
+	for(uint i=0; i<totalmem; ++i)
+		m_data[i] = 0;
+}
+
+
+template <typename T, unsigned int N>
+unsigned int Image<T, N>::getSize(uint n) const
+{
+	CHECKRANGE("dimension", n, 0, N);
+	return m_size[n];
+}
+
+
+template <typename T, unsigned int N>
+unsigned int Image<T, N>::size(uint n) const
+{
+	CHECKRANGE("dimension", n, 0, N);
+	return m_size[n];
+}
+
+
+template <typename T, unsigned int N>
+const T& Image<T, N>::get(uint i, uint j) const
+{
+	// Check if wrong coordinate
+	CHECK("initialization", m_data);
+	CHECKRANGE("size x", i, 0, m_size[0]);
+	CHECKRANGE("size y", j, 0, m_size[1]);
+
+	// Return the intensity at pixel (i,j)
+	uint index = (j*m_size[0])+i;
+	return m_data[index];
+}
+
+
+template <typename T, unsigned int N>
+const T& Image<T, N>::get(uint i, uint j, uint k) const
+{
+	// Check if wrong coordinate
+	CHECK("initialization", m_data);
+	CHECKRANGE("size x", i, 0, m_size[0]);
+	CHECKRANGE("size y", j, 0, m_size[1]);
+	CHECKRANGE("size z", k, 0, m_size[2]);
+
+	// Return the intensity at pixel (i,j)
+	uint index = ((k*m_size[1]+j)*m_size[0])+i;
+	return m_data[index];
+}
+
+
+template <typename T, unsigned int N>
+const T& Image<T, N>::get(const uint index[]) const
+{
+	// Check if wrong coordinate
+	CHECK("initialization", m_data);
+	for(uint n=0; n<N; ++n)
+		CHECKRANGE("size", index[n], 0, m_size[n]);
+
+	// Return the intensity at pixel (i,j)
+	uint offset = index[N-1];
+	for(uint n=N-1; n>0; --n)
+		offset = offset*m_size[n-1] + index[n-1];
+	return m_data[offset];
+}
+
+
+template <typename T, unsigned int N>
+void Image<T, N>::set(uint i, uint j, const T &val)
+{
+	// Check if wrong coordinate
+	CHECK("initialization", m_data);
+	CHECKRANGE("size x", i, 0, m_size[0]);
+	CHECKRANGE("size y", j, 0, m_size[1]);
+
+	// Set intensity at pixel (i,j)
+	uint index = (j*m_size[0])+i;
+	m_data[index] = val;
+}
+
+
+template <typename T, unsigned int N>
+void Image<T, N>::set(uint i, uint j, uint k, const T &val)
+{
+	// Check if wrong coordinate
+	CHECK("initialization", m_data);
+	CHECKRANGE("size x", i, 0, m_size[0]);
+	CHECKRANGE("size y", j, 0, m_size[1]);
+	CHECKRANGE("size z", k, 0, m_size[2]);
+
+	// Set intensity at pixel (i,j)
+	uint index = ((k*m_size[1]+j)*m_size[0])+i;
+	m_data[index] = val;
+}
+
+
+template <typename T, unsigned int N>
+void Image<T, N>::set(const uint index[], const T &val)
+{
+	// Check if wrong coordinate
+	if(!m_data) throw Error("no data");
+	for(uint n=0; n<N; ++n)
+		CHECKRANGE("size", index[n], 0, m_size[n]);
+
+	// Return the intensity at pixel (i,j)
+	uint offset = index[N-1];
+	for(uint n=N-1; n>0; --n)
+		offset = offset*m_size[n-1] + index[n-1];
+	m_data[offset] = val;
+}
+
+
+#endif
diff --git a/.svn/wc.db b/.svn/wc.db
new file mode 100644
index 0000000..1914e7a
Binary files /dev/null and b/.svn/wc.db differ
diff --git a/.svn/wc.db-journal b/.svn/wc.db-journal
new file mode 100644
index 0000000..e69de29
diff --git a/debian/libvd1.triggers b/debian/libvd1.triggers
deleted file mode 100644
index dd86603..0000000
--- a/debian/libvd1.triggers
+++ /dev/null
@@ -1 +0,0 @@
-activate-noawait ldconfig

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/libvd.git



More information about the debian-science-commits mailing list