summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDennis Peeten <dpeeten@onsneteindhoven.nl>2008-03-22 12:27:08 (GMT)
committerDennis Peeten <dpeeten@onsneteindhoven.nl>2008-03-22 12:27:08 (GMT)
commit3b5bbd6adfa88366ac290c6c3ae3cfce63729836 (patch)
treedbc6117a7ce34f7abd82a120e0fe6a9b9775f76b
parent3b0b1c1208f6f0380e02f3c0fdcec5bc9397642e (diff)
download2iv55-3b5bbd6adfa88366ac290c6c3ae3cfce63729836.zip
2iv55-3b5bbd6adfa88366ac290c6c3ae3cfce63729836.tar.gz
2iv55-3b5bbd6adfa88366ac290c6c3ae3cfce63729836.tar.bz2
Initial check-in of headtrack_demo
-rw-r--r--headtrack_demo/headtrack_demo.sln20
-rw-r--r--headtrack_demo/headtrack_demo.vcproj207
-rw-r--r--headtrack_demo/include/glut/GL/fgl.h1707
-rw-r--r--headtrack_demo/include/glut/GL/fglu.h210
-rw-r--r--headtrack_demo/include/glut/GL/fglut.h321
-rw-r--r--headtrack_demo/include/glut/GL/glsmap.h137
-rw-r--r--headtrack_demo/include/glut/GL/glut.h596
-rw-r--r--headtrack_demo/include/glut/GL/tube.h201
-rw-r--r--headtrack_demo/include/wiiuse/wiiuse.h632
-rw-r--r--headtrack_demo/lib/win32/glut/glut32.dllbin0 -> 180224 bytes
-rw-r--r--headtrack_demo/lib/win32/glut/glut32.dll.manifest8
-rw-r--r--headtrack_demo/lib/win32/glut/glut32.expbin0 -> 15582 bytes
-rw-r--r--headtrack_demo/lib/win32/glut/glut32.libbin0 -> 26872 bytes
-rw-r--r--headtrack_demo/lib/win32/wiiuse/wiiuse.dllbin0 -> 114688 bytes
-rw-r--r--headtrack_demo/lib/win32/wiiuse/wiiuse.libbin0 -> 7956 bytes
-rw-r--r--headtrack_demo/lib/win32/wiiuse/wiiuse_debug.dllbin0 -> 118784 bytes
-rw-r--r--headtrack_demo/src/main.cpp411
17 files changed, 4450 insertions, 0 deletions
diff --git a/headtrack_demo/headtrack_demo.sln b/headtrack_demo/headtrack_demo.sln
new file mode 100644
index 0000000..b666aa0
--- /dev/null
+++ b/headtrack_demo/headtrack_demo.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "headtrack_demo", "headtrack_demo.vcproj", "{EC82A014-53F3-4F72-AC71-CB1C9191CDF3}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {EC82A014-53F3-4F72-AC71-CB1C9191CDF3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EC82A014-53F3-4F72-AC71-CB1C9191CDF3}.Debug|Win32.Build.0 = Debug|Win32
+ {EC82A014-53F3-4F72-AC71-CB1C9191CDF3}.Release|Win32.ActiveCfg = Release|Win32
+ {EC82A014-53F3-4F72-AC71-CB1C9191CDF3}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/headtrack_demo/headtrack_demo.vcproj b/headtrack_demo/headtrack_demo.vcproj
new file mode 100644
index 0000000..b599500
--- /dev/null
+++ b/headtrack_demo/headtrack_demo.vcproj
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="headtrack_demo"
+ ProjectGUID="{EC82A014-53F3-4F72-AC71-CB1C9191CDF3}"
+ RootNamespace="headtrack_demo"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(OutDir)\intermediate"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".\include\glut\;.\include\wiiuse\"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="glut32.lib wiiuse.lib"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="./lib/win32/glut/; ./lib/win32/wiiuse/"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ Description="copying dynamic libraries to output directory..."
+ CommandLine="copy .\lib\win32\glut\glut32.dll $(OutDir)&#x0D;&#x0A;copy .\lib\win32\wiiuse\wiiuse.dll $(OutDir)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(ProjectDir)$(PlatformName)\$(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=".\include\glut\;.\include\wiiuse\"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="glut32.lib wiiuse.lib"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="./lib/win32/glut/; ./lib/win32/wiiuse/"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ Description="copying dynamic libraries to output directory..."
+ CommandLine="copy .\lib\win32\glut\glut32.dll $(OutDir)&#x0D;&#x0A;copy .\lib\win32\wiiuse\wiiuse.dll $(OutDir)"
+ />
+ </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=".\src\main.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/headtrack_demo/include/glut/GL/fgl.h b/headtrack_demo/include/glut/GL/fgl.h
new file mode 100644
index 0000000..d98ba1d
--- /dev/null
+++ b/headtrack_demo/include/glut/GL/fgl.h
@@ -0,0 +1,1707 @@
+
+C GLUT version of "GL/fgl.h"
+
+C Modifications from SGI IRIX 5.3 version:
+C 1) F prefix removed from OpenGL constants.
+C 2) Constants over 32 characters truncated to 32 characters.
+
+C ***********************************************************
+
+C AttribMask
+ integer*4 GL_CURRENT_BIT
+ parameter ( GL_CURRENT_BIT = 1 )
+ integer*4 GL_POINT_BIT
+ parameter ( GL_POINT_BIT = 2 )
+ integer*4 GL_LINE_BIT
+ parameter ( GL_LINE_BIT = 4 )
+ integer*4 GL_POLYGON_BIT
+ parameter ( GL_POLYGON_BIT = 8 )
+ integer*4 GL_POLYGON_STIPPLE_BIT
+ parameter ( GL_POLYGON_STIPPLE_BIT = 16 )
+ integer*4 GL_PIXEL_MODE_BIT
+ parameter ( GL_PIXEL_MODE_BIT = 32 )
+ integer*4 GL_LIGHTING_BIT
+ parameter ( GL_LIGHTING_BIT = 64 )
+ integer*4 GL_FOG_BIT
+ parameter ( GL_FOG_BIT = 128 )
+ integer*4 GL_DEPTH_BUFFER_BIT
+ parameter ( GL_DEPTH_BUFFER_BIT = 256 )
+ integer*4 GL_ACCUM_BUFFER_BIT
+ parameter ( GL_ACCUM_BUFFER_BIT = 512 )
+ integer*4 GL_STENCIL_BUFFER_BIT
+ parameter ( GL_STENCIL_BUFFER_BIT = 1024 )
+ integer*4 GL_VIEWPORT_BIT
+ parameter ( GL_VIEWPORT_BIT = 2048 )
+ integer*4 GL_TRANSFORM_BIT
+ parameter ( GL_TRANSFORM_BIT = 4096 )
+ integer*4 GL_ENABLE_BIT
+ parameter ( GL_ENABLE_BIT = 8192 )
+ integer*4 GL_COLOR_BUFFER_BIT
+ parameter ( GL_COLOR_BUFFER_BIT = 16384 )
+ integer*4 GL_HINT_BIT
+ parameter ( GL_HINT_BIT = 32768 )
+ integer*4 GL_EVAL_BIT
+ parameter ( GL_EVAL_BIT = 65536 )
+ integer*4 GL_LIST_BIT
+ parameter ( GL_LIST_BIT = 131072 )
+ integer*4 GL_TEXTURE_BIT
+ parameter ( GL_TEXTURE_BIT = 262144 )
+ integer*4 GL_SCISSOR_BIT
+ parameter ( GL_SCISSOR_BIT = 524288 )
+ integer*4 GL_ALL_ATTRIB_BITS
+ parameter ( GL_ALL_ATTRIB_BITS = 1048575 )
+C GL_MULTISAMPLE_BIT_EXT
+
+C ClearBufferMask
+C GL_COLOR_BUFFER_BIT
+C GL_ACCUM_BUFFER_BIT
+C GL_STENCIL_BUFFER_BIT
+C GL_DEPTH_BUFFER_BIT
+
+C Boolean
+ integer*4 GL_FALSE
+ parameter ( GL_FALSE = 0 )
+ integer*4 GL_TRUE
+ parameter ( GL_TRUE = 1 )
+
+C BeginMode
+ integer*4 GL_POINTS
+ parameter ( GL_POINTS = 0 )
+ integer*4 GL_LINES
+ parameter ( GL_LINES = 1 )
+ integer*4 GL_LINE_LOOP
+ parameter ( GL_LINE_LOOP = 2 )
+ integer*4 GL_LINE_STRIP
+ parameter ( GL_LINE_STRIP = 3 )
+ integer*4 GL_TRIANGLES
+ parameter ( GL_TRIANGLES = 4 )
+ integer*4 GL_TRIANGLE_STRIP
+ parameter ( GL_TRIANGLE_STRIP = 5 )
+ integer*4 GL_TRIANGLE_FAN
+ parameter ( GL_TRIANGLE_FAN = 6 )
+ integer*4 GL_QUADS
+ parameter ( GL_QUADS = 7 )
+ integer*4 GL_QUAD_STRIP
+ parameter ( GL_QUAD_STRIP = 8 )
+ integer*4 GL_POLYGON
+ parameter ( GL_POLYGON = 9 )
+
+C AccumOp
+ integer*4 GL_ACCUM
+ parameter ( GL_ACCUM = 256 )
+ integer*4 GL_LOAD
+ parameter ( GL_LOAD = 257 )
+ integer*4 GL_RETURN
+ parameter ( GL_RETURN = 258 )
+ integer*4 GL_MULT
+ parameter ( GL_MULT = 259 )
+ integer*4 GL_ADD
+ parameter ( GL_ADD = 260 )
+
+C AlphaFunction
+ integer*4 GL_NEVER
+ parameter ( GL_NEVER = 512 )
+ integer*4 GL_LESS
+ parameter ( GL_LESS = 513 )
+ integer*4 GL_EQUAL
+ parameter ( GL_EQUAL = 514 )
+ integer*4 GL_LEQUAL
+ parameter ( GL_LEQUAL = 515 )
+ integer*4 GL_GREATER
+ parameter ( GL_GREATER = 516 )
+ integer*4 GL_NOTEQUAL
+ parameter ( GL_NOTEQUAL = 517 )
+ integer*4 GL_GEQUAL
+ parameter ( GL_GEQUAL = 518 )
+ integer*4 GL_ALWAYS
+ parameter ( GL_ALWAYS = 519 )
+
+C BlendingFactorDest
+ integer*4 GL_ZERO
+ parameter ( GL_ZERO = 0 )
+ integer*4 GL_ONE
+ parameter ( GL_ONE = 1 )
+ integer*4 GL_SRC_COLOR
+ parameter ( GL_SRC_COLOR = 768 )
+ integer*4 GL_ONE_MINUS_SRC_COLOR
+ parameter ( GL_ONE_MINUS_SRC_COLOR = 769 )
+ integer*4 GL_SRC_ALPHA
+ parameter ( GL_SRC_ALPHA = 770 )
+ integer*4 GL_ONE_MINUS_SRC_ALPHA
+ parameter ( GL_ONE_MINUS_SRC_ALPHA = 771 )
+ integer*4 GL_DST_ALPHA
+ parameter ( GL_DST_ALPHA = 772 )
+ integer*4 GL_ONE_MINUS_DST_ALPHA
+ parameter ( GL_ONE_MINUS_DST_ALPHA = 773 )
+C GL_CONSTANT_COLOR_EXT
+C GL_ONE_MINUS_CONSTANT_COLOR_EXT
+C GL_CONSTANT_ALPHA_EXT
+C GL_ONE_MINUS_CONSTANT_ALPHA_EXT
+
+C BlendingFactorSrc
+C GL_ZERO
+C GL_ONE
+ integer*4 GL_DST_COLOR
+ parameter ( GL_DST_COLOR = 774 )
+ integer*4 GL_ONE_MINUS_DST_COLOR
+ parameter ( GL_ONE_MINUS_DST_COLOR = 775 )
+ integer*4 GL_SRC_ALPHA_SATURATE
+ parameter ( GL_SRC_ALPHA_SATURATE = 776 )
+C GL_SRC_ALPHA
+C GL_ONE_MINUS_SRC_ALPHA
+C GL_DST_ALPHA
+C GL_ONE_MINUS_DST_ALPHA
+C GL_CONSTANT_COLOR_EXT
+C GL_ONE_MINUS_CONSTANT_COLOR_EXT
+C GL_CONSTANT_ALPHA_EXT
+C GL_ONE_MINUS_CONSTANT_ALPHA_EXT
+
+C BlendingMode
+C GL_LOGIC_OP
+C GL_FUNC_ADD_EXT
+C GL_MIN_EXT
+C GL_MAX_EXT
+C GL_FUNC_SUBTRACT_EXT
+C GL_FUNC_REVERSE_SUBTRACT_EXT
+
+C ColorMaterialFace
+C GL_FRONT
+C GL_BACK
+C GL_FRONT_AND_BACK
+
+C ColorMaterialParameter
+C GL_AMBIENT
+C GL_DIFFUSE
+C GL_SPECULAR
+C GL_EMISSION
+C GL_AMBIENT_AND_DIFFUSE
+
+C ConvolutionBorderMode
+C GL_REDUCE_EXT
+
+C ConvolutionParameter
+C GL_CONVOLUTION_BORDER_MODE_EXT
+C GL_CONVOLUTION_FILTER_SCALE_EXT
+C GL_CONVOLUTION_FILTER_BIAS_EXT
+
+C ConvolutionTarget
+C GL_CONVOLUTION_1D_EXT
+C GL_CONVOLUTION_2D_EXT
+
+C CullFaceMode
+C GL_FRONT
+C GL_BACK
+C GL_FRONT_AND_BACK
+
+C DepthFunction
+C GL_NEVER
+C GL_LESS
+C GL_EQUAL
+C GL_LEQUAL
+C GL_GREATER
+C GL_NOTEQUAL
+C GL_GEQUAL
+C GL_ALWAYS
+
+C DrawBufferMode
+ integer*4 GL_NONE
+ parameter ( GL_NONE = 0 )
+ integer*4 GL_FRONT_LEFT
+ parameter ( GL_FRONT_LEFT = 1024 )
+ integer*4 GL_FRONT_RIGHT
+ parameter ( GL_FRONT_RIGHT = 1025 )
+ integer*4 GL_BACK_LEFT
+ parameter ( GL_BACK_LEFT = 1026 )
+ integer*4 GL_BACK_RIGHT
+ parameter ( GL_BACK_RIGHT = 1027 )
+ integer*4 GL_FRONT
+ parameter ( GL_FRONT = 1028 )
+ integer*4 GL_BACK
+ parameter ( GL_BACK = 1029 )
+ integer*4 GL_LEFT
+ parameter ( GL_LEFT = 1030 )
+ integer*4 GL_RIGHT
+ parameter ( GL_RIGHT = 1031 )
+ integer*4 GL_FRONT_AND_BACK
+ parameter ( GL_FRONT_AND_BACK = 1032 )
+ integer*4 GL_AUX0
+ parameter ( GL_AUX0 = 1033 )
+ integer*4 GL_AUX1
+ parameter ( GL_AUX1 = 1034 )
+ integer*4 GL_AUX2
+ parameter ( GL_AUX2 = 1035 )
+ integer*4 GL_AUX3
+ parameter ( GL_AUX3 = 1036 )
+
+C Enable
+C GL_FOG
+C GL_LIGHTING
+C GL_TEXTURE_1D
+C GL_TEXTURE_2D
+C GL_LINE_STIPPLE
+C GL_POLYGON_STIPPLE
+C GL_CULL_FACE
+C GL_ALPHA_TEST
+C GL_BLEND
+C GL_LOGIC_OP
+C GL_DITHER
+C GL_STENCIL_TEST
+C GL_DEPTH_TEST
+C GL_CLIP_PLANE0
+C GL_CLIP_PLANE1
+C GL_CLIP_PLANE2
+C GL_CLIP_PLANE3
+C GL_CLIP_PLANE4
+C GL_CLIP_PLANE5
+C GL_LIGHT0
+C GL_LIGHT1
+C GL_LIGHT2
+C GL_LIGHT3
+C GL_LIGHT4
+C GL_LIGHT5
+C GL_LIGHT6
+C GL_LIGHT7
+C GL_TEXTURE_GEN_S
+C GL_TEXTURE_GEN_T
+C GL_TEXTURE_GEN_R
+C GL_TEXTURE_GEN_Q
+C GL_MAP1_VERTEX_3
+C GL_MAP1_VERTEX_4
+C GL_MAP1_COLOR_4
+C GL_MAP1_INDEX
+C GL_MAP1_NORMAL
+C GL_MAP1_TEXTURE_COORD_1
+C GL_MAP1_TEXTURE_COORD_2
+C GL_MAP1_TEXTURE_COORD_3
+C GL_MAP1_TEXTURE_COORD_4
+C GL_MAP2_VERTEX_3
+C GL_MAP2_VERTEX_4
+C GL_MAP2_COLOR_4
+C GL_MAP2_INDEX
+C GL_MAP2_NORMAL
+C GL_MAP2_TEXTURE_COORD_1
+C GL_MAP2_TEXTURE_COORD_2
+C GL_MAP2_TEXTURE_COORD_3
+C GL_MAP2_TEXTURE_COORD_4
+C GL_POINT_SMOOTH
+C GL_LINE_SMOOTH
+C GL_POLYGON_SMOOTH
+C GL_SCISSOR_TEST
+C GL_COLOR_MATERIAL
+C GL_NORMALIZE
+C GL_AUTO_NORMAL
+C GL_CONVOLUTION_1D_EXT
+C GL_CONVOLUTION_2D_EXT
+C GL_SEPARABLE_2D_EXT
+C GL_HISTOGRAM_EXT
+C GL_MINMAX_EXT
+C GL_POLYGON_OFFSET_EXT
+C GL_TEXTURE_3D_EXT
+C GL_MULTISAMPLE_SGIS
+C GL_SAMPLE_ALPHA_TO_MASK_SGIS
+C GL_SAMPLE_ALPHA_TO_ONE_SGIS
+C GL_SAMPLE_MASK_SGIS
+
+C ErrorCode
+ integer*4 GL_NO_ERROR
+ parameter ( GL_NO_ERROR = 0 )
+ integer*4 GL_INVALID_ENUM
+ parameter ( GL_INVALID_ENUM = 1280 )
+ integer*4 GL_INVALID_VALUE
+ parameter ( GL_INVALID_VALUE = 1281 )
+ integer*4 GL_INVALID_OPERATION
+ parameter ( GL_INVALID_OPERATION = 1282 )
+ integer*4 GL_STACK_OVERFLOW
+ parameter ( GL_STACK_OVERFLOW = 1283 )
+ integer*4 GL_STACK_UNDERFLOW
+ parameter ( GL_STACK_UNDERFLOW = 1284 )
+ integer*4 GL_OUT_OF_MEMORY
+ parameter ( GL_OUT_OF_MEMORY = 1285 )
+C GL_TABLE_TOO_LARGE_EXT
+C GL_TEXTURE_TOO_LARGE_EXT
+
+C FeedBackMode
+ integer*4 GL_2D
+ parameter ( GL_2D = 1536 )
+ integer*4 GL_3D
+ parameter ( GL_3D = 1537 )
+ integer*4 GL_3D_COLOR
+ parameter ( GL_3D_COLOR = 1538 )
+ integer*4 GL_3D_COLOR_TEXTURE
+ parameter ( GL_3D_COLOR_TEXTURE = 1539 )
+ integer*4 GL_4D_COLOR_TEXTURE
+ parameter ( GL_4D_COLOR_TEXTURE = 1540 )
+
+C FeedBackToken
+ integer*4 GL_PASS_THROUGH_TOKEN
+ parameter ( GL_PASS_THROUGH_TOKEN = 1792 )
+ integer*4 GL_POINT_TOKEN
+ parameter ( GL_POINT_TOKEN = 1793 )
+ integer*4 GL_LINE_TOKEN
+ parameter ( GL_LINE_TOKEN = 1794 )
+ integer*4 GL_POLYGON_TOKEN
+ parameter ( GL_POLYGON_TOKEN = 1795 )
+ integer*4 GL_BITMAP_TOKEN
+ parameter ( GL_BITMAP_TOKEN = 1796 )
+ integer*4 GL_DRAW_PIXEL_TOKEN
+ parameter ( GL_DRAW_PIXEL_TOKEN = 1797 )
+ integer*4 GL_COPY_PIXEL_TOKEN
+ parameter ( GL_COPY_PIXEL_TOKEN = 1798 )
+ integer*4 GL_LINE_RESET_TOKEN
+ parameter ( GL_LINE_RESET_TOKEN = 1799 )
+
+C FogMode
+C GL_LINEAR
+ integer*4 GL_EXP
+ parameter ( GL_EXP = 2048 )
+ integer*4 GL_EXP2
+ parameter ( GL_EXP2 = 2049 )
+
+C FogParameter
+C GL_FOG_COLOR
+C GL_FOG_DENSITY
+C GL_FOG_END
+C GL_FOG_INDEX
+C GL_FOG_MODE
+C GL_FOG_START
+
+C FrontFaceDirection
+ integer*4 GL_CW
+ parameter ( GL_CW = 2304 )
+ integer*4 GL_CCW
+ parameter ( GL_CCW = 2305 )
+
+C GetConvolutionParameter
+C GL_CONVOLUTION_BORDER_MODE_EXT
+C GL_CONVOLUTION_FILTER_SCALE_EXT
+C GL_CONVOLUTION_FILTER_BIAS_EXT
+C GL_CONVOLUTION_FORMAT_EXT
+C GL_CONVOLUTION_WIDTH_EXT
+C GL_CONVOLUTION_HEIGHT_EXT
+C GL_MAX_CONVOLUTION_WIDTH_EXT
+C GL_MAX_CONVOLUTION_HEIGHT_EXT
+
+C GetHistogramParameter
+C GL_HISTOGRAM_WIDTH_EXT
+C GL_HISTOGRAM_FORMAT_EXT
+C GL_HISTOGRAM_RED_SIZE_EXT
+C GL_HISTOGRAM_GREEN_SIZE_EXT
+C GL_HISTOGRAM_BLUE_SIZE_EXT
+C GL_HISTOGRAM_ALPHA_SIZE_EXT
+C GL_HISTOGRAM_LUMINANCE_SIZE_EXT
+C GL_HISTOGRAM_SINK_EXT
+
+C GetMapTarget
+ integer*4 GL_COEFF
+ parameter ( GL_COEFF = 2560 )
+ integer*4 GL_ORDER
+ parameter ( GL_ORDER = 2561 )
+ integer*4 GL_DOMAIN
+ parameter ( GL_DOMAIN = 2562 )
+
+C GetMinmaxParameter
+C GL_MINMAX_FORMAT_EXT
+C GL_MINMAX_SINK_EXT
+
+C GetPixelMap
+ integer*4 GL_PIXEL_MAP_I_TO_I
+ parameter ( GL_PIXEL_MAP_I_TO_I = 3184 )
+ integer*4 GL_PIXEL_MAP_S_TO_S
+ parameter ( GL_PIXEL_MAP_S_TO_S = 3185 )
+ integer*4 GL_PIXEL_MAP_I_TO_R
+ parameter ( GL_PIXEL_MAP_I_TO_R = 3186 )
+ integer*4 GL_PIXEL_MAP_I_TO_G
+ parameter ( GL_PIXEL_MAP_I_TO_G = 3187 )
+ integer*4 GL_PIXEL_MAP_I_TO_B
+ parameter ( GL_PIXEL_MAP_I_TO_B = 3188 )
+ integer*4 GL_PIXEL_MAP_I_TO_A
+ parameter ( GL_PIXEL_MAP_I_TO_A = 3189 )
+ integer*4 GL_PIXEL_MAP_R_TO_R
+ parameter ( GL_PIXEL_MAP_R_TO_R = 3190 )
+ integer*4 GL_PIXEL_MAP_G_TO_G
+ parameter ( GL_PIXEL_MAP_G_TO_G = 3191 )
+ integer*4 GL_PIXEL_MAP_B_TO_B
+ parameter ( GL_PIXEL_MAP_B_TO_B = 3192 )
+ integer*4 GL_PIXEL_MAP_A_TO_A
+ parameter ( GL_PIXEL_MAP_A_TO_A = 3193 )
+
+C GetTarget
+ integer*4 GL_CURRENT_COLOR
+ parameter ( GL_CURRENT_COLOR = 2816 )
+ integer*4 GL_CURRENT_INDEX
+ parameter ( GL_CURRENT_INDEX = 2817 )
+ integer*4 GL_CURRENT_NORMAL
+ parameter ( GL_CURRENT_NORMAL = 2818 )
+ integer*4 GL_CURRENT_TEXTURE_COORDS
+ parameter ( GL_CURRENT_TEXTURE_COORDS = 2819 )
+ integer*4 GL_CURRENT_RASTER_COLOR
+ parameter ( GL_CURRENT_RASTER_COLOR = 2820 )
+ integer*4 GL_CURRENT_RASTER_INDEX
+ parameter ( GL_CURRENT_RASTER_INDEX = 2821 )
+ integer*4 GL_CURRENT_RASTER_TEXTURE_COORDS
+ parameter ( GL_CURRENT_RASTER_TEXTURE_COORDS = 2822 )
+ integer*4 GL_CURRENT_RASTER_POSITION
+ parameter ( GL_CURRENT_RASTER_POSITION = 2823 )
+ integer*4 GL_CURRENT_RASTER_POSITION_VALID
+ parameter ( GL_CURRENT_RASTER_POSITION_VALID = 2824 )
+ integer*4 GL_CURRENT_RASTER_DISTANCE
+ parameter ( GL_CURRENT_RASTER_DISTANCE = 2825 )
+ integer*4 GL_POINT_SMOOTH
+ parameter ( GL_POINT_SMOOTH = 2832 )
+ integer*4 GL_POINT_SIZE
+ parameter ( GL_POINT_SIZE = 2833 )
+ integer*4 GL_POINT_SIZE_RANGE
+ parameter ( GL_POINT_SIZE_RANGE = 2834 )
+ integer*4 GL_POINT_SIZE_GRANULARITY
+ parameter ( GL_POINT_SIZE_GRANULARITY = 2835 )
+ integer*4 GL_LINE_SMOOTH
+ parameter ( GL_LINE_SMOOTH = 2848 )
+ integer*4 GL_LINE_WIDTH
+ parameter ( GL_LINE_WIDTH = 2849 )
+ integer*4 GL_LINE_WIDTH_RANGE
+ parameter ( GL_LINE_WIDTH_RANGE = 2850 )
+ integer*4 GL_LINE_WIDTH_GRANULARITY
+ parameter ( GL_LINE_WIDTH_GRANULARITY = 2851 )
+ integer*4 GL_LINE_STIPPLE
+ parameter ( GL_LINE_STIPPLE = 2852 )
+ integer*4 GL_LINE_STIPPLE_PATTERN
+ parameter ( GL_LINE_STIPPLE_PATTERN = 2853 )
+ integer*4 GL_LINE_STIPPLE_REPEAT
+ parameter ( GL_LINE_STIPPLE_REPEAT = 2854 )
+ integer*4 GL_LIST_MODE
+ parameter ( GL_LIST_MODE = 2864 )
+ integer*4 GL_MAX_LIST_NESTING
+ parameter ( GL_MAX_LIST_NESTING = 2865 )
+ integer*4 GL_LIST_BASE
+ parameter ( GL_LIST_BASE = 2866 )
+ integer*4 GL_LIST_INDEX
+ parameter ( GL_LIST_INDEX = 2867 )
+ integer*4 GL_POLYGON_MODE
+ parameter ( GL_POLYGON_MODE = 2880 )
+ integer*4 GL_POLYGON_SMOOTH
+ parameter ( GL_POLYGON_SMOOTH = 2881 )
+ integer*4 GL_POLYGON_STIPPLE
+ parameter ( GL_POLYGON_STIPPLE = 2882 )
+ integer*4 GL_EDGE_FLAG
+ parameter ( GL_EDGE_FLAG = 2883 )
+ integer*4 GL_CULL_FACE
+ parameter ( GL_CULL_FACE = 2884 )
+ integer*4 GL_CULL_FACE_MODE
+ parameter ( GL_CULL_FACE_MODE = 2885 )
+ integer*4 GL_FRONT_FACE
+ parameter ( GL_FRONT_FACE = 2886 )
+ integer*4 GL_LIGHTING
+ parameter ( GL_LIGHTING = 2896 )
+ integer*4 GL_LIGHT_MODEL_LOCAL_VIEWER
+ parameter ( GL_LIGHT_MODEL_LOCAL_VIEWER = 2897 )
+ integer*4 GL_LIGHT_MODEL_TWO_SIDE
+ parameter ( GL_LIGHT_MODEL_TWO_SIDE = 2898 )
+ integer*4 GL_LIGHT_MODEL_AMBIENT
+ parameter ( GL_LIGHT_MODEL_AMBIENT = 2899 )
+ integer*4 GL_SHADE_MODEL
+ parameter ( GL_SHADE_MODEL = 2900 )
+ integer*4 GL_COLOR_MATERIAL_FACE
+ parameter ( GL_COLOR_MATERIAL_FACE = 2901 )
+ integer*4 GL_COLOR_MATERIAL_PARAMETER
+ parameter ( GL_COLOR_MATERIAL_PARAMETER = 2902 )
+ integer*4 GL_COLOR_MATERIAL
+ parameter ( GL_COLOR_MATERIAL = 2903 )
+ integer*4 GL_FOG
+ parameter ( GL_FOG = 2912 )
+ integer*4 GL_FOG_INDEX
+ parameter ( GL_FOG_INDEX = 2913 )
+ integer*4 GL_FOG_DENSITY
+ parameter ( GL_FOG_DENSITY = 2914 )
+ integer*4 GL_FOG_START
+ parameter ( GL_FOG_START = 2915 )
+ integer*4 GL_FOG_END
+ parameter ( GL_FOG_END = 2916 )
+ integer*4 GL_FOG_MODE
+ parameter ( GL_FOG_MODE = 2917 )
+ integer*4 GL_FOG_COLOR
+ parameter ( GL_FOG_COLOR = 2918 )
+ integer*4 GL_DEPTH_RANGE
+ parameter ( GL_DEPTH_RANGE = 2928 )
+ integer*4 GL_DEPTH_TEST
+ parameter ( GL_DEPTH_TEST = 2929 )
+ integer*4 GL_DEPTH_WRITEMASK
+ parameter ( GL_DEPTH_WRITEMASK = 2930 )
+ integer*4 GL_DEPTH_CLEAR_VALUE
+ parameter ( GL_DEPTH_CLEAR_VALUE = 2931 )
+ integer*4 GL_DEPTH_FUNC
+ parameter ( GL_DEPTH_FUNC = 2932 )
+ integer*4 GL_ACCUM_CLEAR_VALUE
+ parameter ( GL_ACCUM_CLEAR_VALUE = 2944 )
+ integer*4 GL_STENCIL_TEST
+ parameter ( GL_STENCIL_TEST = 2960 )
+ integer*4 GL_STENCIL_CLEAR_VALUE
+ parameter ( GL_STENCIL_CLEAR_VALUE = 2961 )
+ integer*4 GL_STENCIL_FUNC
+ parameter ( GL_STENCIL_FUNC = 2962 )
+ integer*4 GL_STENCIL_VALUE_MASK
+ parameter ( GL_STENCIL_VALUE_MASK = 2963 )
+ integer*4 GL_STENCIL_FAIL
+ parameter ( GL_STENCIL_FAIL = 2964 )
+ integer*4 GL_STENCIL_PASS_DEPTH_FAIL
+ parameter ( GL_STENCIL_PASS_DEPTH_FAIL = 2965 )
+ integer*4 GL_STENCIL_PASS_DEPTH_PASS
+ parameter ( GL_STENCIL_PASS_DEPTH_PASS = 2966 )
+ integer*4 GL_STENCIL_REF
+ parameter ( GL_STENCIL_REF = 2967 )
+ integer*4 GL_STENCIL_WRITEMASK
+ parameter ( GL_STENCIL_WRITEMASK = 2968 )
+ integer*4 GL_MATRIX_MODE
+ parameter ( GL_MATRIX_MODE = 2976 )
+ integer*4 GL_NORMALIZE
+ parameter ( GL_NORMALIZE = 2977 )
+ integer*4 GL_VIEWPORT
+ parameter ( GL_VIEWPORT = 2978 )
+ integer*4 GL_MODELVIEW_STACK_DEPTH
+ parameter ( GL_MODELVIEW_STACK_DEPTH = 2979 )
+ integer*4 GL_PROJECTION_STACK_DEPTH
+ parameter ( GL_PROJECTION_STACK_DEPTH = 2980 )
+ integer*4 GL_TEXTURE_STACK_DEPTH
+ parameter ( GL_TEXTURE_STACK_DEPTH = 2981 )
+ integer*4 GL_MODELVIEW_MATRIX
+ parameter ( GL_MODELVIEW_MATRIX = 2982 )
+ integer*4 GL_PROJECTION_MATRIX
+ parameter ( GL_PROJECTION_MATRIX = 2983 )
+ integer*4 GL_TEXTURE_MATRIX
+ parameter ( GL_TEXTURE_MATRIX = 2984 )
+ integer*4 GL_ATTRIB_STACK_DEPTH
+ parameter ( GL_ATTRIB_STACK_DEPTH = 2992 )
+ integer*4 GL_ALPHA_TEST
+ parameter ( GL_ALPHA_TEST = 3008 )
+ integer*4 GL_ALPHA_TEST_FUNC
+ parameter ( GL_ALPHA_TEST_FUNC = 3009 )
+ integer*4 GL_ALPHA_TEST_REF
+ parameter ( GL_ALPHA_TEST_REF = 3010 )
+ integer*4 GL_DITHER
+ parameter ( GL_DITHER = 3024 )
+ integer*4 GL_BLEND_DST
+ parameter ( GL_BLEND_DST = 3040 )
+ integer*4 GL_BLEND_SRC
+ parameter ( GL_BLEND_SRC = 3041 )
+ integer*4 GL_BLEND
+ parameter ( GL_BLEND = 3042 )
+ integer*4 GL_LOGIC_OP_MODE
+ parameter ( GL_LOGIC_OP_MODE = 3056 )
+ integer*4 GL_LOGIC_OP
+ parameter ( GL_LOGIC_OP = 3057 )
+ integer*4 GL_AUX_BUFFERS
+ parameter ( GL_AUX_BUFFERS = 3072 )
+ integer*4 GL_DRAW_BUFFER
+ parameter ( GL_DRAW_BUFFER = 3073 )
+ integer*4 GL_READ_BUFFER
+ parameter ( GL_READ_BUFFER = 3074 )
+ integer*4 GL_SCISSOR_BOX
+ parameter ( GL_SCISSOR_BOX = 3088 )
+ integer*4 GL_SCISSOR_TEST
+ parameter ( GL_SCISSOR_TEST = 3089 )
+ integer*4 GL_INDEX_CLEAR_VALUE
+ parameter ( GL_INDEX_CLEAR_VALUE = 3104 )
+ integer*4 GL_INDEX_WRITEMASK
+ parameter ( GL_INDEX_WRITEMASK = 3105 )
+ integer*4 GL_COLOR_CLEAR_VALUE
+ parameter ( GL_COLOR_CLEAR_VALUE = 3106 )
+ integer*4 GL_COLOR_WRITEMASK
+ parameter ( GL_COLOR_WRITEMASK = 3107 )
+ integer*4 GL_INDEX_MODE
+ parameter ( GL_INDEX_MODE = 3120 )
+ integer*4 GL_RGBA_MODE
+ parameter ( GL_RGBA_MODE = 3121 )
+ integer*4 GL_DOUBLEBUFFER
+ parameter ( GL_DOUBLEBUFFER = 3122 )
+ integer*4 GL_STEREO
+ parameter ( GL_STEREO = 3123 )
+ integer*4 GL_RENDER_MODE
+ parameter ( GL_RENDER_MODE = 3136 )
+ integer*4 GL_PERSPECTIVE_CORRECTION_HINT
+ parameter ( GL_PERSPECTIVE_CORRECTION_HINT = 3152 )
+ integer*4 GL_POINT_SMOOTH_HINT
+ parameter ( GL_POINT_SMOOTH_HINT = 3153 )
+ integer*4 GL_LINE_SMOOTH_HINT
+ parameter ( GL_LINE_SMOOTH_HINT = 3154 )
+ integer*4 GL_POLYGON_SMOOTH_HINT
+ parameter ( GL_POLYGON_SMOOTH_HINT = 3155 )
+ integer*4 GL_FOG_HINT
+ parameter ( GL_FOG_HINT = 3156 )
+ integer*4 GL_TEXTURE_GEN_S
+ parameter ( GL_TEXTURE_GEN_S = 3168 )
+ integer*4 GL_TEXTURE_GEN_T
+ parameter ( GL_TEXTURE_GEN_T = 3169 )
+ integer*4 GL_TEXTURE_GEN_R
+ parameter ( GL_TEXTURE_GEN_R = 3170 )
+ integer*4 GL_TEXTURE_GEN_Q
+ parameter ( GL_TEXTURE_GEN_Q = 3171 )
+ integer*4 GL_PIXEL_MAP_I_TO_I_SIZE
+ parameter ( GL_PIXEL_MAP_I_TO_I_SIZE = 3248 )
+ integer*4 GL_PIXEL_MAP_S_TO_S_SIZE
+ parameter ( GL_PIXEL_MAP_S_TO_S_SIZE = 3249 )
+ integer*4 GL_PIXEL_MAP_I_TO_R_SIZE
+ parameter ( GL_PIXEL_MAP_I_TO_R_SIZE = 3250 )
+ integer*4 GL_PIXEL_MAP_I_TO_G_SIZE
+ parameter ( GL_PIXEL_MAP_I_TO_G_SIZE = 3251 )
+ integer*4 GL_PIXEL_MAP_I_TO_B_SIZE
+ parameter ( GL_PIXEL_MAP_I_TO_B_SIZE = 3252 )
+ integer*4 GL_PIXEL_MAP_I_TO_A_SIZE
+ parameter ( GL_PIXEL_MAP_I_TO_A_SIZE = 3253 )
+ integer*4 GL_PIXEL_MAP_R_TO_R_SIZE
+ parameter ( GL_PIXEL_MAP_R_TO_R_SIZE = 3254 )
+ integer*4 GL_PIXEL_MAP_G_TO_G_SIZE
+ parameter ( GL_PIXEL_MAP_G_TO_G_SIZE = 3255 )
+ integer*4 GL_PIXEL_MAP_B_TO_B_SIZE
+ parameter ( GL_PIXEL_MAP_B_TO_B_SIZE = 3256 )
+ integer*4 GL_PIXEL_MAP_A_TO_A_SIZE
+ parameter ( GL_PIXEL_MAP_A_TO_A_SIZE = 3257 )
+ integer*4 GL_UNPACK_SWAP_BYTES
+ parameter ( GL_UNPACK_SWAP_BYTES = 3312 )
+ integer*4 GL_UNPACK_LSB_FIRST
+ parameter ( GL_UNPACK_LSB_FIRST = 3313 )
+ integer*4 GL_UNPACK_ROW_LENGTH
+ parameter ( GL_UNPACK_ROW_LENGTH = 3314 )
+ integer*4 GL_UNPACK_SKIP_ROWS
+ parameter ( GL_UNPACK_SKIP_ROWS = 3315 )
+ integer*4 GL_UNPACK_SKIP_PIXELS
+ parameter ( GL_UNPACK_SKIP_PIXELS = 3316 )
+ integer*4 GL_UNPACK_ALIGNMENT
+ parameter ( GL_UNPACK_ALIGNMENT = 3317 )
+ integer*4 GL_PACK_SWAP_BYTES
+ parameter ( GL_PACK_SWAP_BYTES = 3328 )
+ integer*4 GL_PACK_LSB_FIRST
+ parameter ( GL_PACK_LSB_FIRST = 3329 )
+ integer*4 GL_PACK_ROW_LENGTH
+ parameter ( GL_PACK_ROW_LENGTH = 3330 )
+ integer*4 GL_PACK_SKIP_ROWS
+ parameter ( GL_PACK_SKIP_ROWS = 3331 )
+ integer*4 GL_PACK_SKIP_PIXELS
+ parameter ( GL_PACK_SKIP_PIXELS = 3332 )
+ integer*4 GL_PACK_ALIGNMENT
+ parameter ( GL_PACK_ALIGNMENT = 3333 )
+ integer*4 GL_MAP_COLOR
+ parameter ( GL_MAP_COLOR = 3344 )
+ integer*4 GL_MAP_STENCIL
+ parameter ( GL_MAP_STENCIL = 3345 )
+ integer*4 GL_INDEX_SHIFT
+ parameter ( GL_INDEX_SHIFT = 3346 )
+ integer*4 GL_INDEX_OFFSET
+ parameter ( GL_INDEX_OFFSET = 3347 )
+ integer*4 GL_RED_SCALE
+ parameter ( GL_RED_SCALE = 3348 )
+ integer*4 GL_RED_BIAS
+ parameter ( GL_RED_BIAS = 3349 )
+ integer*4 GL_ZOOM_X
+ parameter ( GL_ZOOM_X = 3350 )
+ integer*4 GL_ZOOM_Y
+ parameter ( GL_ZOOM_Y = 3351 )
+ integer*4 GL_GREEN_SCALE
+ parameter ( GL_GREEN_SCALE = 3352 )
+ integer*4 GL_GREEN_BIAS
+ parameter ( GL_GREEN_BIAS = 3353 )
+ integer*4 GL_BLUE_SCALE
+ parameter ( GL_BLUE_SCALE = 3354 )
+ integer*4 GL_BLUE_BIAS
+ parameter ( GL_BLUE_BIAS = 3355 )
+ integer*4 GL_ALPHA_SCALE
+ parameter ( GL_ALPHA_SCALE = 3356 )
+ integer*4 GL_ALPHA_BIAS
+ parameter ( GL_ALPHA_BIAS = 3357 )
+ integer*4 GL_DEPTH_SCALE
+ parameter ( GL_DEPTH_SCALE = 3358 )
+ integer*4 GL_DEPTH_BIAS
+ parameter ( GL_DEPTH_BIAS = 3359 )
+ integer*4 GL_MAX_EVAL_ORDER
+ parameter ( GL_MAX_EVAL_ORDER = 3376 )
+ integer*4 GL_MAX_LIGHTS
+ parameter ( GL_MAX_LIGHTS = 3377 )
+ integer*4 GL_MAX_CLIP_PLANES
+ parameter ( GL_MAX_CLIP_PLANES = 3378 )
+ integer*4 GL_MAX_TEXTURE_SIZE
+ parameter ( GL_MAX_TEXTURE_SIZE = 3379 )
+ integer*4 GL_MAX_PIXEL_MAP_TABLE
+ parameter ( GL_MAX_PIXEL_MAP_TABLE = 3380 )
+ integer*4 GL_MAX_ATTRIB_STACK_DEPTH
+ parameter ( GL_MAX_ATTRIB_STACK_DEPTH = 3381 )
+ integer*4 GL_MAX_MODELVIEW_STACK_DEPTH
+ parameter ( GL_MAX_MODELVIEW_STACK_DEPTH = 3382 )
+ integer*4 GL_MAX_NAME_STACK_DEPTH
+ parameter ( GL_MAX_NAME_STACK_DEPTH = 3383 )
+ integer*4 GL_MAX_PROJECTION_STACK_DEPTH
+ parameter ( GL_MAX_PROJECTION_STACK_DEPTH = 3384 )
+ integer*4 GL_MAX_TEXTURE_STACK_DEPTH
+ parameter ( GL_MAX_TEXTURE_STACK_DEPTH = 3385 )
+ integer*4 GL_MAX_VIEWPORT_DIMS
+ parameter ( GL_MAX_VIEWPORT_DIMS = 3386 )
+ integer*4 GL_SUBPIXEL_BITS
+ parameter ( GL_SUBPIXEL_BITS = 3408 )
+ integer*4 GL_INDEX_BITS
+ parameter ( GL_INDEX_BITS = 3409 )
+ integer*4 GL_RED_BITS
+ parameter ( GL_RED_BITS = 3410 )
+ integer*4 GL_GREEN_BITS
+ parameter ( GL_GREEN_BITS = 3411 )
+ integer*4 GL_BLUE_BITS
+ parameter ( GL_BLUE_BITS = 3412 )
+ integer*4 GL_ALPHA_BITS
+ parameter ( GL_ALPHA_BITS = 3413 )
+ integer*4 GL_DEPTH_BITS
+ parameter ( GL_DEPTH_BITS = 3414 )
+ integer*4 GL_STENCIL_BITS
+ parameter ( GL_STENCIL_BITS = 3415 )
+ integer*4 GL_ACCUM_RED_BITS
+ parameter ( GL_ACCUM_RED_BITS = 3416 )
+ integer*4 GL_ACCUM_GREEN_BITS
+ parameter ( GL_ACCUM_GREEN_BITS = 3417 )
+ integer*4 GL_ACCUM_BLUE_BITS
+ parameter ( GL_ACCUM_BLUE_BITS = 3418 )
+ integer*4 GL_ACCUM_ALPHA_BITS
+ parameter ( GL_ACCUM_ALPHA_BITS = 3419 )
+ integer*4 GL_NAME_STACK_DEPTH
+ parameter ( GL_NAME_STACK_DEPTH = 3440 )
+ integer*4 GL_AUTO_NORMAL
+ parameter ( GL_AUTO_NORMAL = 3456 )
+ integer*4 GL_MAP1_COLOR_4
+ parameter ( GL_MAP1_COLOR_4 = 3472 )
+ integer*4 GL_MAP1_INDEX
+ parameter ( GL_MAP1_INDEX = 3473 )
+ integer*4 GL_MAP1_NORMAL
+ parameter ( GL_MAP1_NORMAL = 3474 )
+ integer*4 GL_MAP1_TEXTURE_COORD_1
+ parameter ( GL_MAP1_TEXTURE_COORD_1 = 3475 )
+ integer*4 GL_MAP1_TEXTURE_COORD_2
+ parameter ( GL_MAP1_TEXTURE_COORD_2 = 3476 )
+ integer*4 GL_MAP1_TEXTURE_COORD_3
+ parameter ( GL_MAP1_TEXTURE_COORD_3 = 3477 )
+ integer*4 GL_MAP1_TEXTURE_COORD_4
+ parameter ( GL_MAP1_TEXTURE_COORD_4 = 3478 )
+ integer*4 GL_MAP1_VERTEX_3
+ parameter ( GL_MAP1_VERTEX_3 = 3479 )
+ integer*4 GL_MAP1_VERTEX_4
+ parameter ( GL_MAP1_VERTEX_4 = 3480 )
+ integer*4 GL_MAP2_COLOR_4
+ parameter ( GL_MAP2_COLOR_4 = 3504 )
+ integer*4 GL_MAP2_INDEX
+ parameter ( GL_MAP2_INDEX = 3505 )
+ integer*4 GL_MAP2_NORMAL
+ parameter ( GL_MAP2_NORMAL = 3506 )
+ integer*4 GL_MAP2_TEXTURE_COORD_1
+ parameter ( GL_MAP2_TEXTURE_COORD_1 = 3507 )
+ integer*4 GL_MAP2_TEXTURE_COORD_2
+ parameter ( GL_MAP2_TEXTURE_COORD_2 = 3508 )
+ integer*4 GL_MAP2_TEXTURE_COORD_3
+ parameter ( GL_MAP2_TEXTURE_COORD_3 = 3509 )
+ integer*4 GL_MAP2_TEXTURE_COORD_4
+ parameter ( GL_MAP2_TEXTURE_COORD_4 = 3510 )
+ integer*4 GL_MAP2_VERTEX_3
+ parameter ( GL_MAP2_VERTEX_3 = 3511 )
+ integer*4 GL_MAP2_VERTEX_4
+ parameter ( GL_MAP2_VERTEX_4 = 3512 )
+ integer*4 GL_MAP1_GRID_DOMAIN
+ parameter ( GL_MAP1_GRID_DOMAIN = 3536 )
+ integer*4 GL_MAP1_GRID_SEGMENTS
+ parameter ( GL_MAP1_GRID_SEGMENTS = 3537 )
+ integer*4 GL_MAP2_GRID_DOMAIN
+ parameter ( GL_MAP2_GRID_DOMAIN = 3538 )
+ integer*4 GL_MAP2_GRID_SEGMENTS
+ parameter ( GL_MAP2_GRID_SEGMENTS = 3539 )
+ integer*4 GL_TEXTURE_1D
+ parameter ( GL_TEXTURE_1D = 3552 )
+ integer*4 GL_TEXTURE_2D
+ parameter ( GL_TEXTURE_2D = 3553 )
+C GL_BLEND_COLOR_EXT
+C GL_BLEND_EQUATION_EXT
+C GL_CONVOLUTION_1D_EXT
+C GL_CONVOLUTION_2D_EXT
+C GL_SEPARABLE_2D_EXT
+C GL_POST_CONVOLUTION_RED_SCALE_EXT
+C GL_POST_CONVOLUTION_GREEN_SCALE_EXT
+C GL_POST_CONVOLUTION_BLUE_SCALE_EXT
+C GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
+C GL_POST_CONVOLUTION_RED_BIAS_EXT
+C GL_POST_CONVOLUTION_GREEN_BIAS_EXT
+C GL_POST_CONVOLUTION_BLUE_BIAS_EXT
+C GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
+C GL_HISTOGRAM_EXT
+C GL_MINMAX_EXT
+C GL_POLYGON_OFFSET_EXT
+C GL_POLYGON_OFFSET_FACTOR_EXT
+C GL_POLYGON_OFFSET_BIAS_EXT
+C GL_PACK_SKIP_IMAGES_EXT
+C GL_PACK_IMAGE_HEIGHT_EXT
+C GL_UNPACK_SKIP_IMAGES_EXT
+C GL_UNPACK_IMAGE_HEIGHT_EXT
+C GL_TEXTURE_3D_EXT
+C GL_MAX_3D_TEXTURE_SIZE_EXT
+C GL_DETAIL_TEXTURE_2D_BINDING_SGIS
+C GL_MULTISAMPLE_SGIS
+C GL_SAMPLE_ALPHA_TO_MASK_SGIS
+C GL_SAMPLE_ALPHA_TO_ONE_SGIS
+C GL_SAMPLE_MASK_SGIS
+C GL_SAMPLE_BUFFERS_SGIS
+C GL_SAMPLES_SGIS
+C GL_SAMPLE_MASK_VALUE_SGIS
+C GL_SAMPLE_MASK_INVERT_SGIS
+C GL_SAMPLE_PATTERN_SGIS
+
+C GetTextureParameter
+C GL_TEXTURE_MAG_FILTER
+C GL_TEXTURE_MIN_FILTER
+C GL_TEXTURE_WRAP_S
+C GL_TEXTURE_WRAP_T
+ integer*4 GL_TEXTURE_WIDTH
+ parameter ( GL_TEXTURE_WIDTH = 4096 )
+ integer*4 GL_TEXTURE_HEIGHT
+ parameter ( GL_TEXTURE_HEIGHT = 4097 )
+ integer*4 GL_TEXTURE_COMPONENTS
+ parameter ( GL_TEXTURE_COMPONENTS = 4099 )
+ integer*4 GL_TEXTURE_BORDER_COLOR
+ parameter ( GL_TEXTURE_BORDER_COLOR = 4100 )
+ integer*4 GL_TEXTURE_BORDER
+ parameter ( GL_TEXTURE_BORDER = 4101 )
+C GL_TEXTURE_RED_SIZE_EXT
+C GL_TEXTURE_GREEN_SIZE_EXT
+C GL_TEXTURE_BLUE_SIZE_EXT
+C GL_TEXTURE_ALPHA_SIZE_EXT
+C GL_TEXTURE_LUMINANCE_SIZE_EXT
+C GL_TEXTURE_INTENSITY_SIZE_EXT
+C GL_TEXTURE_DEPTH_EXT
+C GL_TEXTURE_WRAP_R_EXT
+C GL_DETAIL_TEXTURE_LEVEL_SGIS
+C GL_DETAIL_TEXTURE_MODE_SGIS
+C GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS
+C GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS
+
+C HintMode
+ integer*4 GL_DONT_CARE
+ parameter ( GL_DONT_CARE = 4352 )
+ integer*4 GL_FASTEST
+ parameter ( GL_FASTEST = 4353 )
+ integer*4 GL_NICEST
+ parameter ( GL_NICEST = 4354 )
+
+C HintTarget
+C GL_PERSPECTIVE_CORRECTION_HINT
+C GL_POINT_SMOOTH_HINT
+C GL_LINE_SMOOTH_HINT
+C GL_POLYGON_SMOOTH_HINT
+C GL_FOG_HINT
+
+C HistogramTarget
+C GL_HISTOGRAM_EXT
+C GL_PROXY_HISTOGRAM_EXT
+
+C LightModelParameter
+C GL_LIGHT_MODEL_AMBIENT
+C GL_LIGHT_MODEL_LOCAL_VIEWER
+C GL_LIGHT_MODEL_TWO_SIDE
+
+C LightParameter
+ integer*4 GL_AMBIENT
+ parameter ( GL_AMBIENT = 4608 )
+ integer*4 GL_DIFFUSE
+ parameter ( GL_DIFFUSE = 4609 )
+ integer*4 GL_SPECULAR
+ parameter ( GL_SPECULAR = 4610 )
+ integer*4 GL_POSITION
+ parameter ( GL_POSITION = 4611 )
+ integer*4 GL_SPOT_DIRECTION
+ parameter ( GL_SPOT_DIRECTION = 4612 )
+ integer*4 GL_SPOT_EXPONENT
+ parameter ( GL_SPOT_EXPONENT = 4613 )
+ integer*4 GL_SPOT_CUTOFF
+ parameter ( GL_SPOT_CUTOFF = 4614 )
+ integer*4 GL_CONSTANT_ATTENUATION
+ parameter ( GL_CONSTANT_ATTENUATION = 4615 )
+ integer*4 GL_LINEAR_ATTENUATION
+ parameter ( GL_LINEAR_ATTENUATION = 4616 )
+ integer*4 GL_QUADRATIC_ATTENUATION
+ parameter ( GL_QUADRATIC_ATTENUATION = 4617 )
+
+C ListMode
+ integer*4 GL_COMPILE
+ parameter ( GL_COMPILE = 4864 )
+ integer*4 GL_COMPILE_AND_EXECUTE
+ parameter ( GL_COMPILE_AND_EXECUTE = 4865 )
+
+C ListNameType
+ integer*4 GL_BYTE
+ parameter ( GL_BYTE = 5120 )
+ integer*4 GL_UNSIGNED_BYTE
+ parameter ( GL_UNSIGNED_BYTE = 5121 )
+ integer*4 GL_SHORT
+ parameter ( GL_SHORT = 5122 )
+ integer*4 GL_UNSIGNED_SHORT
+ parameter ( GL_UNSIGNED_SHORT = 5123 )
+ integer*4 GL_INT
+ parameter ( GL_INT = 5124 )
+ integer*4 GL_UNSIGNED_INT
+ parameter ( GL_UNSIGNED_INT = 5125 )
+ integer*4 GL_FLOAT
+ parameter ( GL_FLOAT = 5126 )
+ integer*4 GL_2_BYTES
+ parameter ( GL_2_BYTES = 5127 )
+ integer*4 GL_3_BYTES
+ parameter ( GL_3_BYTES = 5128 )
+ integer*4 GL_4_BYTES
+ parameter ( GL_4_BYTES = 5129 )
+
+C LogicOp
+ integer*4 GL_CLEAR
+ parameter ( GL_CLEAR = 5376 )
+ integer*4 GL_AND
+ parameter ( GL_AND = 5377 )
+ integer*4 GL_AND_REVERSE
+ parameter ( GL_AND_REVERSE = 5378 )
+ integer*4 GL_COPY
+ parameter ( GL_COPY = 5379 )
+ integer*4 GL_AND_INVERTED
+ parameter ( GL_AND_INVERTED = 5380 )
+ integer*4 GL_NOOP
+ parameter ( GL_NOOP = 5381 )
+ integer*4 GL_XOR
+ parameter ( GL_XOR = 5382 )
+ integer*4 GL_OR
+ parameter ( GL_OR = 5383 )
+ integer*4 GL_NOR
+ parameter ( GL_NOR = 5384 )
+ integer*4 GL_EQUIV
+ parameter ( GL_EQUIV = 5385 )
+ integer*4 GL_INVERT
+ parameter ( GL_INVERT = 5386 )
+ integer*4 GL_OR_REVERSE
+ parameter ( GL_OR_REVERSE = 5387 )
+ integer*4 GL_COPY_INVERTED
+ parameter ( GL_COPY_INVERTED = 5388 )
+ integer*4 GL_OR_INVERTED
+ parameter ( GL_OR_INVERTED = 5389 )
+ integer*4 GL_NAND
+ parameter ( GL_NAND = 5390 )
+ integer*4 GL_SET
+ parameter ( GL_SET = 5391 )
+
+C MapTarget
+C GL_MAP1_COLOR_4
+C GL_MAP1_INDEX
+C GL_MAP1_NORMAL
+C GL_MAP1_TEXTURE_COORD_1
+C GL_MAP1_TEXTURE_COORD_2
+C GL_MAP1_TEXTURE_COORD_3
+C GL_MAP1_TEXTURE_COORD_4
+C GL_MAP1_VERTEX_3
+C GL_MAP1_VERTEX_4
+C GL_MAP2_COLOR_4
+C GL_MAP2_INDEX
+C GL_MAP2_NORMAL
+C GL_MAP2_TEXTURE_COORD_1
+C GL_MAP2_TEXTURE_COORD_2
+C GL_MAP2_TEXTURE_COORD_3
+C GL_MAP2_TEXTURE_COORD_4
+C GL_MAP2_VERTEX_3
+C GL_MAP2_VERTEX_4
+
+C MaterialFace
+C GL_FRONT
+C GL_BACK
+C GL_FRONT_AND_BACK
+
+C MaterialParameter
+ integer*4 GL_EMISSION
+ parameter ( GL_EMISSION = 5632 )
+ integer*4 GL_SHININESS
+ parameter ( GL_SHININESS = 5633 )
+ integer*4 GL_AMBIENT_AND_DIFFUSE
+ parameter ( GL_AMBIENT_AND_DIFFUSE = 5634 )
+ integer*4 GL_COLOR_INDEXES
+ parameter ( GL_COLOR_INDEXES = 5635 )
+C GL_AMBIENT
+C GL_DIFFUSE
+C GL_SPECULAR
+
+C MatrixMode
+ integer*4 GL_MODELVIEW
+ parameter ( GL_MODELVIEW = 5888 )
+ integer*4 GL_PROJECTION
+ parameter ( GL_PROJECTION = 5889 )
+ integer*4 GL_TEXTURE
+ parameter ( GL_TEXTURE = 5890 )
+
+C MeshMode1
+C GL_POINT
+C GL_LINE
+
+C MeshMode2
+C GL_POINT
+C GL_LINE
+C GL_FILL
+
+C MinmaxTarget
+C GL_MINMAX_EXT
+
+C PixelCopyType
+ integer*4 GL_COLOR
+ parameter ( GL_COLOR = 6144 )
+ integer*4 GL_DEPTH
+ parameter ( GL_DEPTH = 6145 )
+ integer*4 GL_STENCIL
+ parameter ( GL_STENCIL = 6146 )
+
+C PixelFormat
+ integer*4 GL_COLOR_INDEX
+ parameter ( GL_COLOR_INDEX = 6400 )
+ integer*4 GL_STENCIL_INDEX
+ parameter ( GL_STENCIL_INDEX = 6401 )
+ integer*4 GL_DEPTH_COMPONENT
+ parameter ( GL_DEPTH_COMPONENT = 6402 )
+ integer*4 GL_RED
+ parameter ( GL_RED = 6403 )
+ integer*4 GL_GREEN
+ parameter ( GL_GREEN = 6404 )
+ integer*4 GL_BLUE
+ parameter ( GL_BLUE = 6405 )
+ integer*4 GL_ALPHA
+ parameter ( GL_ALPHA = 6406 )
+ integer*4 GL_RGB
+ parameter ( GL_RGB = 6407 )
+ integer*4 GL_RGBA
+ parameter ( GL_RGBA = 6408 )
+ integer*4 GL_LUMINANCE
+ parameter ( GL_LUMINANCE = 6409 )
+ integer*4 GL_LUMINANCE_ALPHA
+ parameter ( GL_LUMINANCE_ALPHA = 6410 )
+C GL_ABGR_EXT
+
+C PixelInternalFormat
+C GL_ALPHA4_EXT
+C GL_ALPHA8_EXT
+C GL_ALPHA12_EXT
+C GL_ALPHA16_EXT
+C GL_LUMINANCE4_EXT
+C GL_LUMINANCE8_EXT
+C GL_LUMINANCE12_EXT
+C GL_LUMINANCE16_EXT
+C GL_LUMINANCE4_ALPHA4_EXT
+C GL_LUMINANCE6_ALPHA2_EXT
+C GL_LUMINANCE8_ALPHA8_EXT
+C GL_LUMINANCE12_ALPHA4_EXT
+C GL_LUMINANCE12_ALPHA12_EXT
+C GL_LUMINANCE16_ALPHA16_EXT
+C GL_INTENSITY_EXT
+C GL_INTENSITY4_EXT
+C GL_INTENSITY8_EXT
+C GL_INTENSITY12_EXT
+C GL_INTENSITY16_EXT
+C GL_RGB2_EXT
+C GL_RGB4_EXT
+C GL_RGB5_EXT
+C GL_RGB8_EXT
+C GL_RGB10_EXT
+C GL_RGB12_EXT
+C GL_RGB16_EXT
+C GL_RGBA2_EXT
+C GL_RGBA4_EXT
+C GL_RGB5_A1_EXT
+C GL_RGBA8_EXT
+C GL_RGB10_A2_EXT
+C GL_RGBA12_EXT
+C GL_RGBA16_EXT
+
+C PixelMap
+C GL_PIXEL_MAP_I_TO_I
+C GL_PIXEL_MAP_S_TO_S
+C GL_PIXEL_MAP_I_TO_R
+C GL_PIXEL_MAP_I_TO_G
+C GL_PIXEL_MAP_I_TO_B
+C GL_PIXEL_MAP_I_TO_A
+C GL_PIXEL_MAP_R_TO_R
+C GL_PIXEL_MAP_G_TO_G
+C GL_PIXEL_MAP_B_TO_B
+C GL_PIXEL_MAP_A_TO_A
+
+C PixelStore
+C GL_UNPACK_SWAP_BYTES
+C GL_UNPACK_LSB_FIRST
+C GL_UNPACK_ROW_LENGTH
+C GL_UNPACK_SKIP_ROWS
+C GL_UNPACK_SKIP_PIXELS
+C GL_UNPACK_ALIGNMENT
+C GL_PACK_SWAP_BYTES
+C GL_PACK_LSB_FIRST
+C GL_PACK_ROW_LENGTH
+C GL_PACK_SKIP_ROWS
+C GL_PACK_SKIP_PIXELS
+C GL_PACK_ALIGNMENT
+C GL_PACK_SKIP_IMAGES_EXT
+C GL_PACK_IMAGE_HEIGHT_EXT
+C GL_UNPACK_SKIP_IMAGES_EXT
+C GL_UNPACK_IMAGE_HEIGHT_EXT
+
+C PixelTransfer
+C GL_MAP_COLOR
+C GL_MAP_STENCIL
+C GL_INDEX_SHIFT
+C GL_INDEX_OFFSET
+C GL_RED_SCALE
+C GL_RED_BIAS
+C GL_GREEN_SCALE
+C GL_GREEN_BIAS
+C GL_BLUE_SCALE
+C GL_BLUE_BIAS
+C GL_ALPHA_SCALE
+C GL_ALPHA_BIAS
+C GL_DEPTH_SCALE
+C GL_DEPTH_BIAS
+C GL_POST_CONVOLUTION_RED_SCALE_EXT
+C GL_POST_CONVOLUTION_GREEN_SCALE_EXT
+C GL_POST_CONVOLUTION_BLUE_SCALE_EXT
+C GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
+C GL_POST_CONVOLUTION_RED_BIAS_EXT
+C GL_POST_CONVOLUTION_GREEN_BIAS_EXT
+C GL_POST_CONVOLUTION_BLUE_BIAS_EXT
+C GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
+
+C PixelType
+ integer*4 GL_BITMAP
+ parameter ( GL_BITMAP = 6656 )
+C GL_BYTE
+C GL_UNSIGNED_BYTE
+C GL_SHORT
+C GL_UNSIGNED_SHORT
+C GL_INT
+C GL_UNSIGNED_INT
+C GL_FLOAT
+
+C PolygonMode
+ integer*4 GL_POINT
+ parameter ( GL_POINT = 6912 )
+ integer*4 GL_LINE
+ parameter ( GL_LINE = 6913 )
+ integer*4 GL_FILL
+ parameter ( GL_FILL = 6914 )
+
+C ReadBufferMode
+C GL_FRONT_LEFT
+C GL_FRONT_RIGHT
+C GL_BACK_LEFT
+C GL_BACK_RIGHT
+C GL_FRONT
+C GL_BACK
+C GL_LEFT
+C GL_RIGHT
+C GL_AUX0
+C GL_AUX1
+C GL_AUX2
+C GL_AUX3
+
+C RenderingMode
+ integer*4 GL_RENDER
+ parameter ( GL_RENDER = 7168 )
+ integer*4 GL_FEEDBACK
+ parameter ( GL_FEEDBACK = 7169 )
+ integer*4 GL_SELECT
+ parameter ( GL_SELECT = 7170 )
+
+C SamplePattern
+C GL_1PASS_SGIS
+C GL_2PASS_0_SGIS
+C GL_2PASS_1_SGIS
+C GL_4PASS_0_SGIS
+C GL_4PASS_1_SGIS
+C GL_4PASS_2_SGIS
+C GL_4PASS_3_SGIS
+
+C SeparableTarget
+C GL_SEPARABLE_2D_EXT
+
+C ShadingModel
+ integer*4 GL_FLAT
+ parameter ( GL_FLAT = 7424 )
+ integer*4 GL_SMOOTH
+ parameter ( GL_SMOOTH = 7425 )
+
+C StencilFunction
+C GL_NEVER
+C GL_LESS
+C GL_EQUAL
+C GL_LEQUAL
+C GL_GREATER
+C GL_NOTEQUAL
+C GL_GEQUAL
+C GL_ALWAYS
+
+C StencilOp
+C GL_ZERO
+ integer*4 GL_KEEP
+ parameter ( GL_KEEP = 7680 )
+ integer*4 GL_REPLACE
+ parameter ( GL_REPLACE = 7681 )
+ integer*4 GL_INCR
+ parameter ( GL_INCR = 7682 )
+ integer*4 GL_DECR
+ parameter ( GL_DECR = 7683 )
+C GL_INVERT
+
+C StringName
+ integer*4 GL_VENDOR
+ parameter ( GL_VENDOR = 7936 )
+ integer*4 GL_RENDERER
+ parameter ( GL_RENDERER = 7937 )
+ integer*4 GL_VERSION
+ parameter ( GL_VERSION = 7938 )
+ integer*4 GL_EXTENSIONS
+ parameter ( GL_EXTENSIONS = 7939 )
+
+C TextureCoordName
+ integer*4 GL_S
+ parameter ( GL_S = 8192 )
+ integer*4 GL_T
+ parameter ( GL_T = 8193 )
+ integer*4 GL_R
+ parameter ( GL_R = 8194 )
+ integer*4 GL_Q
+ parameter ( GL_Q = 8195 )
+
+C TextureEnvMode
+ integer*4 GL_MODULATE
+ parameter ( GL_MODULATE = 8448 )
+ integer*4 GL_DECAL
+ parameter ( GL_DECAL = 8449 )
+C GL_BLEND
+C GL_REPLACE_EXT
+
+C TextureEnvParameter
+ integer*4 GL_TEXTURE_ENV_MODE
+ parameter ( GL_TEXTURE_ENV_MODE = 8704 )
+ integer*4 GL_TEXTURE_ENV_COLOR
+ parameter ( GL_TEXTURE_ENV_COLOR = 8705 )
+
+C TextureEnvTarget
+ integer*4 GL_TEXTURE_ENV
+ parameter ( GL_TEXTURE_ENV = 8960 )
+
+C TextureGenMode
+ integer*4 GL_EYE_LINEAR
+ parameter ( GL_EYE_LINEAR = 9216 )
+ integer*4 GL_OBJECT_LINEAR
+ parameter ( GL_OBJECT_LINEAR = 9217 )
+ integer*4 GL_SPHERE_MAP
+ parameter ( GL_SPHERE_MAP = 9218 )
+
+C TextureGenParameter
+ integer*4 GL_TEXTURE_GEN_MODE
+ parameter ( GL_TEXTURE_GEN_MODE = 9472 )
+ integer*4 GL_OBJECT_PLANE
+ parameter ( GL_OBJECT_PLANE = 9473 )
+ integer*4 GL_EYE_PLANE
+ parameter ( GL_EYE_PLANE = 9474 )
+
+C TextureMagFilter
+ integer*4 GL_NEAREST
+ parameter ( GL_NEAREST = 9728 )
+ integer*4 GL_LINEAR
+ parameter ( GL_LINEAR = 9729 )
+C GL_LINEAR_DETAIL_SGIS
+C GL_LINEAR_DETAIL_ALPHA_SGIS
+C GL_LINEAR_DETAIL_COLOR_SGIS
+C GL_LINEAR_SHARPEN_SGIS
+C GL_LINEAR_SHARPEN_ALPHA_SGIS
+C GL_LINEAR_SHARPEN_COLOR_SGIS
+
+C TextureMinFilter
+C GL_NEAREST
+C GL_LINEAR
+ integer*4 GL_NEAREST_MIPMAP_NEAREST
+ parameter ( GL_NEAREST_MIPMAP_NEAREST = 9984 )
+ integer*4 GL_LINEAR_MIPMAP_NEAREST
+ parameter ( GL_LINEAR_MIPMAP_NEAREST = 9985 )
+ integer*4 GL_NEAREST_MIPMAP_LINEAR
+ parameter ( GL_NEAREST_MIPMAP_LINEAR = 9986 )
+ integer*4 GL_LINEAR_MIPMAP_LINEAR
+ parameter ( GL_LINEAR_MIPMAP_LINEAR = 9987 )
+
+C TextureParameterName
+ integer*4 GL_TEXTURE_MAG_FILTER
+ parameter ( GL_TEXTURE_MAG_FILTER = 10240 )
+ integer*4 GL_TEXTURE_MIN_FILTER
+ parameter ( GL_TEXTURE_MIN_FILTER = 10241 )
+ integer*4 GL_TEXTURE_WRAP_S
+ parameter ( GL_TEXTURE_WRAP_S = 10242 )
+ integer*4 GL_TEXTURE_WRAP_T
+ parameter ( GL_TEXTURE_WRAP_T = 10243 )
+C GL_TEXTURE_BORDER_COLOR
+C GL_TEXTURE_WRAP_R_EXT
+C GL_DETAIL_TEXTURE_LEVEL_SGIS
+C GL_DETAIL_TEXTURE_MODE_SGIS
+
+C TextureTarget
+C GL_TEXTURE_1D
+C GL_TEXTURE_2D
+C GL_PROXY_TEXTURE_1D_EXT
+C GL_PROXY_TEXTURE_2D_EXT
+C GL_TEXTURE_3D_EXT
+C GL_PROXY_TEXTURE_3D_EXT
+C GL_DETAIL_TEXTURE_2D_SGIS
+
+C TextureWrapMode
+ integer*4 GL_CLAMP
+ parameter ( GL_CLAMP = 10496 )
+ integer*4 GL_REPEAT
+ parameter ( GL_REPEAT = 10497 )
+
+C ClipPlaneName
+ integer*4 GL_CLIP_PLANE0
+ parameter ( GL_CLIP_PLANE0 = 12288 )
+ integer*4 GL_CLIP_PLANE1
+ parameter ( GL_CLIP_PLANE1 = 12289 )
+ integer*4 GL_CLIP_PLANE2
+ parameter ( GL_CLIP_PLANE2 = 12290 )
+ integer*4 GL_CLIP_PLANE3
+ parameter ( GL_CLIP_PLANE3 = 12291 )
+ integer*4 GL_CLIP_PLANE4
+ parameter ( GL_CLIP_PLANE4 = 12292 )
+ integer*4 GL_CLIP_PLANE5
+ parameter ( GL_CLIP_PLANE5 = 12293 )
+
+C LightName
+ integer*4 GL_LIGHT0
+ parameter ( GL_LIGHT0 = 16384 )
+ integer*4 GL_LIGHT1
+ parameter ( GL_LIGHT1 = 16385 )
+ integer*4 GL_LIGHT2
+ parameter ( GL_LIGHT2 = 16386 )
+ integer*4 GL_LIGHT3
+ parameter ( GL_LIGHT3 = 16387 )
+ integer*4 GL_LIGHT4
+ parameter ( GL_LIGHT4 = 16388 )
+ integer*4 GL_LIGHT5
+ parameter ( GL_LIGHT5 = 16389 )
+ integer*4 GL_LIGHT6
+ parameter ( GL_LIGHT6 = 16390 )
+ integer*4 GL_LIGHT7
+ parameter ( GL_LIGHT7 = 16391 )
+
+C Extensions
+ integer*4 GL_EXT_abgr
+ parameter ( GL_EXT_abgr = 1 )
+ integer*4 GL_EXT_blend_color
+ parameter ( GL_EXT_blend_color = 1 )
+ integer*4 GL_EXT_blend_logic_op
+ parameter ( GL_EXT_blend_logic_op = 1 )
+ integer*4 GL_EXT_blend_minmax
+ parameter ( GL_EXT_blend_minmax = 1 )
+ integer*4 GL_EXT_blend_subtract
+ parameter ( GL_EXT_blend_subtract = 1 )
+ integer*4 GL_EXT_convolution
+ parameter ( GL_EXT_convolution = 1 )
+ integer*4 GL_EXT_histogram
+ parameter ( GL_EXT_histogram = 1 )
+ integer*4 GL_EXT_polygon_offset
+ parameter ( GL_EXT_polygon_offset = 1 )
+ integer*4 GL_EXT_subtexture
+ parameter ( GL_EXT_subtexture = 1 )
+ integer*4 GL_EXT_texture
+ parameter ( GL_EXT_texture = 1 )
+ integer*4 GL_EXT_texture3D
+ parameter ( GL_EXT_texture3D = 1 )
+ integer*4 GL_SGIS_detail_texture
+ parameter ( GL_SGIS_detail_texture = 1 )
+ integer*4 GL_SGIS_multisample
+ parameter ( GL_SGIS_multisample = 1 )
+ integer*4 GL_SGIS_sharpen_texture
+ parameter ( GL_SGIS_sharpen_texture = 1 )
+
+C EXT_abgr
+ integer*4 GL_ABGR_EXT
+ parameter ( GL_ABGR_EXT = 32768 )
+
+C EXT_blend_color
+ integer*4 GL_CONSTANT_COLOR_EXT
+ parameter ( GL_CONSTANT_COLOR_EXT = 32769 )
+ integer*4 GL_ONE_MINUS_CONSTANT_COLOR_EXT
+ parameter ( GL_ONE_MINUS_CONSTANT_COLOR_EXT = 32770 )
+ integer*4 GL_CONSTANT_ALPHA_EXT
+ parameter ( GL_CONSTANT_ALPHA_EXT = 32771 )
+ integer*4 GL_ONE_MINUS_CONSTANT_ALPHA_EXT
+ parameter ( GL_ONE_MINUS_CONSTANT_ALPHA_EXT = 32772 )
+ integer*4 GL_BLEND_COLOR_EXT
+ parameter ( GL_BLEND_COLOR_EXT = 32773 )
+
+C EXT_blend_minmax
+ integer*4 GL_FUNC_ADD_EXT
+ parameter ( GL_FUNC_ADD_EXT = 32774 )
+ integer*4 GL_MIN_EXT
+ parameter ( GL_MIN_EXT = 32775 )
+ integer*4 GL_MAX_EXT
+ parameter ( GL_MAX_EXT = 32776 )
+ integer*4 GL_BLEND_EQUATION_EXT
+ parameter ( GL_BLEND_EQUATION_EXT = 32777 )
+
+C EXT_blend_subtract
+ integer*4 GL_FUNC_SUBTRACT_EXT
+ parameter ( GL_FUNC_SUBTRACT_EXT = 32778 )
+ integer*4 GL_FUNC_REVERSE_SUBTRACT_EXT
+ parameter ( GL_FUNC_REVERSE_SUBTRACT_EXT = 32779 )
+
+C EXT_convolution
+ integer*4 GL_CONVOLUTION_1D_EXT
+ parameter ( GL_CONVOLUTION_1D_EXT = 32784 )
+ integer*4 GL_CONVOLUTION_2D_EXT
+ parameter ( GL_CONVOLUTION_2D_EXT = 32785 )
+ integer*4 GL_SEPARABLE_2D_EXT
+ parameter ( GL_SEPARABLE_2D_EXT = 32786 )
+ integer*4 GL_CONVOLUTION_BORDER_MODE_EXT
+ parameter ( GL_CONVOLUTION_BORDER_MODE_EXT = 32787 )
+ integer*4 GL_CONVOLUTION_FILTER_SCALE_EXT
+ parameter ( GL_CONVOLUTION_FILTER_SCALE_EXT = 32788 )
+ integer*4 GL_CONVOLUTION_FILTER_BIAS_EXT
+ parameter ( GL_CONVOLUTION_FILTER_BIAS_EXT = 32789 )
+ integer*4 GL_REDUCE_EXT
+ parameter ( GL_REDUCE_EXT = 32790 )
+ integer*4 GL_CONVOLUTION_FORMAT_EXT
+ parameter ( GL_CONVOLUTION_FORMAT_EXT = 32791 )
+ integer*4 GL_CONVOLUTION_WIDTH_EXT
+ parameter ( GL_CONVOLUTION_WIDTH_EXT = 32792 )
+ integer*4 GL_CONVOLUTION_HEIGHT_EXT
+ parameter ( GL_CONVOLUTION_HEIGHT_EXT = 32793 )
+ integer*4 GL_MAX_CONVOLUTION_WIDTH_EXT
+ parameter ( GL_MAX_CONVOLUTION_WIDTH_EXT = 32794 )
+ integer*4 GL_MAX_CONVOLUTION_HEIGHT_EXT
+ parameter ( GL_MAX_CONVOLUTION_HEIGHT_EXT = 32795 )
+ integer*4 GL_POST_CONVOLUTION_RED_SCALE_EX
+ parameter ( GL_POST_CONVOLUTION_RED_SCALE_EX = 32796 )
+ integer*4 GL_POST_CONVOLUTION_GREEN_SCALE_
+ parameter ( GL_POST_CONVOLUTION_GREEN_SCALE_ = 32797 )
+ integer*4 GL_POST_CONVOLUTION_BLUE_SCALE_E
+ parameter ( GL_POST_CONVOLUTION_BLUE_SCALE_E = 32798 )
+ integer*4 GL_POST_CONVOLUTION_ALPHA_SCALE_
+ parameter ( GL_POST_CONVOLUTION_ALPHA_SCALE_ = 32799 )
+ integer*4 GL_POST_CONVOLUTION_RED_BIAS_EXT
+ parameter ( GL_POST_CONVOLUTION_RED_BIAS_EXT = 32800 )
+ integer*4 GL_POST_CONVOLUTION_GREEN_BIAS_E
+ parameter ( GL_POST_CONVOLUTION_GREEN_BIAS_E = 32801 )
+ integer*4 GL_POST_CONVOLUTION_BLUE_BIAS_EX
+ parameter ( GL_POST_CONVOLUTION_BLUE_BIAS_EX = 32802 )
+ integer*4 GL_POST_CONVOLUTION_ALPHA_BIAS_E
+ parameter ( GL_POST_CONVOLUTION_ALPHA_BIAS_E = 32803 )
+
+C EXT_histogram
+ integer*4 GL_HISTOGRAM_EXT
+ parameter ( GL_HISTOGRAM_EXT = 32804 )
+ integer*4 GL_PROXY_HISTOGRAM_EXT
+ parameter ( GL_PROXY_HISTOGRAM_EXT = 32805 )
+ integer*4 GL_HISTOGRAM_WIDTH_EXT
+ parameter ( GL_HISTOGRAM_WIDTH_EXT = 32806 )
+ integer*4 GL_HISTOGRAM_FORMAT_EXT
+ parameter ( GL_HISTOGRAM_FORMAT_EXT = 32807 )
+ integer*4 GL_HISTOGRAM_RED_SIZE_EXT
+ parameter ( GL_HISTOGRAM_RED_SIZE_EXT = 32808 )
+ integer*4 GL_HISTOGRAM_GREEN_SIZE_EXT
+ parameter ( GL_HISTOGRAM_GREEN_SIZE_EXT = 32809 )
+ integer*4 GL_HISTOGRAM_BLUE_SIZE_EXT
+ parameter ( GL_HISTOGRAM_BLUE_SIZE_EXT = 32810 )
+ integer*4 GL_HISTOGRAM_ALPHA_SIZE_EXT
+ parameter ( GL_HISTOGRAM_ALPHA_SIZE_EXT = 32811 )
+ integer*4 GL_HISTOGRAM_LUMINANCE_SIZE_EXT
+ parameter ( GL_HISTOGRAM_LUMINANCE_SIZE_EXT = 32812 )
+ integer*4 GL_HISTOGRAM_SINK_EXT
+ parameter ( GL_HISTOGRAM_SINK_EXT = 32813 )
+ integer*4 GL_MINMAX_EXT
+ parameter ( GL_MINMAX_EXT = 32814 )
+ integer*4 GL_MINMAX_FORMAT_EXT
+ parameter ( GL_MINMAX_FORMAT_EXT = 32815 )
+ integer*4 GL_MINMAX_SINK_EXT
+ parameter ( GL_MINMAX_SINK_EXT = 32816 )
+ integer*4 GL_TABLE_TOO_LARGE_EXT
+ parameter ( GL_TABLE_TOO_LARGE_EXT = 32817 )
+
+C EXT_polygon_offset
+ integer*4 GL_POLYGON_OFFSET_EXT
+ parameter ( GL_POLYGON_OFFSET_EXT = 32823 )
+ integer*4 GL_POLYGON_OFFSET_FACTOR_EXT
+ parameter ( GL_POLYGON_OFFSET_FACTOR_EXT = 32824 )
+ integer*4 GL_POLYGON_OFFSET_BIAS_EXT
+ parameter ( GL_POLYGON_OFFSET_BIAS_EXT = 32825 )
+
+C EXT_texture
+ integer*4 GL_ALPHA4_EXT
+ parameter ( GL_ALPHA4_EXT = 32827 )
+ integer*4 GL_ALPHA8_EXT
+ parameter ( GL_ALPHA8_EXT = 32828 )
+ integer*4 GL_ALPHA12_EXT
+ parameter ( GL_ALPHA12_EXT = 32829 )
+ integer*4 GL_ALPHA16_EXT
+ parameter ( GL_ALPHA16_EXT = 32830 )
+ integer*4 GL_LUMINANCE4_EXT
+ parameter ( GL_LUMINANCE4_EXT = 32831 )
+ integer*4 GL_LUMINANCE8_EXT
+ parameter ( GL_LUMINANCE8_EXT = 32832 )
+ integer*4 GL_LUMINANCE12_EXT
+ parameter ( GL_LUMINANCE12_EXT = 32833 )
+ integer*4 GL_LUMINANCE16_EXT
+ parameter ( GL_LUMINANCE16_EXT = 32834 )
+ integer*4 GL_LUMINANCE4_ALPHA4_EXT
+ parameter ( GL_LUMINANCE4_ALPHA4_EXT = 32835 )
+ integer*4 GL_LUMINANCE6_ALPHA2_EXT
+ parameter ( GL_LUMINANCE6_ALPHA2_EXT = 32836 )
+ integer*4 GL_LUMINANCE8_ALPHA8_EXT
+ parameter ( GL_LUMINANCE8_ALPHA8_EXT = 32837 )
+ integer*4 GL_LUMINANCE12_ALPHA4_EXT
+ parameter ( GL_LUMINANCE12_ALPHA4_EXT = 32838 )
+ integer*4 GL_LUMINANCE12_ALPHA12_EXT
+ parameter ( GL_LUMINANCE12_ALPHA12_EXT = 32839 )
+ integer*4 GL_LUMINANCE16_ALPHA16_EXT
+ parameter ( GL_LUMINANCE16_ALPHA16_EXT = 32840 )
+ integer*4 GL_INTENSITY_EXT
+ parameter ( GL_INTENSITY_EXT = 32841 )
+ integer*4 GL_INTENSITY4_EXT
+ parameter ( GL_INTENSITY4_EXT = 32842 )
+ integer*4 GL_INTENSITY8_EXT
+ parameter ( GL_INTENSITY8_EXT = 32843 )
+ integer*4 GL_INTENSITY12_EXT
+ parameter ( GL_INTENSITY12_EXT = 32844 )
+ integer*4 GL_INTENSITY16_EXT
+ parameter ( GL_INTENSITY16_EXT = 32845 )
+ integer*4 GL_RGB2_EXT
+ parameter ( GL_RGB2_EXT = 32846 )
+ integer*4 GL_RGB4_EXT
+ parameter ( GL_RGB4_EXT = 32847 )
+ integer*4 GL_RGB5_EXT
+ parameter ( GL_RGB5_EXT = 32848 )
+ integer*4 GL_RGB8_EXT
+ parameter ( GL_RGB8_EXT = 32849 )
+ integer*4 GL_RGB10_EXT
+ parameter ( GL_RGB10_EXT = 32850 )
+ integer*4 GL_RGB12_EXT
+ parameter ( GL_RGB12_EXT = 32851 )
+ integer*4 GL_RGB16_EXT
+ parameter ( GL_RGB16_EXT = 32852 )
+ integer*4 GL_RGBA2_EXT
+ parameter ( GL_RGBA2_EXT = 32853 )
+ integer*4 GL_RGBA4_EXT
+ parameter ( GL_RGBA4_EXT = 32854 )
+ integer*4 GL_RGB5_A1_EXT
+ parameter ( GL_RGB5_A1_EXT = 32855 )
+ integer*4 GL_RGBA8_EXT
+ parameter ( GL_RGBA8_EXT = 32856 )
+ integer*4 GL_RGB10_A2_EXT
+ parameter ( GL_RGB10_A2_EXT = 32857 )
+ integer*4 GL_RGBA12_EXT
+ parameter ( GL_RGBA12_EXT = 32858 )
+ integer*4 GL_RGBA16_EXT
+ parameter ( GL_RGBA16_EXT = 32859 )
+ integer*4 GL_TEXTURE_RED_SIZE_EXT
+ parameter ( GL_TEXTURE_RED_SIZE_EXT = 32860 )
+ integer*4 GL_TEXTURE_GREEN_SIZE_EXT
+ parameter ( GL_TEXTURE_GREEN_SIZE_EXT = 32861 )
+ integer*4 GL_TEXTURE_BLUE_SIZE_EXT
+ parameter ( GL_TEXTURE_BLUE_SIZE_EXT = 32862 )
+ integer*4 GL_TEXTURE_ALPHA_SIZE_EXT
+ parameter ( GL_TEXTURE_ALPHA_SIZE_EXT = 32863 )
+ integer*4 GL_TEXTURE_LUMINANCE_SIZE_EXT
+ parameter ( GL_TEXTURE_LUMINANCE_SIZE_EXT = 32864 )
+ integer*4 GL_TEXTURE_INTENSITY_SIZE_EXT
+ parameter ( GL_TEXTURE_INTENSITY_SIZE_EXT = 32865 )
+ integer*4 GL_REPLACE_EXT
+ parameter ( GL_REPLACE_EXT = 32866 )
+ integer*4 GL_PROXY_TEXTURE_1D_EXT
+ parameter ( GL_PROXY_TEXTURE_1D_EXT = 32867 )
+ integer*4 GL_PROXY_TEXTURE_2D_EXT
+ parameter ( GL_PROXY_TEXTURE_2D_EXT = 32868 )
+ integer*4 GL_TEXTURE_TOO_LARGE_EXT
+ parameter ( GL_TEXTURE_TOO_LARGE_EXT = 32869 )
+
+C EXT_texture3D
+ integer*4 GL_PACK_SKIP_IMAGES_EXT
+ parameter ( GL_PACK_SKIP_IMAGES_EXT = 32875 )
+ integer*4 GL_PACK_IMAGE_HEIGHT_EXT
+ parameter ( GL_PACK_IMAGE_HEIGHT_EXT = 32876 )
+ integer*4 GL_UNPACK_SKIP_IMAGES_EXT
+ parameter ( GL_UNPACK_SKIP_IMAGES_EXT = 32877 )
+ integer*4 GL_UNPACK_IMAGE_HEIGHT_EXT
+ parameter ( GL_UNPACK_IMAGE_HEIGHT_EXT = 32878 )
+ integer*4 GL_TEXTURE_3D_EXT
+ parameter ( GL_TEXTURE_3D_EXT = 32879 )
+ integer*4 GL_PROXY_TEXTURE_3D_EXT
+ parameter ( GL_PROXY_TEXTURE_3D_EXT = 32880 )
+ integer*4 GL_TEXTURE_DEPTH_EXT
+ parameter ( GL_TEXTURE_DEPTH_EXT = 32881 )
+ integer*4 GL_TEXTURE_WRAP_R_EXT
+ parameter ( GL_TEXTURE_WRAP_R_EXT = 32882 )
+ integer*4 GL_MAX_3D_TEXTURE_SIZE_EXT
+ parameter ( GL_MAX_3D_TEXTURE_SIZE_EXT = 32883 )
+
+C SGIS_detail_texture
+ integer*4 GL_DETAIL_TEXTURE_2D_SGIS
+ parameter ( GL_DETAIL_TEXTURE_2D_SGIS = 32917 )
+ integer*4 GL_DETAIL_TEXTURE_2D_BINDING_SGI
+ parameter ( GL_DETAIL_TEXTURE_2D_BINDING_SGI = 32918 )
+ integer*4 GL_LINEAR_DETAIL_SGIS
+ parameter ( GL_LINEAR_DETAIL_SGIS = 32919 )
+ integer*4 GL_LINEAR_DETAIL_ALPHA_SGIS
+ parameter ( GL_LINEAR_DETAIL_ALPHA_SGIS = 32920 )
+ integer*4 GL_LINEAR_DETAIL_COLOR_SGIS
+ parameter ( GL_LINEAR_DETAIL_COLOR_SGIS = 32921 )
+ integer*4 GL_DETAIL_TEXTURE_LEVEL_SGIS
+ parameter ( GL_DETAIL_TEXTURE_LEVEL_SGIS = 32922 )
+ integer*4 GL_DETAIL_TEXTURE_MODE_SGIS
+ parameter ( GL_DETAIL_TEXTURE_MODE_SGIS = 32923 )
+ integer*4 GL_DETAIL_TEXTURE_FUNC_POINTS_S
+ parameter ( GL_DETAIL_TEXTURE_FUNC_POINTS_S = 32924 )
+
+C SGIS_multisample
+ integer*4 GL_MULTISAMPLE_BIT_EXT
+ parameter ( GL_MULTISAMPLE_BIT_EXT = 536870912 )
+ integer*4 GL_MULTISAMPLE_SGIS
+ parameter ( GL_MULTISAMPLE_SGIS = 32925 )
+ integer*4 GL_SAMPLE_ALPHA_TO_MASK_SGIS
+ parameter ( GL_SAMPLE_ALPHA_TO_MASK_SGIS = 32926 )
+ integer*4 GL_SAMPLE_ALPHA_TO_ONE_SGIS
+ parameter ( GL_SAMPLE_ALPHA_TO_ONE_SGIS = 32927 )
+ integer*4 GL_SAMPLE_MASK_SGIS
+ parameter ( GL_SAMPLE_MASK_SGIS = 32928 )
+ integer*4 GL_1PASS_SGIS
+ parameter ( GL_1PASS_SGIS = 32929 )
+ integer*4 GL_2PASS_0_SGIS
+ parameter ( GL_2PASS_0_SGIS = 32930 )
+ integer*4 GL_2PASS_1_SGIS
+ parameter ( GL_2PASS_1_SGIS = 32931 )
+ integer*4 GL_4PASS_0_SGIS
+ parameter ( GL_4PASS_0_SGIS = 32932 )
+ integer*4 GL_4PASS_1_SGIS
+ parameter ( GL_4PASS_1_SGIS = 32933 )
+ integer*4 GL_4PASS_2_SGIS
+ parameter ( GL_4PASS_2_SGIS = 32934 )
+ integer*4 GL_4PASS_3_SGIS
+ parameter ( GL_4PASS_3_SGIS = 32935 )
+ integer*4 GL_SAMPLE_BUFFERS_SGIS
+ parameter ( GL_SAMPLE_BUFFERS_SGIS = 32936 )
+ integer*4 GL_SAMPLES_SGIS
+ parameter ( GL_SAMPLES_SGIS = 32937 )
+ integer*4 GL_SAMPLE_MASK_VALUE_SGIS
+ parameter ( GL_SAMPLE_MASK_VALUE_SGIS = 32938 )
+ integer*4 GL_SAMPLE_MASK_INVERT_SGIS
+ parameter ( GL_SAMPLE_MASK_INVERT_SGIS = 32939 )
+ integer*4 GL_SAMPLE_PATTERN_SGIS
+ parameter ( GL_SAMPLE_PATTERN_SGIS = 32940 )
+
+C SGIS_sharpen_texture
+ integer*4 GL_LINEAR_SHARPEN_SGIS
+ parameter ( GL_LINEAR_SHARPEN_SGIS = 32941 )
+ integer*4 GL_LINEAR_SHARPEN_ALPHA_SGIS
+ parameter ( GL_LINEAR_SHARPEN_ALPHA_SGIS = 32942 )
+ integer*4 GL_LINEAR_SHARPEN_COLOR_SGIS
+ parameter ( GL_LINEAR_SHARPEN_COLOR_SGIS = 32943 )
+ integer*4 GL_SHARPEN_TEXTURE_FUNC_POINTS_S
+ parameter ( GL_SHARPEN_TEXTURE_FUNC_POINTS_S = 32944 )
+
+C ***********************************************************
+
+
+ character*128 fglGetString
+ integer fglGetError
+ integer*4 fglRenderMode
+ logical*1 fglAreTexturesResidentEXT
+ logical*1 fglIsEnabled
+ logical*1 fglIsList
+ logical*1 fglIsTextureEXT
+ logical*4 fglGenLists
+ logical*4 fglGenTexturesEXT
diff --git a/headtrack_demo/include/glut/GL/fglu.h b/headtrack_demo/include/glut/GL/fglu.h
new file mode 100644
index 0000000..75c064c
--- /dev/null
+++ b/headtrack_demo/include/glut/GL/fglu.h
@@ -0,0 +1,210 @@
+
+C GLUT version of "GL/fgl.h"
+
+C Modifications from SGI IRIX 5.3 version:
+C 1) F prefix removed from GLU constants.
+C 2) Fix GLU_TRUE and GLU_FALSE.
+
+C *** Generic constants ***
+
+C Errors: (return value 0 = no error)
+ integer*4 GLU_INVALID_ENUM
+ parameter ( GLU_INVALID_ENUM = 100900 )
+ integer*4 GLU_INVALID_VALUE
+ parameter ( GLU_INVALID_VALUE = 100901 )
+ integer*4 GLU_OUT_OF_MEMORY
+ parameter ( GLU_OUT_OF_MEMORY = 100902 )
+
+C For laughs:
+ integer*4 GLU_TRUE
+ parameter ( GLU_TRUE = 1 )
+ integer*4 GLU_FALSE
+ parameter ( GLU_FALSE = 0 )
+
+
+C *** Quadric constants ***
+
+C Types of normals:
+ integer*4 GLU_SMOOTH
+ parameter ( GLU_SMOOTH = 100000 )
+ integer*4 GLU_FLAT
+ parameter ( GLU_FLAT = 100001 )
+ integer*4 GLU_NONE
+ parameter ( GLU_NONE = 100002 )
+
+C DrawStyle types:
+ integer*4 GLU_POINT
+ parameter ( GLU_POINT = 100010 )
+ integer*4 GLU_LINE
+ parameter ( GLU_LINE = 100011 )
+ integer*4 GLU_FILL
+ parameter ( GLU_FILL = 100012 )
+ integer*4 GLU_SILHOUETTE
+ parameter ( GLU_SILHOUETTE = 100013 )
+
+C Orientation types:
+ integer*4 GLU_OUTSIDE
+ parameter ( GLU_OUTSIDE = 100020 )
+ integer*4 GLU_INSIDE
+ parameter ( GLU_INSIDE = 100021 )
+
+C Callback types:
+C GLU_ERROR 100103
+
+
+C *** Tesselation constants ***
+
+C Callback types:
+ integer*4 GLU_BEGIN
+ parameter ( GLU_BEGIN = 100100 )
+ integer*4 GLU_VERTEX
+ parameter ( GLU_VERTEX = 100101 )
+ integer*4 GLU_END
+ parameter ( GLU_END = 100102 )
+ integer*4 GLU_ERROR
+ parameter ( GLU_ERROR = 100103 )
+ integer*4 GLU_EDGE_FLAG
+ parameter ( GLU_EDGE_FLAG = 100104 )
+
+C Contours types:
+ integer*4 GLU_CW
+ parameter ( GLU_CW = 100120 )
+ integer*4 GLU_CCW
+ parameter ( GLU_CCW = 100121 )
+ integer*4 GLU_INTERIOR
+ parameter ( GLU_INTERIOR = 100122 )
+ integer*4 GLU_EXTERIOR
+ parameter ( GLU_EXTERIOR = 100123 )
+ integer*4 GLU_UNKNOWN
+ parameter ( GLU_UNKNOWN = 100124 )
+
+ integer*4 GLU_TESS_ERROR1
+ parameter ( GLU_TESS_ERROR1 = 100151 )
+ integer*4 GLU_TESS_ERROR2
+ parameter ( GLU_TESS_ERROR2 = 100152 )
+ integer*4 GLU_TESS_ERROR3
+ parameter ( GLU_TESS_ERROR3 = 100153 )
+ integer*4 GLU_TESS_ERROR4
+ parameter ( GLU_TESS_ERROR4 = 100154 )
+ integer*4 GLU_TESS_ERROR5
+ parameter ( GLU_TESS_ERROR5 = 100155 )
+ integer*4 GLU_TESS_ERROR6
+ parameter ( GLU_TESS_ERROR6 = 100156 )
+ integer*4 GLU_TESS_ERROR7
+ parameter ( GLU_TESS_ERROR7 = 100157 )
+ integer*4 GLU_TESS_ERROR8
+ parameter ( GLU_TESS_ERROR8 = 100158 )
+
+
+C *** NURBS constants ***
+
+C Properties:
+ integer*4 GLU_AUTO_LOAD_MATRIX
+ parameter ( GLU_AUTO_LOAD_MATRIX = 100200 )
+ integer*4 GLU_CULLING
+ parameter ( GLU_CULLING = 100201 )
+ integer*4 GLU_SAMPLING_TOLERANCE
+ parameter ( GLU_SAMPLING_TOLERANCE = 100203 )
+ integer*4 GLU_DISPLAY_MODE
+ parameter ( GLU_DISPLAY_MODE = 100204 )
+
+C Trimming curve types
+ integer*4 GLU_MAP1_TRIM_2
+ parameter ( GLU_MAP1_TRIM_2 = 100210 )
+ integer*4 GLU_MAP1_TRIM_3
+ parameter ( GLU_MAP1_TRIM_3 = 100211 )
+
+C Display modes:
+C GLU_FILL 100012
+ integer*4 GLU_OUTLINE_POLYGON
+ parameter ( GLU_OUTLINE_POLYGON = 100240 )
+ integer*4 GLU_OUTLINE_PATCH
+ parameter ( GLU_OUTLINE_PATCH = 100241 )
+
+C Callbacks:
+C GLU_ERROR 100103
+
+C Errors:
+ integer*4 GLU_NURBS_ERROR1
+ parameter ( GLU_NURBS_ERROR1 = 100251 )
+ integer*4 GLU_NURBS_ERROR2
+ parameter ( GLU_NURBS_ERROR2 = 100252 )
+ integer*4 GLU_NURBS_ERROR3
+ parameter ( GLU_NURBS_ERROR3 = 100253 )
+ integer*4 GLU_NURBS_ERROR4
+ parameter ( GLU_NURBS_ERROR4 = 100254 )
+ integer*4 GLU_NURBS_ERROR5
+ parameter ( GLU_NURBS_ERROR5 = 100255 )
+ integer*4 GLU_NURBS_ERROR6
+ parameter ( GLU_NURBS_ERROR6 = 100256 )
+ integer*4 GLU_NURBS_ERROR7
+ parameter ( GLU_NURBS_ERROR7 = 100257 )
+ integer*4 GLU_NURBS_ERROR8
+ parameter ( GLU_NURBS_ERROR8 = 100258 )
+ integer*4 GLU_NURBS_ERROR9
+ parameter ( GLU_NURBS_ERROR9 = 100259 )
+ integer*4 GLU_NURBS_ERROR10
+ parameter ( GLU_NURBS_ERROR10 = 100260 )
+ integer*4 GLU_NURBS_ERROR11
+ parameter ( GLU_NURBS_ERROR11 = 100261 )
+ integer*4 GLU_NURBS_ERROR12
+ parameter ( GLU_NURBS_ERROR12 = 100262 )
+ integer*4 GLU_NURBS_ERROR13
+ parameter ( GLU_NURBS_ERROR13 = 100263 )
+ integer*4 GLU_NURBS_ERROR14
+ parameter ( GLU_NURBS_ERROR14 = 100264 )
+ integer*4 GLU_NURBS_ERROR15
+ parameter ( GLU_NURBS_ERROR15 = 100265 )
+ integer*4 GLU_NURBS_ERROR16
+ parameter ( GLU_NURBS_ERROR16 = 100266 )
+ integer*4 GLU_NURBS_ERROR17
+ parameter ( GLU_NURBS_ERROR17 = 100267 )
+ integer*4 GLU_NURBS_ERROR18
+ parameter ( GLU_NURBS_ERROR18 = 100268 )
+ integer*4 GLU_NURBS_ERROR19
+ parameter ( GLU_NURBS_ERROR19 = 100269 )
+ integer*4 GLU_NURBS_ERROR20
+ parameter ( GLU_NURBS_ERROR20 = 100270 )
+ integer*4 GLU_NURBS_ERROR21
+ parameter ( GLU_NURBS_ERROR21 = 100271 )
+ integer*4 GLU_NURBS_ERROR22
+ parameter ( GLU_NURBS_ERROR22 = 100272 )
+ integer*4 GLU_NURBS_ERROR23
+ parameter ( GLU_NURBS_ERROR23 = 100273 )
+ integer*4 GLU_NURBS_ERROR24
+ parameter ( GLU_NURBS_ERROR24 = 100274 )
+ integer*4 GLU_NURBS_ERROR25
+ parameter ( GLU_NURBS_ERROR25 = 100275 )
+ integer*4 GLU_NURBS_ERROR26
+ parameter ( GLU_NURBS_ERROR26 = 100276 )
+ integer*4 GLU_NURBS_ERROR27
+ parameter ( GLU_NURBS_ERROR27 = 100277 )
+ integer*4 GLU_NURBS_ERROR28
+ parameter ( GLU_NURBS_ERROR28 = 100278 )
+ integer*4 GLU_NURBS_ERROR29
+ parameter ( GLU_NURBS_ERROR29 = 100279 )
+ integer*4 GLU_NURBS_ERROR30
+ parameter ( GLU_NURBS_ERROR30 = 100280 )
+ integer*4 GLU_NURBS_ERROR31
+ parameter ( GLU_NURBS_ERROR31 = 100281 )
+ integer*4 GLU_NURBS_ERROR32
+ parameter ( GLU_NURBS_ERROR32 = 100282 )
+ integer*4 GLU_NURBS_ERROR33
+ parameter ( GLU_NURBS_ERROR33 = 100283 )
+ integer*4 GLU_NURBS_ERROR34
+ parameter ( GLU_NURBS_ERROR34 = 100284 )
+ integer*4 GLU_NURBS_ERROR35
+ parameter ( GLU_NURBS_ERROR35 = 100285 )
+ integer*4 GLU_NURBS_ERROR36
+ parameter ( GLU_NURBS_ERROR36 = 100286 )
+ integer*4 GLU_NURBS_ERROR37
+ parameter ( GLU_NURBS_ERROR37 = 100287 )
+
+
+ character*128 fgluErrorString
+ character*128 fgluGetString
+ integer*4 fgluBuild1DMipmaps
+ integer*4 fgluBuild2DMipmaps
+ integer*4 fgluProject
+ integer*4 fgluScaleImage
+ integer*4 fgluUnProject
diff --git a/headtrack_demo/include/glut/GL/fglut.h b/headtrack_demo/include/glut/GL/fglut.h
new file mode 100644
index 0000000..efe3d14
--- /dev/null
+++ b/headtrack_demo/include/glut/GL/fglut.h
@@ -0,0 +1,321 @@
+
+C Copyright (c) Mark J. Kilgard, 1994.
+
+C This program is freely distributable without licensing fees
+C and is provided without guarantee or warrantee expressed or
+C implied. This program is -not- in the public domain.
+
+C GLUT Fortran header file
+
+C display mode bit masks
+ integer*4 GLUT_RGB
+ parameter ( GLUT_RGB = 0 )
+ integer*4 GLUT_RGBA
+ parameter ( GLUT_RGBA = 0 )
+ integer*4 GLUT_INDEX
+ parameter ( GLUT_INDEX = 1 )
+ integer*4 GLUT_SINGLE
+ parameter ( GLUT_SINGLE = 0 )
+ integer*4 GLUT_DOUBLE
+ parameter ( GLUT_DOUBLE = 2 )
+ integer*4 GLUT_ACCUM
+ parameter ( GLUT_ACCUM = 4 )
+ integer*4 GLUT_ALPHA
+ parameter ( GLUT_ALPHA = 8 )
+ integer*4 GLUT_DEPTH
+ parameter ( GLUT_DEPTH = 16 )
+ integer*4 GLUT_STENCIL
+ parameter ( GLUT_STENCIL = 32 )
+ integer*4 GLUT_MULTISAMPLE
+ parameter ( GLUT_MULTISAMPLE = 128 )
+ integer*4 GLUT_STEREO
+ parameter ( GLUT_STEREO = 256 )
+
+C mouse buttons
+ integer*4 GLUT_LEFT_BUTTON
+ parameter ( GLUT_LEFT_BUTTON = 0 )
+ integer*4 GLUT_MIDDLE_BUTTON
+ parameter ( GLUT_MIDDLE_BUTTON = 1 )
+ integer*4 GLUT_RIGHT_BUTTON
+ parameter ( GLUT_RIGHT_BUTTON = 2 )
+
+C mouse button callback state
+ integer*4 GLUT_DOWN
+ parameter ( GLUT_DOWN = 0 )
+ integer*4 GLUT_UP
+ parameter ( GLUT_UP = 1 )
+
+C special key callback values
+ integer*4 GLUT_KEY_F1
+ parameter ( GLUT_KEY_F1 = 1 )
+ integer*4 GLUT_KEY_F2
+ parameter ( GLUT_KEY_F2 = 2 )
+ integer*4 GLUT_KEY_F3
+ parameter ( GLUT_KEY_F3 = 3 )
+ integer*4 GLUT_KEY_F4
+ parameter ( GLUT_KEY_F4 = 4 )
+ integer*4 GLUT_KEY_F5
+ parameter ( GLUT_KEY_F5 = 5 )
+ integer*4 GLUT_KEY_F6
+ parameter ( GLUT_KEY_F6 = 6 )
+ integer*4 GLUT_KEY_F7
+ parameter ( GLUT_KEY_F7 = 7 )
+ integer*4 GLUT_KEY_F8
+ parameter ( GLUT_KEY_F8 = 8 )
+ integer*4 GLUT_KEY_F9
+ parameter ( GLUT_KEY_F9 = 9 )
+ integer*4 GLUT_KEY_F10
+ parameter ( GLUT_KEY_F10 = 10 )
+ integer*4 GLUT_KEY_F11
+ parameter ( GLUT_KEY_F11 = 11 )
+ integer*4 GLUT_KEY_F12
+ parameter ( GLUT_KEY_F12 = 12 )
+ integer*4 GLUT_KEY_LEFT
+ parameter ( GLUT_KEY_LEFT = 100 )
+ integer*4 GLUT_KEY_UP
+ parameter ( GLUT_KEY_UP = 101 )
+ integer*4 GLUT_KEY_RIGHT
+ parameter ( GLUT_KEY_RIGHT = 102 )
+ integer*4 GLUT_KEY_DOWN
+ parameter ( GLUT_KEY_DOWN = 103 )
+ integer*4 GLUT_KEY_PAGE_UP
+ parameter ( GLUT_KEY_PAGE_UP = 104 )
+ integer*4 GLUT_KEY_PAGE_DOWN
+ parameter ( GLUT_KEY_PAGE_DOWN = 105 )
+ integer*4 GLUT_KEY_HOME
+ parameter ( GLUT_KEY_HOME = 106 )
+ integer*4 GLUT_KEY_END
+ parameter ( GLUT_KEY_END = 107 )
+ integer*4 GLUT_KEY_INSERT
+ parameter ( GLUT_KEY_INSERT = 108 )
+
+C entry/exit callback state
+ integer*4 GLUT_LEFT
+ parameter ( GLUT_LEFT = 0 )
+ integer*4 GLUT_ENTERED
+ parameter ( GLUT_ENTERED = 1 )
+
+C menu usage callback state
+ integer*4 GLUT_MENU_NOT_IN_USE
+ parameter ( GLUT_MENU_NOT_IN_USE = 0 )
+ integer*4 GLUT_MENU_IN_USE
+ parameter ( GLUT_MENU_IN_USE = 1 )
+
+C visibility callback state
+ integer*4 GLUT_NOT_VISIBLE
+ parameter ( GLUT_NOT_VISIBLE = 0 )
+ integer*4 GLUT_VISIBLE
+ parameter ( GLUT_VISIBLE = 1 )
+
+C color index component selection values
+ integer*4 GLUT_RED
+ parameter ( GLUT_RED = 0 )
+ integer*4 GLUT_GREEN
+ parameter ( GLUT_GREEN = 1 )
+ integer*4 GLUT_BLUE
+ parameter ( GLUT_BLUE = 2 )
+
+C XXX Unfortunately, SGI's Fortran compiler links with
+C EXTERNAL data even if it is not used. This defeats
+C the purpose of GLUT naming fonts via opaque symbols.
+C This means GLUT Fortran programmers should explicitly
+C declared EXTERNAL GLUT fonts in subroutines where
+C the fonts are used.
+
+C stroke font opaque names
+C external GLUT_STROKE_ROMAN
+C external GLUT_STROKE_MONO_ROMAN
+
+C bitmap font opaque names
+C external GLUT_BITMAP_9_BY_15
+C external GLUT_BITMAP_8_BY_13
+C external GLUT_BITMAP_TIMES_ROMAN_10
+C external GLUT_BITMAP_TIMES_ROMAN_24
+C external GLUT_BITMAP_HELVETICA_10
+C external GLUT_BITMAP_HELVETICA_12
+C external GLUT_BITMAP_HELVETICA_18
+
+C glutGet parameters
+ integer*4 GLUT_WINDOW_X
+ parameter ( GLUT_WINDOW_X = 100 )
+ integer*4 GLUT_WINDOW_Y
+ parameter ( GLUT_WINDOW_Y = 101 )
+ integer*4 GLUT_WINDOW_WIDTH
+ parameter ( GLUT_WINDOW_WIDTH = 102 )
+ integer*4 GLUT_WINDOW_HEIGHT
+ parameter ( GLUT_WINDOW_HEIGHT = 103 )
+ integer*4 GLUT_WINDOW_BUFFER_SIZE
+ parameter ( GLUT_WINDOW_BUFFER_SIZE = 104 )
+ integer*4 GLUT_WINDOW_STENCIL_SIZE
+ parameter ( GLUT_WINDOW_STENCIL_SIZE = 105 )
+ integer*4 GLUT_WINDOW_DEPTH_SIZE
+ parameter ( GLUT_WINDOW_DEPTH_SIZE = 106 )
+ integer*4 GLUT_WINDOW_RED_SIZE
+ parameter ( GLUT_WINDOW_RED_SIZE = 107 )
+ integer*4 GLUT_WINDOW_GREEN_SIZE
+ parameter ( GLUT_WINDOW_GREEN_SIZE = 108 )
+ integer*4 GLUT_WINDOW_BLUE_SIZE
+ parameter ( GLUT_WINDOW_BLUE_SIZE = 109 )
+ integer*4 GLUT_WINDOW_ALPHA_SIZE
+ parameter ( GLUT_WINDOW_ALPHA_SIZE = 110 )
+ integer*4 GLUT_WINDOW_ACCUM_RED_SIZE
+ parameter ( GLUT_WINDOW_ACCUM_RED_SIZE = 111 )
+ integer*4 GLUT_WINDOW_ACCUM_GREEN_SIZE
+ parameter ( GLUT_WINDOW_ACCUM_GREEN_SIZE = 112 )
+ integer*4 GLUT_WINDOW_ACCUM_BLUE_SIZE
+ parameter ( GLUT_WINDOW_ACCUM_BLUE_SIZE = 113 )
+ integer*4 GLUT_WINDOW_ACCUM_ALPHA_SIZE
+ parameter ( GLUT_WINDOW_ACCUM_ALPHA_SIZE = 114 )
+ integer*4 GLUT_WINDOW_DOUBLEBUFFER
+ parameter ( GLUT_WINDOW_DOUBLEBUFFER = 115 )
+ integer*4 GLUT_WINDOW_RGBA
+ parameter ( GLUT_WINDOW_RGBA = 116 )
+ integer*4 GLUT_WINDOW_PARENT
+ parameter ( GLUT_WINDOW_PARENT = 117 )
+ integer*4 GLUT_WINDOW_NUM_CHILDREN
+ parameter ( GLUT_WINDOW_NUM_CHILDREN = 118 )
+ integer*4 GLUT_WINDOW_COLORMAP_SIZE
+ parameter ( GLUT_WINDOW_COLORMAP_SIZE = 119 )
+ integer*4 GLUT_WINDOW_NUM_SAMPLES
+ parameter ( GLUT_WINDOW_NUM_SAMPLES = 120 )
+ integer*4 GLUT_WINDOW_STEREO
+ parameter ( GLUT_WINDOW_STEREO = 121 )
+ integer*4 GLUT_WINDOW_CURSOR
+ parameter ( GLUT_WINDOW_CURSOR = 122 )
+ integer*4 GLUT_SCREEN_WIDTH
+ parameter ( GLUT_SCREEN_WIDTH = 200 )
+ integer*4 GLUT_SCREEN_HEIGHT
+ parameter ( GLUT_SCREEN_HEIGHT = 201 )
+ integer*4 GLUT_SCREEN_WIDTH_MM
+ parameter ( GLUT_SCREEN_WIDTH_MM = 202 )
+ integer*4 GLUT_SCREEN_HEIGHT_MM
+ parameter ( GLUT_SCREEN_HEIGHT_MM = 203 )
+ integer*4 GLUT_MENU_NUM_ITEMS
+ parameter ( GLUT_MENU_NUM_ITEMS = 300 )
+ integer*4 GLUT_DISPLAY_MODE_POSSIBLE
+ parameter ( GLUT_DISPLAY_MODE_POSSIBLE = 400 )
+ integer*4 GLUT_INIT_WINDOW_X
+ parameter ( GLUT_INIT_WINDOW_X = 500 )
+ integer*4 GLUT_INIT_WINDOW_Y
+ parameter ( GLUT_INIT_WINDOW_Y = 501 )
+ integer*4 GLUT_INIT_WINDOW_WIDTH
+ parameter ( GLUT_INIT_WINDOW_WIDTH = 502 )
+ integer*4 GLUT_INIT_WINDOW_HEIGHT
+ parameter ( GLUT_INIT_WINDOW_HEIGHT = 503 )
+ integer*4 GLUT_INIT_DISPLAY_MODE
+ parameter ( GLUT_INIT_DISPLAY_MODE = 504 )
+ integer*4 GLUT_ELAPSED_TIME
+ parameter ( GLUT_ELAPSED_TIME = 700 )
+
+C glutDeviceGet parameters
+ integer*4 GLUT_HAS_KEYBOARD
+ parameter ( GLUT_HAS_KEYBOARD = 600 )
+ integer*4 GLUT_HAS_MOUSE
+ parameter ( GLUT_HAS_MOUSE = 601 )
+ integer*4 GLUT_HAS_SPACEBALL
+ parameter ( GLUT_HAS_SPACEBALL = 602 )
+ integer*4 GLUT_HAS_DIAL_AND_BUTTON_BOX
+ parameter ( GLUT_HAS_DIAL_AND_BUTTON_BOX = 603 )
+ integer*4 GLUT_HAS_TABLET
+ parameter ( GLUT_HAS_TABLET = 604 )
+ integer*4 GLUT_NUM_MOUSE_BUTTONS
+ parameter ( GLUT_NUM_MOUSE_BUTTONS = 605 )
+ integer*4 GLUT_NUM_SPACEBALL_BUTTONS
+ parameter ( GLUT_NUM_SPACEBALL_BUTTONS = 606 )
+ integer*4 GLUT_NUM_BUTTON_BOX_BUTTONS
+ parameter ( GLUT_NUM_BUTTON_BOX_BUTTONS = 607 )
+ integer*4 GLUT_NUM_DIALS
+ parameter ( GLUT_NUM_DIALS = 608 )
+ integer*4 GLUT_NUM_TABLET_BUTTONS
+ parameter ( GLUT_NUM_TABLET_BUTTONS = 609 )
+
+C glutLayerGet parameters
+ integer*4 GLUT_OVERLAY_POSSIBLE
+ parameter ( GLUT_OVERLAY_POSSIBLE = 800 )
+ integer*4 GLUT_LAYER_IN_USE
+ parameter ( GLUT_LAYER_IN_USE = 801 )
+ integer*4 GLUT_HAS_OVERLAY
+ parameter ( GLUT_HAS_OVERLAY = 802 )
+ integer*4 GLUT_TRANSPARENT_INDEX
+ parameter ( GLUT_TRANSPARENT_INDEX = 803 )
+ integer*4 GLUT_NORMAL_DAMAGED
+ parameter ( GLUT_NORMAL_DAMAGED = 804 )
+ integer*4 GLUT_OVERLAY_DAMAGED
+ parameter ( GLUT_OVERLAY_DAMAGED = 805 )
+
+C glutUseLayer parameters
+ integer*4 GLUT_NORMAL
+ parameter ( GLUT_NORMAL = 0 )
+ integer*4 GLUT_OVERLAY
+ parameter ( GLUT_OVERLAY = 1 )
+
+C glutGetModifiers return mask
+ integer*4 GLUT_ACTIVE_SHIFT
+ parameter ( GLUT_ACTIVE_SHIFT = 1 )
+ integer*4 GLUT_ACTIVE_CTRL
+ parameter ( GLUT_ACTIVE_CTRL = 2 )
+ integer*4 GLUT_ACTIVE_ALT
+ parameter ( GLUT_ACTIVE_ALT = 4 )
+
+C glutSetCursor parameters
+ integer*4 GLUT_CURSOR_RIGHT_ARROW
+ parameter ( GLUT_CURSOR_RIGHT_ARROW = 0 )
+ integer*4 GLUT_CURSOR_LEFT_ARROW
+ parameter ( GLUT_CURSOR_LEFT_ARROW = 1 )
+ integer*4 GLUT_CURSOR_INFO
+ parameter ( GLUT_CURSOR_INFO = 2 )
+ integer*4 GLUT_CURSOR_DESTROY
+ parameter ( GLUT_CURSOR_DESTROY = 3 )
+ integer*4 GLUT_CURSOR_HELP
+ parameter ( GLUT_CURSOR_HELP = 4 )
+ integer*4 GLUT_CURSOR_CYCLE
+ parameter ( GLUT_CURSOR_CYCLE = 5 )
+ integer*4 GLUT_CURSOR_SPRAY
+ parameter ( GLUT_CURSOR_SPRAY = 6 )
+ integer*4 GLUT_CURSOR_WAIT
+ parameter ( GLUT_CURSOR_WAIT = 7 )
+ integer*4 GLUT_CURSOR_TEXT
+ parameter ( GLUT_CURSOR_TEXT = 8 )
+ integer*4 GLUT_CURSOR_CROSSHAIR
+ parameter ( GLUT_CURSOR_CROSSHAIR = 9 )
+ integer*4 GLUT_CURSOR_UP_DOWN
+ parameter ( GLUT_CURSOR_UP_DOWN = 10 )
+ integer*4 GLUT_CURSOR_LEFT_RIGHT
+ parameter ( GLUT_CURSOR_LEFT_RIGHT = 11 )
+ integer*4 GLUT_CURSOR_TOP_SIDE
+ parameter ( GLUT_CURSOR_TOP_SIDE = 12 )
+ integer*4 GLUT_CURSOR_BOTTOM_SIDE
+ parameter ( GLUT_CURSOR_BOTTOM_SIDE = 13 )
+ integer*4 GLUT_CURSOR_LEFT_SIDE
+ parameter ( GLUT_CURSOR_LEFT_SIDE = 14 )
+ integer*4 GLUT_CURSOR_RIGHT_SIDE
+ parameter ( GLUT_CURSOR_RIGHT_SIDE = 15 )
+ integer*4 GLUT_CURSOR_TOP_LEFT_CORNER
+ parameter ( GLUT_CURSOR_TOP_LEFT_CORNER = 16 )
+ integer*4 GLUT_CURSOR_TOP_RIGHT_CORNER
+ parameter ( GLUT_CURSOR_TOP_RIGHT_CORNER = 17 )
+ integer*4 GLUT_CURSOR_BOTTOM_RIGHT_CORNER
+ parameter ( GLUT_CURSOR_BOTTOM_RIGHT_CORNER = 18 )
+ integer*4 GLUT_CURSOR_BOTTOM_LEFT_CORNER
+ parameter ( GLUT_CURSOR_BOTTOM_LEFT_CORNER = 19 )
+ integer*4 GLUT_CURSOR_INHERIT
+ parameter ( GLUT_CURSOR_INHERIT = 100 )
+ integer*4 GLUT_CURSOR_NONE
+ parameter ( GLUT_CURSOR_NONE = 101 )
+ integer*4 GLUT_CURSOR_FULL_CROSSHAIR
+ parameter ( GLUT_CURSOR_FULL_CROSSHAIR = 102 )
+
+C GLUT functions
+ integer*4 glutcreatewindow
+ integer*4 glutcreatesubwindow
+ integer*4 glutgetwindow
+ integer*4 glutcreatemenu
+ integer*4 glutgetmenu
+ real glutgetcolor
+ integer*4 glutget
+ integer*4 glutdeviceget
+ integer*4 glutextensionsupported
+
+C GLUT NULL name
+ external glutnull
+
diff --git a/headtrack_demo/include/glut/GL/glsmap.h b/headtrack_demo/include/glut/GL/glsmap.h
new file mode 100644
index 0000000..9f0b592
--- /dev/null
+++ b/headtrack_demo/include/glut/GL/glsmap.h
@@ -0,0 +1,137 @@
+#ifndef __glsmap_h__
+#define __glsmap_h__
+
+/* Copyright (c) Mark J. Kilgard, 1998. */
+
+/* This program is freely distributable without licensing fees
+ and is provided without guarantee or warrantee expressed or
+ implied. This program is -not- in the public domain. */
+
+#if defined(_WIN32)
+
+/* Try hard to avoid including <windows.h> to avoid name space pollution,
+ but Win32's <GL/gl.h> needs APIENTRY and WINGDIAPI defined properly. */
+# if 0
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+# else
+ /* XXX This is from Win32's <windef.h> */
+# ifndef APIENTRY
+# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+# define APIENTRY __stdcall
+# else
+# define APIENTRY
+# endif
+# endif
+# ifndef CALLBACK
+ /* XXX This is from Win32's <winnt.h> */
+# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+# define CALLBACK __stdcall
+# else
+# define CALLBACK
+# endif
+# endif
+ /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
+# ifndef WINGDIAPI
+# define WINGDIAPI __declspec(dllimport)
+# endif
+ /* XXX This is from Win32's <ctype.h> */
+# ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+# define _WCHAR_T_DEFINED
+# endif
+# endif
+
+#pragma warning (disable:4244) /* Disable bogus conversion warnings. */
+#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */
+
+#endif /* _WIN32 */
+
+#include <GL/gl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+ SMAP_CLEAR_SMAP_TEXTURE = 0x1,
+ SMAP_GENERATE_VIEW_MIPMAPS = 0x2,
+ SMAP_GENERATE_SMAP_MIPMAPS = 0x4,
+ SMAP_GENERATE_MIPMAPS = 0x6 /* both of above */
+} SphereMapFlags;
+
+/* Cube view enumerants. */
+enum {
+ SMAP_FRONT = 0,
+ SMAP_TOP = 1,
+ SMAP_BOTTOM = 2,
+ SMAP_LEFT = 3,
+ SMAP_RIGHT = 4,
+ SMAP_BACK = 5
+};
+
+typedef struct _SphereMap SphereMap;
+
+extern SphereMap *smapCreateSphereMap(SphereMap *shareSmap);
+extern void smapDestroySphereMap(SphereMap *smap);
+
+extern void smapConfigureSphereMapMesh(SphereMap *smap, int steps, int rings, int edgeExtend);
+
+extern void smapSetSphereMapTexObj(SphereMap *smap, GLuint texobj);
+extern void smapSetViewTexObj(SphereMap *smap, GLuint texobj);
+extern void smapSetViewTexObjs(SphereMap *smap, GLuint texobjs[6]);
+extern void smapGetSphereMapTexObj(SphereMap *smap, GLuint *texobj);
+extern void smapGetViewTexObj(SphereMap *smap, GLuint *texobj);
+extern void smapGetViewTexObjs(SphereMap *smap, GLuint texobjs[6]);
+
+extern void smapSetFlags(SphereMap *smap, SphereMapFlags flags);
+extern void smapGetFlags(SphereMap *smap, SphereMapFlags *flags);
+
+extern void smapSetViewOrigin(SphereMap *smap, GLint x, GLint y);
+extern void smapSetSphereMapOrigin(SphereMap *smap, GLint x, GLint y);
+extern void smapGetViewOrigin(SphereMap *smap, GLint *x, GLint *y);
+extern void smapGetSphereMapOrigin(SphereMap *smap, GLint *x, GLint *y);
+
+extern void smapSetEye(SphereMap *smap, GLfloat eyex, GLfloat eyey, GLfloat eyez);
+extern void smapSetEyeVector(SphereMap *smap, GLfloat *eye);
+extern void smapSetUp(SphereMap *smap, GLfloat upx, GLfloat upy, GLfloat upz);
+extern void smapSetUpVector(SphereMap *smap, GLfloat *up);
+extern void smapSetObject(SphereMap *smap, GLfloat objx, GLfloat objy, GLfloat objz);
+extern void smapSetObjectVector(SphereMap *smap, GLfloat *obj);
+extern void smapGetEye(SphereMap *smap, GLfloat *eyex, GLfloat *eyey, GLfloat *eyez);
+extern void smapGetEyeVector(SphereMap *smap, GLfloat *eye);
+extern void smapGetUp(SphereMap *smap, GLfloat *upx, GLfloat *upy, GLfloat *upz);
+extern void smapGetUpVector(SphereMap *smap, GLfloat *up);
+extern void smapGetObject(SphereMap *smap, GLfloat *objx, GLfloat *objy, GLfloat *objz);
+extern void smapGetObjectVector(SphereMap *smap, GLfloat *obj);
+
+extern void smapSetNearFar(SphereMap *smap, GLfloat viewNear, GLfloat viewFar);
+extern void smapGetNearFar(SphereMap *smap, GLfloat *viewNear, GLfloat *viewFar);
+
+extern void smapSetSphereMapTexDim(SphereMap *smap, GLsizei texdim);
+extern void smapSetViewTexDim(SphereMap *smap, GLsizei texdim);
+extern void smapGetSphereMapTexDim(SphereMap *smap, GLsizei *texdim);
+extern void smapGetViewTexDim(SphereMap *smap, GLsizei *texdim);
+
+extern void smapSetContextData(SphereMap *smap, void *context);
+extern void smapGetContextData(SphereMap *smap, void **context);
+
+extern void smapSetPositionLightsFunc(SphereMap *smap, void (*positionLights)(int view, void *context));
+extern void smapSetDrawViewFunc(SphereMap *smap, void (*drawView)(int view, void *context));
+extern void smapGetPositionLightsFunc(SphereMap *smap, void (**positionLights)(int view, void *context));
+extern void smapGetDrawViewFunc(SphereMap *smap, void (**drawView)(int view, void *context));
+
+extern void smapGenViewTex(SphereMap *smap, int view);
+extern void smapGenViewTexs(SphereMap *smap);
+extern void smapGenSphereMapFromViewTexs(SphereMap *smap);
+extern void smapGenSphereMap(SphereMap *smap);
+extern void smapGenSphereMapWithOneViewTex(SphereMap *smap);
+
+extern int smapRvecToSt(float rvec[3], float st[2]);
+extern void smapStToRvec(float *st, float *rvec);
+
+#ifdef __cplusplus
+}
+
+#endif
+#endif /* __glsmap_h__ */
diff --git a/headtrack_demo/include/glut/GL/glut.h b/headtrack_demo/include/glut/GL/glut.h
new file mode 100644
index 0000000..e0692ad
--- /dev/null
+++ b/headtrack_demo/include/glut/GL/glut.h
@@ -0,0 +1,596 @@
+#ifndef __glut_h__
+#define __glut_h__
+
+/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */
+
+/* This program is freely distributable without licensing fees and is
+ provided without guarantee or warrantee expressed or implied. This
+ program is -not- in the public domain. */
+
+#if defined(_WIN32)
+
+/* GLUT 3.7 now tries to avoid including <windows.h>
+ to avoid name space pollution, but Win32's <GL/gl.h>
+ needs APIENTRY and WINGDIAPI defined properly. */
+# if 0
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+# else
+ /* XXX This is from Win32's <windef.h> */
+# ifndef APIENTRY
+# define GLUT_APIENTRY_DEFINED
+# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+# define APIENTRY __stdcall
+# else
+# define APIENTRY
+# endif
+# endif
+ /* XXX This is from Win32's <winnt.h> */
+# ifndef CALLBACK
+# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+# define CALLBACK __stdcall
+# else
+# define CALLBACK
+# endif
+# endif
+ /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
+# ifndef WINGDIAPI
+# define GLUT_WINGDIAPI_DEFINED
+# define WINGDIAPI __declspec(dllimport)
+# endif
+ /* XXX This is from Win32's <ctype.h> */
+# ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+# define _WCHAR_T_DEFINED
+# endif
+# endif
+
+#pragma comment (lib, "winmm.lib") /* link with Windows MultiMedia lib */
+#pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */
+#pragma comment (lib, "glu32.lib") /* link with OpenGL Utility lib */
+#pragma comment (lib, "glut32.lib") /* link with Win32 GLUT lib */
+
+#pragma warning (disable:4244) /* Disable bogus conversion warnings. */
+#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */
+
+#endif
+
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+/* define APIENTRY and CALLBACK to null string if we aren't on Win32 */
+#if !defined(_WIN32)
+#define APIENTRY
+#define GLUT_APIENTRY_DEFINED
+#define CALLBACK
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ GLUT API revision history:
+
+ GLUT_API_VERSION is updated to reflect incompatible GLUT
+ API changes (interface changes, semantic changes, deletions,
+ or additions).
+
+ GLUT_API_VERSION=1 First public release of GLUT. 11/29/94
+
+ GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling,
+ extension. Supports new input devices like tablet, dial and button
+ box, and Spaceball. Easy to query OpenGL extensions.
+
+ GLUT_API_VERSION=3 glutMenuStatus added.
+
+ GLUT_API_VERSION=4 glutInitDisplayString, glutWarpPointer,
+ glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
+ video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
+ glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
+ glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
+**/
+#ifndef GLUT_API_VERSION /* allow this to be overriden */
+#define GLUT_API_VERSION 3
+#endif
+
+/**
+ GLUT implementation revision history:
+
+ GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
+ API revisions and implementation revisions (ie, bug fixes).
+
+ GLUT_XLIB_IMPLEMENTATION=1 mjk's first public release of
+ GLUT Xlib-based implementation. 11/29/94
+
+ GLUT_XLIB_IMPLEMENTATION=2 mjk's second public release of
+ GLUT Xlib-based implementation providing GLUT version 2
+ interfaces.
+
+ GLUT_XLIB_IMPLEMENTATION=3 mjk's GLUT 2.2 images. 4/17/95
+
+ GLUT_XLIB_IMPLEMENTATION=4 mjk's GLUT 2.3 images. 6/?/95
+
+ GLUT_XLIB_IMPLEMENTATION=5 mjk's GLUT 3.0 images. 10/?/95
+
+ GLUT_XLIB_IMPLEMENTATION=7 mjk's GLUT 3.1+ with glutWarpPoitner. 7/24/96
+
+ GLUT_XLIB_IMPLEMENTATION=8 mjk's GLUT 3.1+ with glutWarpPoitner
+ and video resize. 1/3/97
+
+ GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
+
+ GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
+
+ GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
+
+ GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 release with GameGLUT support.
+**/
+#ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overriden. */
+#define GLUT_XLIB_IMPLEMENTATION 13
+#endif
+
+/* Display mode bit masks. */
+#define GLUT_RGB 0
+#define GLUT_RGBA GLUT_RGB
+#define GLUT_INDEX 1
+#define GLUT_SINGLE 0
+#define GLUT_DOUBLE 2
+#define GLUT_ACCUM 4
+#define GLUT_ALPHA 8
+#define GLUT_DEPTH 16
+#define GLUT_STENCIL 32
+#if (GLUT_API_VERSION >= 2)
+#define GLUT_MULTISAMPLE 128
+#define GLUT_STEREO 256
+#endif
+#if (GLUT_API_VERSION >= 3)
+#define GLUT_LUMINANCE 512
+#endif
+
+/* Mouse buttons. */
+#define GLUT_LEFT_BUTTON 0
+#define GLUT_MIDDLE_BUTTON 1
+#define GLUT_RIGHT_BUTTON 2
+
+/* Mouse button state. */
+#define GLUT_DOWN 0
+#define GLUT_UP 1
+
+#if (GLUT_API_VERSION >= 2)
+/* function keys */
+#define GLUT_KEY_F1 1
+#define GLUT_KEY_F2 2
+#define GLUT_KEY_F3 3
+#define GLUT_KEY_F4 4
+#define GLUT_KEY_F5 5
+#define GLUT_KEY_F6 6
+#define GLUT_KEY_F7 7
+#define GLUT_KEY_F8 8
+#define GLUT_KEY_F9 9
+#define GLUT_KEY_F10 10
+#define GLUT_KEY_F11 11
+#define GLUT_KEY_F12 12
+/* directional keys */
+#define GLUT_KEY_LEFT 100
+#define GLUT_KEY_UP 101
+#define GLUT_KEY_RIGHT 102
+#define GLUT_KEY_DOWN 103
+#define GLUT_KEY_PAGE_UP 104
+#define GLUT_KEY_PAGE_DOWN 105
+#define GLUT_KEY_HOME 106
+#define GLUT_KEY_END 107
+#define GLUT_KEY_INSERT 108
+#endif
+
+/* Entry/exit state. */
+#define GLUT_LEFT 0
+#define GLUT_ENTERED 1
+
+/* Menu usage state. */
+#define GLUT_MENU_NOT_IN_USE 0
+#define GLUT_MENU_IN_USE 1
+
+/* Visibility state. */
+#define GLUT_NOT_VISIBLE 0
+#define GLUT_VISIBLE 1
+
+/* Window status state. */
+#define GLUT_HIDDEN 0
+#define GLUT_FULLY_RETAINED 1
+#define GLUT_PARTIALLY_RETAINED 2
+#define GLUT_FULLY_COVERED 3
+
+/* Color index component selection values. */
+#define GLUT_RED 0
+#define GLUT_GREEN 1
+#define GLUT_BLUE 2
+
+/* Layers for use. */
+#define GLUT_NORMAL 0
+#define GLUT_OVERLAY 1
+
+#if defined(_WIN32)
+/* Stroke font constants (use these in GLUT program). */
+#define GLUT_STROKE_ROMAN ((void*)0)
+#define GLUT_STROKE_MONO_ROMAN ((void*)1)
+
+/* Bitmap font constants (use these in GLUT program). */
+#define GLUT_BITMAP_9_BY_15 ((void*)2)
+#define GLUT_BITMAP_8_BY_13 ((void*)3)
+#define GLUT_BITMAP_TIMES_ROMAN_10 ((void*)4)
+#define GLUT_BITMAP_TIMES_ROMAN_24 ((void*)5)
+#if (GLUT_API_VERSION >= 3)
+#define GLUT_BITMAP_HELVETICA_10 ((void*)6)
+#define GLUT_BITMAP_HELVETICA_12 ((void*)7)
+#define GLUT_BITMAP_HELVETICA_18 ((void*)8)
+#endif
+#else
+/* Stroke font opaque addresses (use constants instead in source code). */
+extern void *glutStrokeRoman;
+extern void *glutStrokeMonoRoman;
+
+/* Stroke font constants (use these in GLUT program). */
+#define GLUT_STROKE_ROMAN (&glutStrokeRoman)
+#define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman)
+
+/* Bitmap font opaque addresses (use constants instead in source code). */
+extern void *glutBitmap9By15;
+extern void *glutBitmap8By13;
+extern void *glutBitmapTimesRoman10;
+extern void *glutBitmapTimesRoman24;
+extern void *glutBitmapHelvetica10;
+extern void *glutBitmapHelvetica12;
+extern void *glutBitmapHelvetica18;
+
+/* Bitmap font constants (use these in GLUT program). */
+#define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15)
+#define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13)
+#define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10)
+#define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24)
+#if (GLUT_API_VERSION >= 3)
+#define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10)
+#define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12)
+#define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18)
+#endif
+#endif
+
+/* glutGet parameters. */
+#define GLUT_WINDOW_X 100
+#define GLUT_WINDOW_Y 101
+#define GLUT_WINDOW_WIDTH 102
+#define GLUT_WINDOW_HEIGHT 103
+#define GLUT_WINDOW_BUFFER_SIZE 104
+#define GLUT_WINDOW_STENCIL_SIZE 105
+#define GLUT_WINDOW_DEPTH_SIZE 106
+#define GLUT_WINDOW_RED_SIZE 107
+#define GLUT_WINDOW_GREEN_SIZE 108
+#define GLUT_WINDOW_BLUE_SIZE 109
+#define GLUT_WINDOW_ALPHA_SIZE 110
+#define GLUT_WINDOW_ACCUM_RED_SIZE 111
+#define GLUT_WINDOW_ACCUM_GREEN_SIZE 112
+#define GLUT_WINDOW_ACCUM_BLUE_SIZE 113
+#define GLUT_WINDOW_ACCUM_ALPHA_SIZE 114
+#define GLUT_WINDOW_DOUBLEBUFFER 115
+#define GLUT_WINDOW_RGBA 116
+#define GLUT_WINDOW_PARENT 117
+#define GLUT_WINDOW_NUM_CHILDREN 118
+#define GLUT_WINDOW_COLORMAP_SIZE 119
+#if (GLUT_API_VERSION >= 2)
+#define GLUT_WINDOW_NUM_SAMPLES 120
+#define GLUT_WINDOW_STEREO 121
+#endif
+#if (GLUT_API_VERSION >= 3)
+#define GLUT_WINDOW_CURSOR 122
+#endif
+#define GLUT_SCREEN_WIDTH 200
+#define GLUT_SCREEN_HEIGHT 201
+#define GLUT_SCREEN_WIDTH_MM 202
+#define GLUT_SCREEN_HEIGHT_MM 203
+#define GLUT_MENU_NUM_ITEMS 300
+#define GLUT_DISPLAY_MODE_POSSIBLE 400
+#define GLUT_INIT_WINDOW_X 500
+#define GLUT_INIT_WINDOW_Y 501
+#define GLUT_INIT_WINDOW_WIDTH 502
+#define GLUT_INIT_WINDOW_HEIGHT 503
+#define GLUT_INIT_DISPLAY_MODE 504
+#if (GLUT_API_VERSION >= 2)
+#define GLUT_ELAPSED_TIME 700
+#endif
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
+#define GLUT_WINDOW_FORMAT_ID 123
+#endif
+
+#if (GLUT_API_VERSION >= 2)
+/* glutDeviceGet parameters. */
+#define GLUT_HAS_KEYBOARD 600
+#define GLUT_HAS_MOUSE 601
+#define GLUT_HAS_SPACEBALL 602
+#define GLUT_HAS_DIAL_AND_BUTTON_BOX 603
+#define GLUT_HAS_TABLET 604
+#define GLUT_NUM_MOUSE_BUTTONS 605
+#define GLUT_NUM_SPACEBALL_BUTTONS 606
+#define GLUT_NUM_BUTTON_BOX_BUTTONS 607
+#define GLUT_NUM_DIALS 608
+#define GLUT_NUM_TABLET_BUTTONS 609
+#endif
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
+#define GLUT_DEVICE_IGNORE_KEY_REPEAT 610
+#define GLUT_DEVICE_KEY_REPEAT 611
+#define GLUT_HAS_JOYSTICK 612
+#define GLUT_OWNS_JOYSTICK 613
+#define GLUT_JOYSTICK_BUTTONS 614
+#define GLUT_JOYSTICK_AXES 615
+#define GLUT_JOYSTICK_POLL_RATE 616
+#endif
+
+#if (GLUT_API_VERSION >= 3)
+/* glutLayerGet parameters. */
+#define GLUT_OVERLAY_POSSIBLE 800
+#define GLUT_LAYER_IN_USE 801
+#define GLUT_HAS_OVERLAY 802
+#define GLUT_TRANSPARENT_INDEX 803
+#define GLUT_NORMAL_DAMAGED 804
+#define GLUT_OVERLAY_DAMAGED 805
+
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
+/* glutVideoResizeGet parameters. */
+#define GLUT_VIDEO_RESIZE_POSSIBLE 900
+#define GLUT_VIDEO_RESIZE_IN_USE 901
+#define GLUT_VIDEO_RESIZE_X_DELTA 902
+#define GLUT_VIDEO_RESIZE_Y_DELTA 903
+#define GLUT_VIDEO_RESIZE_WIDTH_DELTA 904
+#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 905
+#define GLUT_VIDEO_RESIZE_X 906
+#define GLUT_VIDEO_RESIZE_Y 907
+#define GLUT_VIDEO_RESIZE_WIDTH 908
+#define GLUT_VIDEO_RESIZE_HEIGHT 909
+#endif
+
+/* glutUseLayer parameters. */
+#define GLUT_NORMAL 0
+#define GLUT_OVERLAY 1
+
+/* glutGetModifiers return mask. */
+#define GLUT_ACTIVE_SHIFT 1
+#define GLUT_ACTIVE_CTRL 2
+#define GLUT_ACTIVE_ALT 4
+
+/* glutSetCursor parameters. */
+/* Basic arrows. */
+#define GLUT_CURSOR_RIGHT_ARROW 0
+#define GLUT_CURSOR_LEFT_ARROW 1
+/* Symbolic cursor shapes. */
+#define GLUT_CURSOR_INFO 2
+#define GLUT_CURSOR_DESTROY 3
+#define GLUT_CURSOR_HELP 4
+#define GLUT_CURSOR_CYCLE 5
+#define GLUT_CURSOR_SPRAY 6
+#define GLUT_CURSOR_WAIT 7
+#define GLUT_CURSOR_TEXT 8
+#define GLUT_CURSOR_CROSSHAIR 9
+/* Directional cursors. */
+#define GLUT_CURSOR_UP_DOWN 10
+#define GLUT_CURSOR_LEFT_RIGHT 11
+/* Sizing cursors. */
+#define GLUT_CURSOR_TOP_SIDE 12
+#define GLUT_CURSOR_BOTTOM_SIDE 13
+#define GLUT_CURSOR_LEFT_SIDE 14
+#define GLUT_CURSOR_RIGHT_SIDE 15
+#define GLUT_CURSOR_TOP_LEFT_CORNER 16
+#define GLUT_CURSOR_TOP_RIGHT_CORNER 17
+#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 18
+#define GLUT_CURSOR_BOTTOM_LEFT_CORNER 19
+/* Inherit from parent window. */
+#define GLUT_CURSOR_INHERIT 100
+/* Blank cursor. */
+#define GLUT_CURSOR_NONE 101
+/* Fullscreen crosshair (if available). */
+#define GLUT_CURSOR_FULL_CROSSHAIR 102
+#endif
+
+/* GLUT initialization sub-API. */
+extern void APIENTRY glutInit(int *argcp, char **argv);
+extern void APIENTRY glutInitDisplayMode(unsigned int mode);
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
+extern void APIENTRY glutInitDisplayString(const char *string);
+#endif
+extern void APIENTRY glutInitWindowPosition(int x, int y);
+extern void APIENTRY glutInitWindowSize(int width, int height);
+extern void APIENTRY glutMainLoop(void);
+
+/* GLUT window sub-API. */
+extern int APIENTRY glutCreateWindow(const char *title);
+extern int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
+extern void APIENTRY glutDestroyWindow(int win);
+extern void APIENTRY glutPostRedisplay(void);
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
+extern void APIENTRY glutPostWindowRedisplay(int win);
+#endif
+extern void APIENTRY glutSwapBuffers(void);
+extern int APIENTRY glutGetWindow(void);
+extern void APIENTRY glutSetWindow(int win);
+extern void APIENTRY glutSetWindowTitle(const char *title);
+extern void APIENTRY glutSetIconTitle(const char *title);
+extern void APIENTRY glutPositionWindow(int x, int y);
+extern void APIENTRY glutReshapeWindow(int width, int height);
+extern void APIENTRY glutPopWindow(void);
+extern void APIENTRY glutPushWindow(void);
+extern void APIENTRY glutIconifyWindow(void);
+extern void APIENTRY glutShowWindow(void);
+extern void APIENTRY glutHideWindow(void);
+#if (GLUT_API_VERSION >= 3)
+extern void APIENTRY glutFullScreen(void);
+extern void APIENTRY glutSetCursor(int cursor);
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
+extern void APIENTRY glutWarpPointer(int x, int y);
+#endif
+
+/* GLUT overlay sub-API. */
+extern void APIENTRY glutEstablishOverlay(void);
+extern void APIENTRY glutRemoveOverlay(void);
+extern void APIENTRY glutUseLayer(GLenum layer);
+extern void APIENTRY glutPostOverlayRedisplay(void);
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
+extern void APIENTRY glutPostWindowOverlayRedisplay(int win);
+#endif
+extern void APIENTRY glutShowOverlay(void);
+extern void APIENTRY glutHideOverlay(void);
+#endif
+
+/* GLUT menu sub-API. */
+extern int APIENTRY glutCreateMenu(void (*)(int));
+extern void APIENTRY glutDestroyMenu(int menu);
+extern int APIENTRY glutGetMenu(void);
+extern void APIENTRY glutSetMenu(int menu);
+extern void APIENTRY glutAddMenuEntry(const char *label, int value);
+extern void APIENTRY glutAddSubMenu(const char *label, int submenu);
+extern void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
+extern void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
+extern void APIENTRY glutRemoveMenuItem(int item);
+extern void APIENTRY glutAttachMenu(int button);
+extern void APIENTRY glutDetachMenu(int button);
+
+/* GLUT window callback sub-API. */
+extern void APIENTRY glutDisplayFunc(void (*func)(void));
+extern void APIENTRY glutReshapeFunc(void (*func)(int width, int height));
+extern void APIENTRY glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
+extern void APIENTRY glutMouseFunc(void (*func)(int button, int state, int x, int y));
+extern void APIENTRY glutMotionFunc(void (*func)(int x, int y));
+extern void APIENTRY glutPassiveMotionFunc(void (*func)(int x, int y));
+extern void APIENTRY glutEntryFunc(void (*func)(int state));
+extern void APIENTRY glutVisibilityFunc(void (*func)(int state));
+extern void APIENTRY glutIdleFunc(void (*func)(void));
+extern void APIENTRY glutTimerFunc(unsigned int millis, void (*func)(int value), int value);
+extern void APIENTRY glutMenuStateFunc(void (*func)(int state));
+#if (GLUT_API_VERSION >= 2)
+extern void APIENTRY glutSpecialFunc(void (*func)(int key, int x, int y));
+extern void APIENTRY glutSpaceballMotionFunc(void (*func)(int x, int y, int z));
+extern void APIENTRY glutSpaceballRotateFunc(void (*func)(int x, int y, int z));
+extern void APIENTRY glutSpaceballButtonFunc(void (*func)(int button, int state));
+extern void APIENTRY glutButtonBoxFunc(void (*func)(int button, int state));
+extern void APIENTRY glutDialsFunc(void (*func)(int dial, int value));
+extern void APIENTRY glutTabletMotionFunc(void (*func)(int x, int y));
+extern void APIENTRY glutTabletButtonFunc(void (*func)(int button, int state, int x, int y));
+#if (GLUT_API_VERSION >= 3)
+extern void APIENTRY glutMenuStatusFunc(void (*func)(int status, int x, int y));
+extern void APIENTRY glutOverlayDisplayFunc(void (*func)(void));
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
+extern void APIENTRY glutWindowStatusFunc(void (*func)(int state));
+#endif
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
+extern void APIENTRY glutKeyboardUpFunc(void (*func)(unsigned char key, int x, int y));
+extern void APIENTRY glutSpecialUpFunc(void (*func)(int key, int x, int y));
+extern void APIENTRY glutJoystickFunc(void (*func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
+#endif
+#endif
+#endif
+
+/* GLUT color index sub-API. */
+extern void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
+extern GLfloat APIENTRY glutGetColor(int ndx, int component);
+extern void APIENTRY glutCopyColormap(int win);
+
+/* GLUT state retrieval sub-API. */
+extern int APIENTRY glutGet(GLenum type);
+extern int APIENTRY glutDeviceGet(GLenum type);
+#if (GLUT_API_VERSION >= 2)
+/* GLUT extension support sub-API */
+extern int APIENTRY glutExtensionSupported(const char *name);
+#endif
+#if (GLUT_API_VERSION >= 3)
+extern int APIENTRY glutGetModifiers(void);
+extern int APIENTRY glutLayerGet(GLenum type);
+#endif
+
+/* GLUT font sub-API */
+extern void APIENTRY glutBitmapCharacter(void *font, int character);
+extern int APIENTRY glutBitmapWidth(void *font, int character);
+extern void APIENTRY glutStrokeCharacter(void *font, int character);
+extern int APIENTRY glutStrokeWidth(void *font, int character);
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
+extern int APIENTRY glutBitmapLength(void *font, const unsigned char *string);
+extern int APIENTRY glutStrokeLength(void *font, const unsigned char *string);
+#endif
+
+/* GLUT pre-built models sub-API */
+extern void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
+extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
+extern void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
+extern void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
+extern void APIENTRY glutWireCube(GLdouble size);
+extern void APIENTRY glutSolidCube(GLdouble size);
+extern void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
+extern void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
+extern void APIENTRY glutWireDodecahedron(void);
+extern void APIENTRY glutSolidDodecahedron(void);
+extern void APIENTRY glutWireTeapot(GLdouble size);
+extern void APIENTRY glutSolidTeapot(GLdouble size);
+extern void APIENTRY glutWireOctahedron(void);
+extern void APIENTRY glutSolidOctahedron(void);
+extern void APIENTRY glutWireTetrahedron(void);
+extern void APIENTRY glutSolidTetrahedron(void);
+extern void APIENTRY glutWireIcosahedron(void);
+extern void APIENTRY glutSolidIcosahedron(void);
+
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
+/* GLUT video resize sub-API. */
+extern int APIENTRY glutVideoResizeGet(GLenum param);
+extern void APIENTRY glutSetupVideoResizing(void);
+extern void APIENTRY glutStopVideoResizing(void);
+extern void APIENTRY glutVideoResize(int x, int y, int width, int height);
+extern void APIENTRY glutVideoPan(int x, int y, int width, int height);
+
+/* GLUT debugging sub-API. */
+extern void APIENTRY glutReportErrors(void);
+#endif
+
+#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
+/* GLUT device control sub-API. */
+/* glutSetKeyRepeat modes. */
+#define GLUT_KEY_REPEAT_OFF 0
+#define GLUT_KEY_REPEAT_ON 1
+#define GLUT_KEY_REPEAT_DEFAULT 2
+
+/* Joystick button masks. */
+#define GLUT_JOYSTICK_BUTTON_A 1
+#define GLUT_JOYSTICK_BUTTON_B 2
+#define GLUT_JOYSTICK_BUTTON_C 4
+#define GLUT_JOYSTICK_BUTTON_D 8
+
+extern void APIENTRY glutIgnoreKeyRepeat(int ignore);
+extern void APIENTRY glutSetKeyRepeat(int repeatMode);
+extern void APIENTRY glutForceJoystickFunc(void);
+
+/* GLUT game mode sub-API. */
+/* glutGameModeGet. */
+#define GLUT_GAME_MODE_ACTIVE 0
+#define GLUT_GAME_MODE_POSSIBLE 1
+#define GLUT_GAME_MODE_WIDTH 2
+#define GLUT_GAME_MODE_HEIGHT 3
+#define GLUT_GAME_MODE_PIXEL_DEPTH 4
+#define GLUT_GAME_MODE_REFRESH_RATE 5
+#define GLUT_GAME_MODE_DISPLAY_CHANGED 6
+
+extern void APIENTRY glutGameModeString(const char *string);
+extern int APIENTRY glutEnterGameMode(void);
+extern void APIENTRY glutLeaveGameMode(void);
+extern int APIENTRY glutGameModeGet(GLenum mode);
+#endif
+
+#ifdef __cplusplus
+}
+
+#endif
+
+#ifdef GLUT_APIENTRY_DEFINED
+# undef GLUT_APIENTRY_DEFINED
+# undef APIENTRY
+#endif
+
+#ifdef GLUT_WINGDIAPI_DEFINED
+# undef GLUT_WINGDIAPI_DEFINED
+# undef WINGDIAPI
+#endif
+
+#endif /* __glut_h__ */
diff --git a/headtrack_demo/include/glut/GL/tube.h b/headtrack_demo/include/glut/GL/tube.h
new file mode 100644
index 0000000..fad9317
--- /dev/null
+++ b/headtrack_demo/include/glut/GL/tube.h
@@ -0,0 +1,201 @@
+/*
+ * tube.h
+ *
+ * FUNCTION:
+ * Tubing and Extrusion header file.
+ * This file provides protypes and defines for the extrusion
+ * and tubing primitives.
+ *
+ * HISTORY:
+ * Linas Vepstas 1990, 1991
+ */
+
+#ifndef __TUBE_H__
+#define __TUBE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ GLE API revision history:
+
+ GLE_API_VERSION is updated to reflect GLE API changes (interface
+ changes, semantic changes, deletions, or additions).
+
+ GLE_API_VERSION=228 GLUT 3.7 release of GLE.
+**/
+#ifndef GLE_API_VERSION /* allow this to be overriden */
+#define GLE_API_VERSION 228
+#endif
+
+/* some types */
+#define gleDouble double
+typedef gleDouble gleAffine[2][3];
+
+/* ====================================================== */
+
+/* defines for tubing join styles */
+#define TUBE_JN_RAW 0x1
+#define TUBE_JN_ANGLE 0x2
+#define TUBE_JN_CUT 0x3
+#define TUBE_JN_ROUND 0x4
+#define TUBE_JN_MASK 0xf /* mask bits */
+#define TUBE_JN_CAP 0x10
+
+/* determine how normal vectors are to be handled */
+#define TUBE_NORM_FACET 0x100
+#define TUBE_NORM_EDGE 0x200
+#define TUBE_NORM_PATH_EDGE 0x400 /* for spiral, lathe, helix primitives */
+#define TUBE_NORM_MASK 0xf00 /* mask bits */
+
+/* closed or open countours */
+#define TUBE_CONTOUR_CLOSED 0x1000
+
+#define GLE_TEXTURE_ENABLE 0x10000
+#define GLE_TEXTURE_STYLE_MASK 0xff
+#define GLE_TEXTURE_VERTEX_FLAT 1
+#define GLE_TEXTURE_NORMAL_FLAT 2
+#define GLE_TEXTURE_VERTEX_CYL 3
+#define GLE_TEXTURE_NORMAL_CYL 4
+#define GLE_TEXTURE_VERTEX_SPH 5
+#define GLE_TEXTURE_NORMAL_SPH 6
+#define GLE_TEXTURE_VERTEX_MODEL_FLAT 7
+#define GLE_TEXTURE_NORMAL_MODEL_FLAT 8
+#define GLE_TEXTURE_VERTEX_MODEL_CYL 9
+#define GLE_TEXTURE_NORMAL_MODEL_CYL 10
+#define GLE_TEXTURE_VERTEX_MODEL_SPH 11
+#define GLE_TEXTURE_NORMAL_MODEL_SPH 12
+
+#ifdef GL_32
+/* HACK for GL 3.2 -- needed because no way to tell if lighting is on. */
+#define TUBE_LIGHTING_ON 0x80000000
+
+#define gleExtrusion extrusion
+#define gleSetJoinStyle setjoinstyle
+#define gleGetJoinStyle getjoinstyle
+#define glePolyCone polycone
+#define glePolyCylinder polycylinder
+#define gleSuperExtrusion super_extrusion
+#define gleTwistExtrusion twist_extrusion
+#define gleSpiral spiral
+#define gleLathe lathe
+#define gleHelicoid helicoid
+#define gleToroid toroid
+#define gleScrew screw
+
+#endif /* GL_32 */
+
+extern int gleGetJoinStyle (void);
+extern void gleSetJoinStyle (int style); /* bitwise OR of flags */
+extern int gleGetNumSlices(void);
+extern void gleSetNumSlices(int slices);
+
+/* draw polyclinder, specified as a polyline */
+extern void glePolyCylinder (int npoints, /* num points in polyline */
+ gleDouble point_array[][3], /* polyline vertces */
+ float color_array[][3], /* colors at polyline verts */
+ gleDouble radius); /* radius of polycylinder */
+
+/* draw polycone, specified as a polyline with radii */
+extern void glePolyCone (int npoints, /* numpoints in poly-line */
+ gleDouble point_array[][3], /* polyline vertices */
+ float color_array[][3], /* colors at polyline verts */
+ gleDouble radius_array[]); /* cone radii at polyline verts */
+
+/* extrude arbitrary 2D contour along arbitrary 3D path */
+extern void gleExtrusion (int ncp, /* number of contour points */
+ gleDouble contour[][2], /* 2D contour */
+ gleDouble cont_normal[][2], /* 2D contour normals */
+ gleDouble up[3], /* up vector for contour */
+ int npoints, /* numpoints in poly-line */
+ gleDouble point_array[][3], /* polyline vertices */
+ float color_array[][3]); /* colors at polyline verts */
+
+/* extrude 2D contour, specifying local rotations (twists) */
+extern void gleTwistExtrusion (int ncp, /* number of contour points */
+ gleDouble contour[][2], /* 2D contour */
+ gleDouble cont_normal[][2], /* 2D contour normals */
+ gleDouble up[3], /* up vector for contour */
+ int npoints, /* numpoints in poly-line */
+ gleDouble point_array[][3], /* polyline vertices */
+ float color_array[][3], /* color at polyline verts */
+ gleDouble twist_array[]); /* countour twists (in degrees) */
+
+/* extrude 2D contour, specifying local affine tranformations */
+extern void gleSuperExtrusion (int ncp, /* number of contour points */
+ gleDouble contour[][2], /* 2D contour */
+ gleDouble cont_normal[][2], /* 2D contour normals */
+ gleDouble up[3], /* up vector for contour */
+ int npoints, /* numpoints in poly-line */
+ gleDouble point_array[][3], /* polyline vertices */
+ float color_array[][3], /* color at polyline verts */
+ gleDouble xform_array[][2][3]); /* 2D contour xforms */
+
+/* spiral moves contour along helical path by parallel transport */
+extern void gleSpiral (int ncp, /* number of contour points */
+ gleDouble contour[][2], /* 2D contour */
+ gleDouble cont_normal[][2], /* 2D contour normals */
+ gleDouble up[3], /* up vector for contour */
+ gleDouble startRadius, /* spiral starts in x-y plane */
+ gleDouble drdTheta, /* change in radius per revolution */
+ gleDouble startZ, /* starting z value */
+ gleDouble dzdTheta, /* change in Z per revolution */
+ gleDouble startXform[2][3], /* starting contour affine xform */
+ gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
+ gleDouble startTheta, /* start angle in x-y plane */
+ gleDouble sweepTheta); /* degrees to spiral around */
+
+/* lathe moves contour along helical path by helically shearing 3D space */
+extern void gleLathe (int ncp, /* number of contour points */
+ gleDouble contour[][2], /* 2D contour */
+ gleDouble cont_normal[][2], /* 2D contour normals */
+ gleDouble up[3], /* up vector for contour */
+ gleDouble startRadius, /* spiral starts in x-y plane */
+ gleDouble drdTheta, /* change in radius per revolution */
+ gleDouble startZ, /* starting z value */
+ gleDouble dzdTheta, /* change in Z per revolution */
+ gleDouble startXform[2][3], /* starting contour affine xform */
+ gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
+ gleDouble startTheta, /* start angle in x-y plane */
+ gleDouble sweepTheta); /* degrees to spiral around */
+
+/* similar to spiral, except contour is a circle */
+extern void gleHelicoid (gleDouble rToroid, /* circle contour (torus) radius */
+ gleDouble startRadius, /* spiral starts in x-y plane */
+ gleDouble drdTheta, /* change in radius per revolution */
+ gleDouble startZ, /* starting z value */
+ gleDouble dzdTheta, /* change in Z per revolution */
+ gleDouble startXform[2][3], /* starting contour affine xform */
+ gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
+ gleDouble startTheta, /* start angle in x-y plane */
+ gleDouble sweepTheta); /* degrees to spiral around */
+
+/* similar to lathe, except contour is a circle */
+extern void gleToroid (gleDouble rToroid, /* circle contour (torus) radius */
+ gleDouble startRadius, /* spiral starts in x-y plane */
+ gleDouble drdTheta, /* change in radius per revolution */
+ gleDouble startZ, /* starting z value */
+ gleDouble dzdTheta, /* change in Z per revolution */
+ gleDouble startXform[2][3], /* starting contour affine xform */
+ gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
+ gleDouble startTheta, /* start angle in x-y plane */
+ gleDouble sweepTheta); /* degrees to spiral around */
+
+/* draws a screw shape */
+extern void gleScrew (int ncp, /* number of contour points */
+ gleDouble contour[][2], /* 2D contour */
+ gleDouble cont_normal[][2], /* 2D contour normals */
+ gleDouble up[3], /* up vector for contour */
+ gleDouble startz, /* start of segment */
+ gleDouble endz, /* end of segment */
+ gleDouble twist); /* number of rotations */
+
+extern void gleTextureMode (int mode);
+
+#ifdef __cplusplus
+}
+
+#endif
+#endif /* __TUBE_H__ */
+/* ================== END OF FILE ======================= */
diff --git a/headtrack_demo/include/wiiuse/wiiuse.h b/headtrack_demo/include/wiiuse/wiiuse.h
new file mode 100644
index 0000000..6071635
--- /dev/null
+++ b/headtrack_demo/include/wiiuse/wiiuse.h
@@ -0,0 +1,632 @@
+/*
+ * wiiuse
+ *
+ * Written By:
+ * Michael Laforest < para >
+ * Email: < thepara (--AT--) g m a i l [--DOT--] com >
+ *
+ * Copyright 2006-2007
+ *
+ * This file is part of wiiuse.
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * $Header$
+ *
+ */
+
+/**
+ * @file
+ *
+ * @brief API header file.
+ *
+ * If this file is included from inside the wiiuse source
+ * and not from a third party program, then wiimote_internal.h
+ * is also included which extends this file.
+ */
+
+#ifndef WIIUSE_H_INCLUDED
+#define WIIUSE_H_INCLUDED
+
+#ifdef _WIN32
+ /* windows */
+ #include <windows.h>
+#else
+ /* nix */
+ #include <bluetooth/bluetooth.h>
+#endif
+
+#ifdef WIIUSE_INTERNAL_H_INCLUDED
+ #define WCONST
+#else
+ #define WCONST const
+#endif
+
+/* led bit masks */
+#define WIIMOTE_LED_NONE 0x00
+#define WIIMOTE_LED_1 0x10
+#define WIIMOTE_LED_2 0x20
+#define WIIMOTE_LED_3 0x40
+#define WIIMOTE_LED_4 0x80
+
+/* button codes */
+#define WIIMOTE_BUTTON_TWO 0x0001
+#define WIIMOTE_BUTTON_ONE 0x0002
+#define WIIMOTE_BUTTON_B 0x0004
+#define WIIMOTE_BUTTON_A 0x0008
+#define WIIMOTE_BUTTON_MINUS 0x0010
+#define WIIMOTE_BUTTON_ZACCEL_BIT6 0x0020
+#define WIIMOTE_BUTTON_ZACCEL_BIT7 0x0040
+#define WIIMOTE_BUTTON_HOME 0x0080
+#define WIIMOTE_BUTTON_LEFT 0x0100
+#define WIIMOTE_BUTTON_RIGHT 0x0200
+#define WIIMOTE_BUTTON_DOWN 0x0400
+#define WIIMOTE_BUTTON_UP 0x0800
+#define WIIMOTE_BUTTON_PLUS 0x1000
+#define WIIMOTE_BUTTON_ZACCEL_BIT4 0x2000
+#define WIIMOTE_BUTTON_ZACCEL_BIT5 0x4000
+#define WIIMOTE_BUTTON_UNKNOWN 0x8000
+#define WIIMOTE_BUTTON_ALL 0x1F9F
+
+/* nunchul button codes */
+#define NUNCHUK_BUTTON_Z 0x01
+#define NUNCHUK_BUTTON_C 0x02
+#define NUNCHUK_BUTTON_ALL 0x03
+
+/* classic controller button codes */
+#define CLASSIC_CTRL_BUTTON_UP 0x0001
+#define CLASSIC_CTRL_BUTTON_LEFT 0x0002
+#define CLASSIC_CTRL_BUTTON_ZR 0x0004
+#define CLASSIC_CTRL_BUTTON_X 0x0008
+#define CLASSIC_CTRL_BUTTON_A 0x0010
+#define CLASSIC_CTRL_BUTTON_Y 0x0020
+#define CLASSIC_CTRL_BUTTON_B 0x0040
+#define CLASSIC_CTRL_BUTTON_ZL 0x0080
+#define CLASSIC_CTRL_BUTTON_FULL_R 0x0200
+#define CLASSIC_CTRL_BUTTON_PLUS 0x0400
+#define CLASSIC_CTRL_BUTTON_HOME 0x0800
+#define CLASSIC_CTRL_BUTTON_MINUS 0x1000
+#define CLASSIC_CTRL_BUTTON_FULL_L 0x2000
+#define CLASSIC_CTRL_BUTTON_DOWN 0x4000
+#define CLASSIC_CTRL_BUTTON_RIGHT 0x8000
+#define CLASSIC_CTRL_BUTTON_ALL 0xFEFF
+
+/* guitar hero 3 button codes */
+#define GUITAR_HERO_3_BUTTON_STRUM_UP 0x0001
+#define GUITAR_HERO_3_BUTTON_YELLOW 0x0008
+#define GUITAR_HERO_3_BUTTON_GREEN 0x0010
+#define GUITAR_HERO_3_BUTTON_BLUE 0x0020
+#define GUITAR_HERO_3_BUTTON_RED 0x0040
+#define GUITAR_HERO_3_BUTTON_ORANGE 0x0080
+#define GUITAR_HERO_3_BUTTON_PLUS 0x0400
+#define GUITAR_HERO_3_BUTTON_MINUS 0x1000
+#define GUITAR_HERO_3_BUTTON_STRUM_DOWN 0x4000
+#define GUITAR_HERO_3_BUTTON_ALL 0xFEFF
+
+
+/* wiimote option flags */
+#define WIIUSE_SMOOTHING 0x01
+#define WIIUSE_CONTINUOUS 0x02
+#define WIIUSE_ORIENT_THRESH 0x04
+#define WIIUSE_INIT_FLAGS (WIIUSE_SMOOTHING | WIIUSE_ORIENT_THRESH)
+
+#define WIIUSE_ORIENT_PRECISION 100.0f
+
+/* expansion codes */
+#define EXP_NONE 0
+#define EXP_NUNCHUK 1
+#define EXP_CLASSIC 2
+#define EXP_GUITAR_HERO_3 3
+
+/* IR correction types */
+typedef enum ir_position_t {
+ WIIUSE_IR_ABOVE,
+ WIIUSE_IR_BELOW
+} ir_position_t;
+
+/**
+ * @brief Check if a button is pressed.
+ * @param dev Pointer to a wiimote_t or expansion structure.
+ * @param button The button you are interested in.
+ * @return 1 if the button is pressed, 0 if not.
+ */
+#define IS_PRESSED(dev, button) ((dev->btns & button) == button)
+
+/**
+ * @brief Check if a button is being held.
+ * @param dev Pointer to a wiimote_t or expansion structure.
+ * @param button The button you are interested in.
+ * @return 1 if the button is held, 0 if not.
+ */
+#define IS_HELD(dev, button) ((dev->btns_held & button) == button)
+
+/**
+ * @brief Check if a button is released on this event. \n\n
+ * This does not mean the button is not pressed, it means \n
+ * this button was just now released.
+ * @param dev Pointer to a wiimote_t or expansion structure.
+ * @param button The button you are interested in.
+ * @return 1 if the button is released, 0 if not.
+ *
+ */
+#define IS_RELEASED(dev, button) ((dev->btns_released & button) == button)
+
+/**
+ * @brief Check if a button has just been pressed this event.
+ * @param dev Pointer to a wiimote_t or expansion structure.
+ * @param button The button you are interested in.
+ * @return 1 if the button is pressed, 0 if not.
+ */
+#define IS_JUST_PRESSED(dev, button) (IS_PRESSED(dev, button) && !IS_HELD(dev, button))
+
+#define WIIUSE_USING_ACC(wm) ((wm->state & 0x020) == 0x020)
+#define WIIUSE_USING_EXP(wm) ((wm->state & 0x040) == 0x040)
+#define WIIUSE_USING_IR(wm) ((wm->state & 0x080) == 0x080)
+#define WIIUSE_USING_SPEAKER(wm) ((wm->state & 0x100) == 0x100)
+
+#define WIIUSE_IS_LED_SET(wm, num) ((wm->leds & WIIMOTE_LED_##num) == WIIMOTE_LED_##num)
+
+/*
+ * Largest known payload is 21 bytes.
+ * Add 2 for the prefix and round up to a power of 2.
+ */
+#define MAX_PAYLOAD 32
+
+/*
+ * This is left over from an old hack, but it may actually
+ * be a useful feature to keep so it wasn't removed.
+ */
+#ifdef WIN32
+ #define WIIMOTE_DEFAULT_TIMEOUT 10
+ #define WIIMOTE_EXP_TIMEOUT 10
+#endif
+
+typedef unsigned char byte;
+typedef char sbyte;
+
+struct wiimote_t;
+struct vec3b_t;
+struct orient_t;
+struct gforce_t;
+
+
+/**
+ * @brief Callback that handles a read event.
+ *
+ * @param wm Pointer to a wiimote_t structure.
+ * @param data Pointer to the filled data block.
+ * @param len Length in bytes of the data block.
+ *
+ * @see wiiuse_init()
+ *
+ * A registered function of this type is called automatically by the wiiuse
+ * library when the wiimote has returned the full data requested by a previous
+ * call to wiiuse_read_data().
+ */
+typedef void (*wiiuse_read_cb)(struct wiimote_t* wm, byte* data, unsigned short len);
+
+
+/**
+ * @struct read_req_t
+ * @brief Data read request structure.
+ */
+struct read_req_t {
+ wiiuse_read_cb cb; /**< read data callback */
+ byte* buf; /**< buffer where read data is written */
+ unsigned int addr; /**< the offset that the read started at */
+ unsigned short size; /**< the length of the data read */
+ unsigned short wait; /**< num bytes still needed to finish read */
+
+ struct read_req_t* next; /**< next read request in the queue */
+};
+
+
+/**
+ * @struct vec2b_t
+ * @brief Unsigned x,y byte vector.
+ */
+typedef struct vec2b_t {
+ byte x, y;
+} vec2b_t;
+
+
+/**
+ * @struct vec3b_t
+ * @brief Unsigned x,y,z byte vector.
+ */
+typedef struct vec3b_t {
+ byte x, y, z;
+} vec3b_t;
+
+
+/**
+ * @struct vec3f_t
+ * @brief Signed x,y,z float struct.
+ */
+typedef struct vec3f_t {
+ float x, y, z;
+} vec3f_t;
+
+
+/**
+ * @struct orient_t
+ * @brief Orientation struct.
+ *
+ * Yaw, pitch, and roll range from -180 to 180 degrees.
+ */
+typedef struct orient_t {
+ float roll; /**< roll, this may be smoothed if enabled */
+ float pitch; /**< pitch, this may be smoothed if enabled */
+ float yaw;
+
+ float a_roll; /**< absolute roll, unsmoothed */
+ float a_pitch; /**< absolute pitch, unsmoothed */
+} orient_t;
+
+
+/**
+ * @struct gforce_t
+ * @brief Gravity force struct.
+ */
+typedef struct gforce_t {
+ float x, y, z;
+} gforce_t;
+
+
+/**
+ * @struct accel_t
+ * @brief Accelerometer struct. For any device with an accelerometer.
+ */
+typedef struct accel_t {
+ struct vec3b_t cal_zero; /**< zero calibration */
+ struct vec3b_t cal_g; /**< 1g difference around 0cal */
+
+ float st_roll; /**< last smoothed roll value */
+ float st_pitch; /**< last smoothed roll pitch */
+ float st_alpha; /**< alpha value for smoothing [0-1] */
+} accel_t;
+
+
+/**
+ * @struct ir_dot_t
+ * @brief A single IR source.
+ */
+typedef struct ir_dot_t {
+ byte visible; /**< if the IR source is visible */
+
+ unsigned int x; /**< interpolated X coordinate */
+ unsigned int y; /**< interpolated Y coordinate */
+
+ short rx; /**< raw X coordinate (0-1023) */
+ short ry; /**< raw Y coordinate (0-767) */
+
+ byte order; /**< increasing order by x-axis value */
+
+ byte size; /**< size of the IR dot (0-15) */
+} ir_dot_t;
+
+
+/**
+ * @enum aspect_t
+ * @brief Screen aspect ratio.
+ */
+typedef enum aspect_t {
+ WIIUSE_ASPECT_4_3,
+ WIIUSE_ASPECT_16_9
+} aspect_t;
+
+
+/**
+ * @struct ir_t
+ * @brief IR struct. Hold all data related to the IR tracking.
+ */
+typedef struct ir_t {
+ struct ir_dot_t dot[4]; /**< IR dots */
+ byte num_dots; /**< number of dots at this time */
+
+ enum aspect_t aspect; /**< aspect ratio of the screen */
+
+ enum ir_position_t pos; /**< IR sensor bar position */
+
+ unsigned int vres[2]; /**< IR virtual screen resolution */
+ int offset[2]; /**< IR XY correction offset */
+ int state; /**< keeps track of the IR state */
+
+ int ax; /**< absolute X coordinate */
+ int ay; /**< absolute Y coordinate */
+
+ int x; /**< calculated X coordinate */
+ int y; /**< calculated Y coordinate */
+
+ float distance; /**< pixel distance between first 2 dots*/
+ float z; /**< calculated distance */
+} ir_t;
+
+
+/**
+ * @struct joystick_t
+ * @brief Joystick calibration structure.
+ *
+ * The angle \a ang is relative to the positive y-axis into quadrant I
+ * and ranges from 0 to 360 degrees. So if the joystick is held straight
+ * upwards then angle is 0 degrees. If it is held to the right it is 90,
+ * down is 180, and left is 270.
+ *
+ * The magnitude \a mag is the distance from the center to where the
+ * joystick is being held. The magnitude ranges from 0 to 1.
+ * If the joystick is only slightly tilted from the center the magnitude
+ * will be low, but if it is closer to the outter edge the value will
+ * be higher.
+ */
+typedef struct joystick_t {
+ struct vec2b_t max; /**< maximum joystick values */
+ struct vec2b_t min; /**< minimum joystick values */
+ struct vec2b_t center; /**< center joystick values */
+
+ float ang; /**< angle the joystick is being held */
+ float mag; /**< magnitude of the joystick (range 0-1) */
+} joystick_t;
+
+
+/**
+ * @struct nunchuk_t
+ * @brief Nunchuk expansion device.
+ */
+typedef struct nunchuk_t {
+ struct accel_t accel_calib; /**< nunchuk accelerometer calibration */
+ struct joystick_t js; /**< joystick calibration */
+
+ int* flags; /**< options flag (points to wiimote_t.flags) */
+
+ byte btns; /**< what buttons have just been pressed */
+ byte btns_held; /**< what buttons are being held down */
+ byte btns_released; /**< what buttons were just released this */
+
+ float orient_threshold; /**< threshold for orient to generate an event */
+ int accel_threshold; /**< threshold for accel to generate an event */
+
+ struct vec3b_t accel; /**< current raw acceleration data */
+ struct orient_t orient; /**< current orientation on each axis */
+ struct gforce_t gforce; /**< current gravity forces on each axis */
+} nunchuk_t;
+
+
+/**
+ * @struct classic_ctrl_t
+ * @brief Classic controller expansion device.
+ */
+typedef struct classic_ctrl_t {
+ short btns; /**< what buttons have just been pressed */
+ short btns_held; /**< what buttons are being held down */
+ short btns_released; /**< what buttons were just released this */
+
+ float r_shoulder; /**< right shoulder button (range 0-1) */
+ float l_shoulder; /**< left shoulder button (range 0-1) */
+
+ struct joystick_t ljs; /**< left joystick calibration */
+ struct joystick_t rjs; /**< right joystick calibration */
+} classic_ctrl_t;
+
+
+/**
+ * @struct guitar_hero_3_t
+ * @brief Guitar Hero 3 expansion device.
+ */
+typedef struct guitar_hero_3_t {
+ short btns; /**< what buttons have just been pressed */
+ short btns_held; /**< what buttons are being held down */
+ short btns_released; /**< what buttons were just released this */
+
+ float whammy_bar; /**< whammy bar (range 0-1) */
+
+ struct joystick_t js; /**< joystick calibration */
+} guitar_hero_3_t;
+
+
+/**
+ * @struct expansion_t
+ * @brief Generic expansion device plugged into wiimote.
+ */
+typedef struct expansion_t {
+ int type; /**< type of expansion attached */
+
+ union {
+ struct nunchuk_t nunchuk;
+ struct classic_ctrl_t classic;
+ struct guitar_hero_3_t gh3;
+ };
+} expansion_t;
+
+
+/**
+ * @enum win32_bt_stack_t
+ * @brief Available bluetooth stacks for Windows.
+ */
+typedef enum win_bt_stack_t {
+ WIIUSE_STACK_UNKNOWN,
+ WIIUSE_STACK_MS,
+ WIIUSE_STACK_BLUESOLEIL
+} win_bt_stack_t;
+
+
+/**
+ * @struct wiimote_state_t
+ * @brief Significant data from the previous event.
+ */
+typedef struct wiimote_state_t {
+ /* expansion_t */
+ float exp_ljs_ang;
+ float exp_rjs_ang;
+ float exp_ljs_mag;
+ float exp_rjs_mag;
+ unsigned short exp_btns;
+ struct orient_t exp_orient;
+ struct vec3b_t exp_accel;
+ float exp_r_shoulder;
+ float exp_l_shoulder;
+
+ /* ir_t */
+ int ir_ax;
+ int ir_ay;
+ float ir_distance;
+
+ struct orient_t orient;
+ unsigned short btns;
+
+ struct vec3b_t accel;
+} wiimote_state_t;
+
+
+/**
+ * @enum WIIUSE_EVENT_TYPE
+ * @brief Events that wiiuse can generate from a poll.
+ */
+typedef enum WIIUSE_EVENT_TYPE {
+ WIIUSE_NONE = 0,
+ WIIUSE_EVENT,
+ WIIUSE_STATUS,
+ WIIUSE_DISCONNECT,
+ WIIUSE_NUNCHUK_INSERTED,
+ WIIUSE_NUNCHUK_REMOVED,
+ WIIUSE_CLASSIC_CTRL_INSERTED,
+ WIIUSE_CLASSIC_CTRL_REMOVED,
+ WIIUSE_GUITAR_HERO_3_CTRL_INSERTED,
+ WIIUSE_GUITAR_HERO_3_CTRL_REMOVED
+} WIIUSE_EVENT_TYPE;
+
+/**
+ * @struct wiimote_t
+ * @brief Wiimote structure.
+ */
+typedef struct wiimote_t {
+ WCONST int unid; /**< user specified id */
+
+ #ifndef WIN32
+ WCONST bdaddr_t bdaddr; /**< bt address */
+ WCONST char bdaddr_str[18]; /**< readable bt address */
+ WCONST int out_sock; /**< output socket */
+ WCONST int in_sock; /**< input socket */
+ #else
+ WCONST HANDLE dev_handle; /**< HID handle */
+ WCONST OVERLAPPED hid_overlap; /**< overlap handle */
+ WCONST enum win_bt_stack_t stack; /**< type of bluetooth stack to use */
+ WCONST int timeout; /**< read timeout */
+ WCONST byte normal_timeout; /**< normal timeout */
+ WCONST byte exp_timeout; /**< timeout for expansion handshake */
+ #endif
+
+ WCONST int state; /**< various state flags */
+ WCONST byte leds; /**< currently lit leds */
+ WCONST float battery_level; /**< battery level */
+
+ WCONST int flags; /**< options flag */
+
+ WCONST byte handshake_state; /**< the state of the connection handshake */
+
+ WCONST struct read_req_t* read_req; /**< list of data read requests */
+ WCONST struct accel_t accel_calib; /**< wiimote accelerometer calibration */
+ WCONST struct expansion_t exp; /**< wiimote expansion device */
+
+ WCONST struct vec3b_t accel; /**< current raw acceleration data */
+ WCONST struct orient_t orient; /**< current orientation on each axis */
+ WCONST struct gforce_t gforce; /**< current gravity forces on each axis */
+
+ WCONST struct ir_t ir; /**< IR data */
+
+ WCONST unsigned short btns; /**< what buttons have just been pressed */
+ WCONST unsigned short btns_held; /**< what buttons are being held down */
+ WCONST unsigned short btns_released; /**< what buttons were just released this */
+
+ WCONST float orient_threshold; /**< threshold for orient to generate an event */
+ WCONST int accel_threshold; /**< threshold for accel to generate an event */
+
+ WCONST struct wiimote_state_t lstate; /**< last saved state */
+
+ WCONST WIIUSE_EVENT_TYPE event; /**< type of event that occured */
+ WCONST byte event_buf[MAX_PAYLOAD]; /**< event buffer */
+} wiimote;
+
+
+/*****************************************
+ *
+ * Include API specific stuff
+ *
+ *****************************************/
+
+#ifdef _WIN32
+ #define WIIUSE_EXPORT_DECL __declspec(dllexport)
+ #define WIIUSE_IMPORT_DECL __declspec(dllimport)
+#else
+ #define WIIUSE_EXPORT_DECL
+ #define WIIUSE_IMPORT_DECL
+#endif
+
+#ifdef WIIUSE_COMPILE_LIB
+ #define WIIUSE_EXPORT WIIUSE_EXPORT_DECL
+#else
+ #define WIIUSE_EXPORT WIIUSE_IMPORT_DECL
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* wiiuse.c */
+WIIUSE_EXPORT extern const char* wiiuse_version();
+
+WIIUSE_EXPORT extern struct wiimote_t** wiiuse_init(int wiimotes);
+WIIUSE_EXPORT extern void wiiuse_disconnected(struct wiimote_t* wm);
+WIIUSE_EXPORT extern void wiiuse_cleanup(struct wiimote_t** wm, int wiimotes);
+WIIUSE_EXPORT extern void wiiuse_rumble(struct wiimote_t* wm, int status);
+WIIUSE_EXPORT extern void wiiuse_toggle_rumble(struct wiimote_t* wm);
+WIIUSE_EXPORT extern void wiiuse_set_leds(struct wiimote_t* wm, int leds);
+WIIUSE_EXPORT extern void wiiuse_motion_sensing(struct wiimote_t* wm, int status);
+WIIUSE_EXPORT extern int wiiuse_read_data(struct wiimote_t* wm, wiiuse_read_cb read_cb, byte* buffer, unsigned int offset, unsigned short len);
+WIIUSE_EXPORT extern int wiiuse_write_data(struct wiimote_t* wm, unsigned int addr, byte* data, byte len);
+WIIUSE_EXPORT extern void wiiuse_status(struct wiimote_t* wm);
+WIIUSE_EXPORT extern struct wiimote_t* wiiuse_get_by_id(struct wiimote_t** wm, int wiimotes, int unid);
+WIIUSE_EXPORT extern int wiiuse_set_flags(struct wiimote_t* wm, int enable, int disable);
+WIIUSE_EXPORT extern float wiiuse_set_smooth_alpha(struct wiimote_t* wm, float alpha);
+WIIUSE_EXPORT extern void wiiuse_set_bluetooth_stack(struct wiimote_t** wm, int wiimotes, enum win_bt_stack_t type);
+WIIUSE_EXPORT extern void wiiuse_set_orient_threshold(struct wiimote_t* wm, float threshold);
+WIIUSE_EXPORT extern void wiiuse_resync(struct wiimote_t* wm);
+WIIUSE_EXPORT extern void wiiuse_set_timeout(struct wiimote_t** wm, int wiimotes, byte normal_timeout, byte exp_timeout);
+WIIUSE_EXPORT extern void wiiuse_set_accel_threshold(struct wiimote_t* wm, int threshold);
+
+/* connect.c */
+WIIUSE_EXPORT extern int wiiuse_find(struct wiimote_t** wm, int max_wiimotes, int timeout);
+WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_t** wm, int wiimotes);
+WIIUSE_EXPORT extern void wiiuse_disconnect(struct wiimote_t* wm);
+
+/* events.c */
+WIIUSE_EXPORT extern int wiiuse_poll(struct wiimote_t** wm, int wiimotes);
+
+/* ir.c */
+WIIUSE_EXPORT extern void wiiuse_set_ir(struct wiimote_t* wm, int status);
+WIIUSE_EXPORT extern void wiiuse_set_ir_vres(struct wiimote_t* wm, unsigned int x, unsigned int y);
+WIIUSE_EXPORT extern void wiiuse_set_ir_position(struct wiimote_t* wm, enum ir_position_t pos);
+WIIUSE_EXPORT extern void wiiuse_set_aspect_ratio(struct wiimote_t* wm, enum aspect_t aspect);
+
+/* nunchuk.c */
+WIIUSE_EXPORT extern void wiiuse_set_nunchuk_orient_threshold(struct nunchuk_t* nc, float threshold);
+WIIUSE_EXPORT extern void wiiuse_set_nunchuk_accel_threshold(struct nunchuk_t* nc, int threshold);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* WIIUSE_H_INCLUDED */
+
diff --git a/headtrack_demo/lib/win32/glut/glut32.dll b/headtrack_demo/lib/win32/glut/glut32.dll
new file mode 100644
index 0000000..3d25e08
--- /dev/null
+++ b/headtrack_demo/lib/win32/glut/glut32.dll
Binary files differ
diff --git a/headtrack_demo/lib/win32/glut/glut32.dll.manifest b/headtrack_demo/lib/win32/glut/glut32.dll.manifest
new file mode 100644
index 0000000..1b520e1
--- /dev/null
+++ b/headtrack_demo/lib/win32/glut/glut32.dll.manifest
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
+ </dependentAssembly>
+ </dependency>
+</assembly>
diff --git a/headtrack_demo/lib/win32/glut/glut32.exp b/headtrack_demo/lib/win32/glut/glut32.exp
new file mode 100644
index 0000000..901c0a9
--- /dev/null
+++ b/headtrack_demo/lib/win32/glut/glut32.exp
Binary files differ
diff --git a/headtrack_demo/lib/win32/glut/glut32.lib b/headtrack_demo/lib/win32/glut/glut32.lib
new file mode 100644
index 0000000..82f7bc1
--- /dev/null
+++ b/headtrack_demo/lib/win32/glut/glut32.lib
Binary files differ
diff --git a/headtrack_demo/lib/win32/wiiuse/wiiuse.dll b/headtrack_demo/lib/win32/wiiuse/wiiuse.dll
new file mode 100644
index 0000000..6855619
--- /dev/null
+++ b/headtrack_demo/lib/win32/wiiuse/wiiuse.dll
Binary files differ
diff --git a/headtrack_demo/lib/win32/wiiuse/wiiuse.lib b/headtrack_demo/lib/win32/wiiuse/wiiuse.lib
new file mode 100644
index 0000000..c997396
--- /dev/null
+++ b/headtrack_demo/lib/win32/wiiuse/wiiuse.lib
Binary files differ
diff --git a/headtrack_demo/lib/win32/wiiuse/wiiuse_debug.dll b/headtrack_demo/lib/win32/wiiuse/wiiuse_debug.dll
new file mode 100644
index 0000000..27036f2
--- /dev/null
+++ b/headtrack_demo/lib/win32/wiiuse/wiiuse_debug.dll
Binary files differ
diff --git a/headtrack_demo/src/main.cpp b/headtrack_demo/src/main.cpp
new file mode 100644
index 0000000..7cf3558
--- /dev/null
+++ b/headtrack_demo/src/main.cpp
@@ -0,0 +1,411 @@
+#include <GL/glut.h>
+#include <wiiuse.h>
+#include <stdio.h>
+#include <string.h>
+
+#define _USE_MATH_DEFINES
+#include <math.h>
+
+struct HeadTrackWiimotes
+{
+ wiimote** m_ppWiimotes;
+ int m_iConnected;
+} g_Wiimotes;
+
+struct HeadTrackParameters
+{
+ double m_dHeadTrackLedDist; //distance between leds on head in millimeters
+ double m_dRadPerCameraPixel; //radians per camera pixel
+ double m_dCameraXCenter; //the coordinates of the center of the camera
+ double m_dCameraYCenter; //
+ double m_dYAngleCorrection; //the correction added to the verticle angle measured by the camera (in radians)
+ double m_dCameraYOffset; //the offset in Y direction of the camera relative to the center of the screen (in mm)
+ double m_dScreenHeightMM; //the height of the screen (in mm)
+ double m_dScreenAspect; //the aspect ratio of the screen (width/height)
+ double m_dScreenHeightWorld; //the height of the screen (in world coordinates)
+} g_HeadTrackParms;
+
+enum EyeOrigin {
+ STEREO_LEFT_EYE,
+ STEREO_RIGHT_EYE,
+ MONO_CENTER
+};
+
+inline void FindIRDots(const ir_t *f_pIR, const ir_dot_t *f_pDot[2])
+{
+ //get the first two visible IR dots
+ for(int i = 0, n = 0; i < 4 && n < 2; i++)
+ {
+ if (f_pIR->dot[i].visible)
+ {
+ f_pDot[n] = &f_pIR->dot[i];
+ n++;
+ }
+ }
+}
+
+inline double CalcHeadDistInMM(const ir_dot_t *f_pDot[2], HeadTrackParameters *f_pHTParms)
+{
+ double l_dX = f_pDot[0]->rx - f_pDot[1]->rx, //difference in x coordinates
+ l_dY = f_pDot[0]->ry - f_pDot[1]->ry, //difference in y coordinates
+ l_dDotDist = sqrt(l_dX*l_dX + l_dY*l_dY), //distance between ir dots (in camera pixels)
+ l_dDotAngle = f_pHTParms->m_dRadPerCameraPixel * l_dDotDist; //the angle between the lines from the camera through the two ir dots (in radians)
+
+ return (0.5 * f_pHTParms->m_dHeadTrackLedDist) / tan(0.5 * l_dDotAngle); //the distance between the head and camera (in mm)
+}
+
+void SetHeadTrackedFrustum(EyeOrigin f_Eye)
+{
+ //check if there are any wiimotes connected
+ if (g_Wiimotes.m_iConnected > 0)
+ {
+ //check if we see at least 2 IR dots
+ if (g_Wiimotes.m_ppWiimotes[0]->ir.num_dots >= 2)
+ {
+ const ir_dot_t *l_pDot[2]; //shorthand to the ir dots
+ FindIRDots(&g_Wiimotes.m_ppWiimotes[0]->ir, l_pDot);
+
+ //calculate the distance of the head (in mm)
+ double l_dHeadDistInMM = CalcHeadDistInMM(l_pDot, &g_HeadTrackParms); //the distance between the head and camera (in mm)
+
+ double l_dEyeXCam,
+ l_dEyeYCam;
+ //determine the eye position in camera coordinates
+ switch(f_Eye)
+ {
+ case STEREO_LEFT_EYE:
+ case STEREO_RIGHT_EYE:
+ //determine the lower left point
+ int i ;
+ if (l_pDot[0]->rx < l_pDot[1]->rx || (l_pDot[0]->rx == l_pDot[1]->rx && l_pDot[0]->ry < l_pDot[1]->ry))
+ //0 is the left eye 1 is the right eye
+ i = (f_Eye==STEREO_LEFT_EYE? 0: 1);
+ else
+ //1 is the left eye 0 is the right eye
+ i = (f_Eye==STEREO_LEFT_EYE? 1: 0);
+ l_dEyeXCam = (double)l_pDot[i]->rx;
+ l_dEyeYCam = (double)l_pDot[i]->ry;
+ break;
+
+ case MONO_CENTER:
+ default:
+ l_dEyeXCam = (double)(l_pDot[0]->rx + l_pDot[1]->rx) / 2.0;
+ l_dEyeYCam = (double)(l_pDot[0]->ry + l_pDot[1]->ry) / 2.0;
+ break;
+ }
+
+ //calculate the x and y angles of the eye relative to the camera
+ double l_dEyeXAngle = g_HeadTrackParms.m_dRadPerCameraPixel * (l_dEyeXCam - g_HeadTrackParms.m_dCameraXCenter),
+ l_dEyeYAngle = g_HeadTrackParms.m_dRadPerCameraPixel * (l_dEyeYCam - g_HeadTrackParms.m_dCameraYCenter);
+
+ //correct the y angle
+ l_dEyeYAngle += g_HeadTrackParms.m_dYAngleCorrection;
+
+ //calculate the the x,y,z coordinates of the eye relative to the screen (in mm), note that we assume that the camera
+ //is placed above or underneath the center of the screen, so for the x axis we dont correct the position, but for the
+ //y axis we have to take the y-offset of the camera relative to the center of the screen into account.
+ double l_dEyeX = sin(l_dEyeXAngle) * l_dHeadDistInMM,
+ l_dEyeY = sin(l_dEyeYAngle) * l_dHeadDistInMM - g_HeadTrackParms.m_dCameraYOffset,
+ l_dEyeZ = sqrt(l_dHeadDistInMM*l_dHeadDistInMM - (l_dEyeX*l_dEyeX + l_dEyeY*l_dEyeY)); //pythagoras
+
+ //convert the mm to world coordinates
+ double l_dMmPerWorldCoord = g_HeadTrackParms.m_dScreenHeightMM / g_HeadTrackParms.m_dScreenHeightWorld;
+ l_dEyeX /= l_dMmPerWorldCoord;
+ l_dEyeY /= l_dMmPerWorldCoord;
+ l_dEyeZ /= l_dMmPerWorldCoord;
+
+ //now set a frustum with the near clipping plane at (-1/2 width, -1/2 height, 0), (-1/2 width, -1/2 height, 0) with the
+ //eye at position (l_dEyeX, l_dEyeY, l_dEyeZ). But because OpenGL expects the eye at position (0,0,0) when specifying a frustum,
+ //we have to specify our near clipping plane with (-l_dEyeX, -l_dEyeY, -l_dEyeZ) as its origin and translate the modelview
+ //matrix to (-l_dEyeX, -l_dEyeY, -l_dEyeZ), such that the world origin is in the center of the screen
+ double l_dHalfHeight = 0.5 * g_HeadTrackParms.m_dScreenHeightWorld,
+ l_dHalfWidth = l_dHalfHeight * g_HeadTrackParms.m_dScreenAspect;
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ GLdouble l_dZNear = 1.0,
+ l_dFactor = l_dZNear/l_dEyeZ,
+ l_dLeft = (-l_dEyeX - l_dHalfWidth) * l_dFactor,
+ l_dRight = (-l_dEyeX + l_dHalfWidth) * l_dFactor,
+ l_dBottom = (-l_dEyeY - l_dHalfHeight) * l_dFactor,
+ l_dTop = (-l_dEyeY + l_dHalfHeight) * l_dFactor;
+
+ glFrustum( l_dLeft, l_dRight, l_dBottom, l_dTop, l_dZNear, l_dEyeZ + 100.0);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslated(-l_dEyeX, -l_dEyeY, -l_dEyeZ);
+ }
+ }
+}
+
+void DrawRasterBox()
+{
+ double l_dHalfHeight = 0.5 * g_HeadTrackParms.m_dScreenHeightWorld,
+ l_dHalfWidth = l_dHalfHeight * g_HeadTrackParms.m_dScreenAspect,
+ l_dDH = g_HeadTrackParms.m_dScreenHeightWorld/20.0,
+ l_dDW = l_dDH * g_HeadTrackParms.m_dScreenAspect,
+ l_dBoxDepth = g_HeadTrackParms.m_dScreenHeightWorld,
+ l_dVariable;
+
+ for (int i = 0; i <= 20; i++)
+ {
+ l_dVariable = -l_dHalfHeight + (double)i * l_dDH;
+ //draw U on xz
+ glBegin(GL_LINE_STRIP);
+ glColor3d(0.0, 0.0, 1.0);
+ glVertex3d(-l_dHalfWidth, l_dVariable, 0.0);
+ glVertex3d(-l_dHalfWidth, l_dVariable, -l_dBoxDepth);
+ glVertex3d(l_dHalfWidth, l_dVariable, -l_dBoxDepth);
+ glVertex3d(l_dHalfWidth, l_dVariable, 0.0);
+ glEnd();
+
+ //draw U on yz
+ l_dVariable = -l_dHalfWidth + (double)i * l_dDW;
+ glBegin(GL_LINE_STRIP);
+ glVertex3d(l_dVariable, -l_dHalfHeight, 0.0);
+ glVertex3d(l_dVariable, -l_dHalfHeight, -l_dBoxDepth);
+ glVertex3d(l_dVariable, l_dHalfHeight, -l_dBoxDepth);
+ glVertex3d(l_dVariable, l_dHalfHeight, 0.0);
+ glEnd();
+
+ //draw square on xy
+ l_dVariable = (double)i * -l_dDH;
+ glBegin(GL_LINE_LOOP);
+ glVertex3d(-l_dHalfWidth, -l_dHalfHeight, l_dVariable);
+ glVertex3d(l_dHalfWidth, -l_dHalfHeight, l_dVariable);
+ glVertex3d(l_dHalfWidth, l_dHalfHeight, l_dVariable);
+ glVertex3d(-l_dHalfWidth, l_dHalfHeight, l_dVariable);
+ glEnd();
+ }
+}
+
+void Display(void)
+{
+ //set perspective correction according to the head position
+ SetHeadTrackedFrustum(MONO_CENTER);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ DrawRasterBox();
+
+ glPushMatrix();
+ glColor3d(1.0, 0.0, 0.0);
+ glTranslated(-5.0, 5.0, -15.0);
+ glutSolidCube(5.0);
+ glColor3d(0.0, 1.0, 0.0);
+ glTranslated(10.0, 0.0, 0.0);
+ glutSolidCube(5.0);
+ glColor3d(0.0, 0.0, 1.0);
+ glTranslated(0.0, -10.0, 0.0);
+ glutSolidCube(5.0);
+ glColor3d(1.0, 1.0, 0.0);
+ glTranslated(-10.0, 0.0, 0.0);
+ glutSolidCube(5.0);
+ glPopMatrix();
+
+ glPushMatrix();
+ glColor3d(1.0, 1.0, 0.0);
+ glTranslated(-5.0, 5.0, -5.0);
+ glutSolidCube(5.0);
+ glColor3d(0.0, 0.0, 1.0);
+ glTranslated(10.0, 0.0, 0.0);
+ glutSolidCube(5.0);
+ glColor3d(0.0, 1.0, 0.0);
+ glTranslated(0.0, -10.0, 0.0);
+ glutSolidCube(5.0);
+ glColor3d(1.0, 0.0, 0.0);
+ glTranslated(-10.0, 0.0, 0.0);
+ glutSolidCube(5.0);
+ glPopMatrix();
+
+ glColor3d(1.0, 0.0, 1.0);
+
+ /*glPushMatrix();
+ glTranslated(0.0, 0.0, -10.0);
+ glutSolidSphere(5.0, 8, 16);
+ glPopMatrix();*/
+
+ glPushMatrix();
+ glTranslated(0.0, 0.0, 5.0);
+ glScaled(1.0, 1.0, 10.0);
+ glutSolidCube(2.0);
+ glPopMatrix();
+
+
+ /*glPushAttrib(GL_LIGHTING_BIT | GL_DEPTH_BUFFER_BIT);
+ glDisable(GL_LIGHTING);
+ glDisable(GL_DEPTH_TEST);*/
+ /*glColor3d(1.0, 0.0, 0.0);
+ glRasterPos2i(0, 9);
+ char l_String[] = "TEST!!\0";
+ for (int i=0; i<6; i++)
+ glutBitmapCharacter( GLUT_BITMAP_HELVETICA_18, l_String[i]);*/
+ //glPopAttrib();
+
+ glutSwapBuffers();
+
+}
+
+void PollWiiMotes()
+{
+ //wiimotes report back to the host with a frequency of 100 herz
+ if (wiiuse_poll(g_Wiimotes.m_ppWiimotes, 1))
+ {
+ for (int i=0; i < g_Wiimotes.m_iConnected; i++)
+ {
+ switch (g_Wiimotes.m_ppWiimotes[i]->event)
+ {
+ //default:
+ //nothing??
+ }
+ }
+ }
+}
+
+void Idle(void)
+{
+ PollWiiMotes();
+ glutPostRedisplay();
+}
+
+void Reshape(int f_iWidth, int f_iHeight)
+{
+ //set the new viewport dimension
+ glViewport(0, 0, f_iWidth, f_iHeight);
+
+ //should we set a new projection matrix?
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ double l_dHalfHeight = 0.5 * g_HeadTrackParms.m_dScreenHeightWorld,
+ l_dHalfWidth = l_dHalfHeight * g_HeadTrackParms.m_dScreenAspect,
+ l_zNear = 2.0 * g_HeadTrackParms.m_dScreenHeightWorld;
+
+ glFrustum(-l_dHalfWidth, l_dHalfWidth, -l_dHalfHeight, l_dHalfHeight, l_zNear, l_zNear + 1000.0);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslated(0.0, 0.0, -l_zNear);
+}
+
+
+void ExitProgram()
+{
+ //disconnect wiimotes
+ for (int i=0; i<g_Wiimotes.m_iConnected; i++)
+ {
+ wiiuse_disconnect(g_Wiimotes.m_ppWiimotes[i]);
+ }
+
+ wiiuse_cleanup(g_Wiimotes.m_ppWiimotes, g_Wiimotes.m_iConnected);
+
+ printf("Finished!\n");
+
+ exit(0);
+}
+
+void Keyboard(unsigned char f_cKey, int f_iX, int f_iY)
+{
+ switch(f_cKey)
+ {
+ case 'q':
+ case 'Q':
+ case 27 :
+ ExitProgram();
+ break;
+
+ case ' ':
+ //set y angle correction to current y angle of the the center of the two ir dots
+ if (g_Wiimotes.m_iConnected > 0)
+ {
+ if (g_Wiimotes.m_ppWiimotes[0]->ir.num_dots >= 2)
+ {
+ const ir_dot_t *l_pDot[2]; //shorthand to the ir dots
+ FindIRDots(&g_Wiimotes.m_ppWiimotes[0]->ir, l_pDot);
+
+ //calculate the distance of the head (in mm)
+ double l_dHeadDistInMM = CalcHeadDistInMM(l_pDot, &g_HeadTrackParms), //the distance between the head and camera (in mm)
+ l_dEyeYCam = (double)(l_pDot[0]->ry + l_pDot[1]->ry) / 2.0;
+
+ // of the eye relative to the camera
+ g_HeadTrackParms.m_dYAngleCorrection = g_HeadTrackParms.m_dRadPerCameraPixel * (l_dEyeYCam - g_HeadTrackParms.m_dCameraYCenter);
+ }
+ }
+ break;
+ }
+}
+
+int main(int argc, char **argv)
+{
+ //init GLUT
+ glutInit(&argc, argv);
+ glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
+ glutCreateWindow("HeadTrackDemo");
+
+ //init OpenGL
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_COLOR_MATERIAL);
+ glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
+ glClearColor(1.0, 1.0, 1.0, 1.0);
+
+ ////initialise the parameters needed for perspective correction when head tracking
+ //g_HeadTrackParms.m_dHeadTrackLedDist = 205.0;
+ //g_HeadTrackParms.m_dRadPerCameraPixel = (41.0*(M_PI/180.0))/1024.0;
+ //g_HeadTrackParms.m_dCameraXCenter = 1024.0/2.0;
+ //g_HeadTrackParms.m_dCameraYCenter = 768.0/2.0;
+ //g_HeadTrackParms.m_dYAngleCorrection = 0.0; //to be initialised correctly
+ //g_HeadTrackParms.m_dCameraYOffset = 130.0;
+ //g_HeadTrackParms.m_dScreenHeightMM = 210.0;
+ //g_HeadTrackParms.m_dScreenAspect = 4.0/3.0;
+ //g_HeadTrackParms.m_dScreenHeightWorld = 20.0;
+
+
+ //initialise the parameters needed for perspective correction when head tracking
+ g_HeadTrackParms.m_dHeadTrackLedDist = 205.0;
+ g_HeadTrackParms.m_dRadPerCameraPixel = (41.0*(M_PI/180.0))/1024.0;
+ g_HeadTrackParms.m_dCameraXCenter = 1024.0/2.0;
+ g_HeadTrackParms.m_dCameraYCenter = 768.0/2.0;
+ g_HeadTrackParms.m_dYAngleCorrection = 0.0; //to be initialised correctly
+ g_HeadTrackParms.m_dCameraYOffset = 205.0;
+ g_HeadTrackParms.m_dScreenHeightMM = 320.0;
+ g_HeadTrackParms.m_dScreenAspect = 16.0/10.0;
+ g_HeadTrackParms.m_dScreenHeightWorld = 20.0;
+
+ //connect to the wiimote(s)
+ g_Wiimotes.m_ppWiimotes = wiiuse_init(1);
+
+#ifdef WIN32
+ wiiuse_set_bluetooth_stack(g_Wiimotes.m_ppWiimotes, 1, WIIUSE_STACK_MS);
+#endif //WIN32
+
+ int found = wiiuse_find(g_Wiimotes.m_ppWiimotes, 1, 30);
+ g_Wiimotes.m_iConnected = wiiuse_connect(g_Wiimotes.m_ppWiimotes , 1);
+ if (g_Wiimotes.m_iConnected)
+ {
+ printf("Connected to %i wiimotes (of %i found).\n", g_Wiimotes.m_iConnected, found);
+
+ wiiuse_set_leds(g_Wiimotes.m_ppWiimotes[0], WIIMOTE_LED_1 | WIIMOTE_LED_2 | WIIMOTE_LED_3 | WIIMOTE_LED_4);
+ wiiuse_rumble(g_Wiimotes.m_ppWiimotes[0], 1);
+ //wiiuse_motion_sensing(g_Wiimotes.m_ppWiimotes[0], 1);
+ wiiuse_set_ir(g_Wiimotes.m_ppWiimotes[0], 1);
+ Sleep(200);
+ wiiuse_rumble(g_Wiimotes.m_ppWiimotes[0], 0);
+ }
+ else
+ {
+ printf("Failed to connect to any wiimote.\n");
+ return 0;
+ }
+
+ //register GLUT callback routines
+ glutDisplayFunc(Display);
+ glutIdleFunc(Idle);
+ glutReshapeFunc(Reshape);
+ glutKeyboardFunc(Keyboard);
+
+ glutFullScreen();
+
+ glutMainLoop();
+
+ return 0;
+}