From 887766a371d577a123f3039f3813c6488a80a951 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Fri, 23 Oct 2009 16:10:55 +0000 Subject: [PATCH 01/14] Fixed x86-specific ABI assumption (do not return structure directly when a pointer is expected). Patch by jonp. --- Source/OpenTK/Audio/OpenAL/Alc/Alc.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Source/OpenTK/Audio/OpenAL/Alc/Alc.cs b/Source/OpenTK/Audio/OpenAL/Alc/Alc.cs index b0026e11..c6f50981 100644 --- a/Source/OpenTK/Audio/OpenAL/Alc/Alc.cs +++ b/Source/OpenTK/Audio/OpenAL/Alc/Alc.cs @@ -88,8 +88,14 @@ namespace OpenTK.Audio.OpenAL /// a pointer to a set of attributes: ALC_FREQUENCY, ALC_MONO_SOURCES, ALC_REFRESH, ALC_STEREO_SOURCES, ALC_SYNC /// Returns a pointer to the new context (NULL on failure). The attribute list can be NULL, or a zero terminated list of integer pairs composed of valid ALC attribute tokens and requested values. [DllImport(Alc.Lib, EntryPoint = "alcCreateContext", ExactSpelling = true, CallingConvention = Alc.Style), SuppressUnmanagedCodeSecurity] + unsafe static extern IntPtr sys_CreateContext([In] IntPtr device, [In] int* attrlist); + [CLSCompliant(false)] - unsafe public static extern ContextHandle CreateContext([In] IntPtr device, [In] int* attrlist); + unsafe public static ContextHandle CreateContext([In] IntPtr device, [In] int* attrlist) + { + return new ContextHandle(sys_CreateContext(device, attrlist)); + } + // ALC_API ALCcontext * ALC_APIENTRY alcCreateContext( ALCdevice *device, const ALCint* attrlist ); /// This function creates a context using a specified device. @@ -138,7 +144,12 @@ namespace OpenTK.Audio.OpenAL /// This function retrieves the current context. /// Returns a pointer to the current context. [DllImport(Alc.Lib, EntryPoint = "alcGetCurrentContext", ExactSpelling = true, CallingConvention = Alc.Style), SuppressUnmanagedCodeSecurity()] - public static extern ContextHandle GetCurrentContext(); + private static extern IntPtr sys_GetCurrentContext(); + + public static ContextHandle GetCurrentContext() + { + return new ContextHandle(sys_GetCurrentContext()); + } // ALC_API ALCcontext * ALC_APIENTRY alcGetCurrentContext( void ); /// This function retrieves a context's device pointer. From ef48c428078b1a680a8572f5fcf3e47345799647 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Fri, 23 Oct 2009 17:45:14 +0000 Subject: [PATCH 02/14] Debug.WriteLine(object, string) does not work as intended (the first parameter defines the category). Use Debug.Print instead. --- Source/OpenTK/Audio/OpenAL/AL/EffectsExtension.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/OpenTK/Audio/OpenAL/AL/EffectsExtension.cs b/Source/OpenTK/Audio/OpenAL/AL/EffectsExtension.cs index 8c1ed591..80d9eeff 100644 --- a/Source/OpenTK/Audio/OpenAL/AL/EffectsExtension.cs +++ b/Source/OpenTK/Audio/OpenAL/AL/EffectsExtension.cs @@ -1221,7 +1221,7 @@ namespace OpenTK.Audio.OpenAL if (!AudioContext.CurrentContext.SupportsExtension("ALC_EXT_EFX")) { - Debug.WriteLine("EFX Extension (ALC_EXT_EFX) is not supported(AudioContext: {0}).", AudioContext.CurrentContext.ToString()); + Debug.Print("EFX Extension (ALC_EXT_EFX) is not supported(AudioContext: {0}).", AudioContext.CurrentContext.ToString()); return; } // Console.WriteLine("ALC_EXT_EFX found. Efx can be used."); From a7ff40c44c9a23061440ce1ab71f10ce36919f97 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Fri, 23 Oct 2009 20:11:40 +0000 Subject: [PATCH 03/14] Added dllmap for OpenGL|ES on Mac OS X. --- Source/Compatibility/OpenTK.Compatibility.dll.config | 2 ++ Source/OpenTK/OpenTK.dll.config | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Source/Compatibility/OpenTK.Compatibility.dll.config b/Source/Compatibility/OpenTK.Compatibility.dll.config index fcf27f34..b06a58df 100644 --- a/Source/Compatibility/OpenTK.Compatibility.dll.config +++ b/Source/Compatibility/OpenTK.Compatibility.dll.config @@ -6,4 +6,6 @@ + + diff --git a/Source/OpenTK/OpenTK.dll.config b/Source/OpenTK/OpenTK.dll.config index fcf27f34..4d410208 100644 --- a/Source/OpenTK/OpenTK.dll.config +++ b/Source/OpenTK/OpenTK.dll.config @@ -6,4 +6,6 @@ + + From 854f92c868ce8e9d698bc0ddce7066823f1d21ce Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Fri, 23 Oct 2009 22:06:15 +0000 Subject: [PATCH 04/14] Fixed x86-specific ABI assumption (do not pass structure directly when a pointer is expected). Patch by jonp. --- Source/OpenTK/Audio/OpenAL/Alc/Alc.cs | 32 ++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/Source/OpenTK/Audio/OpenAL/Alc/Alc.cs b/Source/OpenTK/Audio/OpenAL/Alc/Alc.cs index c6f50981..086db09b 100644 --- a/Source/OpenTK/Audio/OpenAL/Alc/Alc.cs +++ b/Source/OpenTK/Audio/OpenAL/Alc/Alc.cs @@ -120,25 +120,41 @@ namespace OpenTK.Audio.OpenAL /// A pointer to the new context. /// Returns True on success, or False on failure. [DllImport(Alc.Lib, EntryPoint = "alcMakeContextCurrent", ExactSpelling = true, CallingConvention = Alc.Style), SuppressUnmanagedCodeSecurity()] - public static extern bool MakeContextCurrent([In] ContextHandle context); + static extern bool MakeContextCurrent(IntPtr context); + public static bool MakeContextCurrent(ContextHandle context) + { + return MakeContextCurrent(context.Handle); + } // ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent( ALCcontext *context ); /// This function tells a context to begin processing. When a context is suspended, changes in OpenAL state will be accepted but will not be processed. alcSuspendContext can be used to suspend a context, and then all the OpenAL state changes can be applied at once, followed by a call to alcProcessContext to apply all the state changes immediately. In some cases, this procedure may be more efficient than application of properties in a non-suspended state. In some implementations, process and suspend calls are each a NOP. /// a pointer to the new context [DllImport(Alc.Lib, EntryPoint = "alcProcessContext", ExactSpelling = true, CallingConvention = Alc.Style), SuppressUnmanagedCodeSecurity()] - public static extern void ProcessContext([In] ContextHandle context); + static extern void ProcessContext(IntPtr context); + public static void ProcessContext(ContextHandle context) + { + ProcessContext(context.Handle); + } // ALC_API void ALC_APIENTRY alcProcessContext( ALCcontext *context ); /// This function suspends processing on a specified context. When a context is suspended, changes in OpenAL state will be accepted but will not be processed. A typical use of alcSuspendContext would be to suspend a context, apply all the OpenAL state changes at once, and then call alcProcessContext to apply all the state changes at once. In some cases, this procedure may be more efficient than application of properties in a non-suspended state. In some implementations, process and suspend calls are each a NOP. /// a pointer to the context to be suspended. [DllImport(Alc.Lib, EntryPoint = "alcSuspendContext", ExactSpelling = true, CallingConvention = Alc.Style), SuppressUnmanagedCodeSecurity()] - public static extern void SuspendContext([In] ContextHandle context); + static extern void SuspendContext(IntPtr context); + public static void SuspendContext(ContextHandle context) + { + SuspendContext(context.Handle); + } // ALC_API void ALC_APIENTRY alcSuspendContext( ALCcontext *context ); /// This function destroys a context. /// a pointer to the new context. [DllImport(Alc.Lib, EntryPoint = "alcDestroyContext", ExactSpelling = true, CallingConvention = Alc.Style), SuppressUnmanagedCodeSecurity()] - public static extern void DestroyContext([In] ContextHandle context); + static extern void DestroyContext(IntPtr context); + public static void DestroyContext(ContextHandle context) + { + DestroyContext(context.Handle); + } // ALC_API void ALC_APIENTRY alcDestroyContext( ALCcontext *context ); /// This function retrieves the current context. @@ -156,7 +172,11 @@ namespace OpenTK.Audio.OpenAL /// a pointer to a context. /// Returns a pointer to the specified context's device. [DllImport(Alc.Lib, EntryPoint = "alcGetContextsDevice", ExactSpelling = true, CallingConvention = Alc.Style), SuppressUnmanagedCodeSecurity()] - public static extern IntPtr GetContextsDevice([In] ContextHandle context); + static extern IntPtr GetContextsDevice(IntPtr context); + public static IntPtr GetContextsDevice(ContextHandle context) + { + return GetContextsDevice(context.Handle); + } // ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice( ALCcontext *context ); #endregion Context Management @@ -404,7 +424,7 @@ namespace OpenTK.Audio.OpenAL /// a pointer to a capture device. /// a buffer, which must be large enough to accommodate the number of samples. /// the number of samples to be retrieved. - public static void CaptureSamples(IntPtr device, T[,,] buffer, int samples) + public static void CaptureSamples(IntPtr device, T[, ,] buffer, int samples) where T : struct { CaptureSamples(device, ref buffer[0, 0, 0], samples); From cde8d8771b38f978264e33a2380f7598fe58d8f0 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Sat, 24 Oct 2009 10:07:43 +0000 Subject: [PATCH 05/14] Merged Inertia's example and geometry branch, --- Source/Examples/Data/Shaders/CubeMap_FS.glsl | 9 + Source/Examples/Data/Shaders/CubeMap_VS.glsl | 10 + Source/Examples/Data/Shaders/Parallax_FS.glsl | 57 ++ Source/Examples/Data/Shaders/Parallax_VS.glsl | 35 + Source/Examples/Data/Shaders/Picking_FS.glsl | 8 + Source/Examples/Data/Shaders/Picking_VS.glsl | 9 + .../Examples/Data/Textures/Earth CubeMap.dds | Bin 0 -> 786560 bytes .../Data/{ => Textures}/JuliaColorTable.bmp | Bin .../Textures/Swizzled Rock Diffuse&Height.DDS | Bin 0 -> 349648 bytes .../Textures/Swizzled Rock Normal&Gloss.DDS | Bin 0 -> 87536 bytes .../Textures/Swizzled Textures License.txt | 18 + .../Data/{ => Textures}/logo-dark.jpg | Bin Source/Examples/Data/{ => Textures}/logo.jpg | Bin Source/Examples/Data/{ => Textures}/metal.jpg | Bin Source/Examples/OpenAL/1.1/PlayStatic.cs | 8 +- Source/Examples/OpenAL/1.1/Playback.cs | 9 +- .../Examples/OpenAL/1.1/StreamingPlayback.cs | 15 +- Source/Examples/OpenAL/EFX/EFXReverb.cs | 9 +- .../Examples/OpenAL/Test/OpenALDiagnostics.cs | 4 +- .../Examples/OpenAL/Test/TestAudioContext.cs | 44 +- Source/Examples/OpenGL/1.1/Picking.cs | 311 ++++++++ Source/Examples/OpenGL/1.1/StencilCSG.cs | 311 ++++++++ Source/Examples/OpenGL/1.1/TextureMatrix.cs | 155 ++++ Source/Examples/OpenGL/1.1/Textures.cs | 2 +- Source/Examples/OpenGL/1.5/DynamicVBO.cs | 198 +++++ .../Examples/OpenGL/1.5/VertexBufferObject.cs | 2 +- Source/Examples/OpenGL/GLSL/DDSCubeMap.cs | 278 +++++++ .../Examples/OpenGL/GLSL/JuliaSetFractal.cs | 2 +- .../Examples/OpenGL/GLSL/SwizzledParallax.cs | 379 ++++++++++ Source/Examples/Shapes/Base/DrawableShape.cs | 181 +++++ Source/Examples/Shapes/Base/VertexStructs.cs | 36 + Source/Examples/Shapes/Capsule.cs | 110 +++ Source/Examples/Shapes/ChamferCube.cs | 280 +++++++ Source/Examples/Shapes/Helpers/Chunk.cs | 82 ++ Source/Examples/Shapes/Helpers/MengerCube.cs | 422 +++++++++++ .../Shapes/Helpers/TetrahedronFace.cs | 230 ++++++ Source/Examples/Shapes/Helpers/VboShape.cs | 27 + Source/Examples/Shapes/KochTetrahedron.cs | 71 ++ Source/Examples/Shapes/MengerSponge.cs | 116 +++ Source/Examples/Shapes/{ => Old}/Cube.cs | 0 Source/Examples/Shapes/{ => Old}/IsoSphere.cs | 0 Source/Examples/Shapes/{ => Old}/Shape.cs | 0 .../Shapes/Old/SierpinskiTetrahedron.cs | 173 +++++ Source/Examples/Shapes/SlicedHose.cs | 194 +++++ Source/Examples/Shapes/SlicedSphere.cs | 196 +++++ Source/Examples/Shapes/TorusKnot.cs | 128 ++++ Source/Examples/Utilities/LoaderDDS.cs | 711 ++++++++++++++++++ Source/Examples/Utilities/LoaderGDI.cs | 152 ++++ Source/Examples/Utilities/LoaderStatics.cs | 50 ++ 49 files changed, 4986 insertions(+), 46 deletions(-) create mode 100644 Source/Examples/Data/Shaders/CubeMap_FS.glsl create mode 100644 Source/Examples/Data/Shaders/CubeMap_VS.glsl create mode 100644 Source/Examples/Data/Shaders/Parallax_FS.glsl create mode 100644 Source/Examples/Data/Shaders/Parallax_VS.glsl create mode 100644 Source/Examples/Data/Shaders/Picking_FS.glsl create mode 100644 Source/Examples/Data/Shaders/Picking_VS.glsl create mode 100644 Source/Examples/Data/Textures/Earth CubeMap.dds rename Source/Examples/Data/{ => Textures}/JuliaColorTable.bmp (100%) create mode 100644 Source/Examples/Data/Textures/Swizzled Rock Diffuse&Height.DDS create mode 100644 Source/Examples/Data/Textures/Swizzled Rock Normal&Gloss.DDS create mode 100644 Source/Examples/Data/Textures/Swizzled Textures License.txt rename Source/Examples/Data/{ => Textures}/logo-dark.jpg (100%) rename Source/Examples/Data/{ => Textures}/logo.jpg (100%) rename Source/Examples/Data/{ => Textures}/metal.jpg (100%) create mode 100644 Source/Examples/OpenGL/1.1/Picking.cs create mode 100644 Source/Examples/OpenGL/1.1/StencilCSG.cs create mode 100644 Source/Examples/OpenGL/1.1/TextureMatrix.cs create mode 100644 Source/Examples/OpenGL/1.5/DynamicVBO.cs create mode 100644 Source/Examples/OpenGL/GLSL/DDSCubeMap.cs create mode 100644 Source/Examples/OpenGL/GLSL/SwizzledParallax.cs create mode 100644 Source/Examples/Shapes/Base/DrawableShape.cs create mode 100644 Source/Examples/Shapes/Base/VertexStructs.cs create mode 100644 Source/Examples/Shapes/Capsule.cs create mode 100644 Source/Examples/Shapes/ChamferCube.cs create mode 100644 Source/Examples/Shapes/Helpers/Chunk.cs create mode 100644 Source/Examples/Shapes/Helpers/MengerCube.cs create mode 100644 Source/Examples/Shapes/Helpers/TetrahedronFace.cs create mode 100644 Source/Examples/Shapes/Helpers/VboShape.cs create mode 100644 Source/Examples/Shapes/KochTetrahedron.cs create mode 100644 Source/Examples/Shapes/MengerSponge.cs rename Source/Examples/Shapes/{ => Old}/Cube.cs (100%) rename Source/Examples/Shapes/{ => Old}/IsoSphere.cs (100%) rename Source/Examples/Shapes/{ => Old}/Shape.cs (100%) create mode 100644 Source/Examples/Shapes/Old/SierpinskiTetrahedron.cs create mode 100644 Source/Examples/Shapes/SlicedHose.cs create mode 100644 Source/Examples/Shapes/SlicedSphere.cs create mode 100644 Source/Examples/Shapes/TorusKnot.cs create mode 100644 Source/Examples/Utilities/LoaderDDS.cs create mode 100644 Source/Examples/Utilities/LoaderGDI.cs create mode 100644 Source/Examples/Utilities/LoaderStatics.cs diff --git a/Source/Examples/Data/Shaders/CubeMap_FS.glsl b/Source/Examples/Data/Shaders/CubeMap_FS.glsl new file mode 100644 index 00000000..a8e89f99 --- /dev/null +++ b/Source/Examples/Data/Shaders/CubeMap_FS.glsl @@ -0,0 +1,9 @@ +// Copyright (c) 2008 the OpenTK Team. See license.txt for legal bla + +uniform samplerCube Earth; +varying vec3 Normal; + +void main() +{ + gl_FragColor = textureCube( Earth, Normal.xyz ); +} \ No newline at end of file diff --git a/Source/Examples/Data/Shaders/CubeMap_VS.glsl b/Source/Examples/Data/Shaders/CubeMap_VS.glsl new file mode 100644 index 00000000..6c2c99a2 --- /dev/null +++ b/Source/Examples/Data/Shaders/CubeMap_VS.glsl @@ -0,0 +1,10 @@ +// Copyright (c) 2008 the OpenTK Team. See license.txt for legal bla + +// MUST be written to for FS +varying vec3 Normal; + +void main() +{ + gl_Position = ftransform(); + Normal = /*gl_NormalMatrix * */ gl_Normal ; +} \ No newline at end of file diff --git a/Source/Examples/Data/Shaders/Parallax_FS.glsl b/Source/Examples/Data/Shaders/Parallax_FS.glsl new file mode 100644 index 00000000..113f2e4e --- /dev/null +++ b/Source/Examples/Data/Shaders/Parallax_FS.glsl @@ -0,0 +1,57 @@ +// Copyright (c) 2008 the OpenTK Team. See license.txt for legal bla + +// Material uniforms +uniform sampler2D Material_DiffuseAndHeight; +uniform sampler2D Material_NormalAndGloss; +uniform vec3 Material_ScaleBiasShininess; // x=Scale, y=Bias, z=Shininess + +// Light uniforms +uniform vec3 Light_DiffuseColor; +uniform vec3 Light_SpecularColor; + +// from VS +varying vec3 VaryingLightVector; +varying vec3 VaryingEyeVector; + +vec3 normal; + +void main() +{ + vec3 lightVector = normalize( VaryingLightVector ); + vec3 eyeVector = normalize( VaryingEyeVector ); + + // first, find the parallax displacement by reading only the height map + float parallaxOffset = texture2D( Material_DiffuseAndHeight, gl_TexCoord[0].st ).a * + Material_ScaleBiasShininess.x - Material_ScaleBiasShininess.y; + vec2 newTexCoords = gl_TexCoord[0].st + ( parallaxOffset * eyeVector.xy ); // displace texcoords according to viewer + + // knowing the displacement, read RGB, Normal and Gloss + vec3 diffuseColor = texture2D( Material_DiffuseAndHeight, newTexCoords.st ).rgb; + vec4 temp = texture2D( Material_NormalAndGloss, newTexCoords.st ); + + // build a usable normal vector + normal.xy = temp.ag * 2.0 - 1.0; // swizzle alpha and green to x/y and scale to [-1..+1] + normal.z = sqrt( 1.0 - normal.x*normal.x - normal.y*normal.y ); // z = sqrt(1-x²-y²) + + // move other properties to be better readable + float gloss = temp.r; + +// float alpha = temp.b; +// if ( alpha < 0.2 ) // optimization: should move this test before reading RGB texture +// discard; + + // tweaked phong lighting + float lambert = max( dot( lightVector, normal ), 0.0 ); + + gl_FragColor = vec4( Light_DiffuseColor * diffuseColor, 1.0 ) * + lambert; + + if ( lambert > 0.0 ) + { + float specular = pow( + clamp( dot( reflect( -lightVector, normal ), eyeVector ), 0.0, 1.0 ), + Material_ScaleBiasShininess.z ); + + gl_FragColor += vec4( Light_SpecularColor * diffuseColor, 1.0 ) * ( specular * gloss ); + } +} \ No newline at end of file diff --git a/Source/Examples/Data/Shaders/Parallax_VS.glsl b/Source/Examples/Data/Shaders/Parallax_VS.glsl new file mode 100644 index 00000000..1ecbc367 --- /dev/null +++ b/Source/Examples/Data/Shaders/Parallax_VS.glsl @@ -0,0 +1,35 @@ +// Copyright (c) 2008 the OpenTK Team. See license.txt for legal bla + +// custom vertex attribute +attribute vec3 AttributeTangent; + +// world uniforms +uniform vec3 Light_Position; +uniform vec3 Camera_Position; + +// MUST be written to for FS +varying vec3 VaryingLightVector; +varying vec3 VaryingEyeVector; + +void main() +{ + gl_Position = ftransform(); + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + + vec3 nor = normalize( gl_NormalMatrix * gl_Normal ); + vec3 tan = normalize( gl_NormalMatrix * AttributeTangent ); + vec3 bi = cross(nor, tan); + + // need positions in tangent space + vec3 vertex = vec3( gl_ModelViewMatrix * gl_Vertex ); + + vec3 temp = Light_Position - vertex; + VaryingLightVector.x = dot(temp, tan); // optimization, calculate dot products rather than building TBN matrix + VaryingLightVector.y = dot(temp, bi); + VaryingLightVector.z = dot(temp, nor); + + temp = Camera_Position - vertex; + VaryingEyeVector.x = dot(temp, tan); + VaryingEyeVector.y = dot(temp, bi); + VaryingEyeVector.z = dot(temp, nor); +} \ No newline at end of file diff --git a/Source/Examples/Data/Shaders/Picking_FS.glsl b/Source/Examples/Data/Shaders/Picking_FS.glsl new file mode 100644 index 00000000..4cac9e76 --- /dev/null +++ b/Source/Examples/Data/Shaders/Picking_FS.glsl @@ -0,0 +1,8 @@ +#version 120 + +flat varying vec4 vColor; + +void main(void) +{ + gl_FragColor = vColor; +} \ No newline at end of file diff --git a/Source/Examples/Data/Shaders/Picking_VS.glsl b/Source/Examples/Data/Shaders/Picking_VS.glsl new file mode 100644 index 00000000..c96906a3 --- /dev/null +++ b/Source/Examples/Data/Shaders/Picking_VS.glsl @@ -0,0 +1,9 @@ +#version 120 + +flat varying vec4 vColor; // must be flat, cannot have this interpolated in any way + +void main(void) +{ + vColor = gl_Color; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; // ftransform(); +} \ No newline at end of file diff --git a/Source/Examples/Data/Textures/Earth CubeMap.dds b/Source/Examples/Data/Textures/Earth CubeMap.dds new file mode 100644 index 0000000000000000000000000000000000000000..5f884de571ad65988f4119c611508e3b8b55464d GIT binary patch literal 786560 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

ldPvc>RVZ_eK9gB)}{F7k;Uv3ko&ivGl!8| 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 z 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%0ALq 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Ð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

KhbB>@ojHX(V zVS4=RW2ern$kZ(2E$p#fmb5)SB5hTNWJnf${8#D%!V8I42;rdg(y}Id6Cc&tkhHd* zLiK(UQWk3Q(oSiv_+u|#+9AC@PCAOfZ|_&7FO;GBT{>o>5Au6S6Pv8yw;!sw);A{N zXy%rV^{RAG|3~&)SsQ}``G7gJ1U|Co*DbWtA>LnCJt_u&09^OHt5?DSz2O$Q#pKk^$@G_=O-~8Tbec(Us{HdRvX}hWtdFTx-qjZT%{&+ z+cVndkqpdwEK`%ruu>NWL>hsrb#(8F4E3T5%AT_!fFC?t#B1tBmzE_!f1Q8_I7}0swAwIEQGVZ3FtAGz^@_0NP$oJX8b65fHrL@|Y z-%SI!=UME+RS?I!KX>aZg%H=vOlb0g{a!b&ws@+LzON^HDcBdaWup^Z@C()x-niGR zEF9DN51#nf^nIOgl)LvDIs3X^BZOl{$VdDJlbc{)=#1Y@P&V5aUBB7q?+%@fGv zVan|K-ktTGxvs~;SK%qJ;H{8f64K=m`N@?ygT{2WXBOaCtz5VQ?Bdt~f@p_4l&Fqf zCHTSBU7)CT;2)U4N3??-5ubD!3TK0d+cJ1sKWjY}RxvGLxk6 zvTUvZ!+A}YWpyH6Ztm7NO`U`p&$jQV;b`LRgtHOi{TV#R_aPsMo`1GfDm4vi&&tP< zf3Tj$Ok_j;5EGf$e}z2EwS4q}9px*s*ex{M$@VIX&Es^=T$kDFujl;DTxaB`j_S$J zygz&Wwe5$$UUeW|;CAa?fN#QE0G{W7UJ=3bMu2lB-$}FqzQ9_PL%zu&!YlPF~;L3CR>p>-{p%*>TRo`Mpe+zv=Ud_yPwk&}9kW0pJVbN(*pfFv{~)FIiG16n0zc z|Nr)`UIjrYjJgz;B5LUY976h$sI93jngw6Lz`?b>gutb_so5bfZaKE)Blrl~6F8=Q zB@IGDO~Lg%fp|RU-0#;LgQR9>L zl#Fq{*^2w#zxgF_0A3=;xu$HgH0T}{>rhsG&K0@`m^C~O-h=ld^B(*z`2DO8%;`gi zn$u~jsa{`QXM-$Hfe-W#{fiv`m-+qlft=?4TrKRJXdwvtFXIC|fQQI_`0f+9n!^Gb w00Q5^caixHet+h7Z~EGYhW=6iNBy4+uxdUL)7}G(2|)kQKlEQg{lES00Z2)mz5oCK literal 0 HcmV?d00001 diff --git a/Source/Examples/Data/JuliaColorTable.bmp b/Source/Examples/Data/Textures/JuliaColorTable.bmp similarity index 100% rename from Source/Examples/Data/JuliaColorTable.bmp rename to Source/Examples/Data/Textures/JuliaColorTable.bmp diff --git a/Source/Examples/Data/Textures/Swizzled Rock Diffuse&Height.DDS b/Source/Examples/Data/Textures/Swizzled Rock Diffuse&Height.DDS new file mode 100644 index 0000000000000000000000000000000000000000..c7557fa067040fb83969f05f540735fd7a7a7270 GIT binary patch literal 349648 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 |=1<1^TayrP(JfWK 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 K1uAANLzSeoz^_%A?w{f7SVFczyK zaP-%@y1=|U1^OcljzbW7tcChFt!y{w1+p;lTAkM+J{hG0KE*PQDz+%-{2y{YX2CDC z9`?Vvo#M;12Z4t3;0J6O$9HW0^y&x=@Oq=5hh;{ZJd!8=YZcUcBR$5a+5hOG&}}o{ zt3`cut4XiYiHp(AWY~D$-kb&X&*ik!%vIZ1IcWCd3o-gfp?^3HdakhV^X>^-?w1y> z!hWHI&8!)SLgLqq{XUpqzEzk#Zp9<`z+uSO$4R4#Tw>lS$OndLy$D`3VG*OG)Sa)~ zLBbw|d>Yrv#7l&4 z2tlZ%YLV)mA(j-Qmn-(1C8{S2lLcA5!@iZe@z_@JZyVOSLVYaLrRSIsqm)>(4fr?0 z?}L8fE+Qei;&)RxUixInw2jdlCa_-px)bFJ``O;twmG_vMA55Y^IJY?FjBdWf1tZp z?CllzGdc()nSucypr=nv5&ZWTVZZ%J$7IO2n+JdMb&oqMNs>7|OH80_-)tf#)^dC^ zgVIVCB}&e(dS*o_yypS%df?BIF1l~~HIYbo?t=QEd8)_0l}EBdsR-VGf2~(P2l|8S zvW{2*IgapeRB-daA{+Fc|Koi7vHDUV{yr{*-NI>T=?npF?X=wqEZ6)%Um7bW z@Ng*F@5tkSLw%MX5=z*Na#KM+ud*OlndGtv1oib#10`IxRX#jlL}*BnBYghe8c&Rq zbF6NPtp`Kn1bm+4B*xG5Roj-bV~A*DuA1c8zg%?Us%?qjFS5o~mvn@yhB`q$vaORi zHh5k;GpKAfOY)4NzAYeB`PKinqT&8i0Y0f)PtAhh@RuRvKe#^DW&LKQKSv0O+5UgW z%pbPpShf-}jn@j3Raw13^d3Evx61H``{41Stc9Bl_08FT=CwZ9Py68+S7nTgi^o?U zARc>ecMG{54fkZNHnV)RmS-+bqF8epkx2_<5D!-YQW0-`B?;(D$ zvkbYM->p!JVZz?~Acnmb_yLR@-JmdH(dk`DpBHL8UCxtx^t-(|W+!*j`i-Xy65&{{ z)yrG{qZuvL&?!gr7&%9mk0V68nka7>3J$6rCmU?8QM9rz7&s*_T-mRA9h^ch_;~~D z(P#7rrYc9D>}#6JOJ*BgTuacS{F4teGyTG5S4R|&DE(!X1h(A}MzrDeV zp5R}B_+vN>`&K#yZEc=c8V>Q^D8088{HJI3dGU(>3-JtIAG!aEA{Hvz)3%<8f2h~8 zvHBPpWo~}G>_kiz%+pkeepj9*_Q|tfzT}Hj%;@fkZy&p@9M4H_(ii0#Bh2N;(-%qr zPY{^5?>pA-@Ho`Z9pKMCw|(c1d_OooKW~iqxvScy&T^N3e;)RGbaKLs7lHpH@_h65 zVGV=sl`NH*vk%#yE*ds5{%{_wh!#EB5B>sI5Pum*(-<_zy9D`tnD=es({$0OJXy&J zxc&mOz%RPiJ-d`jc=QuI4)fV{S^c(VsOaciKF}PszB)hCLNFNNg~Yo+EGilFecqxl z1fSJTlM*<#t{#c?o(v;;V1VDx);h}I{Em+X0ioksFg)dIIn~E*xAmO5rmuS##DzjD{V1WkJ=EtH8HcSxz40_1)Zi^cCwy=a{iWXU z;HbtbLud}U|5&-ksc-gfCCvP=2A3uY-LIAi@r6Lhi?!bvGoe~i_pfn>_^{wU_#EBVNQDL_0OEg=jm;DCKe~~g1(+E4K4tKICsG`@iFxS3m<=^5NuVYwpYp?I z%%GnldFO0&nUOK@y9_tSj}tHtt&w8s^ za>gpqzh2`=$fIQsUq|$WR)K!~7==n>p(nGz&ki0({90T2OSG9x)e(e`K?FUr3jvie zeaTLh2!Hr8_(8Q!J<(SD_hd72ypjKeLKs(|2hRb281P6N`8%Ac-7J*kAm}}8(R3(o zI1c+#Rs8E+%kk7{PZq|5IIb%0b%yyD?7MbnDcp^)3F`gK!ur5ls~y~`$EgC=QkyhM zdA|_&LMiN@>q?5~+v?^L+X1yVxt1)06cj(^Jl+

Uoihb^w46| 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

NHhZ``^!g^3|ol-^}Ebh0Vfwz*jJjNxZlyKVQ7R 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

o`G0{1m{S_){$R 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 literal 0 HcmV?d00001 diff --git a/Source/Examples/Data/Textures/Swizzled Rock Normal&Gloss.DDS b/Source/Examples/Data/Textures/Swizzled Rock Normal&Gloss.DDS new file mode 100644 index 0000000000000000000000000000000000000000..5ca89a84e847d9056c8c11fc431140ae1809cef2 GIT binary patch literal 87536 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

c{q@i?b*LUm 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 b13I^MqU6UKixm|O2H=%++4JlUkc$03K_FCX literal 0 HcmV?d00001 diff --git a/Source/Examples/Data/Textures/Swizzled Textures License.txt b/Source/Examples/Data/Textures/Swizzled Textures License.txt new file mode 100644 index 00000000..a1243705 --- /dev/null +++ b/Source/Examples/Data/Textures/Swizzled Textures License.txt @@ -0,0 +1,18 @@ +The files named "Swizzled *.dds" for the Parallax mapping demo originate from +http://www.TyphoonLabs.com ShaderDesigner application. Used with permission. + +The Textures have been altered from the layout: + +Diffuse R, Diffuse G, Diffuse B, Gloss +Normal X, Normal Y, Normal Z, Height + +to + +Diffuse R, Diffuse G, Diffuse B, Height +Gloss, Normal Y, Gloss, Normal X + +Additionally, the Textures in this folder have been compressed with a lossy +algorithm (S3TC) and do not reflect the quality of the source Textures. + +Please refer to the above website for unaltered versions of the textures, +or licensing information. diff --git a/Source/Examples/Data/logo-dark.jpg b/Source/Examples/Data/Textures/logo-dark.jpg similarity index 100% rename from Source/Examples/Data/logo-dark.jpg rename to Source/Examples/Data/Textures/logo-dark.jpg diff --git a/Source/Examples/Data/logo.jpg b/Source/Examples/Data/Textures/logo.jpg similarity index 100% rename from Source/Examples/Data/logo.jpg rename to Source/Examples/Data/Textures/logo.jpg diff --git a/Source/Examples/Data/metal.jpg b/Source/Examples/Data/Textures/metal.jpg similarity index 100% rename from Source/Examples/Data/metal.jpg rename to Source/Examples/Data/Textures/metal.jpg diff --git a/Source/Examples/OpenAL/1.1/PlayStatic.cs b/Source/Examples/OpenAL/1.1/PlayStatic.cs index 785e33fd..122416cd 100644 --- a/Source/Examples/OpenAL/1.1/PlayStatic.cs +++ b/Source/Examples/OpenAL/1.1/PlayStatic.cs @@ -43,7 +43,7 @@ namespace Examples uint source; int state; - Console.WriteLine("PlayStatic Test Application\n"); + Trace.WriteLine("PlayStatic Test Application\n"); // Generate an AL Buffer AL.GenBuffers(out buffer); @@ -59,17 +59,17 @@ namespace Examples // Play Source AL.SourcePlay(source); - Console.WriteLine("Playing Source "); + Trace.WriteLine("Playing Source "); do { Thread.Sleep(100); - Console.Write("."); + Trace.Write("."); // Get Source State AL.GetSource(source, ALGetSourcei.SourceState, out state); } while ((ALSourceState)state == ALSourceState.Playing); - Console.WriteLine(); + Trace.WriteLine(); // Clean up by deleting Source(s) and Buffer(s) AL.SourceStop(source); diff --git a/Source/Examples/OpenAL/1.1/Playback.cs b/Source/Examples/OpenAL/1.1/Playback.cs index 71834b2a..228ea131 100644 --- a/Source/Examples/OpenAL/1.1/Playback.cs +++ b/Source/Examples/OpenAL/1.1/Playback.cs @@ -7,6 +7,7 @@ #endregion using System; +using System.Diagnostics; using System.Threading; using System.IO; @@ -80,7 +81,7 @@ namespace Examples { using (AudioContext context = new AudioContext()) { - Console.WriteLine("Testing WaveReader({0}).ReadToEnd()", filename); + Trace.WriteLine("Testing WaveReader({0}).ReadToEnd()", filename); int buffer = AL.GenBuffer(); int source = AL.GenSource(); @@ -93,18 +94,18 @@ namespace Examples AL.Source(source, ALSourcei.Buffer, buffer); AL.SourcePlay(source); - Console.Write("Playing"); + Trace.Write("Playing"); // Query the source to find out when it stops playing. do { Thread.Sleep(250); - Console.Write("."); + Trace.Write("."); AL.GetSource(source, ALGetSourcei.SourceState, out state); } while ((ALSourceState)state == ALSourceState.Playing); - Console.WriteLine(); + Trace.WriteLine(""); AL.SourceStop(source); AL.DeleteSource(source); diff --git a/Source/Examples/OpenAL/1.1/StreamingPlayback.cs b/Source/Examples/OpenAL/1.1/StreamingPlayback.cs index 61589d05..d8d163ce 100644 --- a/Source/Examples/OpenAL/1.1/StreamingPlayback.cs +++ b/Source/Examples/OpenAL/1.1/StreamingPlayback.cs @@ -7,6 +7,7 @@ #endregion using System; +using System.Diagnostics; using System.Collections.Generic; using System.Text; using System.Threading; @@ -36,9 +37,9 @@ namespace Examples.OpenAL int[] buffers = AL.GenBuffers(buffer_count); int state; - Console.WriteLine("Testing WaveReader({0}).ReadSamples()", filename); + Trace.WriteLine("Testing WaveReader({0}).ReadSamples()", filename); - Console.Write("Playing"); + Trace.Write("Playing"); //foreach (int buffer in buffers) // AL.BufferData(buffer, sound.ReadSamples(buffer_size)); @@ -49,7 +50,7 @@ namespace Examples.OpenAL do { - //Console.Write("."); + //Trace.Write("."); do { @@ -58,13 +59,13 @@ namespace Examples.OpenAL } while (processed_count == 0); - Console.WriteLine(processed_count); + Trace.WriteLine(processed_count); //while (processed_count > 0) //{ // int buffer = AL.SourceUnqueueBuffer(source); // if (buffer != 0 && !sound.EndOfFile) // { - // Console.WriteLine(" " + buffer.ToString()); + // Trace.WriteLine(" " + buffer.ToString()); // AL.BufferData(buffer, sound.ReadSamples(buffer_size)); // AL.SourceQueueBuffer(source, buffer); // } @@ -78,7 +79,7 @@ namespace Examples.OpenAL if ((ALSourceState)state != ALSourceState.Playing) { AL.SourcePlay(source); - Console.WriteLine("r"); + Trace.WriteLine("r"); } } else @@ -91,7 +92,7 @@ namespace Examples.OpenAL AL.DeleteBuffers(buffers); } - Console.WriteLine(); + Trace.WriteLine(""); } } } diff --git a/Source/Examples/OpenAL/EFX/EFXReverb.cs b/Source/Examples/OpenAL/EFX/EFXReverb.cs index 1caa3516..ef4c087b 100644 --- a/Source/Examples/OpenAL/EFX/EFXReverb.cs +++ b/Source/Examples/OpenAL/EFX/EFXReverb.cs @@ -26,6 +26,7 @@ #endregion using System; +using System.Diagnostics; using System.Threading; using System.IO; using OpenTK.Audio; @@ -42,7 +43,7 @@ namespace Examples { using (AudioContext context = new AudioContext()) { - Console.WriteLine("Testing WaveReader({0}).ReadToEnd()", filename); + Trace.WriteLine("Testing WaveReader({0}).ReadToEnd()", filename); EffectsExtension efx = new EffectsExtension(); @@ -73,18 +74,18 @@ namespace Examples AL.Source(source, ALSourcei.Buffer, buffer); AL.SourcePlay(source); - Console.Write("Playing"); + Trace.Write("Playing"); // Query the source to find out when it stops playing. do { Thread.Sleep(250); - Console.Write("."); + Trace.Write("."); AL.GetSource(source, ALGetSourcei.SourceState, out state); } while ((ALSourceState)state == ALSourceState.Playing); - Console.WriteLine(); + Trace.WriteLine(""); AL.SourceStop(source); AL.DeleteSource(source); diff --git a/Source/Examples/OpenAL/Test/OpenALDiagnostics.cs b/Source/Examples/OpenAL/Test/OpenALDiagnostics.cs index c9825801..eea09148 100644 --- a/Source/Examples/OpenAL/Test/OpenALDiagnostics.cs +++ b/Source/Examples/OpenAL/Test/OpenALDiagnostics.cs @@ -99,8 +99,8 @@ namespace Examples rec = null; } - Trace.WriteLine("All done. Press Enter to exit."); - Console.ReadLine(); + // Trace.WriteLine("All done. Press Enter to exit."); + // Console.ReadLine(); } } diff --git a/Source/Examples/OpenAL/Test/TestAudioContext.cs b/Source/Examples/OpenAL/Test/TestAudioContext.cs index 3b9285c1..906876cb 100644 --- a/Source/Examples/OpenAL/Test/TestAudioContext.cs +++ b/Source/Examples/OpenAL/Test/TestAudioContext.cs @@ -23,7 +23,7 @@ namespace Examples public static void PrintOpenALErrors( IntPtr device ) { ALError AlErr = AL.GetError(); - Console.WriteLine("OpenAL error: {0}", AlErr); + Trace.WriteLine("OpenAL error: {0}"+ AlErr); } public static void Main() @@ -65,7 +65,7 @@ namespace Examples //int AttribCount; //Alc.GetInteger(context.Device, AlcGetInteger.AttributesSize, sizeof(int), out AttribCount); - //Console.WriteLine("AttributeSize: " + AttribCount); + //Trace.WriteLine("AttributeSize: " + AttribCount); //if (AttribCount > 0) //{ @@ -73,10 +73,10 @@ namespace Examples // Alc.GetInteger(context.Device, AlcGetInteger.AllAttributes, AttribCount, out Attribs[0]); // for (int i = 0; i < Attribs.Length; i++) // { - // Console.Write(Attribs[i]); - // Console.Write(" "); + // Trace.Write(Attribs[i]); + // Trace.Write(" "); // } - // Console.WriteLine(); + // Trace.WriteLine(); //} #endregion Get Attribs @@ -89,36 +89,36 @@ namespace Examples MyDevice = Alc.OpenDevice( null );// open default device if ( MyDevice != Al.Null ) { - Console.WriteLine( "Device allocation succeeded." ); + Trace.WriteLine( "Device allocation succeeded." ); MyContext = Alc.CreateContext( MyDevice, Al.Null ); // create context if ( MyContext != Al.Null ) { - Console.WriteLine( "Context allocation succeeded." ); + Trace.WriteLine( "Context allocation succeeded." ); GetOpenALErrors( MyDevice ); Alc.SuspendContext( MyContext ); // disable context Alc.ProcessContext( MyContext ); // enable context. The default state of a context created by alcCreateContext is that it is processing. Al.Bool result = Alc.MakeContextCurrent( MyContext ); // set active context - Console.WriteLine( "MakeContextCurrent succeeded? " + result ); + Trace.WriteLine( "MakeContextCurrent succeeded? " + result ); GetOpenALErrors( MyDevice ); - Console.WriteLine( "Default: " + Alc.GetString( MyDevice, Enums.AlcGetString.DefaultDeviceSpecifier ) ); - Console.WriteLine( "Device: " + Alc.GetString( MyDevice, Enums.AlcGetString.DeviceSpecifier ) ); - Console.WriteLine( "Extensions: " + Alc.GetString( MyDevice, Enums.AlcGetString.Extensions ) ); + Trace.WriteLine( "Default: " + Alc.GetString( MyDevice, Enums.AlcGetString.DefaultDeviceSpecifier ) ); + Trace.WriteLine( "Device: " + Alc.GetString( MyDevice, Enums.AlcGetString.DeviceSpecifier ) ); + Trace.WriteLine( "Extensions: " + Alc.GetString( MyDevice, Enums.AlcGetString.Extensions ) ); GetOpenALErrors( MyDevice ); #region Get Attribs int AttribCount; Alc.GetInteger( MyDevice, Enums.AlcGetInteger.AttributesSize, sizeof( int ), out AttribCount ); - Console.WriteLine( "AttributeSize: " + AttribCount ); + Trace.WriteLine( "AttributeSize: " + AttribCount ); if ( AttribCount > 0 ) { int[] Attribs = new int[AttribCount]; Alc.GetInteger( MyDevice, Enums.AlcGetInteger.AttributesSize, AttribCount, out Attribs[0] ); for ( int i = 0; i < Attribs.Length; i++ ) - Console.Write( ", " + Attribs[i] ); - Console.WriteLine( ); + Trace.Write( ", " + Attribs[i] ); + Trace.WriteLine( ); } #endregion Get Attribs GetOpenALErrors( MyDevice ); @@ -127,30 +127,30 @@ namespace Examples AlContext currcon = Alc.GetCurrentContext( ); if ( MyDevice == currdev ) - Console.WriteLine( "Devices match." ); + Trace.WriteLine( "Devices match." ); else - Console.WriteLine( "Error: Devices do not match." ); + Trace.WriteLine( "Error: Devices do not match." ); if ( MyContext == currcon ) - Console.WriteLine( "Context match." ); + Trace.WriteLine( "Context match." ); else - Console.WriteLine( "Error: Contexts do not match." ); + Trace.WriteLine( "Error: Contexts do not match." ); // exit Alc.MakeContextCurrent( Al.Null ); // results in no context being current Alc.DestroyContext( MyContext ); result = Alc.CloseDevice( MyDevice ); - Console.WriteLine( "Result: " + result ); - Console.ReadLine( ); + Trace.WriteLine( "Result: " + result ); + Trace.ReadLine( ); } else { - Console.WriteLine( "Context creation failed." ); + Trace.WriteLine( "Context creation failed." ); } } else { - Console.WriteLine( "Failed to find suitable Device." ); + Trace.WriteLine( "Failed to find suitable Device." ); } #endif /* diff --git a/Source/Examples/OpenGL/1.1/Picking.cs b/Source/Examples/OpenGL/1.1/Picking.cs new file mode 100644 index 00000000..f650494b --- /dev/null +++ b/Source/Examples/OpenGL/1.1/Picking.cs @@ -0,0 +1,311 @@ +using System; +using System.IO; +using System.Drawing; +using System.Diagnostics; + +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; +using OpenTK.Input; + +using Examples.Shapes; + +namespace Examples.Tutorial +{ + ///

+ /// This demo shows over which triangle the cursor is, it does so by assigning all 3 vertices of a triangle the same Ids. + /// Each Id is a uint, split into 4 bytes and used as triangle color. In an extra pass, the screen is cleared to uint.MaxValue, + /// and then the mesh is drawn using color. Using GL.ReadPixels() the value under the mouse cursor is read and can be converted. + /// + [Example("Picking", ExampleCategory.OpenGL, "1.1", Documentation = "Picking")] + class Picking : GameWindow + { + /// Creates a 800x600 window with the specified title. + public Picking() + : base(800, 600, GraphicsMode.Default, "Picking", GameWindowFlags.Default, DisplayDevice.Default, 1, 1, GraphicsContextFlags.Default) + { + VSync = VSyncMode.On; + } + + struct Byte4 + { + public byte R, G, B, A; + + public Byte4(byte[] input) + { + R = input[0]; + G = input[1]; + B = input[2]; + A = input[3]; + } + + public uint ToUInt32() + { + byte[] temp = new byte[] { this.R, this.G, this.B, this.A }; + return BitConverter.ToUInt32(temp, 0); + } + + public override string ToString() + { + return this.R + ", " + this.G + ", " + this.B + ", " + this.A; + } + } + + struct Vertex + { + public Byte4 Color; // 4 bytes + public Vector3 Position; // 12 bytes + + public const byte SizeInBytes = 16; + } + + const TextureTarget Target = TextureTarget.TextureRectangleArb; + float angle; + BeginMode VBO_PrimMode; + Vertex[] VBO_Array; + uint VBO_Handle; + + uint SelectedTriangle; + + // int VertexShaderObject, FragmentShaderObject, ProgramObject; + + /// Load resources here. + /// Not used. + protected override void OnLoad(EventArgs e) + { + GL.Enable(EnableCap.DepthTest); + GL.Enable(EnableCap.CullFace); + + #region prepare data for VBO from procedural object + DrawableShape temp_obj = new SierpinskiTetrahedron(3f, SierpinskiTetrahedron.eSubdivisions.Five, false); + VertexT2fN3fV3f[] temp_VBO; + uint[] temp_IBO; + temp_obj.GetArraysforVBO(out VBO_PrimMode, out temp_VBO, out temp_IBO); + temp_obj.Dispose(); + if (temp_IBO != null) + throw new Exception("Expected data for GL.DrawArrays, but Element Array is not null."); + + // Convert from temp mesh to final object, copy position and add triangle Ids for the color attribute. + VBO_Array = new Vertex[temp_VBO.Length]; + int TriangleCounter = -1; + for (int i = 0; i < temp_VBO.Length; i++) + { + // Position + VBO_Array[i].Position = temp_VBO[i].Position; + + // Index + if (i % 3 == 0) + TriangleCounter++; + VBO_Array[i].Color = new Byte4(BitConverter.GetBytes(TriangleCounter)); + } + #endregion prepare data for VBO from procedural object + + #region Setup VBO for drawing + GL.GenBuffers(1, out VBO_Handle); + GL.BindBuffer(BufferTarget.ArrayBuffer, VBO_Handle); + GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(VBO_Array.Length * Vertex.SizeInBytes), VBO_Array, BufferUsageHint.StaticDraw); + GL.InterleavedArrays(InterleavedArrayFormat.C4ubV3f, 0, IntPtr.Zero); + + ErrorCode err = GL.GetError(); + if (err != ErrorCode.NoError) + Trace.WriteLine("VBO Setup failed (Error: " + err + "). Attempting to continue."); + #endregion Setup VBO for drawing + + #region Shader + /* + // Load&Compile Vertex Shader + + using (StreamReader sr = new StreamReader("Data/Shaders/Picking_VS.glsl")) + { + VertexShaderObject = GL.CreateShader(ShaderType.VertexShader); + GL.ShaderSource(VertexShaderObject, sr.ReadToEnd()); + GL.CompileShader(VertexShaderObject); + } + + err = GL.GetError(); + if (err != ErrorCode.NoError) + Trace.WriteLine("Vertex Shader: " + err); + + string LogInfo; + GL.GetShaderInfoLog(VertexShaderObject, out LogInfo); + if (LogInfo.Length > 0 && !LogInfo.Contains("hardware")) + Trace.WriteLine("Vertex Shader failed!\nLog:\n" + LogInfo); + else + Trace.WriteLine("Vertex Shader compiled without complaint."); + + // Load&Compile Fragment Shader + + using (StreamReader sr = new StreamReader("Data/Shaders/Picking_FS.glsl")) + { + FragmentShaderObject = GL.CreateShader(ShaderType.FragmentShader); + GL.ShaderSource(FragmentShaderObject, sr.ReadToEnd()); + GL.CompileShader(FragmentShaderObject); + } + GL.GetShaderInfoLog(FragmentShaderObject, out LogInfo); + + err = GL.GetError(); + if (err != ErrorCode.NoError) + Trace.WriteLine("Fragment Shader: " + err); + + if (LogInfo.Length > 0 && !LogInfo.Contains("hardware")) + Trace.WriteLine("Fragment Shader failed!\nLog:\n" + LogInfo); + else + Trace.WriteLine("Fragment Shader compiled without complaint."); + + // Link the Shaders to a usable Program + ProgramObject = GL.CreateProgram(); + GL.AttachShader(ProgramObject, VertexShaderObject); + GL.AttachShader(ProgramObject, FragmentShaderObject); + + // link it all together + GL.LinkProgram(ProgramObject); + + err = GL.GetError(); + if (err != ErrorCode.NoError) + Trace.WriteLine("LinkProgram: " + err); + + GL.UseProgram(ProgramObject); + + err = GL.GetError(); + if (err != ErrorCode.NoError) + Trace.WriteLine("UseProgram: " + err); + + // flag ShaderObjects for delete when not used anymore + GL.DeleteShader(VertexShaderObject); + GL.DeleteShader(FragmentShaderObject); + + int temp; + GL.GetProgram(ProgramObject, ProgramParameter.LinkStatus, out temp); + Trace.WriteLine("Linking Program (" + ProgramObject + ") " + ((temp == 1) ? "succeeded." : "FAILED!")); + if (temp != 1) + { + GL.GetProgramInfoLog(ProgramObject, out LogInfo); + Trace.WriteLine("Program Log:\n" + LogInfo); + } + + Trace.WriteLine("End of Shader build. GL Error: " + GL.GetError()); + + GL.UseProgram(0); +*/ + #endregion Shader + + } + + protected override void OnUnload(EventArgs e) + { + GL.BindBuffer(BufferTarget.ArrayBuffer, 0); + GL.DeleteBuffers(1, ref VBO_Handle); + + base.OnUnload(e); + } + + /// + /// Called when your window is resized. Set your viewport here. It is also + /// a good place to set up your projection matrix (which probably changes + /// along when the aspect ratio of your window). + /// + /// Contains information on the new Width and Size of the GameWindow. + protected override void OnResize(EventArgs e) + { + GL.Viewport(ClientRectangle); + + Matrix4 projection = Matrix4.Perspective(45.0f, this.Width / (float)this.Height, 0.1f, 10.0f); + GL.MatrixMode(MatrixMode.Projection); + GL.LoadMatrix(ref projection); + } + + /// + /// Called when it is time to setup the next frame. Add you game logic here. + /// + /// Contains timing information for framerate independent logic. + protected override void OnUpdateFrame(FrameEventArgs e) + { + if (Keyboard[Key.Escape]) + Exit(); + } + + /// + /// Called when it is time to render the next frame. Add your rendering code here. + /// + /// Contains timing information. + protected override void OnRenderFrame(FrameEventArgs e) + { + GL.Color3(Color.White); + GL.Enable(EnableCap.ColorArray); + + #region Pass 1: Draw Object and pick Triangle + GL.ClearColor(1f, 1f, 1f, 1f); // clears to uint.MaxValue + GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); + + Matrix4 modelview = Matrix4.LookAt(Vector3.UnitZ, Vector3.Zero, Vector3.UnitY); + GL.MatrixMode(MatrixMode.Modelview); + GL.LoadMatrix(ref modelview); + GL.Translate(0f, 0f, -3f); + GL.Rotate(angle, Vector3.UnitX); + GL.Rotate(angle, Vector3.UnitY); + angle += (float)e.Time * 3.0f; + + // You may re-enable the shader, but it works perfectly without and will run on intel HW too + // GL.UseProgram(ProgramObject); + GL.DrawArrays(VBO_PrimMode, 0, VBO_Array.Length); + // GL.UseProgram(0); + + // Read Pixel under mouse cursor + Byte4 Pixel = new Byte4(); + GL.ReadPixels(Mouse.X, this.Height - Mouse.Y, 1, 1, PixelFormat.Rgba, PixelType.UnsignedByte, ref Pixel); + SelectedTriangle = Pixel.ToUInt32(); + #endregion Pass 1: Draw Object and pick Triangle + + GL.Color3(Color.White); + GL.Disable(EnableCap.ColorArray); + + #region Pass 2: Draw Shape + if (SelectedTriangle == uint.MaxValue) + GL.ClearColor(.2f, .1f, .3f, 1f); // purple + else + GL.ClearColor(0f, .2f, .3f, 1f); // cyan + GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); + + GL.Color3(1f, 1f, 1f); + GL.DrawArrays(VBO_PrimMode, 0, VBO_Array.Length); + + GL.PolygonMode(MaterialFace.Front, PolygonMode.Line); + GL.Color3(Color.Red); + GL.DrawArrays(VBO_PrimMode, 0, VBO_Array.Length); + GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill); + + if (SelectedTriangle != uint.MaxValue) + { + GL.Disable(EnableCap.DepthTest); + GL.Color3(Color.Green); + GL.DrawArrays(VBO_PrimMode, (int)SelectedTriangle * 3, 3); + GL.Enable(EnableCap.DepthTest); + } + #endregion Pass 2: Draw Shape + + this.SwapBuffers(); + + ErrorCode err = GL.GetError(); + if (err != ErrorCode.NoError) + Trace.WriteLine("Error at Swapbuffers: " + err); + } + + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // The 'using' idiom guarantees proper resource cleanup. + // We request 30 UpdateFrame events per second, and unlimited + // RenderFrame events (as fast as the computer can handle). + using (Picking example = new Picking()) + { + // Get the title and category of this example using reflection. + ExampleAttribute info = ((ExampleAttribute)example.GetType().GetCustomAttributes(false)[0]); + example.Title = String.Format("OpenTK | {0} {1}: {2} (use the mouse to pick)", info.Category, info.Difficulty, info.Title); + example.Run(30.0); + } + } + } +} \ No newline at end of file diff --git a/Source/Examples/OpenGL/1.1/StencilCSG.cs b/Source/Examples/OpenGL/1.1/StencilCSG.cs new file mode 100644 index 00000000..b63465f0 --- /dev/null +++ b/Source/Examples/OpenGL/1.1/StencilCSG.cs @@ -0,0 +1,311 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Diagnostics; + +using OpenTK; +using OpenTK.Input; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; + +using Examples.Shapes; + +namespace Examples.Tutorial +{ + + [Example("Stencil CSG", ExampleCategory.OpenGL, "1.1", Documentation = "StencilCSG")] + partial class StencilCSG: GameWindow + { + #region Model Related + DrawableShape OperandB; + DrawableShape OperandA; + float MySphereZOffset = 0f; + float MySphereXOffset = 0f; + + int Texture; + #endregion Model Related + + string WindowTitle; + bool ShowDebugWireFrame = true; + + float CameraZoom; + float CameraRotX; + float CameraRotY; + Vector3 EyePosition = new Vector3( 0f, 0f, 5f ); + + #region Window + public StencilCSG() + : base( 800, 600, new GraphicsMode( new ColorFormat( 8, 8, 8, 8 ), 24, 8 ) ) // request 8-bit stencil buffer + { + base.VSync = VSyncMode.Off; + } + + protected override void OnResize(EventArgs e ) + { + GL.Viewport( 0, 0, Width, Height ); + GL.MatrixMode( MatrixMode.Projection ); + Matrix4 p= Matrix4.Perspective( 45f, Width / (float)Height, 0.1f, 15.0f); + GL.LoadMatrix(ref p); + } + #endregion Window + + protected override void OnLoad(EventArgs e) + { + #region Abort on platforms which will not be able to execute the ops properly + /* + if (!GL.SupportsExtension("VERSION_1_2")) + { + Trace.WriteLine("Aborting. OpenGL 1.2 or later required."); + this.Exit(); + } + + int[] t = new int[2]; + GL.GetInteger(GetPName.MajorVersion, out t[0]); + GL.GetInteger(GetPName.MinorVersion, out t[1]); + Trace.WriteLine("OpenGL Context Version: " + t[0] + "." + t[1]); + + GL.GetInteger(GetPName.DepthBits, out t[0]); + Trace.WriteLine("Depth Bits: " + t[0]); + GL.GetInteger(GetPName.StencilBits, out t[1]); + Trace.WriteLine("Stencil Bits: " + t[1]); + + if (t[0] < 16) + { + Trace.WriteLine("Aborting. Need at least 16 depth bits, only " + t[0] + " available."); + this.Exit(); + } + + if (t[1] < 1) + { + Trace.WriteLine("Aborting. Need at least 1 stencil bit, only " + t[1] + " available."); + this.Exit(); + } + */ + #endregion Abort on platforms which will not be able to execute the ops properly + + WindowTitle = "Cube-Sphere Stencil CSG " + GL.GetString(StringName.Renderer) + " (GL " + GL.GetString(StringName.Version) + ")"; + + #region GL States + GL.ClearColor(.08f, .12f, .16f, 1f); + + GL.Enable(EnableCap.DepthTest); + GL.DepthFunc(DepthFunction.Less); + GL.ClearDepth(1.0); + + GL.Enable(EnableCap.StencilTest); + GL.ClearStencil(0); + GL.StencilMask(0xFFFFFFFF); // read&write + + GL.Enable(EnableCap.CullFace); + GL.FrontFace(FrontFaceDirection.Ccw); + GL.CullFace(CullFaceMode.Back); + + GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); + + GL.Color4(1f, 1f, 1f, 1f); + + GL.Enable(EnableCap.Lighting); + GL.Enable(EnableCap.Light0); + GL.ShadeModel(ShadingModel.Smooth); + + #endregion GL States + + #region Load Texture + Bitmap bitmap = new Bitmap("Data/Textures/logo-dark.jpg"); + bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY); + + GL.GenTextures(1, out Texture); + GL.BindTexture(TextureTarget.Texture2D, Texture); + + BitmapData data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); + GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); + GL.Finish(); + bitmap.UnlockBits(data); + #endregion Load Texture + + OperandA = new ChamferCube(1.5, 2.0, 2.5, ChamferCube.SubDivs.Four, 0.42, true); + OperandB = new SlicedSphere(2.0f, Vector3d.Zero, + SlicedSphere.eSubdivisions.Three, + new SlicedSphere.eDir[] { SlicedSphere.eDir.All }, + true); + + #region Invert Operand B's Normals + // only the inside of the operand is ever drawn to color buffers and lighting requires this. + BeginMode tempPrimMode; + VertexT2dN3dV3d[] tempVertices; + uint[] tempIndices; + + OperandB.GetArraysforVBO(out tempPrimMode, out tempVertices, out tempIndices); + OperandB.Dispose(); + + for (int i = 0; i < tempVertices.Length; i++) + { + tempVertices[i].Normal.Mult(-1.0); + tempVertices[i].Normal.Normalize(); + } + + OperandB = new VboShape(ref tempPrimMode, ref tempVertices, ref tempIndices, true); + #endregion Invert Operand B's Normals + } + + protected override void OnUnload(EventArgs e) + { + GL.DeleteTextures( 1, ref Texture ); + + OperandA.Dispose(); + OperandB.Dispose(); + + base.OnUnload( e ); + } + + protected override void OnUpdateFrame( FrameEventArgs e ) + { + + if (Keyboard[OpenTK.Input.Key.Escape]) + { + this.Exit(); + } + + if (Keyboard[Key.Space]) + { + ShowDebugWireFrame = !ShowDebugWireFrame; + } + + #region Magic numbers for camera + CameraRotX = -Mouse.X * .5f; + CameraRotY = Mouse.Y * .5f; + CameraZoom = Mouse.Wheel * .2f; + #endregion Magic numbers for camera + } + + public void DrawOperandB() + { + GL.PushMatrix(); + GL.Translate( Math.Cos(MySphereXOffset), -1f, Math.Cos(MySphereZOffset) ); + OperandB.Draw(); + GL.PopMatrix(); + } + + public void DrawOperandA() + { + GL.Enable( EnableCap.Texture2D ); + OperandA.Draw(); + GL.Disable( EnableCap.Texture2D ); + } + + public void RenderCsg() + { + // first pass + GL.Disable( EnableCap.StencilTest ); + + GL.ColorMask( false, false, false, false ); + GL.CullFace( CullFaceMode.Front ); + DrawOperandB();// draw front-faces into depth buffer + + // use stencil plane to find parts of b in a + GL.DepthMask( false ); + GL.Enable( EnableCap.StencilTest ); + GL.StencilFunc( StencilFunction.Always, 0, 0 ); + + GL.StencilOp( StencilOp.Keep, StencilOp.Keep, StencilOp.Incr ); + GL.CullFace( CullFaceMode.Back ); + DrawOperandA(); // increment the stencil where the front face of a is drawn + + GL.StencilOp( StencilOp.Keep, StencilOp.Keep, StencilOp.Decr ); + GL.CullFace( CullFaceMode.Front ); + DrawOperandA(); // decrement the stencil buffer where the back face of a is drawn + + GL.DepthMask( true ); + GL.Disable( EnableCap.DepthTest ); + + GL.ColorMask( true, true, true, true ); + GL.StencilFunc( StencilFunction.Notequal, 0, 1 ); + DrawOperandB(); // draw the part of b that's in a + + // fix depth + GL.ColorMask( false, false, false, false ); + GL.Enable( EnableCap.DepthTest ); + GL.Disable( EnableCap.StencilTest ); + GL.DepthFunc( DepthFunction.Always ); + DrawOperandA(); + GL.DepthFunc( DepthFunction.Less ); + + // second pass + GL.CullFace( CullFaceMode.Back ); + DrawOperandA(); + + GL.DepthMask( false ); + GL.Enable( EnableCap.StencilTest ); + + GL.StencilFunc( StencilFunction.Always, 0, 0 ); + GL.StencilOp( StencilOp.Keep, StencilOp.Keep, StencilOp.Incr ); + DrawOperandB(); // increment the stencil where the front face of b is drawn + + GL.StencilOp( StencilOp.Keep, StencilOp.Keep, StencilOp.Decr ); + GL.CullFace( CullFaceMode.Front ); + DrawOperandB(); // decrement the stencil buffer where the back face of b is drawn + + GL.DepthMask( true ); + GL.Disable( EnableCap.DepthTest ); + + GL.ColorMask( true, true, true, true ); + GL.StencilFunc( StencilFunction.Equal, 0, 1 ); + GL.CullFace( CullFaceMode.Back ); + DrawOperandA(); // draw the part of a that's in b + + GL.Enable( EnableCap.DepthTest ); + } + + protected override void OnRenderFrame( FrameEventArgs e ) + { + this.Title = WindowTitle + " fps: " + ( 1f / e.Time ); + + MySphereZOffset += (float)( e.Time * 3.1 ); + MySphereXOffset += (float)( e.Time * 4.2 ); + + #region Transform setup + GL.Clear( ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit ); + + // Camera + GL.MatrixMode( MatrixMode.Modelview ); + Matrix4 mv = Matrix4.LookAt( EyePosition, Vector3.Zero, Vector3.UnitY ); + GL.LoadMatrix(ref mv); + + GL.Translate( 0f, 0f, CameraZoom ); + GL.Rotate( CameraRotX, Vector3.UnitY ); + GL.Rotate( CameraRotY, Vector3.UnitX ); + #endregion Transform setup + + RenderCsg(); + + // --------------------------------- + + if ( ShowDebugWireFrame ) + { + GL.Disable( EnableCap.StencilTest ); + GL.Disable( EnableCap.Lighting ); + GL.Disable( EnableCap.DepthTest ); + GL.PolygonMode( MaterialFace.Front, PolygonMode.Line ); + DrawOperandB(); + GL.PolygonMode( MaterialFace.Front, PolygonMode.Fill ); + GL.Enable( EnableCap.DepthTest ); + GL.Enable( EnableCap.Lighting ); + GL.Enable( EnableCap.StencilTest ); + } + this.SwapBuffers(); + } + + [STAThread] + static void Main() + { + using ( StencilCSG example = new StencilCSG() ) + { + Utilities.SetWindowTitle(example); + example.Run( 30.0, 0.0 ); + } + } + + } +} diff --git a/Source/Examples/OpenGL/1.1/TextureMatrix.cs b/Source/Examples/OpenGL/1.1/TextureMatrix.cs new file mode 100644 index 00000000..69bbe589 --- /dev/null +++ b/Source/Examples/OpenGL/1.1/TextureMatrix.cs @@ -0,0 +1,155 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; + +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; +using OpenTK.Input; + +namespace Examples.Tutorial +{ + + [Example("Texture Matrix Wormhole", ExampleCategory.OpenGL, "1.1", Documentation = "TextureMatrix")] + + class TextureMatrix : GameWindow + { + + public TextureMatrix() + : base(800, 600 ) + { + VSync = VSyncMode.Off; + } + + int Texture; + int list; + + protected override void OnLoad(EventArgs e) + { + GL.ClearColor(0f, 0f, 0f, 0f); + GL.Enable(EnableCap.DepthTest); + GL.Enable(EnableCap.CullFace); + + Texture = LoadTexture("Data/Textures/logo-dark.jpg"); + + GL.Enable(EnableCap.Texture2D); + + list = GL.GenLists(1); + + GL.NewList(list, ListMode.Compile); + { + const int slices = 32; + const float distance = 0.25f; + + GL.Begin(BeginMode.Quads); + + for (float scale = 0.26f; scale < 5f; scale += distance) + for (int i = 0; i < slices; i++) + { + Vector3 MiddleCenter = new Vector3((float)(Math.Sin((double)i / slices * 2 * Math.PI) * scale), + (float)(Math.Cos((double)i / slices * 2 * Math.PI) * scale), + (float)(1f / scale)); + Vector3 MiddleRight = new Vector3((float)(Math.Sin((double)(i + 1) / slices * 2 * Math.PI) * scale), + (float)(Math.Cos((double)(i + 1) / slices * 2 * Math.PI) * scale), + (float)(1f / scale)); + Vector3 BottomRight = new Vector3((float)(Math.Sin((double)(i + 1) / slices * 2 * Math.PI) * (scale - distance)), + (float)(Math.Cos((double)(i + 1) / slices * 2 * Math.PI) * (scale - distance)), + (float)(1f / (scale - distance))); + Vector3 BottomCenter = new Vector3((float)(Math.Sin((double)i / slices * 2 * Math.PI) * (scale - distance)), + (float)(Math.Cos((double)i / slices * 2 * Math.PI) * (scale - distance)), + (float)(1f / (scale - distance))); + + GL.TexCoord2(1f, 0f); + GL.Vertex3(MiddleCenter); + GL.TexCoord2(0f, 0f); + GL.Vertex3(MiddleRight); + GL.TexCoord2(0f, 1f); + GL.Vertex3(BottomRight); + GL.TexCoord2(1f, 1f); + GL.Vertex3(BottomCenter); + } + + GL.End(); + } + GL.EndList(); + } + + protected override void OnResize(EventArgs e) + { + GL.Viewport(this.ClientRectangle); + + Matrix4 projection = Matrix4.Perspective(45.0f, Width / (float)Height, 1.0f, 50.0f); + GL.MatrixMode(MatrixMode.Projection); + GL.LoadMatrix(ref projection); + } + + protected override void OnUpdateFrame(FrameEventArgs e) + { + if (Keyboard[Key.Escape]) + Exit(); + } + + protected override void OnRenderFrame(FrameEventArgs e) + { + GL.Clear(ClearBufferMask.ColorBufferBit | + ClearBufferMask.DepthBufferBit); + + GL.MatrixMode(MatrixMode.Texture); + GL.Translate(e.Time/2, -e.Time, 0f); + + Matrix4 modelview = Matrix4.LookAt(Vector3.Zero, Vector3.UnitZ, Vector3.UnitY); + GL.MatrixMode(MatrixMode.Modelview); + GL.LoadMatrix(ref modelview); + + GL.Translate(0f, 0f, 1.5f); + + GL.Rotate(Mouse.X, Vector3.UnitY); + GL.Rotate(Mouse.Y, Vector3.UnitX); + + GL.CallList(list); + + SwapBuffers(); + } + + public static int LoadTexture(string filename) + { + TextureTarget Target = TextureTarget.Texture2D; + + int texture; + GL.GenTextures(1, out texture); + GL.BindTexture(Target, texture); + + Bitmap bitmap = new Bitmap(filename); + BitmapData data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); + GL.TexImage2D(Target, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0); + GL.Finish(); + bitmap.UnlockBits(data); + + GL.TexParameter(Target, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); + GL.TexParameter(Target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); + + GL.TexParameter(Target, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat); + GL.TexParameter(Target, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat); + + if (GL.GetError() != ErrorCode.NoError) + throw new Exception("Error loading texture " + filename); + + return texture; + } + + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + using (TextureMatrix example = new TextureMatrix()) + { + // Get the title and category of this example using reflection. + ExampleAttribute info = ((ExampleAttribute)example.GetType().GetCustomAttributes(false)[0]); + example.Title = String.Format("OpenTK | {0} {1}: {2}", info.Category, info.Difficulty, info.Title); + example.Run(30.0, 0.0); + } + } + } +} \ No newline at end of file diff --git a/Source/Examples/OpenGL/1.1/Textures.cs b/Source/Examples/OpenGL/1.1/Textures.cs index a60f0bd9..4a91a917 100644 --- a/Source/Examples/OpenGL/1.1/Textures.cs +++ b/Source/Examples/OpenGL/1.1/Textures.cs @@ -25,7 +25,7 @@ namespace Examples.Tutorial [Example("Texture mapping", ExampleCategory.OpenGL, "1.1", Documentation="Textures")] public class Textures : GameWindow { - Bitmap bitmap = new Bitmap("Data/logo.jpg"); + Bitmap bitmap = new Bitmap("Data/Textures/logo.jpg"); int texture; public Textures() : base(800, 600) { } diff --git a/Source/Examples/OpenGL/1.5/DynamicVBO.cs b/Source/Examples/OpenGL/1.5/DynamicVBO.cs new file mode 100644 index 00000000..622dad84 --- /dev/null +++ b/Source/Examples/OpenGL/1.5/DynamicVBO.cs @@ -0,0 +1,198 @@ +using System; + +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; +using OpenTK.Input; + +namespace Examples.Tutorial +{ + + [Example("Dynamic Vertex Buffer Objects", ExampleCategory.OpenGL, "VBO", Documentation = "DynamicVBO")] + class T09_VBO_Dynamic: GameWindow + { + /// Creates a 800x600 window with the specified title. + public T09_VBO_Dynamic( ) + : base( 800, 600 ) + { + this.VSync = VSyncMode.Off; + } + + #region Particles + const int MaxParticleCount = 1000; + int VisibleParticleCount; + VertexC4ubV3f[] VBO = new VertexC4ubV3f[MaxParticleCount]; + ParticleAttribut[] ParticleAttributes = new ParticleAttribut[MaxParticleCount]; + + // this struct is used for drawing + struct VertexC4ubV3f + { + public byte R, G, B, A; + public Vector3 Position; + + public static int SizeInBytes = 16; + } + + // this struct is used for updates + struct ParticleAttribut + { + public Vector3 Direction; + public uint Age; + // more stuff could be here: Rotation, Radius, whatever + } + + uint VBOHandle; + #endregion Particles + + /// Load resources here. + /// Not used. + protected override void OnLoad( EventArgs e ) + { + GL.ClearColor( .1f, 0f, .1f, 0f ); + GL.Enable( EnableCap.DepthTest ); + + // Setup parameters for Points + GL.PointSize( 5f ); + GL.Enable( EnableCap.PointSmooth ); + GL.Hint( HintTarget.PointSmoothHint, HintMode.Nicest ); + + // Setup VBO state + GL.EnableClientState( EnableCap.ColorArray ); + GL.EnableClientState( EnableCap.VertexArray ); + + GL.GenBuffers( 1, out VBOHandle ); + + // Since there's only 1 VBO in the app, might aswell setup here. + GL.BindBuffer( BufferTarget.ArrayBuffer, VBOHandle ); + GL.ColorPointer( 4, ColorPointerType.UnsignedByte, VertexC4ubV3f.SizeInBytes, (IntPtr) 0 ); + GL.VertexPointer( 3, VertexPointerType.Float, VertexC4ubV3f.SizeInBytes, (IntPtr) (4*sizeof(byte)) ); + + Random rnd = new Random( ); + Vector3 temp = Vector3.Zero; + + // generate some random stuff for the particle system + for ( uint i = 0 ; i < MaxParticleCount ; i++ ) + { + VBO[i].R = (byte) rnd.Next( 0, 256 ); + VBO[i].G = (byte) rnd.Next( 0, 256 ); + VBO[i].B = (byte) rnd.Next( 0, 256 ); + VBO[i].A = (byte) rnd.Next( 0, 256 ); // isn't actually used + VBO[i].Position = Vector3.Zero; // all particles are born at the origin + + // generate direction vector in the range [-0.1f...+0.1f] + // that's slow enough so you can see particles 'disappear' when they are respawned + temp.X = (float) ( ( rnd.NextDouble( ) - 0.5 ) * 0.2 ); + temp.Y = (float) ( ( rnd.NextDouble( ) - 0.5 ) * 0.2 ); + temp.Z = (float) ( ( rnd.NextDouble( ) - 0.5 ) * 0.2 ); + ParticleAttributes[i].Direction = temp; // copy + ParticleAttributes[i].Age = 0; + } + + VisibleParticleCount = 0; + + } + + protected override void OnUnload(EventArgs e) + { + GL.DeleteBuffers( 1, ref VBOHandle ); + } + + /// + /// Called when your window is resized. Set your viewport here. It is also + /// a good place to set up your projection matrix (which probably changes + /// along when the aspect ratio of your window). + /// + /// Contains information on the new Width and Size of the GameWindow. + protected override void OnResize(EventArgs e) + { + GL.Viewport(0, 0, Width, Height); + + GL.MatrixMode(MatrixMode.Projection); + Matrix4 p = Matrix4.Perspective(45.0f, Width / (float)Height, 0.1f, 50.0f); + GL.LoadMatrix(ref p); + + GL.MatrixMode(MatrixMode.Modelview); + Matrix4 mv = Matrix4.LookAt(Vector3.UnitZ, Vector3.Zero, Vector3.UnitY); + GL.LoadMatrix(ref mv); + } + + /// + /// Called when it is time to setup the next frame. Add you game logic here. + /// + /// Contains timing information for framerate independent logic. + protected override void OnUpdateFrame( FrameEventArgs e ) + { + if ( Keyboard[Key.Escape] ) + { + Exit( ); + } + + // will update particles here. When using a Physics SDK, it's update rate is much higher than + // the framerate and it would be a waste of cycles copying to the VBO more often than drawing it. + if ( VisibleParticleCount < MaxParticleCount ) + VisibleParticleCount++; + + Vector3 temp; + + for ( int i = MaxParticleCount - VisibleParticleCount ; i < MaxParticleCount ; i++ ) + { + if ( ParticleAttributes[i].Age >= MaxParticleCount ) + { + // reset particle + ParticleAttributes[i].Age = 0; + VBO[i].Position = Vector3.Zero; + } else + { + ParticleAttributes[i].Age++; + Vector3.Mult( ref ParticleAttributes[i].Direction, (float) e.Time, out temp ); + Vector3.Add( ref VBO[i].Position, ref temp, out VBO[i].Position ); + } + } + } + + /// + /// Called when it is time to render the next frame. Add your rendering code here. + /// + /// Contains timing information. + protected override void OnRenderFrame( FrameEventArgs e ) + { + this.Title = VisibleParticleCount + " Points. FPS: " + string.Format( "{0:F}", 1.0 / e.Time ); + + GL.Clear( ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit ); + + GL.PushMatrix( ); + + GL.Translate( 0f, 0f, -5f ); + + // Tell OpenGL to discard old VBO when done drawing it and reserve memory _now_ for a new buffer. + // without this, GL would wait until draw operations on old VBO are complete before writing to it + GL.BufferData( BufferTarget.ArrayBuffer, (IntPtr) ( VertexC4ubV3f.SizeInBytes * MaxParticleCount ), IntPtr.Zero, BufferUsageHint.StreamDraw ); + // Fill newly allocated buffer + GL.BufferData( BufferTarget.ArrayBuffer, (IntPtr) ( VertexC4ubV3f.SizeInBytes * MaxParticleCount ), VBO, BufferUsageHint.StreamDraw ); + // Only draw particles that are alive + GL.DrawArrays( BeginMode.Points, MaxParticleCount - VisibleParticleCount, VisibleParticleCount ); + + GL.PopMatrix( ); + + SwapBuffers( ); + } + + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // The 'using' idiom guarantees proper resource cleanup. + // We request 30 UpdateFrame events per second, and unlimited + // RenderFrame events (as fast as the computer can handle). + using (T09_VBO_Dynamic example = new T09_VBO_Dynamic()) + { + // Get the title and category of this example using reflection. + ExampleAttribute info = ((ExampleAttribute)example.GetType().GetCustomAttributes(false)[0]); + example.Title = String.Format("OpenTK | {0} {1}: {2}", info.Category, info.Difficulty, info.Title); + example.Run(60.0, 0.0); + } + } + } +} \ No newline at end of file diff --git a/Source/Examples/OpenGL/1.5/VertexBufferObject.cs b/Source/Examples/OpenGL/1.5/VertexBufferObject.cs index 2cd7cd73..1441e68b 100644 --- a/Source/Examples/OpenGL/1.5/VertexBufferObject.cs +++ b/Source/Examples/OpenGL/1.5/VertexBufferObject.cs @@ -21,7 +21,7 @@ using OpenTK.Platform; namespace Examples.Tutorial { - [Example("Vertex Buffer Objects", ExampleCategory.OpenGL, "1.5", false, Documentation="VertexBufferObject")] + [Example("Static Vertex Buffer Objects", ExampleCategory.OpenGL, "VBO", Documentation="VertexBufferObject")] public class T08_VBO : GameWindow { #region --- Private Fields --- diff --git a/Source/Examples/OpenGL/GLSL/DDSCubeMap.cs b/Source/Examples/OpenGL/GLSL/DDSCubeMap.cs new file mode 100644 index 00000000..5cd968b0 --- /dev/null +++ b/Source/Examples/OpenGL/GLSL/DDSCubeMap.cs @@ -0,0 +1,278 @@ +#region --- License --- +/* Licensed under the MIT/X11 license. + * Copyright (c) 2006-2008 the OpenTK Team. + * This notice may not be removed from any source distribution. + * See license.txt for licensing details. + */ +#endregion + +using System; +using System.Drawing; +using System.Collections.Generic; +using System.Diagnostics; +using System.Windows.Forms; +using System.IO; +using System.Text; + +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; + +using Examples.Shapes; +using Examples.TextureLoaders; + +namespace Examples.Tutorial +{ + [Example("DDS Cube Map", ExampleCategory.OpenGL, "GLSL", Documentation = "DDSCubeMap")] + public class T13_GLSL_Earth: GameWindow + { + public T13_GLSL_Earth( ) + : base( 800, 800 ) + { + } + + #region internal Fields + + // Shader + int VertexShaderObject, FragmentShaderObject, ProgramObject; + const string VertexShaderFilename = "Data/Shaders/CubeMap_VS.glsl"; + const string FragmentShaderFilename = "Data/Shaders/CubeMap_FS.glsl"; + + // Textures + const TextureUnit TMU0_Unit = TextureUnit.Texture0; + const int TMU0_UnitInteger = 0; + const string TMU0_Filename = "Data/Textures/Earth CubeMap.dds"; + uint TMU0_Handle; + TextureTarget TMU0_Target; + + // DL + DrawableShape sphere; + + // Camera + Vector3 EyePos = new Vector3( 0.0f, 0.0f, 3.0f ); + Vector3 Trackball = Vector3.Zero; + + #endregion internal Fields + + /// Setup OpenGL and load resources here. + /// Not used. + protected override void OnLoad(EventArgs e) + { + this.VSync = VSyncMode.Off; + + /* + // Check for necessary capabilities: + if ( !GL.SupportsExtension( "VERSION_2_0" ) ) + { + MessageBox.Show( "You need at least OpenGL 2.0 to run this example. Aborting.", + "GLSL not supported", MessageBoxButtons.OK, MessageBoxIcon.Exclamation ); + this.Exit( ); + } + + if ( !GL.SupportsExtension( "GL_ARB_texture_compression" ) || + !GL.SupportsExtension( "GL_EXT_texture_compression_s3tc" ) ) + { + MessageBox.Show( "Texture compression extensions not found. Trying to run anyways.", + "Possible problem", MessageBoxButtons.OK, MessageBoxIcon.Warning ); + } + */ + + #region GL State + + GL.ClearColor( 0f, 0f, 0f, 0f ); + + GL.Disable( EnableCap.Dither ); + + GL.Enable( EnableCap.CullFace ); + GL.FrontFace( FrontFaceDirection.Ccw ); + GL.PolygonMode( MaterialFace.Front, PolygonMode.Fill ); + // GL.PolygonMode( MaterialFace.Back, PolygonMode.Line ); + + #endregion GL State + + #region Shaders + + string LogInfo; + + // Load&Compile Vertex Shader + + using ( StreamReader sr = new StreamReader( VertexShaderFilename ) ) + { + VertexShaderObject = GL.CreateShader( ShaderType.VertexShader ); + GL.ShaderSource( VertexShaderObject, sr.ReadToEnd( ) ); + GL.CompileShader( VertexShaderObject ); + } + + GL.GetShaderInfoLog( VertexShaderObject, out LogInfo ); + if ( LogInfo.Length > 0 && !LogInfo.Contains( "hardware" ) ) + Trace.WriteLine( "Vertex Shader failed!\nLog:\n" + LogInfo ); + else + Trace.WriteLine( "Vertex Shader compiled without complaint." ); + + // Load&Compile Fragment Shader + + using ( StreamReader sr = new StreamReader( FragmentShaderFilename ) ) + { + FragmentShaderObject = GL.CreateShader( ShaderType.FragmentShader ); + GL.ShaderSource( FragmentShaderObject, sr.ReadToEnd( ) ); + GL.CompileShader( FragmentShaderObject ); + } + GL.GetShaderInfoLog( FragmentShaderObject, out LogInfo ); + + if ( LogInfo.Length > 0 && !LogInfo.Contains( "hardware" ) ) + Trace.WriteLine( "Fragment Shader failed!\nLog:\n" + LogInfo ); + else + Trace.WriteLine( "Fragment Shader compiled without complaint." ); + + // Link the Shaders to a usable Program + ProgramObject = GL.CreateProgram( ); + GL.AttachShader( ProgramObject, VertexShaderObject ); + GL.AttachShader( ProgramObject, FragmentShaderObject ); + + // link it all together + GL.LinkProgram( ProgramObject ); + + // flag ShaderObjects for delete when not used anymore + GL.DeleteShader( VertexShaderObject ); + GL.DeleteShader( FragmentShaderObject ); + + int[] temp = new int[1]; + GL.GetProgram( ProgramObject, ProgramParameter.LinkStatus, out temp[0] ); + Trace.WriteLine( "Linking Program (" + ProgramObject + ") " + ( ( temp[0] == 1 ) ? "succeeded." : "FAILED!" ) ); + if ( temp[0] != 1 ) + { + GL.GetProgramInfoLog( ProgramObject, out LogInfo ); + Trace.WriteLine( "Program Log:\n" + LogInfo ); + } + + GL.GetProgram( ProgramObject, ProgramParameter.ActiveAttributes, out temp[0] ); + Trace.WriteLine( "Program registered " + temp[0] + " Attributes. (Should be 4: Pos, UV, Normal, Tangent)" ); + + Trace.WriteLine( "Tangent attribute bind location: " + GL.GetAttribLocation( ProgramObject, "AttributeTangent" ) ); + + Trace.WriteLine( "End of Shader build. GL Error: " + GL.GetError( ) ); + + #endregion Shaders + + #region Textures + + TextureLoaderParameters.FlipImages = false; + TextureLoaderParameters.MagnificationFilter = TextureMagFilter.Linear; + TextureLoaderParameters.MinificationFilter = TextureMinFilter.Linear; + TextureLoaderParameters.WrapModeS = TextureWrapMode.ClampToEdge; + TextureLoaderParameters.WrapModeT = TextureWrapMode.ClampToEdge; + TextureLoaderParameters.EnvMode = TextureEnvMode.Modulate; + + ImageDDS.LoadFromDisk( TMU0_Filename, out TMU0_Handle, out TMU0_Target ); + Trace.WriteLine( "Loaded " + TMU0_Filename + " with handle " + TMU0_Handle + " as " + TMU0_Target ); + + #endregion Textures + + Trace.WriteLine( "End of Texture Loading. GL Error: " + GL.GetError( ) ); + Trace.WriteLine( ""); + + sphere = new SlicedSphere(1.5f, Vector3d.Zero, SlicedSphere.eSubdivisions.Four, new SlicedSphere.eDir[] { SlicedSphere.eDir.All }, true); + + } + + protected override void OnUnload(EventArgs e) + { + sphere.Dispose(); + + GL.DeleteProgram( ProgramObject ); + GL.DeleteTextures( 1, ref TMU0_Handle ); + + base.OnUnload( e ); + } + + /// Respond to resize events here. + /// Contains information on the new GameWindow size. + /// There is no need to call the base implementation. + protected override void OnResize( EventArgs e ) + { + GL.Viewport( 0, 0, Width, Height ); + + GL.MatrixMode( MatrixMode.Projection ); + Matrix4 p = Matrix4.Perspective( 45.0f, Width / (float) Height, 0.1f, 10.0f ); + GL.LoadMatrix(ref p); + + GL.MatrixMode( MatrixMode.Modelview ); + GL.LoadIdentity( ); + + base.OnResize( e ); + } + + /// Add your game logic here. + /// Contains timing information. + /// There is no need to call the base implementation. + protected override void OnUpdateFrame( FrameEventArgs e ) + { + base.OnUpdateFrame( e ); + + if ( Keyboard[OpenTK.Input.Key.Escape] ) + this.Exit( ); + if ( Keyboard[OpenTK.Input.Key.Space] ) + Trace.WriteLine( "GL: " + GL.GetError( ) ); + + Trackball.X = Mouse.X; + Trackball.Y = Mouse.Y; + Trackball.Z = Mouse.Wheel * 0.5f; + + } + + /// Add your game rendering code here. + /// Contains timing information. + /// There is no need to call the base implementation. + protected override void OnRenderFrame(FrameEventArgs e) + { + this.Title = "FPS: " + 1 / e.Time; + + GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); + + GL.UseProgram(ProgramObject); + + #region Textures + + GL.ActiveTexture(TMU0_Unit); + GL.BindTexture(TMU0_Target, TMU0_Handle); + + #endregion Textures + + #region Uniforms + + GL.Uniform1(GL.GetUniformLocation(ProgramObject, "Earth"), TMU0_UnitInteger); + + #endregion Uniforms + + GL.PushMatrix(); + Matrix4 temp = Matrix4.LookAt(EyePos, Vector3.Zero, Vector3.UnitY); + GL.MultMatrix(ref temp); + + GL.Rotate(Trackball.X, Vector3.UnitY); + GL.Rotate(Trackball.Y, Vector3.UnitX); + + #region Draw + + GL.Color3(1f, 1f, 1f); + + sphere.Draw(); + + #endregion Draw + + GL.PopMatrix(); + + this.SwapBuffers(); + } + + /// Entry point + [STAThread] + public static void Main( ) + { + using ( T13_GLSL_Earth example = new T13_GLSL_Earth( ) ) + { + Utilities.SetWindowTitle(example); + example.Run( 30.0, 0.0 ); + } + } + } +} diff --git a/Source/Examples/OpenGL/GLSL/JuliaSetFractal.cs b/Source/Examples/OpenGL/GLSL/JuliaSetFractal.cs index 9b1d6d5f..235bd0c6 100644 --- a/Source/Examples/OpenGL/GLSL/JuliaSetFractal.cs +++ b/Source/Examples/OpenGL/GLSL/JuliaSetFractal.cs @@ -157,7 +157,7 @@ namespace Examples.Tutorial GL.TexParameter(TextureTarget.Texture1D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); GL.TexParameter(TextureTarget.Texture1D, TextureParameterName.TextureWrapS, (int)(TextureWrapMode)All.ClampToEdge); - using (Bitmap bitmap = new Bitmap("Data/JuliaColorTable.bmp")) + using (Bitmap bitmap = new Bitmap("Data/Textures/JuliaColorTable.bmp")) { BitmapData data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb); diff --git a/Source/Examples/OpenGL/GLSL/SwizzledParallax.cs b/Source/Examples/OpenGL/GLSL/SwizzledParallax.cs new file mode 100644 index 00000000..7ab31500 --- /dev/null +++ b/Source/Examples/OpenGL/GLSL/SwizzledParallax.cs @@ -0,0 +1,379 @@ +#region --- License --- +/* Licensed under the MIT/X11 license. + * Copyright (c) 2006-2008 the OpenTK Team. + * This notice may not be removed from any source distribution. + * See license.txt for licensing details. + */ +#endregion + +using System; +using System.Diagnostics; +using System.Drawing; +using System.IO; + +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; + +using Examples.TextureLoaders; + +namespace Examples.Tutorial +{ + /// Demonstrates Swizzled DXT5 Parallax Mapping + /// The idea is described in more detail right here: http://www.opentk.com/node/394 + /// + [Example("Swizzled Parallax Mapping", ExampleCategory.OpenGL, "GLSL", Documentation = "SwizzledParallax")] + public class T12_GLSL_Parallax: GameWindow + { + public T12_GLSL_Parallax( ) + : base( 800, 600 ) + { + } + + #region internal Fields + + // Shader + int VertexShaderObject, FragmentShaderObject, ProgramObject; + const string VertexShaderFilename = "Data/Shaders/Parallax_VS.glsl"; + const string FragmentShaderFilename = "Data/Shaders/Parallax_FS.glsl"; + + const int AttribTangent = 5; // slot where to pass tangents to VS, not sure which are reserved besides 0 + Vector3 Tangent = new Vector3( 1f, 0f, 0f ); + Vector3 Normal = new Vector3( 0f, 0f, 1f ); + + // Material parameter + //Vector3 MaterialScaleAndBiasAndShininess = new Vector3( 0.07f, 0.0f, 38.0f ); // for Metal tex + Vector3 MaterialScaleAndBiasAndShininess = new Vector3( 0.04f, 0.0f, 92.0f ); // for Rock tex + + // Textures + const TextureUnit TMU0_Unit = TextureUnit.Texture0; + const int TMU0_UnitInteger = 0; + //const string TMU0_Filename = "Data/Textures/Swizzled Metal Diffuse&Height.dds"; + const string TMU0_Filename = "Data/Textures/Swizzled Rock Diffuse&Height.dds"; + uint TMU0_Handle; + TextureTarget TMU0_Target; + + const TextureUnit TMU1_Unit = TextureUnit.Texture1; + const int TMU1_UnitInteger = 1; + //const string TMU1_Filename = "Data/Textures/Swizzled Metal Normal&Gloss.dds"; + const string TMU1_Filename = "Data/Textures/Swizzled Rock Normal&Gloss.dds"; + uint TMU1_Handle; + TextureTarget TMU1_Target; + + // Camera + Vector3 EyePos = new Vector3( 0.0f, 0.0f, 3.0f ); + + // Light + Vector3 LightPosition = new Vector3( 0.0f, 1.0f, 1.0f ); + Vector3 LightDiffuse = new Vector3( 0.5f, 0.5f, 0.5f ); + Vector3 LightSpecular = new Vector3( 1f, 1f, 1f ); + + #endregion internal Fields + + /// Setup OpenGL and load resources here. + /// Not used. + protected override void OnLoad(EventArgs e) + { + this.VSync = VSyncMode.Off; + + /* + // Check for necessary capabilities: + if ( !GL.SupportsExtension( "VERSION_2_0" ) ) + { + MessageBox.Show( "You need at least OpenGL 2.0 to run this example. Aborting.", + "GLSL not supported", MessageBoxButtons.OK, MessageBoxIcon.Exclamation ); + this.Exit( ); + } + + if ( !GL.SupportsExtension( "GL_ARB_texture_compression" ) || + !GL.SupportsExtension( "GL_EXT_texture_compression_s3tc" ) ) + { + MessageBox.Show( "Texture compression extensions not found. Trying to run anyways.", + "Possible problem", MessageBoxButtons.OK, MessageBoxIcon.Warning ); + } + */ + + int[] temp = new int[1]; + GL.GetInteger( GetPName.MaxTextureImageUnits, out temp[0] ); + Trace.WriteLine( temp[0] + " TMU's for Fragment Shaders found. (2 required)" ); + + GL.GetInteger( GetPName.MaxVaryingFloats, out temp[0] ); + Trace.WriteLine( temp[0] + " varying floats between VS and FS allowed. (6 required)" ); + + GL.GetInteger( GetPName.MaxVertexUniformComponents, out temp[0] ); + Trace.WriteLine( temp[0] + " uniform components allowed in Vertex Shader. (6 required)" ); + + GL.GetInteger( GetPName.MaxFragmentUniformComponents, out temp[0] ); + Trace.WriteLine( temp[0] + " uniform components allowed in Fragment Shader. (11 required)" ); + Trace.WriteLine("" ); + + #region GL State + + GL.ClearColor( 0.2f, 0f, 0.4f, 0f ); + + GL.PointSize( 10f ); + + GL.Disable( EnableCap.Dither ); + + GL.FrontFace( FrontFaceDirection.Ccw ); + GL.PolygonMode( MaterialFace.Front, PolygonMode.Fill ); + GL.PolygonMode( MaterialFace.Back, PolygonMode.Line ); + + #endregion GL State + + #region Shaders + + string LogInfo; + + // Load&Compile Vertex Shader + + using ( StreamReader sr = new StreamReader( VertexShaderFilename ) ) + { + VertexShaderObject = GL.CreateShader( ShaderType.VertexShader ); + GL.ShaderSource( VertexShaderObject, sr.ReadToEnd( ) ); + GL.CompileShader( VertexShaderObject ); + } + + GL.GetShaderInfoLog( VertexShaderObject, out LogInfo ); + if ( LogInfo.Length > 0 && !LogInfo.Contains( "hardware" ) ) + Trace.WriteLine( "Vertex Shader failed!\nLog:\n" + LogInfo ); + else + Trace.WriteLine( "Vertex Shader compiled without complaint." ); + + // Load&Compile Fragment Shader + + using ( StreamReader sr = new StreamReader( FragmentShaderFilename ) ) + { + FragmentShaderObject = GL.CreateShader( ShaderType.FragmentShader ); + GL.ShaderSource( FragmentShaderObject, sr.ReadToEnd( ) ); + GL.CompileShader( FragmentShaderObject ); + } + GL.GetShaderInfoLog( FragmentShaderObject, out LogInfo ); + + if ( LogInfo.Length > 0 && !LogInfo.Contains( "hardware" ) ) + Trace.WriteLine( "Fragment Shader failed!\nLog:\n" + LogInfo ); + else + Trace.WriteLine( "Fragment Shader compiled without complaint." ); + + // Link the Shaders to a usable Program + ProgramObject = GL.CreateProgram( ); + GL.AttachShader( ProgramObject, VertexShaderObject ); + GL.AttachShader( ProgramObject, FragmentShaderObject ); + + // must bind the attribute before linking + GL.BindAttribLocation( ProgramObject, AttribTangent, "AttributeTangent" ); + + // link it all together + GL.LinkProgram( ProgramObject ); + + // flag ShaderObjects for delete when not used anymore + GL.DeleteShader( VertexShaderObject ); + GL.DeleteShader( FragmentShaderObject ); + + GL.GetProgram( ProgramObject, ProgramParameter.LinkStatus, out temp[0] ); + Trace.WriteLine( "Linking Program (" + ProgramObject + ") " + ( ( temp[0] == 1 ) ? "succeeded." : "FAILED!" ) ); + if ( temp[0] != 1 ) + { + GL.GetProgramInfoLog( ProgramObject, out LogInfo ); + Trace.WriteLine( "Program Log:\n" + LogInfo ); + } + + GL.GetProgram( ProgramObject, ProgramParameter.ActiveAttributes, out temp[0] ); + Trace.WriteLine( "Program registered " + temp[0] + " Attributes. (Should be 4: Pos, UV, Normal, Tangent)" ); + + Trace.WriteLine( "Tangent attribute bind location: " + GL.GetAttribLocation( ProgramObject, "AttributeTangent" ) ); + + Trace.WriteLine( "End of Shader build. GL Error: " + GL.GetError( ) ); + + #endregion Shaders + + #region Textures + + TextureLoaderParameters.MagnificationFilter = TextureMagFilter.Linear; + TextureLoaderParameters.MinificationFilter = TextureMinFilter.LinearMipmapLinear; + TextureLoaderParameters.WrapModeS = TextureWrapMode.ClampToBorder; + TextureLoaderParameters.WrapModeT = TextureWrapMode.ClampToBorder; + TextureLoaderParameters.EnvMode = TextureEnvMode.Modulate; + + ImageDDS.LoadFromDisk( TMU0_Filename, out TMU0_Handle, out TMU0_Target ); + Trace.WriteLine( "Loaded " + TMU0_Filename + " with handle " + TMU0_Handle + " as " + TMU0_Target ); + + ImageDDS.LoadFromDisk( TMU1_Filename, out TMU1_Handle, out TMU1_Target ); + Trace.WriteLine( "Loaded " + TMU1_Filename + " with handle " + TMU1_Handle + " as " + TMU1_Target ); + + #endregion Textures + + Trace.WriteLine( "End of Texture Loading. GL Error: " + GL.GetError( ) ); + Trace.WriteLine( ""); + } + + protected override void OnUnload(EventArgs e) + { + GL.DeleteProgram( ProgramObject ); + GL.DeleteTextures( 1, ref TMU0_Handle ); + GL.DeleteTextures( 1, ref TMU1_Handle ); + + base.OnUnload( e ); + } + + /// Respond to resize events here. + /// Contains information on the new GameWindow size. + /// There is no need to call the base implementation. + protected override void OnResize( EventArgs e ) + { + GL.Viewport( 0, 0, Width, Height ); + + GL.MatrixMode( MatrixMode.Projection ); + Matrix4 p = Matrix4.Perspective( 45.0f, Width / (float) Height, 0.1f, 100.0f ); + GL.LoadMatrix(ref p); + + GL.MatrixMode( MatrixMode.Modelview ); + GL.LoadIdentity( ); + + base.OnResize( e ); + } + + /// Add your game logic here. + /// Contains timing information. + /// There is no need to call the base implementation. + protected override void OnUpdateFrame( FrameEventArgs e ) + { + base.OnUpdateFrame( e ); + + if ( Keyboard[OpenTK.Input.Key.Escape] ) + this.Exit( ); + if ( Keyboard[OpenTK.Input.Key.Space] ) + Trace.WriteLine( "GL: " + GL.GetError( ) ); + if ( Keyboard[OpenTK.Input.Key.Q] ) + { + MaterialScaleAndBiasAndShininess.X += 0.01f; + Trace.WriteLine( "Scale: " + MaterialScaleAndBiasAndShininess.X + " Bias: " + MaterialScaleAndBiasAndShininess.Y ); + } + if ( Keyboard[OpenTK.Input.Key.A] ) + { + MaterialScaleAndBiasAndShininess.X -= 0.01f; + Trace.WriteLine( "Scale: " + MaterialScaleAndBiasAndShininess.X + " Bias: " + MaterialScaleAndBiasAndShininess.Y ); + } + if ( Keyboard[OpenTK.Input.Key.W] ) + { + MaterialScaleAndBiasAndShininess.Y += 0.01f; + Trace.WriteLine( "Scale: " + MaterialScaleAndBiasAndShininess.X + " Bias: " + MaterialScaleAndBiasAndShininess.Y ); + } + if ( Keyboard[OpenTK.Input.Key.S] ) + { + MaterialScaleAndBiasAndShininess.Y -= 0.01f; + Trace.WriteLine( "Scale: " + MaterialScaleAndBiasAndShininess.X + " Bias: " + MaterialScaleAndBiasAndShininess.Y ); + } + if ( Keyboard[OpenTK.Input.Key.E] ) + { + MaterialScaleAndBiasAndShininess.Z += 1f; + Trace.WriteLine( "Shininess: " + MaterialScaleAndBiasAndShininess.Z ); + } + if ( Keyboard[OpenTK.Input.Key.D] ) + { + MaterialScaleAndBiasAndShininess.Z -= 1f; + Trace.WriteLine( "Shininess: " + MaterialScaleAndBiasAndShininess.Z ); + } + + LightPosition.X = ( -( this.Width / 2 ) + Mouse.X ) / 100f; + LightPosition.Y = ( ( this.Height / 2 ) - Mouse.Y ) / 100f; + + EyePos.Y = Mouse.Wheel * 0.5f; + } + + /// Add your game rendering code here. + /// Contains timing information. + /// There is no need to call the base implementation. + protected override void OnRenderFrame( FrameEventArgs e ) + { + this.Title = "FPS: " + 1 / e.Time; + + GL.Clear( ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit ); + + GL.UseProgram( ProgramObject ); + + #region Textures + + GL.ActiveTexture( TMU0_Unit ); + GL.BindTexture( TMU0_Target, TMU0_Handle ); + GL.ActiveTexture( TMU1_Unit ); + GL.BindTexture( TMU1_Target, TMU1_Handle ); + + #endregion Textures + + #region Uniforms + + // first Material's uniforms + GL.Uniform1( GL.GetUniformLocation( ProgramObject, "Material_DiffuseAndHeight" ), TMU0_UnitInteger ); + GL.Uniform1( GL.GetUniformLocation( ProgramObject, "Material_NormalAndGloss" ), TMU1_UnitInteger ); + GL.Uniform3( GL.GetUniformLocation( ProgramObject, "Material_ScaleBiasShininess" ), MaterialScaleAndBiasAndShininess.X, MaterialScaleAndBiasAndShininess.Y, MaterialScaleAndBiasAndShininess.Z ); + + // the rest are vectors + GL.Uniform3( GL.GetUniformLocation( ProgramObject, "Camera_Position" ), EyePos.X, EyePos.Y, EyePos.Z ); + GL.Uniform3( GL.GetUniformLocation( ProgramObject, "Light_Position" ), LightPosition.X, LightPosition.Y, LightPosition.Z ); + GL.Uniform3( GL.GetUniformLocation( ProgramObject, "Light_DiffuseColor" ), LightDiffuse.X, LightDiffuse.Y, LightDiffuse.Z ); + GL.Uniform3( GL.GetUniformLocation( ProgramObject, "Light_SpecularColor" ), LightSpecular.X, LightSpecular.Y, LightSpecular.Z ); + + #endregion Uniforms + + GL.PushMatrix( ); + Matrix4 t = Matrix4.LookAt( EyePos, Vector3.Zero, Vector3.UnitY ); + GL.MultMatrix(ref t); + + #region Draw Quad + + GL.Color3( 1f, 1f, 1f ); + + GL.Begin( BeginMode.Quads ); + { + GL.Normal3( Normal ); + GL.VertexAttrib3( AttribTangent, ref Tangent ); + GL.MultiTexCoord2( TextureUnit.Texture0, 0f, 1f ); + GL.Vertex3( -1.0f, 1.0f, 0.0f ); + + GL.Normal3( Normal ); + GL.VertexAttrib3( AttribTangent, ref Tangent ); + GL.MultiTexCoord2( TextureUnit.Texture0, 0f, 0f ); + GL.Vertex3( -1.0f, -1.0f, 0.0f ); + + GL.Normal3( Normal ); + GL.VertexAttrib3( AttribTangent, ref Tangent ); + GL.MultiTexCoord2( TextureUnit.Texture0, 1f, 0f ); + GL.Vertex3( 1.0f, -1.0f, 0.0f ); + + GL.Normal3( Normal ); + GL.VertexAttrib3( AttribTangent, ref Tangent ); + GL.MultiTexCoord2( TextureUnit.Texture0, 1f, 1f ); + GL.Vertex3( 1.0f, 1.0f, 0.0f ); + } + GL.End( ); + + #endregion Draw Quad + + GL.UseProgram( 0 ); + + // visualize the light position 'somehow' + GL.Begin( BeginMode.Points ); + { + GL.Color3( LightSpecular ); + GL.Vertex3( LightPosition ); + } + GL.End( ); + + GL.PopMatrix( ); + + this.SwapBuffers( ); + } + + /// Entry point + [STAThread] + public static void Main( ) + { + using ( T12_GLSL_Parallax example = new T12_GLSL_Parallax( ) ) + { + Utilities.SetWindowTitle( example ); + example.Run( 30.0, 0.0 ); + } + } + } +} diff --git a/Source/Examples/Shapes/Base/DrawableShape.cs b/Source/Examples/Shapes/Base/DrawableShape.cs new file mode 100644 index 00000000..2d81c6d6 --- /dev/null +++ b/Source/Examples/Shapes/Base/DrawableShape.cs @@ -0,0 +1,181 @@ +#region --- License --- +/* Copyright (c) 2006, 2007 Stefanos Apostolopoulos + * See license.txt for license info + */ +#endregion + +using System; + +using OpenTK; +using OpenTK.Graphics.OpenGL; + +namespace Examples.Shapes +{ + // Abstract base class for procedurally generated geometry + // + // All classes derived from it must produce Counter-Clockwise (CCW) primitives. + // Derived classes must create a single VBO and IBO, without primitive restarts for strips. + // Uses an double-precision all-possible-attributes VertexT2dN3dV3d Array internally. + // Cannot directly use VBO, but has Get-methods to retrieve VBO-friendly data. + // Can use a Display List to prevent repeated immediate mode draws. + // + + public abstract class DrawableShape: IDisposable + { + protected BeginMode PrimitiveMode; + protected VertexT2dN3dV3d[] VertexArray; + protected uint[] IndexArray; + + public int GetTriangleCount + { + get + { + switch ( PrimitiveMode ) + { + case BeginMode.Triangles: + if ( IndexArray != null ) + { + return IndexArray.Length / 3; + } else + { + return VertexArray.Length / 3; + } + // break; + default: throw new NotImplementedException("Unknown primitive type."); + } + } + } + + #region Display List + + private bool UseDisplayList; + private int DisplayListHandle = 0; + + #endregion Display List + + public DrawableShape( bool useDisplayList ) + { + UseDisplayList = useDisplayList; + PrimitiveMode = BeginMode.Triangles; + VertexArray = null; + IndexArray = null; + } + + #region Convert to VBO + + public void GetArraysforVBO(out BeginMode primitives, out VertexT2dN3dV3d[] vertices, out uint[] indices) + { + primitives = PrimitiveMode; + + vertices = new VertexT2dN3dV3d[VertexArray.Length]; + for (uint i = 0; i < VertexArray.Length; i++) + { + vertices[i].TexCoord = VertexArray[i].TexCoord; + vertices[i].Normal = VertexArray[i].Normal; + vertices[i].Position = VertexArray[i].Position; + } + + indices = IndexArray; + } + + public void GetArraysforVBO(out BeginMode primitives, out VertexT2fN3fV3f[] vertices, out uint[] indices) + { + primitives = PrimitiveMode; + + vertices = new VertexT2fN3fV3f[VertexArray.Length]; + for (uint i = 0; i < VertexArray.Length; i++) + { + vertices[i].TexCoord = (Vector2)VertexArray[i].TexCoord; + vertices[i].Normal = (Vector3)VertexArray[i].Normal; + vertices[i].Position = (Vector3)VertexArray[i].Position; + } + + indices = IndexArray; + } + + public void GetArraysforVBO(out BeginMode primitives, out VertexT2hN3hV3h[] vertices, out uint[] indices) + { + primitives = PrimitiveMode; + + vertices = new VertexT2hN3hV3h[VertexArray.Length]; + for (uint i = 0; i < VertexArray.Length; i++) + { + vertices[i].TexCoord = (Vector2h)VertexArray[i].TexCoord; + vertices[i].Normal = (Vector3h)VertexArray[i].Normal; + vertices[i].Position = (Vector3h)VertexArray[i].Position; + } + + indices = IndexArray; + } + + #endregion Convert to VBO + + private void DrawImmediateMode() + { + GL.Begin( PrimitiveMode ); + { + if ( IndexArray == null ) + foreach ( VertexT2dN3dV3d v in VertexArray ) + { + GL.TexCoord2( v.TexCoord.X, v.TexCoord.Y ); + GL.Normal3( v.Normal.X, v.Normal.Y, v.Normal.Z ); + GL.Vertex3( v.Position.X, v.Position.Y, v.Position.Z ); + } else + { + for ( uint i = 0; i < IndexArray.Length; i++ ) + { + uint index = IndexArray[i]; + GL.TexCoord2( VertexArray[index].TexCoord.X, VertexArray[index].TexCoord.Y ); + GL.Normal3( VertexArray[index].Normal.X, VertexArray[index].Normal.Y, VertexArray[index].Normal.Z ); + GL.Vertex3( VertexArray[index].Position.X, VertexArray[index].Position.Y, VertexArray[index].Position.Z ); + } + } + } + GL.End(); + } + + /// + /// Does not touch any state/matrices. Does call Begin/End and Vertex&Co. + /// Creates and compiles a display list if not present yet. Requires an OpenGL context. + /// + public void Draw() + { + if ( !UseDisplayList ) + DrawImmediateMode(); + else + if ( DisplayListHandle == 0 ) + { + if ( VertexArray == null ) + throw new Exception("Cannot draw null Vertex Array."); + DisplayListHandle = GL.GenLists( 1 ); + GL.NewList( DisplayListHandle, ListMode.CompileAndExecute ); + DrawImmediateMode(); + GL.EndList(); + } else + GL.CallList( DisplayListHandle ); + } + + #region IDisposable Members + + /// + /// Removes reference to VertexArray and IndexArray. + /// Deletes the Display List, so it requires an OpenGL context. + /// The instance is effectively destroyed. + /// + public void Dispose() + { + if ( VertexArray != null ) + VertexArray = null; + if ( IndexArray != null ) + IndexArray = null; + if ( DisplayListHandle != 0 ) + { + GL.DeleteLists( DisplayListHandle, 1 ); + DisplayListHandle = 0; + } + } + + #endregion + } + +} diff --git a/Source/Examples/Shapes/Base/VertexStructs.cs b/Source/Examples/Shapes/Base/VertexStructs.cs new file mode 100644 index 00000000..88784114 --- /dev/null +++ b/Source/Examples/Shapes/Base/VertexStructs.cs @@ -0,0 +1,36 @@ +using System; + +using OpenTK; + +namespace Examples.Shapes +{ + public struct VertexT2dN3dV3d + { + public Vector2d TexCoord; + public Vector3d Normal; + public Vector3d Position; + + public VertexT2dN3dV3d( Vector2d texcoord, Vector3d normal, Vector3d position ) + { + TexCoord = texcoord; + Normal = normal; + Position = position; + } + } + + public struct VertexT2fN3fV3f + { + public Vector2 TexCoord; + public Vector3 Normal; + public Vector3 Position; + } + + public struct VertexT2hN3hV3h + { + public Vector2h TexCoord; + public Vector3h Normal; + public Vector3h Position; + } + + +} diff --git a/Source/Examples/Shapes/Capsule.cs b/Source/Examples/Shapes/Capsule.cs new file mode 100644 index 00000000..d7097395 --- /dev/null +++ b/Source/Examples/Shapes/Capsule.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; + +using OpenTK; + +namespace Examples.Shapes +{ + public sealed class Capsule: DrawableShape + { + public enum eSubdivisions + { + None = 0, + One = 1, + Two = 2, + Three = 3, + Four = 4, + } + + + public Capsule( double radius, double height, eSubdivisions subdivs, bool useDL ) + : base( useDL ) + { + uint HoseSubDivs = 0; + SlicedSphere.eSubdivisions spheresubdivs = SlicedSphere.eSubdivisions.Zero; + + switch ( subdivs ) + { + case eSubdivisions.None: + spheresubdivs = SlicedSphere.eSubdivisions.Zero; + HoseSubDivs = 0; + break; + case eSubdivisions.One: + spheresubdivs = SlicedSphere.eSubdivisions.One; + HoseSubDivs = 1; + break; + case eSubdivisions.Two: + spheresubdivs = SlicedSphere.eSubdivisions.Two; + HoseSubDivs = 3; + break; + case eSubdivisions.Three: + spheresubdivs = SlicedSphere.eSubdivisions.Three; + HoseSubDivs = 7; + break; + case eSubdivisions.Four: + spheresubdivs = SlicedSphere.eSubdivisions.Four; + HoseSubDivs = 15; + break; + } + PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles; + + OpenTK.Graphics.OpenGL.BeginMode TemporaryMode; + VertexT2dN3dV3d[] TemporaryVBO; + uint[] TemporaryIBO; + + List AllChunks = new List(); + Vector3d offset1 = new Vector3d( 0.0, 0.0, height ), + offset2 = new Vector3d( 0.0, 0.0, -height ); + for ( int i = 0; i < 4; i++ ) + { + SlicedHose.eSide tempSide = SlicedHose.eSide.FrontTop; + switch ( i ) + { + case 0: + tempSide = SlicedHose.eSide.FrontBottom; + break; + case 1: + tempSide = SlicedHose.eSide.BackBottom; + break; + case 2: + tempSide = SlicedHose.eSide.BackTop; + break; + case 3: + tempSide = SlicedHose.eSide.FrontTop; + break; + } + SlicedHose tempHose = new SlicedHose( tempSide, HoseSubDivs, radius, offset1, offset2, false ); + tempHose.GetArraysforVBO( out TemporaryMode, out TemporaryVBO, out TemporaryIBO ); + tempHose.Dispose(); + AllChunks.Add( new Chunk( ref TemporaryVBO, ref TemporaryIBO ) ); + } + + SlicedSphere front = new SlicedSphere( radius, offset1, spheresubdivs, + new SlicedSphere.eDir[] { + SlicedSphere.eDir.BackBottomRight, + SlicedSphere.eDir.FrontTopRight, + SlicedSphere.eDir.BackTopRight, + SlicedSphere.eDir.FrontBottomRight, + }, + false ); + + front.GetArraysforVBO( out TemporaryMode, out TemporaryVBO, out TemporaryIBO ); + AllChunks.Add( new Chunk( ref TemporaryVBO, ref TemporaryIBO ) ); + front.Dispose(); + + SlicedSphere back = new SlicedSphere( radius, offset2, spheresubdivs, + new SlicedSphere.eDir[] { + SlicedSphere.eDir.FrontBottomLeft, + SlicedSphere.eDir.FrontTopLeft, + SlicedSphere.eDir.BackTopLeft, + SlicedSphere.eDir.BackBottomLeft }, + false ); + back.GetArraysforVBO( out TemporaryMode, out TemporaryVBO, out TemporaryIBO ); + AllChunks.Add( new Chunk( ref TemporaryVBO, ref TemporaryIBO ) ); + back.Dispose(); + + Chunk.GetArray( ref AllChunks, out VertexArray, out IndexArray ); + AllChunks.Clear(); + } + } +} diff --git a/Source/Examples/Shapes/ChamferCube.cs b/Source/Examples/Shapes/ChamferCube.cs new file mode 100644 index 00000000..8841c391 --- /dev/null +++ b/Source/Examples/Shapes/ChamferCube.cs @@ -0,0 +1,280 @@ +using System; +using System.Collections.Generic; + +using OpenTK; + +namespace Examples.Shapes +{ + public sealed class ChamferCube: DrawableShape + { + + public enum SubDivs: byte + { + Zero, + One, + Two, + Three, + Four, + } + + public ChamferCube( double Width, double Height, double Length, SubDivs subdivs, double radius, bool useDL ) + : base( useDL ) + { + SlicedSphere.eSubdivisions sphereSubDivs = SlicedSphere.eSubdivisions.Zero; + uint hoseSubDivs = 0; + + switch ( subdivs ) + { + case SubDivs.Zero: + sphereSubDivs = SlicedSphere.eSubdivisions.Zero; + hoseSubDivs = 0; + break; + case SubDivs.One: + sphereSubDivs = SlicedSphere.eSubdivisions.One; + hoseSubDivs = 1; + break; + case SubDivs.Two: + sphereSubDivs = SlicedSphere.eSubdivisions.Two; + hoseSubDivs = 3; + break; + case SubDivs.Three: + sphereSubDivs = SlicedSphere.eSubdivisions.Three; + hoseSubDivs = 7; + break; + case SubDivs.Four: + sphereSubDivs = SlicedSphere.eSubdivisions.Four; + hoseSubDivs = 15; + break; + } + + #region Temporary Storage + + List AllChunks = new List(); + OpenTK.Graphics.OpenGL.BeginMode TemporaryMode; + VertexT2dN3dV3d[] TemporaryVBO; + uint[] TemporaryIBO; + + #endregion Temporary Storage + + Vector3d FrontTopRightEdge = new Vector3d( +Width - radius, +Height - radius, +Length - radius ); + Vector3d FrontTopLeftEdge = new Vector3d( +Width - radius, +Height - radius, -Length + radius ); + Vector3d FrontBottomRightEdge = new Vector3d( +Width - radius, -Height + radius, +Length - radius ); + Vector3d FrontBottomLeftEdge = new Vector3d( +Width - radius, -Height + radius, -Length + radius ); + Vector3d BackTopRightEdge = new Vector3d( -Width + radius, +Height - radius, +Length - radius ); + Vector3d BackTopLeftEdge = new Vector3d( -Width + radius, +Height - radius, -Length + radius ); + Vector3d BackBottomRightEdge = new Vector3d( -Width + radius, -Height + radius, +Length - radius ); + Vector3d BackBottomLeftEdge = new Vector3d( -Width + radius, -Height + radius, -Length + radius ); + + #region 8 sliced Spheres + SlicedSphere tempSphere; + Vector3d tempVector = Vector3d.Zero; + SlicedSphere.eDir[] tempEdge = new SlicedSphere.eDir[1]; + + for ( int i = 0; i < 8; i++ ) + { + switch ( i ) + { + case 0: + tempVector = FrontTopRightEdge; + tempEdge = new SlicedSphere.eDir[] { SlicedSphere.eDir.FrontTopRight }; + break; + case 1: + tempVector = FrontTopLeftEdge; + tempEdge = new SlicedSphere.eDir[] { SlicedSphere.eDir.FrontTopLeft }; + break; + case 2: + tempVector = FrontBottomRightEdge; + tempEdge = new SlicedSphere.eDir[] { SlicedSphere.eDir.FrontBottomRight }; + break; + case 3: + tempVector = FrontBottomLeftEdge; + tempEdge = new SlicedSphere.eDir[] { SlicedSphere.eDir.FrontBottomLeft }; + break; + case 4: + tempVector = BackBottomRightEdge; + tempEdge = new SlicedSphere.eDir[] { SlicedSphere.eDir.BackBottomRight }; + break; + case 5: + tempVector = BackBottomLeftEdge; + tempEdge = new SlicedSphere.eDir[] { SlicedSphere.eDir.BackBottomLeft }; + break; + case 6: + tempVector = BackTopRightEdge; + tempEdge = new SlicedSphere.eDir[] { SlicedSphere.eDir.BackTopRight }; + break; + case 7: + tempVector = BackTopLeftEdge; + tempEdge = new SlicedSphere.eDir[] { SlicedSphere.eDir.BackTopLeft }; + break; + } + tempSphere = new SlicedSphere( radius, + tempVector, + sphereSubDivs, + tempEdge, + false ); + tempSphere.GetArraysforVBO( out TemporaryMode, out TemporaryVBO, out TemporaryIBO ); + tempSphere.Dispose(); + AllChunks.Add( new Chunk( ref TemporaryVBO, ref TemporaryIBO ) ); + } + #endregion 8 sliced Spheres + + #region 12 sliced Hoses + + SlicedHose tempHose; + SlicedHose.eSide tempSide = SlicedHose.eSide.BackBottom; + Vector3d tempHoseStart = Vector3d.Zero; + Vector3d tempHoseEnd = Vector3d.Zero; + + for ( int i = 0; i < 12; i++ ) + { + switch ( i ) + { + #region Around X Axis + case 0: + tempSide = SlicedHose.eSide.BottomRight; + tempHoseStart = BackBottomRightEdge; + tempHoseEnd = FrontBottomRightEdge; + break; + case 1: + tempSide = SlicedHose.eSide.TopRight; + tempHoseStart = BackTopRightEdge; + tempHoseEnd = FrontTopRightEdge; + break; + case 2: + tempSide = SlicedHose.eSide.TopLeft; + tempHoseStart = BackTopLeftEdge; + tempHoseEnd = FrontTopLeftEdge; + break; + case 3: + tempSide = SlicedHose.eSide.BottomLeft; + tempHoseStart = BackBottomLeftEdge; + tempHoseEnd = FrontBottomLeftEdge; + break; + #endregion Around X Axis + #region Around Y Axis + case 4: + tempSide = SlicedHose.eSide.FrontRight; + tempHoseStart = FrontBottomRightEdge; + tempHoseEnd = FrontTopRightEdge; + break; + case 5: + tempSide = SlicedHose.eSide.BackRight; + tempHoseStart = BackBottomRightEdge; + tempHoseEnd = BackTopRightEdge; + break; + case 6: + tempSide = SlicedHose.eSide.BackLeft; + tempHoseStart = BackBottomLeftEdge; + tempHoseEnd = BackTopLeftEdge; + break; + case 7: + tempSide = SlicedHose.eSide.FrontLeft; + tempHoseStart = FrontBottomLeftEdge; + tempHoseEnd = FrontTopLeftEdge; + break; + #endregion Around Y Axis + #region Around Z Axis + case 8: + tempSide = SlicedHose.eSide.FrontTop; + tempHoseStart = FrontTopRightEdge; + tempHoseEnd = FrontTopLeftEdge; + break; + case 9: + tempSide = SlicedHose.eSide.BackTop; + tempHoseStart = BackTopRightEdge; + tempHoseEnd = BackTopLeftEdge; + break; + case 10: + tempSide = SlicedHose.eSide.BackBottom; + tempHoseStart = BackBottomRightEdge; + tempHoseEnd = BackBottomLeftEdge; + break; + case 11: + tempSide = SlicedHose.eSide.FrontBottom; + tempHoseStart = FrontBottomRightEdge; + tempHoseEnd = FrontBottomLeftEdge; + break; + #endregion Around Z Axis + } + tempHose = new SlicedHose( tempSide, + hoseSubDivs, + radius, + tempHoseStart, + tempHoseEnd, + false ); + tempHose.GetArraysforVBO( out TemporaryMode, out TemporaryVBO, out TemporaryIBO ); + tempHose.Dispose(); + AllChunks.Add( new Chunk( ref TemporaryVBO, ref TemporaryIBO ) ); + } + #endregion 12 sliced Hoses + + #region 6 quads for the sides + + VertexT2dN3dV3d[] tempVBO = new VertexT2dN3dV3d[4]; + uint[] tempIBO = new uint[6] { 0, 1, 2, 0, 2, 3 }; // all quads share this IBO + + // all quads use the same texcoords + tempVBO[0].TexCoord = new Vector2d( 0.0, 1.0 ); + tempVBO[1].TexCoord = new Vector2d( 0.0, 0.0 ); + tempVBO[2].TexCoord = new Vector2d( 1.0, 0.0 ); + tempVBO[3].TexCoord = new Vector2d( 1.0, 1.0 ); + + // front face + tempVBO[0].Normal = tempVBO[1].Normal = tempVBO[2].Normal = tempVBO[3].Normal = Vector3d.UnitX; + tempVBO[0].Position = FrontTopRightEdge + new Vector3d( radius, 0.0, 0.0 ); + tempVBO[1].Position = FrontBottomRightEdge + new Vector3d( radius, 0.0, 0.0 ); + tempVBO[2].Position = FrontBottomLeftEdge + new Vector3d( radius, 0.0, 0.0 ); + tempVBO[3].Position = FrontTopLeftEdge + new Vector3d( radius, 0.0, 0.0 ); + AllChunks.Add( new Chunk( ref tempVBO, ref tempIBO ) ); + + // back face + tempVBO[0].Normal = tempVBO[1].Normal = tempVBO[2].Normal = tempVBO[3].Normal = -Vector3d.UnitX; + tempVBO[0].Position = BackTopLeftEdge - new Vector3d( radius, 0.0, 0.0 ); + tempVBO[1].Position = BackBottomLeftEdge - new Vector3d( radius, 0.0, 0.0 ); + tempVBO[2].Position = BackBottomRightEdge - new Vector3d( radius, 0.0, 0.0 ); + tempVBO[3].Position = BackTopRightEdge - new Vector3d( radius, 0.0, 0.0 ); + AllChunks.Add( new Chunk( ref tempVBO, ref tempIBO ) ); + + // top face + tempVBO[0].Normal = tempVBO[1].Normal = tempVBO[2].Normal = tempVBO[3].Normal = Vector3d.UnitY; + tempVBO[0].Position = BackTopRightEdge + new Vector3d( 0.0, radius, 0.0 ); + tempVBO[1].Position = FrontTopRightEdge + new Vector3d( 0.0, radius, 0.0 ); + tempVBO[2].Position = FrontTopLeftEdge + new Vector3d( 0.0, radius, 0.0 ); + tempVBO[3].Position = BackTopLeftEdge + new Vector3d( 0.0, radius, 0.0 ); + AllChunks.Add( new Chunk( ref tempVBO, ref tempIBO ) ); + + // bottom face + tempVBO[0].Normal = tempVBO[1].Normal = tempVBO[2].Normal = tempVBO[3].Normal = -Vector3d.UnitY; + tempVBO[0].Position = BackBottomLeftEdge - new Vector3d( 0.0, radius, 0.0 ); + tempVBO[1].Position = FrontBottomLeftEdge - new Vector3d( 0.0, radius, 0.0 ); + tempVBO[2].Position = FrontBottomRightEdge - new Vector3d( 0.0, radius, 0.0 ); + tempVBO[3].Position = BackBottomRightEdge - new Vector3d( 0.0, radius, 0.0 ); + AllChunks.Add( new Chunk( ref tempVBO, ref tempIBO ) ); + + // right face + tempVBO[0].Normal = tempVBO[1].Normal = tempVBO[2].Normal = tempVBO[3].Normal = Vector3d.UnitZ; + tempVBO[0].Position = BackTopRightEdge + new Vector3d( 0.0, 0.0, radius ); + tempVBO[1].Position = BackBottomRightEdge + new Vector3d( 0.0, 0.0, radius ); + tempVBO[2].Position = FrontBottomRightEdge + new Vector3d( 0.0, 0.0, radius ); + tempVBO[3].Position = FrontTopRightEdge + new Vector3d( 0.0, 0.0, radius ); + AllChunks.Add( new Chunk( ref tempVBO, ref tempIBO ) ); + + // left face + tempVBO[0].Normal = tempVBO[1].Normal = tempVBO[2].Normal = tempVBO[3].Normal = -Vector3d.UnitZ; + tempVBO[0].Position = FrontTopLeftEdge - new Vector3d( 0.0, 0.0, radius ); + tempVBO[1].Position = FrontBottomLeftEdge - new Vector3d( 0.0, 0.0, radius ); + tempVBO[2].Position = BackBottomLeftEdge - new Vector3d( 0.0, 0.0, radius ); + tempVBO[3].Position = BackTopLeftEdge - new Vector3d( 0.0, 0.0, radius ); + AllChunks.Add( new Chunk( ref tempVBO, ref tempIBO ) ); + + + #endregion 6 quads for the sides + + #region Final Assembly of Chunks + PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles; + Chunk.GetArray( ref AllChunks, out VertexArray, out IndexArray ); + AllChunks.Clear(); + #endregion Final Assembly of Chunks + } + } +} diff --git a/Source/Examples/Shapes/Helpers/Chunk.cs b/Source/Examples/Shapes/Helpers/Chunk.cs new file mode 100644 index 00000000..29681ad0 --- /dev/null +++ b/Source/Examples/Shapes/Helpers/Chunk.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Examples.Shapes +{ + public class Chunk + { + public VertexT2dN3dV3d[] Vertices; + public uint[] Indices; + + public uint VertexCount + { + get + { + return (uint)Vertices.Length; + } + } + public uint IndexCount + { + get + { + return (uint)Indices.Length; + } + } + + public Chunk( uint vertexcount, uint indexcount ) + { + Vertices = new VertexT2dN3dV3d[vertexcount]; + Indices = new uint[indexcount]; + } + + public Chunk( ref VertexT2dN3dV3d[] vbo, ref uint[] ibo ) + { + Vertices = new VertexT2dN3dV3d[vbo.Length]; + for ( int i = 0; i < Vertices.Length; i++ ) + { + Vertices[i] = vbo[i]; + } + Indices = new uint[ibo.Length]; + for ( int i = 0; i < Indices.Length; i++ ) + { + Indices[i] = ibo[i]; + } + } + + public static void GetArray( ref List c, out VertexT2dN3dV3d[] vbo, out uint[] ibo ) + { + + uint VertexCounter = 0; + uint IndexCounter = 0; + + foreach ( Chunk ch in c ) + { + VertexCounter += ch.VertexCount; + IndexCounter += ch.IndexCount; + } + + vbo = new VertexT2dN3dV3d[VertexCounter]; + ibo = new uint[IndexCounter]; + + VertexCounter = 0; + IndexCounter = 0; + + foreach ( Chunk ch in c ) + { + for ( int i = 0; i < ch.Vertices.Length; i++ ) + { + vbo[VertexCounter + i] = ch.Vertices[i]; + } + + for ( int i = 0; i < ch.Indices.Length; i++ ) + { + ibo[IndexCounter + i] = ch.Indices[i] + VertexCounter; + } + + VertexCounter += (uint)ch.VertexCount; + IndexCounter += (uint)ch.IndexCount; + } + } + } +} diff --git a/Source/Examples/Shapes/Helpers/MengerCube.cs b/Source/Examples/Shapes/Helpers/MengerCube.cs new file mode 100644 index 00000000..4d8388c7 --- /dev/null +++ b/Source/Examples/Shapes/Helpers/MengerCube.cs @@ -0,0 +1,422 @@ +using System; +using System.Collections.Generic; + +using OpenTK; + +namespace Examples.Shapes +{ + public sealed partial class MengerSponge + { + private struct MengerCube + { + private Vector3d Center; + private double SideLength; + private eSides[] VisibleSides; + private eSides[] VisibilityToInherit; + + public void GetArraySizes( out uint vertexcount, out uint indexcount ) + { + vertexcount = (uint)VisibleSides.Length * 8 + 6 * 12; + indexcount = (uint)VisibleSides.Length * 8 * 3 + 6 * 8 * 3; + } + + public MengerCube( Vector3d center, double sidelength, eSides[] visibleSides, eSides[] parentsVisibility ) + { + Center = center; + SideLength = sidelength; + + /* List Sides = new List(); + foreach ( eSides s in visibleSides ) + { + bool isVisible = false; + foreach ( eSides p in parentsVisibility ) + { + if ( (int)p == (int)s ) + { + isVisible = true; + break; + } + } + if ( isVisible ) + { + Sides.Add( s ); + } + } + VisibleSides = Sides.ToArray();*/ + VisibleSides = visibleSides; + VisibilityToInherit = visibleSides; + } + + public void Subdivide( out MengerCube[] cubes ) + { + cubes = new MengerCube[20]; // 8 + 4 + 8 + + double NewLength = this.SideLength / 3.0; + double six = this.SideLength * 2.0 / 3.0; + // we got 3x3x3 cubes. All center cubes who touch the XYZ-Axis are removed. + + // front + cubes[0] = new MengerCube( new Vector3d( Center.X - six, Center.Y + six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Left, eSides.Top }, this.VisibilityToInherit ); + cubes[1] = new MengerCube( new Vector3d( Center.X + 0.0, Center.Y + six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Bottom, eSides.Back, eSides.Top }, this.VisibilityToInherit ); + cubes[2] = new MengerCube( new Vector3d( Center.X + six, Center.Y + six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Top }, this.VisibilityToInherit ); + + cubes[3] = new MengerCube( new Vector3d( Center.X - six, Center.Y + 0.0, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left }, this.VisibilityToInherit ); + cubes[4] = new MengerCube( new Vector3d( Center.X + six, Center.Y + 0.0, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left }, this.VisibilityToInherit ); + + cubes[5] = new MengerCube( new Vector3d( Center.X - six, Center.Y - six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Left, eSides.Bottom } , this.VisibilityToInherit ); + cubes[6] = new MengerCube( new Vector3d( Center.X + 0.0, Center.Y - six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Top, eSides.Back, eSides.Bottom }, this.VisibilityToInherit ); + cubes[7] = new MengerCube( new Vector3d( Center.X + six, Center.Y - six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Bottom }, this.VisibilityToInherit ); + + // center + cubes[8] = new MengerCube( new Vector3d( Center.X - six, Center.Y + six, Center.Z + 0.0 ), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit ); + + cubes[9] = new MengerCube( new Vector3d( Center.X + six, Center.Y + six, Center.Z + 0.0 ), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit ); + + cubes[10] = new MengerCube( new Vector3d( Center.X - six, Center.Y - six, Center.Z + 0.0 ), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit ); + + cubes[11] = new MengerCube( new Vector3d( Center.X + six, Center.Y - six, Center.Z + 0.0 ), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit ); + + // back + cubes[12] = new MengerCube( new Vector3d( Center.X - six, Center.Y + six, Center.Z - six ), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Left }, this.VisibilityToInherit ); + cubes[13] = new MengerCube( new Vector3d( Center.X + 0.0, Center.Y + six, Center.Z - six ), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Bottom, eSides.Front }, this.VisibilityToInherit ); + cubes[14] = new MengerCube( new Vector3d( Center.X + six, Center.Y + six, Center.Z - six ), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Right }, this.VisibilityToInherit ); + + cubes[15] = new MengerCube( new Vector3d( Center.X - six, Center.Y + 0.0, Center.Z - six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left } , this.VisibilityToInherit ); + cubes[16] = new MengerCube( new Vector3d( Center.X + six, Center.Y + 0.0, Center.Z - six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left } , this.VisibilityToInherit ); + + cubes[17] = new MengerCube( new Vector3d( Center.X - six, Center.Y - six, Center.Z - six ), NewLength, new eSides[] { eSides.Back, eSides.Bottom, eSides.Left } , this.VisibilityToInherit ); + cubes[18] = new MengerCube( new Vector3d( Center.X + 0.0, Center.Y - six, Center.Z - six ), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Bottom, eSides.Front }, this.VisibilityToInherit ); + cubes[19] = new MengerCube( new Vector3d( Center.X + six, Center.Y - six, Center.Z - six ), NewLength, new eSides[] { eSides.Back, eSides.Bottom, eSides.Right }, this.VisibilityToInherit ); + + } + + public enum eSides: byte + { + Front, + Back, + Right, + Left, + Top, + Bottom + } + + internal static readonly eSides[] AllSides = new eSides[] { eSides.Front, eSides.Back, eSides.Right, eSides.Left, eSides.Top, eSides.Bottom }; + + public void GetVboAndIbo( ref List chunks ) + { + foreach ( eSides s in AllSides ) + { + DrawSide( s, ref chunks ); + } + } + + private void DrawSide( eSides side, ref List chunks ) + { + #region Setup constants for current direction + + double _Zero = 0.0; // 0/3 + double _Three = 0.3333333333333; // 1/3 + double _Six = 0.66666666666666; // 2/3 + double _One = 1.0; // 3/3 + + double ThirdLength = SideLength / 3f; + + Vector3d C0 = Center + new Vector3d( -SideLength, -SideLength, +SideLength ); + Vector3d C1 = Center + new Vector3d( +SideLength, -SideLength, +SideLength ); + Vector3d C2 = Center + new Vector3d( +SideLength, +SideLength, +SideLength ); + Vector3d C3 = Center + new Vector3d( -SideLength, +SideLength, +SideLength ); + + Vector3d C4 = Center + new Vector3d( -SideLength, -SideLength, -SideLength ); + Vector3d C5 = Center + new Vector3d( +SideLength, -SideLength, -SideLength ); + Vector3d C6 = Center + new Vector3d( +SideLength, +SideLength, -SideLength ); + Vector3d C7 = Center + new Vector3d( -SideLength, +SideLength, -SideLength ); + + Vector3d P0, P1, P2, P3, P4, P5, P6, P7; + + switch ( side ) + { + case eSides.Front: + P0 = C0; + P1 = C1; + P2 = C2; + P3 = C3; + + P4 = C4; + P5 = C5; + P6 = C6; + P7 = C7; + break; + case eSides.Back: + P0 = C5; + P1 = C4; + P2 = C7; + P3 = C6; + + P4 = C1; + P5 = C0; + P6 = C3; + P7 = C2; + break; + case eSides.Right: + P0 = C1; + P1 = C5; + P2 = C6; + P3 = C2; + + P4 = C0; + P5 = C4; + P6 = C7; + P7 = C3; + break; + case eSides.Left: + P0 = C4; + P1 = C0; + P2 = C3; + P3 = C7; + + P4 = C5; + P5 = C1; + P6 = C2; + P7 = C6; + break; + case eSides.Top: + P0 = C3; + P1 = C2; + P2 = C6; + P3 = C7; + + P4 = C0; + P5 = C1; + P6 = C5; + P7 = C4; + break; + case eSides.Bottom: + P0 = C1; + P1 = C0; + P2 = C4; + P3 = C5; + + P4 = C2; + P5 = C3; + P6 = C7; + P7 = C6; + break; + default: + throw new NotImplementedException( "Unknown enum value: " + side ); + } + + #endregion Setup constants for current direction + + #region Set Normal + + Vector3d FaceNormal; + + switch ( side ) + { + case eSides.Front: + FaceNormal = Vector3d.UnitZ; + break; + case eSides.Back: + FaceNormal = -Vector3d.UnitZ; + break; + case eSides.Right: + FaceNormal = Vector3d.UnitX; + break; + case eSides.Left: + FaceNormal = -Vector3d.UnitX; + break; + case eSides.Top: + FaceNormal = Vector3d.UnitY; + break; + case eSides.Bottom: + FaceNormal = -Vector3d.UnitY; + break; + default: + throw new NotImplementedException( "Unknown enum value: " + side ); + } + #endregion Set Normal + + bool FaceIsVisible = false; + foreach ( eSides s in VisibleSides ) + { + if ( s == side ) + { + FaceIsVisible = true; + break; + } + } + + if ( FaceIsVisible ) + { + #region Define Layer1 Vertices + Chunk Layer1 = new Chunk( 8, 8 * 3 ); + + Layer1.Vertices[0].TexCoord = new Vector2d( _Zero, _Zero ); + Layer1.Vertices[0].Normal = FaceNormal; + Layer1.Vertices[0].Position = P0; + + Layer1.Vertices[1].TexCoord = new Vector2d( _One, _Zero ); + Layer1.Vertices[1].Normal = FaceNormal; + Layer1.Vertices[1].Position = P1; + + Layer1.Vertices[2].TexCoord = new Vector2d( _One, _One ); + Layer1.Vertices[2].Normal = FaceNormal; + Layer1.Vertices[2].Position = P2; + + Layer1.Vertices[3].TexCoord = new Vector2d( _Zero, _One ); + Layer1.Vertices[3].Normal = FaceNormal; + Layer1.Vertices[3].Position = P3; + + Layer1.Vertices[4].TexCoord = new Vector2d( _Three, _Three ); + Layer1.Vertices[4].Normal = FaceNormal; + Vector3d.Lerp( ref P0, ref P2, _Three, out Layer1.Vertices[4].Position ); + + Layer1.Vertices[5].TexCoord = new Vector2d( _Six, _Three ); + Layer1.Vertices[5].Normal = FaceNormal; + Vector3d.Lerp( ref P1, ref P3, _Three, out Layer1.Vertices[5].Position ); + + Layer1.Vertices[6].TexCoord = new Vector2d( _Six, _Six ); + Layer1.Vertices[6].Normal = FaceNormal; + Vector3d.Lerp( ref P0, ref P2, _Six, out Layer1.Vertices[6].Position ); + + Layer1.Vertices[7].TexCoord = new Vector2d( _Three, _Six ); + Layer1.Vertices[7].Normal = FaceNormal; + Vector3d.Lerp( ref P1, ref P3, _Six, out Layer1.Vertices[7].Position ); + #endregion Define Layer1 Vertices + + #region Define Layer1 Indices + Layer1.Indices[0] = 0; + Layer1.Indices[1] = 5; + Layer1.Indices[2] = 4; + + Layer1.Indices[3] = 0; + Layer1.Indices[4] = 1; + Layer1.Indices[5] = 5; + + Layer1.Indices[6] = 5; + Layer1.Indices[7] = 1; + Layer1.Indices[8] = 2; + + Layer1.Indices[9] = 6; + Layer1.Indices[10] = 5; + Layer1.Indices[11] = 2; + + Layer1.Indices[12] = 7; + Layer1.Indices[13] = 6; + Layer1.Indices[14] = 2; + + Layer1.Indices[15] = 3; + Layer1.Indices[16] = 7; + Layer1.Indices[17] = 2; + + Layer1.Indices[18] = 0; + Layer1.Indices[19] = 7; + Layer1.Indices[20] = 3; + + Layer1.Indices[21] = 0; + Layer1.Indices[22] = 4; + Layer1.Indices[23] = 7; + + chunks.Add( Layer1 ); + #endregion Define Layer1 Indices + } + + #region Define Layer2 Vertices + Chunk Layer2 = new Chunk( 12, 8 * 3 ); + + Vector3d T0, T1, T2, T3; + Vector3d.Lerp( ref P0, ref P4, _Six, out T0 ); + Vector3d.Lerp( ref P1, ref P5, _Six, out T1 ); + Vector3d.Lerp( ref P2, ref P6, _Six, out T2 ); + Vector3d.Lerp( ref P3, ref P7, _Six, out T3 ); + + Layer2.Vertices[0].TexCoord = new Vector2d( _Three, _Zero ); + Layer2.Vertices[0].Normal = FaceNormal; + Vector3d.Lerp( ref T0, ref T1, _Three, out Layer2.Vertices[0].Position ); + + Layer2.Vertices[1].TexCoord = new Vector2d( _Six, _Zero ); + Layer2.Vertices[1].Normal = FaceNormal; + Vector3d.Lerp( ref T0, ref T1, _Six, out Layer2.Vertices[1].Position ); + + Layer2.Vertices[3].TexCoord = new Vector2d( _One, _Three ); + Layer2.Vertices[3].Normal = FaceNormal; + Vector3d.Lerp( ref T1, ref T2, _Three, out Layer2.Vertices[3].Position ); + + Layer2.Vertices[4].TexCoord = new Vector2d( _One, _Six ); + Layer2.Vertices[4].Normal = FaceNormal; + Vector3d.Lerp( ref T1, ref T2, _Six, out Layer2.Vertices[4].Position ); + + Layer2.Vertices[6].TexCoord = new Vector2d( _Six, _One ); + Layer2.Vertices[6].Normal = FaceNormal; + Vector3d.Lerp( ref T2, ref T3, _Three, out Layer2.Vertices[6].Position ); + + Layer2.Vertices[7].TexCoord = new Vector2d( _Three, _One ); + Layer2.Vertices[7].Normal = FaceNormal; + Vector3d.Lerp( ref T2, ref T3, _Six, out Layer2.Vertices[7].Position ); + + Layer2.Vertices[9].TexCoord = new Vector2d( _Zero, _Six ); + Layer2.Vertices[9].Normal = FaceNormal; + Vector3d.Lerp( ref T3, ref T0, _Three, out Layer2.Vertices[9].Position ); + + Layer2.Vertices[10].TexCoord = new Vector2d( _Zero, _Three ); + Layer2.Vertices[10].Normal = FaceNormal; + Vector3d.Lerp( ref T3, ref T0, _Six, out Layer2.Vertices[10].Position ); + + Layer2.Vertices[2].TexCoord = new Vector2d( _Six, _Three ); + Layer2.Vertices[2].Normal = FaceNormal; + Vector3d.Lerp( ref Layer2.Vertices[1].Position, ref Layer2.Vertices[6].Position, _Three, out Layer2.Vertices[2].Position ); + + Layer2.Vertices[5].TexCoord = new Vector2d( _Six, _Six ); + Layer2.Vertices[5].Normal = FaceNormal; + Vector3d.Lerp( ref Layer2.Vertices[1].Position, ref Layer2.Vertices[6].Position, _Six, out Layer2.Vertices[5].Position ); + + Layer2.Vertices[8].TexCoord = new Vector2d( _Three, _Six ); + Layer2.Vertices[8].Normal = FaceNormal; + Vector3d.Lerp( ref Layer2.Vertices[7].Position, ref Layer2.Vertices[0].Position, _Three, out Layer2.Vertices[8].Position ); + + Layer2.Vertices[11].TexCoord = new Vector2d( _Three, _Three ); + Layer2.Vertices[11].Normal = FaceNormal; + Vector3d.Lerp( ref Layer2.Vertices[7].Position, ref Layer2.Vertices[0].Position, _Six, out Layer2.Vertices[11].Position ); + #endregion Define Layer2 Vertices + + #region Define Layer2 Indices + Layer2.Indices[0] = 0; + Layer2.Indices[1] = 2; + Layer2.Indices[2] = 11; + + Layer2.Indices[3] = 0; + Layer2.Indices[4] = 1; + Layer2.Indices[5] = 2; + + Layer2.Indices[6] = 2; + Layer2.Indices[7] = 3; + Layer2.Indices[8] = 4; + + Layer2.Indices[9] = 2; + Layer2.Indices[10] = 4; + Layer2.Indices[11] = 5; + + Layer2.Indices[12] = 5; + Layer2.Indices[13] = 6; + Layer2.Indices[14] = 8; + + Layer2.Indices[15] = 8; + Layer2.Indices[16] = 6; + Layer2.Indices[17] = 7; + + Layer2.Indices[18] = 11; + Layer2.Indices[19] = 8; + Layer2.Indices[20] = 10; + + Layer2.Indices[21] = 10; + Layer2.Indices[22] = 8; + Layer2.Indices[23] = 9; + + chunks.Add( Layer2 ); + #endregion Define Layer2 Indices + } + } + } + + +} diff --git a/Source/Examples/Shapes/Helpers/TetrahedronFace.cs b/Source/Examples/Shapes/Helpers/TetrahedronFace.cs new file mode 100644 index 00000000..3a95bdba --- /dev/null +++ b/Source/Examples/Shapes/Helpers/TetrahedronFace.cs @@ -0,0 +1,230 @@ +using System; + +using OpenTK; + +namespace Examples.Shapes +{ + + /// winding always assumed CCW (Counter-ClockWise) + internal struct TetrahedronFace + { + private Vector3d APosition, BPosition, CPosition; + private Vector3d DPosition, Normal; + private Vector2d ATexCoord, BTexCoord, CTexCoord; + + public TetrahedronFace( ref Vector3d apos, ref Vector2d atc, + ref Vector3d bpos, ref Vector2d btc, + ref Vector3d cpos, ref Vector2d ctc, + ref Vector3d dpos, + ref Vector3d normal ) + { + APosition = apos; ATexCoord = atc; + BPosition = bpos; BTexCoord = btc; + CPosition = cpos; CTexCoord = ctc; + DPosition = dpos; + Normal = normal; + } + + /// Expects CCW triangle order as input, emits 4 new CCW triangles. + /// 1st output Triangle + /// 2nd output Triangle + /// 3rd output Triangle + /// 4th output Triangle + public void SubdivideSierpinski( out TetrahedronFace first, out TetrahedronFace second, out TetrahedronFace third, out TetrahedronFace fourth ) + { + Vector3d temp; + + // find the 3 points AB, BC, CA + Vector3d CenterAB; + Vector3d.Add( ref this.APosition, ref this.BPosition, out temp ); + Vector3d.Mult( ref temp, 0.5f, out CenterAB ); + + Vector3d CenterBC; + Vector3d.Add( ref this.BPosition, ref this.CPosition, out temp ); + Vector3d.Mult( ref temp, 0.5f, out CenterBC ); + + Vector3d CenterCA; + Vector3d.Add( ref this.CPosition, ref this.APosition, out temp ); + Vector3d.Mult( ref temp, 0.5f, out CenterCA ); + + // find the 3 points AD, BD, CD + Vector3d CenterAD; + Vector3d.Lerp( ref this.APosition, ref this.DPosition, 0.5, out CenterAD ); + + Vector3d CenterBD; + Vector3d.Lerp( ref this.BPosition, ref this.DPosition, 0.5, out CenterBD ); + + Vector3d CenterCD; + Vector3d.Lerp( ref this.CPosition, ref this.DPosition, 0.5, out CenterCD ); + + // emit 4 new CCW triangles + first = new TetrahedronFace( ref this.APosition, ref this.ATexCoord, + ref CenterAB, ref this.BTexCoord, + ref CenterCA, ref this.CTexCoord, + ref CenterAD, + ref this.Normal ); + + second = new TetrahedronFace( ref CenterAB, ref this.ATexCoord, + ref this.BPosition, ref this.BTexCoord, + ref CenterBC, ref this.CTexCoord, + ref CenterBD, + ref this.Normal ); + + third = new TetrahedronFace( ref CenterCA, ref this.ATexCoord, + ref CenterBC, ref this.BTexCoord, + ref this.CPosition, ref this.CTexCoord, + ref CenterCD, + ref this.Normal ); + + fourth = new TetrahedronFace( ref CenterAD, ref this.ATexCoord, + ref CenterBD, ref this.BTexCoord, + ref CenterCD, ref this.CTexCoord, + ref this.DPosition, + ref this.Normal ); + } + + + internal void SubdivideKoch( double height, out TetrahedronFace first, out TetrahedronFace second, out TetrahedronFace third, out TetrahedronFace fourth, out TetrahedronFace fifth, out TetrahedronFace sixth ) + { + Vector3d CenterAB, CenterBC, CenterCA, CenterD; + Vector2d TexCoordAB, TexCoordBC, TexCoordCA, TexCoordD; + + Vector3d.Lerp( ref this.APosition, ref this.BPosition, 0.5, out CenterAB ); + Vector3d.Lerp( ref this.BPosition, ref this.CPosition, 0.5, out CenterBC ); + Vector3d.Lerp( ref this.CPosition, ref this.APosition, 0.5, out CenterCA ); + CenterD = CenterAB; + CenterD.Add( ref CenterBC ); + CenterD.Add( ref CenterCA ); + CenterD.Div( 3.0 ); + Vector3d E = CenterD + ( this.Normal * 0.5 ); + Vector3d temp = this.Normal; + temp.Mult( height ); + CenterD.Add( temp ); + + Vector2d.Lerp( ref this.ATexCoord, ref this.BTexCoord, 0.5, out TexCoordAB ); + Vector2d.Lerp( ref this.BTexCoord, ref this.CTexCoord, 0.5, out TexCoordBC ); + Vector2d.Lerp( ref this.CTexCoord, ref this.ATexCoord, 0.5, out TexCoordCA ); + TexCoordD = TexCoordAB; + TexCoordD.Add( ref TexCoordBC ); + TexCoordD.Add( ref TexCoordCA ); + TexCoordD.Div( 3.0 ); + #region 1 + first.APosition = this.APosition; + first.ATexCoord = this.ATexCoord; + + first.BPosition = CenterAB; + first.BTexCoord = TexCoordAB; + + first.CPosition = CenterCA; + first.CTexCoord = TexCoordCA; + + first.Normal = this.Normal; + temp = ( this.APosition + CenterAB + CenterCA ); + temp.Div( 3.0 ); + temp.Add( this.Normal * -1.0 ); + first.DPosition = temp; + #endregion 1 + #region 2 + second.APosition = CenterAB; + second.ATexCoord = TexCoordAB; + + second.BPosition = this.BPosition; + second.BTexCoord = this.BTexCoord; + + second.CPosition = CenterBC; + second.CTexCoord = TexCoordBC; + + second.Normal = this.Normal; + + temp = CenterAB + this.BPosition + CenterBC; + temp.Div( 3.0 ); + temp.Add( this.Normal * -1.0 ); + second.DPosition = temp; + + #endregion 2 + #region 3 + third.APosition = CenterBC; + third.ATexCoord = TexCoordBC; + + third.BPosition = this.CPosition; + third.BTexCoord = this.CTexCoord; + + third.CPosition = CenterCA; + third.CTexCoord = TexCoordCA; + + third.Normal = this.Normal; + temp = CenterBC + this.CPosition + CenterCA; + temp.Div( 3.0 ); + temp.Add( this.Normal * -1.0 ); + third.DPosition = temp; + #endregion 3 + #region 4 + fourth.APosition = CenterAB; + fourth.ATexCoord = TexCoordAB; + + fourth.BPosition = CenterD; + fourth.BTexCoord = TexCoordD; + + fourth.CPosition = CenterCA; + fourth.CTexCoord = TexCoordCA; + + SierpinskiTetrahedron.FindNormal( ref CenterAB, ref CenterD, ref CenterCA, out fourth.Normal ); + fourth.DPosition = E; + #endregion 4 + #region 5 + fifth.APosition = CenterAB; + fifth.ATexCoord = TexCoordAB; + + fifth.BPosition = CenterBC; + fifth.BTexCoord = TexCoordBC; + + fifth.CPosition = CenterD; + fifth.CTexCoord = TexCoordD; + + SierpinskiTetrahedron.FindNormal( ref CenterAB, ref CenterBC, ref CenterD, out fifth.Normal ); + fifth.DPosition = E; + + #endregion 5 + #region 6 + sixth.APosition = CenterBC; + sixth.ATexCoord = TexCoordBC; + + sixth.BPosition = CenterCA; + sixth.BTexCoord = TexCoordCA; + + sixth.CPosition = CenterD; + sixth.CTexCoord = TexCoordD; + + SierpinskiTetrahedron.FindNormal( ref CenterBC, ref CenterCA, ref CenterD, out sixth.Normal ); + sixth.DPosition = E; + #endregion 6 + } + + /// Returns 3 Vertices which form a CCW triangle. + public void GetVertices( out VertexT2dN3dV3d first, out VertexT2dN3dV3d second, out VertexT2dN3dV3d third ) + { + first.TexCoord = this.ATexCoord; + first.Normal = this.Normal; + first.Position = this.APosition; + + second.TexCoord = this.BTexCoord; + second.Normal = this.Normal; + second.Position = this.BPosition; + + third.TexCoord = this.CTexCoord; + third.Normal = this.Normal; + third.Position = this.CPosition; + } + + /// Debugging Aid, no real purpose + public override string ToString() + { + return "A= " + this.APosition.ToString() + " TexCoord: " + this.ATexCoord.ToString() + "\n" + + "B= " + this.BPosition.ToString() + " TexCoord: " + this.ATexCoord.ToString() + "\n" + + "C= " + this.CPosition.ToString() + " TexCoord: " + this.ATexCoord.ToString() + "\n" + + "Normal= " + this.Normal.ToString(); + } + } + + +} diff --git a/Source/Examples/Shapes/Helpers/VboShape.cs b/Source/Examples/Shapes/Helpers/VboShape.cs new file mode 100644 index 00000000..d07331ee --- /dev/null +++ b/Source/Examples/Shapes/Helpers/VboShape.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Examples.Shapes +{ + public sealed class VboShape: DrawableShape + { + public VboShape( ref OpenTK.Graphics.OpenGL.BeginMode primitives, ref VertexT2dN3dV3d[] vertices, ref uint[] indices, bool useDL ) + : base( useDL ) + { + PrimitiveMode = primitives; + + VertexArray = new VertexT2dN3dV3d[vertices.Length]; + for ( uint i = 0; i < vertices.Length; i++ ) + { + VertexArray[i] = vertices[i]; + } + + IndexArray = new uint[indices.Length]; + for ( uint i = 0; i < indices.Length; i++ ) + { + IndexArray[i] = indices[i]; + } + } + } +} diff --git a/Source/Examples/Shapes/KochTetrahedron.cs b/Source/Examples/Shapes/KochTetrahedron.cs new file mode 100644 index 00000000..0071dba9 --- /dev/null +++ b/Source/Examples/Shapes/KochTetrahedron.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; + +namespace Examples.Shapes +{ + public sealed class KochTetrahedron: DrawableShape + { + + public enum eSubdivisions + { + Zero = 0, + One = 1, + Two = 2, + Three = 3, + Four = 4, + Five=5, + Six=6, + Seven=7, + Eight=8, + } + + public KochTetrahedron( double scale, double extrusionHeight, double extrusionMultiplier, eSubdivisions subdivs, bool useDL ) + : base( useDL ) + { + TetrahedronFace[] Triangles; + + switch ( subdivs ) + { + case eSubdivisions.Zero: + SierpinskiTetrahedron.CreateDefaultTetrahedron( scale, out Triangles ); + break; + case eSubdivisions.One: + case eSubdivisions.Two: + case eSubdivisions.Three: + case eSubdivisions.Four: + case eSubdivisions.Five: + case eSubdivisions.Six: + case eSubdivisions.Seven: + case eSubdivisions.Eight: + SierpinskiTetrahedron.CreateDefaultTetrahedron( scale, out Triangles ); + for ( int i = 0; i < (int)subdivs; i++ ) + { + TetrahedronFace[] temp; + this.SubdivideKoch( extrusionHeight, ref Triangles, out temp ); + Triangles = temp; + extrusionHeight *= extrusionMultiplier; + } + break; + default: throw new ArgumentOutOfRangeException( "Subdivisions other than contained in the enum cause overflows and are not allowed." ); + + } + + PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles; + SierpinskiTetrahedron.GetVertexArray( ref Triangles, out VertexArray ); + IndexArray = null; + } + + private void SubdivideKoch( double height, ref TetrahedronFace[] input, out TetrahedronFace[] output ) + { + output = new TetrahedronFace[input.Length * 6]; + + int counter = 0; + for ( int i = 0; i < input.Length; i++ ) + { + input[i].SubdivideKoch(height, out output[counter + 0], out output[counter + 1], out output[counter + 2], out output[counter + 3], out output[counter + 4], out output[counter + 5] ); + counter += 6; // every source triangle emits 6 new triangles + } + + } + } +} diff --git a/Source/Examples/Shapes/MengerSponge.cs b/Source/Examples/Shapes/MengerSponge.cs new file mode 100644 index 00000000..e2a4127d --- /dev/null +++ b/Source/Examples/Shapes/MengerSponge.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; + +using OpenTK; + +namespace Examples.Shapes +{ + public sealed partial class MengerSponge: DrawableShape + { + + public enum eSubdivisions + { + None = 0, + One = 1, + Two = 2, + Three = 3, + } + + public MengerSponge( double scale, eSubdivisions subdivs, bool useDL ) + : base( useDL ) + { + List Cubes; + switch ( subdivs ) + { + case eSubdivisions.None: + CreateDefaultMengerSponge( scale, out Cubes ); + break; + case eSubdivisions.One: + case eSubdivisions.Two: + case eSubdivisions.Three: + CreateDefaultMengerSponge( scale, out Cubes ); + for ( int i = 0; i < (int)subdivs; i++ ) + { + List temp; + SubdivideMengerSponge( ref Cubes, out temp ); + Cubes = temp; + } + break; + default: throw new ArgumentOutOfRangeException( "Subdivisions other than contained in the enum cause overflows and are not allowed." ); + } + + PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles; + + #region Get Array Dimensions + uint + VertexCount = 0, + IndexCount = 0; + + foreach ( MengerCube c in Cubes ) + { + uint t1, t2; + c.GetArraySizes( out t1, out t2 ); + VertexCount += t1; + IndexCount += t2; + } + + VertexArray = new VertexT2dN3dV3d[VertexCount]; + IndexArray = new uint[IndexCount]; + #endregion Get Array Dimensions + + List AllChunks = new List(); + + #region Build a temporary List of all loose pieces + foreach ( MengerCube c in Cubes ) + { + c.GetVboAndIbo( ref AllChunks ); + } + #endregion Build a temporary List of all loose pieces + + #region Assemble pieces into a single VBO and IBO + VertexCount = 0; + IndexCount = 0; + + foreach ( Chunk ch in AllChunks ) + { + for ( int i = 0; i < ch.Vertices.Length; i++ ) + { + VertexArray[VertexCount + i] = ch.Vertices[i]; + } + + for ( int i = 0; i < ch.Indices.Length; i++ ) + { + IndexArray[IndexCount + i] = ch.Indices[i] + VertexCount; + } + + VertexCount += (uint)ch.Vertices.Length; + IndexCount += (uint)ch.Indices.Length; + } + + #endregion Assemble pieces into a single VBO and IBO + + AllChunks.Clear(); + } + + private void CreateDefaultMengerSponge( double halfwidth, out List output ) + { + output = new List( 1 ); + output.Add( new MengerCube( Vector3d.Zero, halfwidth, MengerCube.AllSides, MengerCube.AllSides ) ); + } + + private void SubdivideMengerSponge( ref List input, out List output ) + { + output = new List( input.Count * 20 ); + foreach ( MengerCube InputCube in input ) + { + MengerCube[] SubdividedCubes; + InputCube.Subdivide( out SubdividedCubes ); + for ( int i = 0; i < SubdividedCubes.Length; i++ ) + { + output.Add( SubdividedCubes[i] ); + } + } + } + + } +} diff --git a/Source/Examples/Shapes/Cube.cs b/Source/Examples/Shapes/Old/Cube.cs similarity index 100% rename from Source/Examples/Shapes/Cube.cs rename to Source/Examples/Shapes/Old/Cube.cs diff --git a/Source/Examples/Shapes/IsoSphere.cs b/Source/Examples/Shapes/Old/IsoSphere.cs similarity index 100% rename from Source/Examples/Shapes/IsoSphere.cs rename to Source/Examples/Shapes/Old/IsoSphere.cs diff --git a/Source/Examples/Shapes/Shape.cs b/Source/Examples/Shapes/Old/Shape.cs similarity index 100% rename from Source/Examples/Shapes/Shape.cs rename to Source/Examples/Shapes/Old/Shape.cs diff --git a/Source/Examples/Shapes/Old/SierpinskiTetrahedron.cs b/Source/Examples/Shapes/Old/SierpinskiTetrahedron.cs new file mode 100644 index 00000000..2e6aa219 --- /dev/null +++ b/Source/Examples/Shapes/Old/SierpinskiTetrahedron.cs @@ -0,0 +1,173 @@ +using System; +using System.Diagnostics; + +using OpenTK; + +namespace Examples.Shapes +{ + public sealed partial class SierpinskiTetrahedron: DrawableShape + { + + public enum eSubdivisions + { + /// Creates a Sierpinski Tetrahedron using 4 triangles. + Zero = 0, + /// Creates a Sierpinski Tetrahedron using 16 triangles. + One = 1, + /// Creates a Sierpinski Tetrahedron using 64 triangles. + Two = 2, + /// Creates a Sierpinski Tetrahedron using 256 triangles. + Three = 3, + /// Creates a Sierpinski Tetrahedron using 1024 triangles. + Four = 4, + /// Creates a Sierpinski Tetrahedron using 4096 triangles. + Five = 5, + /// Creates a Sierpinski Tetrahedron using 16384 triangles. + Six = 6, + /// Creates a Sierpinski Tetrahedron using 65536 triangles. + Seven = 7, + /// Creates a Sierpinski Tetrahedron using 262144 triangles. + Eight = 8, + /// Creates a Sierpinski Tetrahedron using 1048576 triangles. + Nine = 9, + } + + /// Creates a Sierpinski Tetrahedron which is centered at (0,0,0) and fits into a sphere of radius 1f, or a diameter of 2f + /// Default: 1f. + /// The number of subdivisions of the Tetrahedron. + /// + public SierpinskiTetrahedron( double scale, eSubdivisions subdivs, bool useDL ) + : base( useDL ) + { + TetrahedronFace[] Triangles; + + switch ( subdivs ) + { + case eSubdivisions.Zero: + CreateDefaultTetrahedron( scale, out Triangles ); + break; + case eSubdivisions.One: + case eSubdivisions.Two: + case eSubdivisions.Three: + case eSubdivisions.Four: + case eSubdivisions.Five: + case eSubdivisions.Six: + case eSubdivisions.Seven: + case eSubdivisions.Eight: + case eSubdivisions.Nine: + CreateDefaultTetrahedron( scale, out Triangles ); + for ( int i = 0; i < (int)subdivs; i++ ) + { + TetrahedronFace[] temp; + SubdivideTetrahedron( ref Triangles, out temp ); + Triangles = temp; + } + break; + default: throw new ArgumentOutOfRangeException( "Subdivisions other than contained in the enum cause overflows and are not allowed." ); + } + + PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles; + SierpinskiTetrahedron.GetVertexArray( ref Triangles, out VertexArray ); + IndexArray = null; + } + + internal static void GetVertexArray( ref TetrahedronFace[] input, out VertexT2dN3dV3d[] output ) + { + output = new VertexT2dN3dV3d[input.Length * 3]; + int counter = 0; + for ( int i = 0; i < input.Length; i++ ) + { + input[i].GetVertices( out output[counter + 0], out output[counter + 1], out output[counter + 2] ); + counter += 3; + } + } + + /// Generates the lowest subdivision mesh, which consists of 4 Triangles. + internal static void CreateDefaultTetrahedron( double scale, out TetrahedronFace[] array ) + { + Vector3d[] Points = new Vector3d[4]; + Points[0] = new Vector3d( 0.0 * scale, 0.0 * scale, 1.0 * scale ); + Points[1] = new Vector3d( -0.816 * scale, 0.471 * scale, -0.333 * scale ); + Points[2] = new Vector3d( 0.816 * scale, 0.471 * scale, -0.333 * scale ); + Points[3] = new Vector3d( 0.0 * scale, -0.943 * scale, -0.333 * scale ); + + Vector2d[] TexCoords = new Vector2d[4]; + TexCoords[0] = new Vector2d( 0.0, 0.0 ); + TexCoords[1] = new Vector2d( 1.0, 0.0 ); + TexCoords[2] = new Vector2d( 0.0, 1.0 ); + TexCoords[3] = new Vector2d( 1.0, 1.0 ); + + Vector3d Normal; + array = new TetrahedronFace[4]; + + FindNormal( ref Points[0], ref Points[2], ref Points[1], ref Points[3], out Normal ); + array[0] = new TetrahedronFace( ref Points[0], ref TexCoords[2], + ref Points[2], ref TexCoords[0], + ref Points[1], ref TexCoords[1], + ref Points[3], + ref Normal ); + + FindNormal( ref Points[0], ref Points[3], ref Points[2], ref Points[1], out Normal ); + array[1] = new TetrahedronFace( ref Points[0], ref TexCoords[0], + ref Points[3], ref TexCoords[1], + ref Points[2], ref TexCoords[2], + ref Points[1], + ref Normal ); + + FindNormal( ref Points[0], ref Points[1], ref Points[3], ref Points[2], out Normal ); + array[2] = new TetrahedronFace( ref Points[0], ref TexCoords[2], + ref Points[1], ref TexCoords[1], + ref Points[3], ref TexCoords[3], + ref Points[2], + ref Normal ); + + FindNormal( ref Points[1], ref Points[2], ref Points[3], ref Points[0], out Normal ); + array[3] = new TetrahedronFace( ref Points[1], ref TexCoords[3], + ref Points[2], ref TexCoords[2], + ref Points[3], ref TexCoords[1], + ref Points[0], + ref Normal ); + } + + /// Subdivides each triangle into 4 new ones. + private void SubdivideTetrahedron( ref TetrahedronFace[] source, out TetrahedronFace[] output ) + { + + output = new TetrahedronFace[source.Length * 4]; + + int counter = 0; + for ( int i = 0; i < source.Length; i++ ) + { + source[i].SubdivideSierpinski( out output[counter + 0], out output[counter + 1], out output[counter + 2], out output[counter + 3] ); + counter += 4; // every source triangle emits 4 new triangles + } + } + + /// A, B and C are the triangle whos normal is to be determined. D is the 4th Point in the Tetraeder which does not belong to the triangle. + internal static void FindNormal( ref Vector3d A, ref Vector3d B, ref Vector3d C, ref Vector3d D, out Vector3d result ) + { + Vector3d temp1, temp2, temp3; + + Vector3d.Sub( ref A, ref D, out temp1 ); + Vector3d.Sub( ref B, ref D, out temp2 ); + Vector3d.Sub( ref C, ref D, out temp3 ); + + Vector3d.Add( ref temp1, ref temp2, out result ); + result.Add( ref temp3 ); + result.Normalize(); + } + + internal static void FindNormal( ref Vector3d A, ref Vector3d B, ref Vector3d C, out Vector3d result ) + { + Vector3d temp1, temp2; + Vector3d.Sub( ref A, ref B, out temp1 ); + temp1.Normalize(); + Vector3d.Sub( ref C, ref B, out temp2 ); + temp2.Normalize(); + Vector3d.Cross( ref temp1, ref temp2, out result ); + result.Mult( -1.0 ); + result.Normalize(); + } + + } +} diff --git a/Source/Examples/Shapes/SlicedHose.cs b/Source/Examples/Shapes/SlicedHose.cs new file mode 100644 index 00000000..7cff0c49 --- /dev/null +++ b/Source/Examples/Shapes/SlicedHose.cs @@ -0,0 +1,194 @@ +using System; +using System.Collections.Generic; +using OpenTK; + +namespace Examples.Shapes +{ + public sealed class SlicedHose : DrawableShape + { + + public enum eSide:byte + { + // Around X Axis + BottomRight, + TopRight, + TopLeft, + BottomLeft, + + // Around Y Axis + + FrontRight, + BackRight, + BackLeft, + FrontLeft, + + // Around Z Axis + FrontBottom, + BackBottom, + BackTop, + FrontTop, + } + + public SlicedHose( eSide side, uint subdivs, double scale, Vector3d offset1, Vector3d offset2, bool useDL ) + : base( useDL ) + { + PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles; + + Vector3d start = Vector3d.Zero, + end = Vector3d.Zero; + double TexCoordStart=0f, TexCoordEnd=0f; + + switch ( side ) + { + #region Around X Axis + case eSide.BottomRight: + start = -Vector3d.UnitY; + end = Vector3d.UnitZ; + TexCoordStart = 0.0; + TexCoordEnd = 0.25; + break; + case eSide.TopRight: + start = Vector3d.UnitZ; + end = Vector3d.UnitY; + TexCoordStart = 0.25; + TexCoordEnd = 0.5; + break; + case eSide.TopLeft: + start = Vector3d.UnitY; + end = -Vector3d.UnitZ; + TexCoordStart = 0.5; + TexCoordEnd = 0.75; + break; + case eSide.BottomLeft: + start = -Vector3d.UnitZ; + end = -Vector3d.UnitY; + TexCoordStart = 0.75; + TexCoordEnd = 1.0; + break; + #endregion Around X Axis + #region Around Y Axis + case eSide.FrontRight: + start = Vector3d.UnitX; + end = Vector3d.UnitZ; + TexCoordStart = 0.0; + TexCoordEnd = 0.25; + break; + case eSide.BackRight: + start = Vector3d.UnitZ; + end = -Vector3d.UnitX; + TexCoordStart = 0.25; + TexCoordEnd = 0.5; + break; + case eSide.BackLeft: + start = -Vector3d.UnitX; + end = -Vector3d.UnitZ; + TexCoordStart = 0.5; + TexCoordEnd = 0.75; + break; + case eSide.FrontLeft: + start = -Vector3d.UnitZ; + end = Vector3d.UnitX; + TexCoordStart = 0.75; + TexCoordEnd = 1.0; + break; +#endregion Around Y Axis + #region Around Z Axis + case eSide.FrontBottom: + start = -Vector3d.UnitY; + end = Vector3d.UnitX; + TexCoordStart = 0.0; + TexCoordEnd = 0.25; + break; + case eSide.BackBottom: + start = -Vector3d.UnitX; + end = -Vector3d.UnitY; + TexCoordStart = 0.25; + TexCoordEnd = 0.5; + break; + case eSide.BackTop: + start = Vector3d.UnitY; + end = -Vector3d.UnitX; + TexCoordStart = 0.5; + TexCoordEnd = 0.75; + break; + case eSide.FrontTop: + start = Vector3d.UnitX; + end = Vector3d.UnitY; + TexCoordStart = 0.75; + TexCoordEnd = 1.0; + break; +#endregion Around Z Axis + + } + + VertexT2dN3dV3d[] temp = new VertexT2dN3dV3d[2 + subdivs]; + + double divisor = 1.0/ ((double)temp.Length-1.0); + for ( int i = 0; i < temp.Length; i++ ) + { + float Multiplier = (float)( i * divisor ); + + temp[i].TexCoord.X = TexCoordStart * Multiplier + TexCoordEnd * ( 1.0f- Multiplier); + + Slerp( ref start, ref end, Multiplier, out temp[i].Normal ); + temp[i].Normal.Normalize(); + temp[i].Position = temp[i].Normal; + temp[i].Position.Mult( scale ); + } + + VertexArray = new VertexT2dN3dV3d[temp.Length * 2]; + IndexArray = new uint[( temp.Length - 1 ) * 2 * 3]; + + uint VertexCounter = 0, + IndexCounter = 0, + QuadCounter = 0; + + for ( int i = 0; i < temp.Length; i++ ) + { + VertexArray[VertexCounter + 0].TexCoord.X = temp[i].TexCoord.X; + VertexArray[VertexCounter + 0].TexCoord.Y = 0.0; + VertexArray[VertexCounter + 0].Normal = temp[i].Normal; + VertexArray[VertexCounter + 0].Position = temp[i].Position + offset1; + + + VertexArray[VertexCounter + 1].TexCoord.X = temp[i].TexCoord.X; + VertexArray[VertexCounter + 1].TexCoord.Y = 1.0; + VertexArray[VertexCounter + 1].Normal = temp[i].Normal; + VertexArray[VertexCounter + 1].Position = temp[i].Position + offset2; + VertexCounter += 2; + + if ( i < temp.Length - 1 ) + { + IndexArray[IndexCounter + 0] = QuadCounter + 0; + IndexArray[IndexCounter + 1] = QuadCounter + 1; + IndexArray[IndexCounter + 2] = QuadCounter + 2; + + IndexArray[IndexCounter + 3] = QuadCounter + 2; + IndexArray[IndexCounter + 4] = QuadCounter + 1; + IndexArray[IndexCounter + 5] = QuadCounter + 3; + + IndexCounter += 6; + QuadCounter += 2; + } + } + + } + + private void Slerp( ref Vector3d a, ref Vector3d b, double factor, out Vector3d result) + { + double t1; + Vector3d.Dot( ref a, ref b, out t1 ); + double theta = System.Math.Acos( t1 ); + + double temp = 1.0 / System.Math.Sin( theta ); + double t2 = System.Math.Sin( ( 1.0 - factor ) * theta ) * temp; + double t3 = System.Math.Sin( factor * theta ) * temp; + + Vector3d v1 = Vector3d.Mult( a, t2); + Vector3d v2 = Vector3d.Mult( b, t3 ); + result = Vector3d.Add( v1, v2 ); + } + + + } +} diff --git a/Source/Examples/Shapes/SlicedSphere.cs b/Source/Examples/Shapes/SlicedSphere.cs new file mode 100644 index 00000000..732c7831 --- /dev/null +++ b/Source/Examples/Shapes/SlicedSphere.cs @@ -0,0 +1,196 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using OpenTK; + +namespace Examples.Shapes +{ + public sealed class SlicedSphere: DrawableShape + { + public enum eSubdivisions + { + Zero = 0, + One = 1, + Two = 2, + Three = 3, + Four = 4, + Five=5, + Six=6, + Seven=7, + Eight=8, + } + + public enum eDir + { + All, + FrontTopRight, + FrontBottomRight, + FrontBottomLeft, + FrontTopLeft, + BackTopRight, + BackBottomRight, + BackBottomLeft, + BackTopLeft, + + } + + public SlicedSphere( double radius, Vector3d offset, eSubdivisions subdivs, eDir[] sides, bool useDL ) + : base( useDL ) + { + double Diameter = radius; + + PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles; + + if ( sides[0] == eDir.All ) + { + sides = new eDir[] { eDir.FrontTopRight, + eDir.FrontBottomRight, + eDir.FrontBottomLeft, + eDir.FrontTopLeft, + eDir.BackTopRight, + eDir.BackBottomRight, + eDir.BackBottomLeft, + eDir.BackTopLeft,}; + } + + VertexArray = new VertexT2dN3dV3d[sides.Length * 3]; + IndexArray = new uint[sides.Length * 3]; + + uint counter = 0; + foreach ( eDir s in sides ) + { + GetDefaultVertices( s, Diameter, out VertexArray[counter + 0], out VertexArray[counter + 1], out VertexArray[counter + 2] ); + IndexArray[counter + 0] = counter + 0; + IndexArray[counter + 1] = counter + 1; + IndexArray[counter + 2] = counter + 2; + counter += 3; + } + + if ( subdivs != eSubdivisions.Zero ) + { + + for ( int s = 0; s < (int)subdivs; s++ ) + { + #region Assemble Chunks and convert to Arrays + List AllChunks = new List(); + for ( uint i = 0; i < IndexArray.Length; i += 3 ) + { + Chunk chu; + Subdivide( Diameter, + ref VertexArray[IndexArray[i + 0]], + ref VertexArray[IndexArray[i + 1]], + ref VertexArray[IndexArray[i + 2]], + out chu ); + AllChunks.Add( chu ); + } + + Chunk.GetArray( ref AllChunks, out VertexArray, out IndexArray ); + AllChunks.Clear(); + #endregion Assemble Chunks and convert to Arrays + } + } + + for (int i=0; i= MINPathSteps, "A Path must have at least " + MINPathSteps + " Steps to form a volume." ); + Trace.Assert( shapevertices >= MINShapeVertices, "A Shape must contain at least " + MINShapeVertices + " Vertices to be considered valid and create a volume." ); + Trace.Assert( TexCount > 1, "at least 1 Texture set is required." ); + + PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.TriangleStrip; + + Vector3d[] PathPositions = new Vector3d[pathsteps]; + + #region Find the center Points for each step on the path + + for ( int i = 0; i < pathsteps; i++ ) + { + double Angle = ( i / (double)pathsteps ) * TwoPi; + double AngleTimesP = Angle * p; + double AngleTimesQ = Angle * q; + double r = ( 0.5 * ( 2.0 + System.Math.Sin( AngleTimesQ ) ) ); + + PathPositions[i] = new Vector3d( ( r * System.Math.Cos( AngleTimesP ) ), + ( r * System.Math.Cos( AngleTimesQ ) ), + ( r * System.Math.Sin( AngleTimesP ) ) ); + + } + #endregion Find the center Points for each step on the path + + #region Find the Torus length + Vector3d result; + double[] Lengths = new double[pathsteps]; + Vector3d.Sub( ref PathPositions[pathsteps - 1], ref PathPositions[0], out result ); + Lengths[0] = result.Length; + double TotalLength = result.Length; + for ( int i = 1; i < pathsteps; i++ ) // skipping + { + Vector3d.Sub( ref PathPositions[i - 1], ref PathPositions[i], out result ); + Lengths[i] = result.Length; + TotalLength += result.Length; + } + Trace.WriteLine( "the TorusKnot's length is: " + TotalLength + " " ); + #endregion Find the Torus length + + VertexArray = new VertexT2dN3dV3d[pathsteps * shapevertices]; + + #region Loft a circle Shape along the path + double TwoPiThroughVert = TwoPi / shapevertices; // precalc for reuse + for ( uint i = 0; i < pathsteps; i++ ) + { + Vector3d last, next, normal, tangent; + if ( i == pathsteps - 1 ) + next = PathPositions[0]; + else + next = PathPositions[i + 1]; + if ( i == 0 ) + last = PathPositions[pathsteps - 1]; + else + last = PathPositions[i - 1]; + + Vector3d.Sub( ref next, ref last, out tangent ); // Guesstimate tangent + tangent.Normalize(); + + Vector3d.Add( ref next, ref last, out normal ); // Approximate N + normal.Normalize(); + Vector3d.Mult( ref normal, radius, out normal );// scale the shape to desired radius + + for ( uint j = 0; j < shapevertices; j++ ) + { + uint index = i * (uint)shapevertices + j; + + // Create a point on the plane and rotate it + Matrix4d RotationMatrix = Matrix4d.Rotate( tangent, -( j * TwoPiThroughVert ) ); + Vector3d point = Vector3d.TransformVector( normal, RotationMatrix ); + Vector3d.Add( ref PathPositions[i], ref point, out VertexArray[index].Position ); + // Since the used shape is a circle, the Vertex normal's heading is easy to find + Vector3d.Sub( ref VertexArray[index].Position, ref PathPositions[i], out VertexArray[index].Normal ); + VertexArray[index].Normal.Normalize(); + // just generate some semi-useful UVs to fill blanks + VertexArray[index].TexCoord = new Vector2d( (double)( i / TotalLength/ TexCount ), j / ( shapevertices - 1.0 ) ); + } + } + #endregion Loft a circle Shape along the path + + PathPositions = null; // not needed anymore + + uint currentindex = 0; + + #region Build a Triangle strip from the Vertices + IndexArray = new uint[pathsteps * ( shapevertices * 2 + 2 )]; // 2 triangles per vertex, +2 due to added degenerate triangles + for ( uint i = 0; i < pathsteps; i++ ) + { + uint RowCurrent = i * (uint)shapevertices; + uint RowBelow; + if ( i == pathsteps - 1 ) + RowBelow = 0; // for the last row, the first row is the following + else + RowBelow = ( i + 1 ) * (uint)shapevertices; + + // new ring begins here + for ( uint j = 0; j < shapevertices; j++ ) + { + IndexArray[currentindex++] = RowCurrent + j; + IndexArray[currentindex++] = RowBelow + j; + } + // ring ends here, repeat first 2 vertices to insert 2 degenerate triangles to reach following ring + IndexArray[currentindex++] = RowCurrent; + IndexArray[currentindex++] = RowBelow; + } + #endregion Build a Triangle strip from the Vertices + } + + } +} diff --git a/Source/Examples/Utilities/LoaderDDS.cs b/Source/Examples/Utilities/LoaderDDS.cs new file mode 100644 index 00000000..550e4f6a --- /dev/null +++ b/Source/Examples/Utilities/LoaderDDS.cs @@ -0,0 +1,711 @@ +#region --- License --- +/* Licensed under the MIT/X11 license. + * Copyright (c) 2006-2008 the OpenTK Team. + * This notice may not be removed from any source distribution. + * See license.txt for licensing details. + */ +#endregion + +// #define READALL +// uncomment so ALL fields read from file are interpreted and filled. Necessary to implement uncompressed DDS + +// TODO: Find app that can build compressed dds cubemaps and verify that the import code works. + +using System; +using System.IO; +using System.Diagnostics; + +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; + +namespace Examples.TextureLoaders +{ + /// + /// Expects the presence of a valid OpenGL Context and Texture Compression Extensions (GL 1.5) and Cube Maps (GL 1.3). + /// You will get what you give. No automatic Mipmap generation or automatic compression is done. (both bad quality) + /// Textures are never rescaled or checked if Power of 2, but you should make the Width and Height a multiple of 4 because DXTn uses 4x4 blocks. + /// (Image displays correctly but runs extremely slow with non-power-of-two Textures on FX5600, Cache misses?) + /// CubeMap support is experimental and the file must specify all 6 faces to work at all. + /// + static class ImageDDS + { + #region Constants + private const byte HeaderSizeInBytes = 128; // all non-image data together is 128 Bytes + private const uint BitMask = 0x00000007; // bits = 00 00 01 11 + + + private static NotImplementedException Unfinished = new NotImplementedException( "ERROR: Only 2 Dimensional DXT1/3/5 compressed images for now. 1D/3D Textures may not be compressed according to spec." ); + #endregion Constants + + #region Simplified In-Memory representation of the Image + private static bool _IsCompressed; + private static int _Width, _Height, _Depth, _MipMapCount; + private static int _BytesForMainSurface; // must be handled with care when implementing uncompressed formats! + private static byte _BytesPerBlock; + private static PixelInternalFormat _PixelInternalFormat; + #endregion Simplified In-Memory representation of the Image + + #region Flag Enums + [Flags] // Surface Description + private enum eDDSD: uint + { + CAPS = 0x00000001, // is always present + HEIGHT = 0x00000002, // is always present + WIDTH = 0x00000004, // is always present + PITCH = 0x00000008, // is set if the image is uncompressed + PIXELFORMAT = 0x00001000, // is always present + MIPMAPCOUNT = 0x00020000, // is set if the image contains MipMaps + LINEARSIZE = 0x00080000, // is set if the image is compressed + DEPTH = 0x00800000 // is set for 3D Volume Textures + } + + [Flags] // Pixelformat + private enum eDDPF: uint + { + NONE = 0x00000000, // not part of DX, added for convenience + ALPHAPIXELS = 0x00000001, + FOURCC = 0x00000004, + RGB = 0x00000040, + RGBA = 0x00000041 + } + + /// This list was derived from nVidia OpenGL SDK + [Flags] // Texture types + private enum eFOURCC: uint + { + UNKNOWN = 0, +#if READALL + R8G8B8 = 20, + A8R8G8B8 = 21, + X8R8G8B8 = 22, + R5G6B5 = 23, + X1R5G5B5 = 24, + A1R5G5B5 = 25, + A4R4G4B4 = 26, + R3G3B2 = 27, + A8 = 28, + A8R3G3B2 = 29, + X4R4G4B4 = 30, + A2B10G10R10 = 31, + A8B8G8R8 = 32, + X8B8G8R8 = 33, + G16R16 = 34, + A2R10G10B10 = 35, + A16B16G16R16 = 36, + + L8 = 50, + A8L8 = 51, + A4L4 = 52, + + D16_LOCKABLE = 70, + D32 = 71, + D24X8 = 77, + D16 = 80, + + D32F_LOCKABLE = 82, + L16 = 81, + + // s10e5 formats (16-bits per channel) + R16F = 111, + G16R16F = 112, + A16B16G16R16F = 113, + + // IEEE s23e8 formats (32-bits per channel) + R32F = 114, + G32R32F = 115, + A32B32G32R32F = 116 +#endif + DXT1 = 0x31545844, + DXT2 = 0x32545844, + DXT3 = 0x33545844, + DXT4 = 0x34545844, + DXT5 = 0x35545844, + } + + [Flags] // dwCaps1 + private enum eDDSCAPS: uint + { + NONE = 0x00000000, // not part of DX, added for convenience + COMPLEX = 0x00000008, // should be set for any DDS file with more than one main surface + TEXTURE = 0x00001000, // should always be set + MIPMAP = 0x00400000 // only for files with MipMaps + } + + [Flags] // dwCaps2 + private enum eDDSCAPS2: uint + { + NONE = 0x00000000, // not part of DX, added for convenience + CUBEMAP = 0x00000200, + CUBEMAP_POSITIVEX = 0x00000400, + CUBEMAP_NEGATIVEX = 0x00000800, + CUBEMAP_POSITIVEY = 0x00001000, + CUBEMAP_NEGATIVEY = 0x00002000, + CUBEMAP_POSITIVEZ = 0x00004000, + CUBEMAP_NEGATIVEZ = 0x00008000, + CUBEMAP_ALL_FACES = 0x0000FC00, + VOLUME = 0x00200000 // for 3D Textures + } + #endregion Flag Enums + + #region Private Members + private static string idString; // 4 bytes, must be "DDS " + private static UInt32 dwSize; // Size of structure is 124 bytes, 128 including all sub-structs and the header + private static UInt32 dwFlags; // Flags to indicate valid fields. + private static UInt32 dwHeight; // Height of the main image in pixels + private static UInt32 dwWidth; // Width of the main image in pixels + private static UInt32 dwPitchOrLinearSize; // For compressed formats, this is the total number of bytes for the main image. + private static UInt32 dwDepth; // For volume textures, this is the depth of the volume. + private static UInt32 dwMipMapCount; // total number of levels in the mipmap chain of the main image. +#if READALL + private static UInt32[] dwReserved1; // 11 UInt32s +#endif + // Pixelformat sub-struct, 32 bytes + private static UInt32 pfSize; // Size of Pixelformat structure. This member must be set to 32. + private static UInt32 pfFlags; // Flags to indicate valid fields. + private static UInt32 pfFourCC; // This is the four-character code for compressed formats. +#if READALL + private static UInt32 pfRGBBitCount; // For RGB formats, this is the total number of bits in the format. dwFlags should include DDpf_RGB in this case. This value is usually 16, 24, or 32. For A8R8G8B8, this value would be 32. + private static UInt32 pfRBitMask; // For RGB formats, these three fields contain the masks for the red, green, and blue channels. For A8R8G8B8, these values would be 0x00ff0000, 0x0000ff00, and 0x000000ff respectively. + private static UInt32 pfGBitMask; // .. + private static UInt32 pfBBitMask; // .. + private static UInt32 pfABitMask; // For RGB formats, this contains the mask for the alpha channel, if any. dwFlags should include DDpf_ALPHAPIXELS in this case. For A8R8G8B8, this value would be 0xff000000. +#endif + // Capabilities sub-struct, 16 bytes + private static UInt32 dwCaps1; // always includes DDSCAPS_TEXTURE. with more than one main surface DDSCAPS_COMPLEX should also be set. + private static UInt32 dwCaps2; // For cubic environment maps, DDSCAPS2_CUBEMAP should be included as well as one or more faces of the map (DDSCAPS2_CUBEMAP_POSITIVEX, DDSCAPS2_CUBEMAP_NEGATIVEX, DDSCAPS2_CUBEMAP_POSITIVEY, DDSCAPS2_CUBEMAP_NEGATIVEY, DDSCAPS2_CUBEMAP_POSITIVEZ, DDSCAPS2_CUBEMAP_NEGATIVEZ). For volume textures, DDSCAPS2_VOLUME should be included. +#if READALL + private static UInt32[] dwReserved2; // 3 = 2 + 1 UInt32 +#endif + #endregion Private Members + + /// + /// This function will generate, bind and fill a Texture Object with a DXT1/3/5 compressed Texture in .dds Format. + /// MipMaps below 4x4 Pixel Size are discarded, because DXTn's smallest unit is a 4x4 block of Pixel data. + /// It will set correct MipMap parameters, Filtering, Wrapping and EnvMode for the Texture. + /// The only call inside this function affecting OpenGL State is GL.BindTexture(); + /// + /// The name of the file you wish to load, including path and file extension. + /// 0 if invalid, otherwise a Texture Object usable with GL.BindTexture(). + /// 0 if invalid, will output what was loaded (typically Texture1D/2D/3D or Cubemap) + public static void LoadFromDisk( string filename, out uint texturehandle, out TextureTarget dimension ) + { + #region Prep data + // invalidate whatever it was before + dimension = (TextureTarget) 0; + texturehandle = TextureLoaderParameters.OpenGLDefaultTexture; + ErrorCode GLError = ErrorCode.NoError; + + _IsCompressed = false; + _Width = 0; + _Height = 0; + _Depth = 0; + _MipMapCount = 0; + _BytesForMainSurface = 0; + _BytesPerBlock = 0; + _PixelInternalFormat = PixelInternalFormat.Rgba8; + byte[] _RawDataFromFile; + #endregion + + #region Try + try // Exceptions will be thrown if any Problem occurs while working on the file. + { + _RawDataFromFile = File.ReadAllBytes( @filename ); + + #region Translate Header to less cryptic representation + ConvertDX9Header( ref _RawDataFromFile ); // The first 128 Bytes of the file is non-image data + + // start by checking if all forced flags are present. Flags indicate valid fields, but aren't written by every tool ..... + if ( idString != "DDS " || // magic key + dwSize != 124 || // constant size of struct, never reused + pfSize != 32 || // constant size of struct, never reused + !CheckFlag( dwFlags, (uint) eDDSD.CAPS ) || // must know it's caps + !CheckFlag( dwFlags, (uint) eDDSD.PIXELFORMAT ) || // must know it's format + !CheckFlag( dwCaps1, (uint) eDDSCAPS.TEXTURE ) // must be a Texture + ) + throw new ArgumentException( "ERROR: File has invalid signature or missing Flags." ); + + #region Examine Flags + if ( CheckFlag( dwFlags, (uint) eDDSD.WIDTH ) ) + _Width = (int) dwWidth; + else + throw new ArgumentException( "ERROR: Flag for Width not set." ); + + if ( CheckFlag( dwFlags, (uint) eDDSD.HEIGHT ) ) + _Height = (int) dwHeight; + else + throw new ArgumentException( "ERROR: Flag for Height not set." ); + + if ( CheckFlag( dwFlags, (uint) eDDSD.DEPTH ) && CheckFlag( dwCaps2, (uint) eDDSCAPS2.VOLUME ) ) + { + dimension = TextureTarget.Texture3D; // image is 3D Volume + _Depth = (int) dwDepth; + throw Unfinished; + } else + {// image is 2D or Cube + if ( CheckFlag( dwCaps2, (uint) eDDSCAPS2.CUBEMAP ) ) + { + dimension = TextureTarget.TextureCubeMap; + _Depth = 6; + } else + { + dimension = TextureTarget.Texture2D; + _Depth = 1; + } + } + + // these flags must be set for mipmaps to be included + if ( CheckFlag( dwCaps1, (uint) eDDSCAPS.MIPMAP ) && CheckFlag( dwFlags, (uint) eDDSD.MIPMAPCOUNT ) ) + _MipMapCount = (int) dwMipMapCount; // image contains MipMaps + else + _MipMapCount = 1; // only 1 main image + + // Should never happen + if ( CheckFlag( dwFlags, (uint) eDDSD.PITCH ) && CheckFlag( dwFlags, (uint) eDDSD.LINEARSIZE ) ) + throw new ArgumentException( "INVALID: Pitch AND Linear Flags both set. Image cannot be uncompressed and DTXn compressed at the same time." ); + + // This flag is set if format is uncompressed RGB RGBA etc. + if ( CheckFlag( dwFlags, (uint) eDDSD.PITCH ) ) + { + // _BytesForMainSurface = (int) dwPitchOrLinearSize; // holds bytes-per-scanline for uncompressed + _IsCompressed = false; + throw Unfinished; + } + + // This flag is set if format is compressed DXTn. + if ( CheckFlag( dwFlags, (uint) eDDSD.LINEARSIZE ) ) + { + _BytesForMainSurface = (int) dwPitchOrLinearSize; + _IsCompressed = true; + } + #endregion Examine Flags + + #region Examine Pixel Format, anything but DXTn will fail atm. + if ( CheckFlag( pfFlags, (uint) eDDPF.FOURCC ) ) + switch ( (eFOURCC) pfFourCC ) + { + case eFOURCC.DXT1: + _PixelInternalFormat = (PixelInternalFormat) ExtTextureCompressionS3tc.CompressedRgbS3tcDxt1Ext; + _BytesPerBlock = 8; + _IsCompressed = true; + break; + //case eFOURCC.DXT2: + case eFOURCC.DXT3: + _PixelInternalFormat = (PixelInternalFormat) ExtTextureCompressionS3tc.CompressedRgbaS3tcDxt3Ext; + _BytesPerBlock = 16; + _IsCompressed = true; + break; + //case eFOURCC.DXT4: + case eFOURCC.DXT5: + _PixelInternalFormat = (PixelInternalFormat) ExtTextureCompressionS3tc.CompressedRgbaS3tcDxt5Ext; + _BytesPerBlock = 16; + _IsCompressed = true; + break; + default: + throw Unfinished; // handle uncompressed formats + } else + throw Unfinished; + // pf*Bitmasks should be examined here + #endregion + + // Works, but commented out because some texture authoring tools don't set this flag. + /* Safety Check, if file is only 1x 2D surface without mipmaps, eDDSCAPS.COMPLEX should not be set + if ( CheckFlag( dwCaps1, (uint) eDDSCAPS.COMPLEX ) ) + { + if ( result == eTextureDimension.Texture2D && _MipMapCount == 1 ) // catch potential problem + Trace.WriteLine( "Warning: Image is declared complex, but contains only 1 surface." ); + }*/ + + if ( TextureLoaderParameters.Verbose ) + Trace.WriteLine( "\n" + GetDescriptionFromMemory( filename, dimension ) ); + #endregion Translate Header to less cryptic representation + + #region send the Texture to GL + #region Generate and Bind Handle + GL.GenTextures( 1, out texturehandle ); + GL.BindTexture( dimension, texturehandle ); + #endregion Generate and Bind Handle + + int Cursor = HeaderSizeInBytes; + // foreach face in the cubemap, get all it's mipmaps levels. Only one iteration for Texture2D + for ( int Slices = 0 ; Slices < _Depth ; Slices++ ) + { + int trueMipMapCount = _MipMapCount - 1; // TODO: triplecheck correctness + int Width = _Width; + int Height = _Height; + for ( int Level = 0 ; Level < _MipMapCount ; Level++ ) // start at base image + { + #region determine Dimensions + int BlocksPerRow = ( Width + 3 ) >> 2; + int BlocksPerColumn = ( Height + 3 ) >> 2; + int SurfaceBlockCount = BlocksPerRow * BlocksPerColumn; // // DXTn stores Texels in 4x4 blocks, a Color block is 8 Bytes, an Alpha block is 8 Bytes for DXT3/5 + int SurfaceSizeInBytes = SurfaceBlockCount * _BytesPerBlock; + + // this check must evaluate to false for 2D and Cube maps, or it's impossible to determine MipMap sizes. + if ( TextureLoaderParameters.Verbose && Level == 0 && _IsCompressed && _BytesForMainSurface != SurfaceSizeInBytes ) + Trace.WriteLine( "Warning: Calculated byte-count of main image differs from what was read from file." ); + #endregion determine Dimensions + + // skip mipmaps smaller than a 4x4 Pixels block, which is the smallest DXTn unit. + if ( Width > 2 && Height > 2 ) + { // Note: there could be a potential problem with non-power-of-two cube maps + #region Prepare Array for TexImage + byte[] RawDataOfSurface = new byte[SurfaceSizeInBytes]; + if ( !TextureLoaderParameters.FlipImages ) + { // no changes to the image, copy as is + Array.Copy( _RawDataFromFile, Cursor, RawDataOfSurface, 0, SurfaceSizeInBytes ); + } else + { // Turn the blocks upside down and the rows aswell, done in a single pass through all blocks + for ( int sourceColumn = 0 ; sourceColumn < BlocksPerColumn ; sourceColumn++ ) + { + int targetColumn = BlocksPerColumn - sourceColumn - 1; + for ( int row = 0 ; row < BlocksPerRow ; row++ ) + { + int target = ( targetColumn * BlocksPerRow + row ) * _BytesPerBlock; + int source = ( sourceColumn * BlocksPerRow + row ) * _BytesPerBlock + Cursor; + #region Swap Bytes + switch ( _PixelInternalFormat ) + { + case (PixelInternalFormat) ExtTextureCompressionS3tc.CompressedRgbS3tcDxt1Ext: + // Color only + RawDataOfSurface[target + 0] = _RawDataFromFile[source + 0]; + RawDataOfSurface[target + 1] = _RawDataFromFile[source + 1]; + RawDataOfSurface[target + 2] = _RawDataFromFile[source + 2]; + RawDataOfSurface[target + 3] = _RawDataFromFile[source + 3]; + RawDataOfSurface[target + 4] = _RawDataFromFile[source + 7]; + RawDataOfSurface[target + 5] = _RawDataFromFile[source + 6]; + RawDataOfSurface[target + 6] = _RawDataFromFile[source + 5]; + RawDataOfSurface[target + 7] = _RawDataFromFile[source + 4]; + break; + case (PixelInternalFormat) ExtTextureCompressionS3tc.CompressedRgbaS3tcDxt3Ext: + // Alpha + RawDataOfSurface[target + 0] = _RawDataFromFile[source + 6]; + RawDataOfSurface[target + 1] = _RawDataFromFile[source + 7]; + RawDataOfSurface[target + 2] = _RawDataFromFile[source + 4]; + RawDataOfSurface[target + 3] = _RawDataFromFile[source + 5]; + RawDataOfSurface[target + 4] = _RawDataFromFile[source + 2]; + RawDataOfSurface[target + 5] = _RawDataFromFile[source + 3]; + RawDataOfSurface[target + 6] = _RawDataFromFile[source + 0]; + RawDataOfSurface[target + 7] = _RawDataFromFile[source + 1]; + + // Color + RawDataOfSurface[target + 8] = _RawDataFromFile[source + 8]; + RawDataOfSurface[target + 9] = _RawDataFromFile[source + 9]; + RawDataOfSurface[target + 10] = _RawDataFromFile[source + 10]; + RawDataOfSurface[target + 11] = _RawDataFromFile[source + 11]; + RawDataOfSurface[target + 12] = _RawDataFromFile[source + 15]; + RawDataOfSurface[target + 13] = _RawDataFromFile[source + 14]; + RawDataOfSurface[target + 14] = _RawDataFromFile[source + 13]; + RawDataOfSurface[target + 15] = _RawDataFromFile[source + 12]; + break; + case (PixelInternalFormat) ExtTextureCompressionS3tc.CompressedRgbaS3tcDxt5Ext: + // Alpha, the first 2 bytes remain + RawDataOfSurface[target + 0] = _RawDataFromFile[source + 0]; + RawDataOfSurface[target + 1] = _RawDataFromFile[source + 1]; + + // extract 3 bits each and flip them + GetBytesFromUInt24( ref RawDataOfSurface, (uint) target + 5, FlipUInt24( GetUInt24( ref _RawDataFromFile, (uint) source + 2 ) ) ); + GetBytesFromUInt24( ref RawDataOfSurface, (uint) target + 2, FlipUInt24( GetUInt24( ref _RawDataFromFile, (uint) source + 5 ) ) ); + + // Color + RawDataOfSurface[target + 8] = _RawDataFromFile[source + 8]; + RawDataOfSurface[target + 9] = _RawDataFromFile[source + 9]; + RawDataOfSurface[target + 10] = _RawDataFromFile[source + 10]; + RawDataOfSurface[target + 11] = _RawDataFromFile[source + 11]; + RawDataOfSurface[target + 12] = _RawDataFromFile[source + 15]; + RawDataOfSurface[target + 13] = _RawDataFromFile[source + 14]; + RawDataOfSurface[target + 14] = _RawDataFromFile[source + 13]; + RawDataOfSurface[target + 15] = _RawDataFromFile[source + 12]; + break; + default: + throw new ArgumentException( "ERROR: Should have never arrived here! Bad _PixelInternalFormat! Should have been dealt with much earlier." ); + } + #endregion Swap Bytes + } + } + } + #endregion Prepare Array for TexImage + + #region Create TexImage + switch ( dimension ) + { + case TextureTarget.Texture2D: + GL.CompressedTexImage2D( TextureTarget.Texture2D, + Level, + _PixelInternalFormat, + Width, + Height, + TextureLoaderParameters.Border, + SurfaceSizeInBytes, + RawDataOfSurface ); + break; + case TextureTarget.TextureCubeMap: + GL.CompressedTexImage2D( TextureTarget.TextureCubeMapPositiveX + Slices, + Level, + _PixelInternalFormat, + Width, + Height, + TextureLoaderParameters.Border, + SurfaceSizeInBytes, + RawDataOfSurface ); + break; + case TextureTarget.Texture1D: // Untested + case TextureTarget.Texture3D: // Untested + default: + throw new ArgumentException( "ERROR: Use DXT for 2D Images only. Cannot evaluate " + dimension ); + } + GL.Finish( ); + #endregion Create TexImage + + #region Query Success + int width, height, internalformat, compressed; + switch ( dimension ) + { + case TextureTarget.Texture1D: + case TextureTarget.Texture2D: + case TextureTarget.Texture3D: + GL.GetTexLevelParameter( dimension, Level, GetTextureParameter.TextureWidth, out width ); + GL.GetTexLevelParameter( dimension, Level, GetTextureParameter.TextureHeight, out height ); + GL.GetTexLevelParameter( dimension, Level, GetTextureParameter.TextureInternalFormat, out internalformat ); + GL.GetTexLevelParameter( dimension, Level, GetTextureParameter.TextureCompressed, out compressed ); + break; + case TextureTarget.TextureCubeMap: + GL.GetTexLevelParameter( TextureTarget.TextureCubeMapPositiveX + Slices, Level, GetTextureParameter.TextureWidth, out width ); + GL.GetTexLevelParameter( TextureTarget.TextureCubeMapPositiveX + Slices, Level, GetTextureParameter.TextureHeight, out height ); + GL.GetTexLevelParameter( TextureTarget.TextureCubeMapPositiveX + Slices, Level, GetTextureParameter.TextureInternalFormat, out internalformat ); + GL.GetTexLevelParameter( TextureTarget.TextureCubeMapPositiveX + Slices, Level, GetTextureParameter.TextureCompressed, out compressed ); + break; + default: + throw Unfinished; + } + GLError = GL.GetError( ); + if ( TextureLoaderParameters.Verbose ) + Trace.WriteLine( "GL: " + GLError.ToString( ) + " Level: " + Level + " DXTn: " + ( ( compressed == 1 ) ? "Yes" : "No" ) + " Frmt:" + (ExtTextureCompressionS3tc) internalformat + " " + width + "*" + height ); + if ( GLError != ErrorCode.NoError || compressed == 0 || width == 0 || height == 0 || internalformat == 0 ) + { + GL.DeleteTextures( 1, ref texturehandle ); + throw new ArgumentException( "ERROR: Something went wrong after GL.CompressedTexImage(); Last GL Error: " + GLError.ToString( ) ); + } + #endregion Query Success + } else + { + if ( trueMipMapCount > Level ) + trueMipMapCount = Level - 1; // The current Level is invalid + } + + #region Prepare the next MipMap level + Width /= 2; + if ( Width < 1 ) + Width = 1; + Height /= 2; + if ( Height < 1 ) + Height = 1; + Cursor += SurfaceSizeInBytes; + #endregion Prepare the next MipMap level + } + + #region Set States properly + GL.TexParameter( dimension, (TextureParameterName) All.TextureBaseLevel, 0 ); + GL.TexParameter( dimension, (TextureParameterName) All.TextureMaxLevel, trueMipMapCount ); + + int TexMaxLevel; + GL.GetTexParameter( dimension, GetTextureParameter.TextureMaxLevel, out TexMaxLevel ); + + if ( TextureLoaderParameters.Verbose ) + Trace.WriteLine( "Verification: GL: " + GL.GetError( ).ToString( ) + " TextureMaxLevel: " + TexMaxLevel + ( ( TexMaxLevel == trueMipMapCount ) ? " (Correct.)" : " (Wrong!)" ) ); + #endregion Set States properly + } + + #region Set Texture Parameters + GL.TexParameter( dimension, TextureParameterName.TextureMinFilter, (int) TextureLoaderParameters.MinificationFilter ); + GL.TexParameter( dimension, TextureParameterName.TextureMagFilter, (int) TextureLoaderParameters.MagnificationFilter ); + + GL.TexParameter( dimension, TextureParameterName.TextureWrapS, (int) TextureLoaderParameters.WrapModeS ); + GL.TexParameter( dimension, TextureParameterName.TextureWrapT, (int) TextureLoaderParameters.WrapModeT ); + + GL.TexEnv( TextureEnvTarget.TextureEnv, TextureEnvParameter.TextureEnvMode, (int) TextureLoaderParameters.EnvMode ); + + GLError = GL.GetError( ); + if ( GLError != ErrorCode.NoError ) + { + throw new ArgumentException( "Error setting Texture Parameters. GL Error: " + GLError ); + } + #endregion Set Texture Parameters + + // If it made it here without throwing any Exception the result is a valid Texture. + return; // success + #endregion send the Texture to GL + } catch ( Exception e ) + { + dimension = (TextureTarget) 0; + texturehandle = TextureLoaderParameters.OpenGLDefaultTexture; + throw new ArgumentException( "ERROR: Exception caught when attempting to load file " + filename + ".\n" + e + "\n" + GetDescriptionFromFile( filename ) ); + // return; // failure + } finally + { + _RawDataFromFile = null; // clarity, not really needed + } + #endregion Try + } + + #region Helpers + private static void ConvertDX9Header( ref byte[] input ) + { + UInt32 offset = 0; + idString = GetString( ref input, offset ); + offset += 4; + dwSize = GetUInt32( ref input, offset ); + offset += 4; + dwFlags = GetUInt32( ref input, offset ); + offset += 4; + dwHeight = GetUInt32( ref input, offset ); + offset += 4; + dwWidth = GetUInt32( ref input, offset ); + offset += 4; + dwPitchOrLinearSize = GetUInt32( ref input, offset ); + offset += 4; + dwDepth = GetUInt32( ref input, offset ); + offset += 4; + dwMipMapCount = GetUInt32( ref input, offset ); + offset += 4; +#if READALL + dwReserved1 = new UInt32[11]; // reserved +#endif + offset += 4 * 11; + pfSize = GetUInt32( ref input, offset ); + offset += 4; + pfFlags = GetUInt32( ref input, offset ); + offset += 4; + pfFourCC = GetUInt32( ref input, offset ); + offset += 4; +#if READALL + pfRGBBitCount = GetUInt32( ref input, offset ); + offset += 4; + pfRBitMask = GetUInt32( ref input, offset ); + offset += 4; + pfGBitMask = GetUInt32( ref input, offset ); + offset += 4; + pfBBitMask = GetUInt32( ref input, offset ); + offset += 4; + pfABitMask = GetUInt32( ref input, offset ); + offset += 4; +#else + offset += 20; +#endif + dwCaps1 = GetUInt32( ref input, offset ); + offset += 4; + dwCaps2 = GetUInt32( ref input, offset ); + offset += 4; +#if READALL + dwReserved2 = new UInt32[3]; // offset is 4+112 here, + 12 = 4+124 +#endif + offset += 4 * 3; + } + + /// Returns true if the flag is set, false otherwise + private static bool CheckFlag( uint variable, uint flag ) + { + return ( variable & flag ) > 0 ? true : false; + } + + private static string GetString( ref byte[] input, uint offset ) + { + return "" + (char) input[offset + 0] + (char) input[offset + 1] + (char) input[offset + 2] + (char) input[offset + 3]; + } + + private static uint GetUInt32( ref byte[] input, uint offset ) + { + return (uint) ( ( ( input[offset + 3] * 256 + input[offset + 2] ) * 256 + input[offset + 1] ) * 256 + input[offset + 0] ); + } + + private static uint GetUInt24( ref byte[] input, uint offset ) + { + return (uint) ( ( input[offset + 2] * 256 + input[offset + 1] ) * 256 + input[offset + 0] ); + } + + private static void GetBytesFromUInt24( ref byte[] input, uint offset, uint splitme ) + { + input[offset + 0] = (byte) ( splitme & 0x000000ff ); + input[offset + 1] = (byte) ( ( splitme & 0x0000ff00 ) >> 8 ); + input[offset + 2] = (byte) ( ( splitme & 0x00ff0000 ) >> 16 ); + return; + } + + /// DXT5 Alpha block flipping, inspired by code from Evan Hart (nVidia SDK) + private static uint FlipUInt24( uint inputUInt24 ) + { + byte[][] ThreeBits = new byte[2][]; + for ( int i = 0 ; i < 2 ; i++ ) + ThreeBits[i] = new byte[4]; + + // extract 3 bits each into the array + ThreeBits[0][0] = (byte) ( inputUInt24 & BitMask ); + inputUInt24 >>= 3; + ThreeBits[0][1] = (byte) ( inputUInt24 & BitMask ); + inputUInt24 >>= 3; + ThreeBits[0][2] = (byte) ( inputUInt24 & BitMask ); + inputUInt24 >>= 3; + ThreeBits[0][3] = (byte) ( inputUInt24 & BitMask ); + inputUInt24 >>= 3; + ThreeBits[1][0] = (byte) ( inputUInt24 & BitMask ); + inputUInt24 >>= 3; + ThreeBits[1][1] = (byte) ( inputUInt24 & BitMask ); + inputUInt24 >>= 3; + ThreeBits[1][2] = (byte) ( inputUInt24 & BitMask ); + inputUInt24 >>= 3; + ThreeBits[1][3] = (byte) ( inputUInt24 & BitMask ); + + // stuff 8x 3bits into 3 bytes + uint Result = 0; + Result = Result | (uint) ( ThreeBits[1][0] << 0 ); + Result = Result | (uint) ( ThreeBits[1][1] << 3 ); + Result = Result | (uint) ( ThreeBits[1][2] << 6 ); + Result = Result | (uint) ( ThreeBits[1][3] << 9 ); + Result = Result | (uint) ( ThreeBits[0][0] << 12 ); + Result = Result | (uint) ( ThreeBits[0][1] << 15 ); + Result = Result | (uint) ( ThreeBits[0][2] << 18 ); + Result = Result | (uint) ( ThreeBits[0][3] << 21 ); + return Result; + } + #endregion Helpers + + #region String Representations + private static string GetDescriptionFromFile( string filename ) + { + return "\n--> Header of " + filename + + "\nID: " + idString + + "\nSize: " + dwSize + + "\nFlags: " + dwFlags + " (" + (eDDSD) dwFlags + ")" + + "\nHeight: " + dwHeight + + "\nWidth: " + dwWidth + + "\nPitch: " + dwPitchOrLinearSize + + "\nDepth: " + dwDepth + + "\nMipMaps: " + dwMipMapCount + + "\n\n---PixelFormat---" + filename + + "\nSize: " + pfSize + + "\nFlags: " + pfFlags + " (" + (eDDPF) pfFlags + ")" + + "\nFourCC: " + pfFourCC + " (" + (eFOURCC) pfFourCC + ")" + +#if READALL + "\nBitcount: " + pfRGBBitCount + + "\nBitMask Red: " + pfRBitMask + + "\nBitMask Green: " + pfGBitMask + + "\nBitMask Blue: " + pfBBitMask + + "\nBitMask Alpha: " + pfABitMask + +#endif + "\n\n---Capabilities---" + filename + + "\nCaps1: " + dwCaps1 + " (" + (eDDSCAPS) dwCaps1 + ")" + + "\nCaps2: " + dwCaps2 + " (" + (eDDSCAPS2) dwCaps2 + ")"; + } + + private static string GetDescriptionFromMemory( string filename, TextureTarget Dimension ) + { + return "\nFile: " + filename + + "\nDimension: " + Dimension + + "\nSize: " + _Width + " * " + _Height + " * " + _Depth + + "\nCompressed: " + _IsCompressed + + "\nBytes for Main Image: " + _BytesForMainSurface + + "\nMipMaps: " + _MipMapCount; + } + #endregion String Representations + } +} diff --git a/Source/Examples/Utilities/LoaderGDI.cs b/Source/Examples/Utilities/LoaderGDI.cs new file mode 100644 index 00000000..fbda2cfb --- /dev/null +++ b/Source/Examples/Utilities/LoaderGDI.cs @@ -0,0 +1,152 @@ +#region --- License --- +/* Licensed under the MIT/X11 license. + * Copyright (c) 2006-2008 the OpenTK Team. + * This notice may not be removed from any source distribution. + * See license.txt for licensing details. + */ +#endregion + +// TODO: Find paint program that can properly export 8/16 Bit Textures and make sure they are loaded correctly. + +using System; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; + +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; + +namespace Examples.TextureLoaders +{ + class ImageGDI + { + + public static void LoadFromDisk( string filename, out uint texturehandle, out TextureTarget dimension ) + { + dimension = (TextureTarget) 0; + texturehandle = TextureLoaderParameters.OpenGLDefaultTexture; + ErrorCode GLError = ErrorCode.NoError; + + Bitmap CurrentBitmap = null; + + try // Exceptions will be thrown if any Problem occurs while working on the file. + { + CurrentBitmap = new Bitmap( filename ); + if ( TextureLoaderParameters.FlipImages ) + CurrentBitmap.RotateFlip( RotateFlipType.RotateNoneFlipY ); + + if ( CurrentBitmap.Height > 1 ) + dimension = TextureTarget.Texture2D; + else + dimension = TextureTarget.Texture1D; + + GL.GenTextures( 1, out texturehandle ); + GL.BindTexture( dimension, texturehandle ); + + #region Load Texture + OpenTK.Graphics.OpenGL.PixelInternalFormat pif; + OpenTK.Graphics.OpenGL.PixelFormat pf; + OpenTK.Graphics.OpenGL.PixelType pt; + + if (TextureLoaderParameters.Verbose) + Trace.WriteLine( "File: " + filename + " Format: " + CurrentBitmap.PixelFormat ); + + switch ( CurrentBitmap.PixelFormat ) + { + case System.Drawing.Imaging.PixelFormat.Format8bppIndexed: // misses glColorTable setup + pif = OpenTK.Graphics.OpenGL.PixelInternalFormat.Rgb8; + pf = OpenTK.Graphics.OpenGL.PixelFormat.ColorIndex; + pt = OpenTK.Graphics.OpenGL.PixelType.Bitmap; + break; + case System.Drawing.Imaging.PixelFormat.Format16bppArgb1555: + case System.Drawing.Imaging.PixelFormat.Format16bppRgb555: // does not work + pif = OpenTK.Graphics.OpenGL.PixelInternalFormat.Rgb5A1; + pf = OpenTK.Graphics.OpenGL.PixelFormat.Bgr; + pt = OpenTK.Graphics.OpenGL.PixelType.UnsignedShort5551Ext; + break; + /* case System.Drawing.Imaging.PixelFormat.Format16bppRgb565: + pif = OpenTK.Graphics.OpenGL.PixelInternalFormat.R5G6B5IccSgix; + pf = OpenTK.Graphics.OpenGL.PixelFormat.R5G6B5IccSgix; + pt = OpenTK.Graphics.OpenGL.PixelType.UnsignedByte; + break; +*/ + case System.Drawing.Imaging.PixelFormat.Format24bppRgb: // works + pif = OpenTK.Graphics.OpenGL.PixelInternalFormat.Rgb8; + pf = OpenTK.Graphics.OpenGL.PixelFormat.Bgr; + pt = OpenTK.Graphics.OpenGL.PixelType.UnsignedByte; + break; + case System.Drawing.Imaging.PixelFormat.Format32bppRgb: // has alpha too? wtf? + case System.Drawing.Imaging.PixelFormat.Canonical: + case System.Drawing.Imaging.PixelFormat.Format32bppArgb: // works + pif = OpenTK.Graphics.OpenGL.PixelInternalFormat.Rgba; + pf = OpenTK.Graphics.OpenGL.PixelFormat.Bgra; + pt = OpenTK.Graphics.OpenGL.PixelType.UnsignedByte; + break; + default: + throw new ArgumentException( "ERROR: Unsupported Pixel Format " + CurrentBitmap.PixelFormat ); + } + + BitmapData Data = CurrentBitmap.LockBits( new Rectangle( 0, 0, CurrentBitmap.Width, CurrentBitmap.Height ), ImageLockMode.ReadOnly, CurrentBitmap.PixelFormat ); + + if ( Data.Height > 1 ) + { // image is 2D + if (TextureLoaderParameters.BuildMipmapsForUncompressed) + { + throw new Exception("Cannot build mipmaps, Glu is deprecated."); + // Glu.Build2DMipmap(dimension, (int)pif, Data.Width, Data.Height, pf, pt, Data.Scan0); + } + else + GL.TexImage2D(dimension, 0, pif, Data.Width, Data.Height, TextureLoaderParameters.Border, pf, pt, Data.Scan0); + } else + { // image is 1D + if (TextureLoaderParameters.BuildMipmapsForUncompressed) + { + throw new Exception("Cannot build mipmaps, Glu is deprecated."); + // Glu.Build1DMipmap(dimension, (int)pif, Data.Width, pf, pt, Data.Scan0); + } + else + GL.TexImage1D(dimension, 0, pif, Data.Width, TextureLoaderParameters.Border, pf, pt, Data.Scan0); + } + + GL.Finish( ); + GLError = GL.GetError( ); + if ( GLError != ErrorCode.NoError ) + { + throw new ArgumentException( "Error building TexImage. GL Error: " + GLError ); + } + + CurrentBitmap.UnlockBits( Data ); + #endregion Load Texture + + #region Set Texture Parameters + GL.TexParameter( dimension, TextureParameterName.TextureMinFilter, (int) TextureLoaderParameters.MinificationFilter ); + GL.TexParameter( dimension, TextureParameterName.TextureMagFilter, (int) TextureLoaderParameters.MagnificationFilter ); + + GL.TexParameter( dimension, TextureParameterName.TextureWrapS, (int) TextureLoaderParameters.WrapModeS ); + GL.TexParameter( dimension, TextureParameterName.TextureWrapT, (int) TextureLoaderParameters.WrapModeT ); + + GL.TexEnv( TextureEnvTarget.TextureEnv, TextureEnvParameter.TextureEnvMode, (int) TextureLoaderParameters.EnvMode ); + + GLError = GL.GetError( ); + if ( GLError != ErrorCode.NoError ) + { + throw new ArgumentException( "Error setting Texture Parameters. GL Error: " + GLError ); + } + #endregion Set Texture Parameters + + return; // success + } catch ( Exception e ) + { + dimension = (TextureTarget) 0; + texturehandle = TextureLoaderParameters.OpenGLDefaultTexture; + throw new ArgumentException( "Texture Loading Error: Failed to read file " + filename + ".\n" + e ); + // return; // failure + } finally + { + CurrentBitmap = null; + } + } + + } +} \ No newline at end of file diff --git a/Source/Examples/Utilities/LoaderStatics.cs b/Source/Examples/Utilities/LoaderStatics.cs new file mode 100644 index 00000000..d4d06ce0 --- /dev/null +++ b/Source/Examples/Utilities/LoaderStatics.cs @@ -0,0 +1,50 @@ +#region --- License --- +/* Licensed under the MIT/X11 license. + * Copyright (c) 2006-2008 the OpenTK Team. + * This notice may not be removed from any source distribution. + * See license.txt for licensing details. + */ +#endregion + +using System; + +using OpenTK.Graphics.OpenGL; + +namespace Examples.TextureLoaders +{ + + /// The parameters in this class have only effect on the following Texture loads. + public static class TextureLoaderParameters + { + /// (Debug Aid, should be set to false) If set to false only Errors will be printed. If set to true, debug information (Warnings and Queries) will be printed in addition to Errors. + public static bool Verbose = false; + + /// Always-valid fallback parameter for GL.BindTexture (Default: 0). This number will be returned if loading the Texture failed. You can set this to a checkerboard texture or similar, which you have already loaded. + public static uint OpenGLDefaultTexture = 0; + + /// Compressed formats must have a border of 0, so this is constant. + public const int Border = 0; + + /// false==DirectX TexCoords, true==OpenGL TexCoords (Default: true) + public static bool FlipImages = true; + + /// When enabled, will use Glu to create MipMaps for images loaded with GDI+ (Default: false) + public static bool BuildMipmapsForUncompressed = false; + + /// Selects the Magnification filter for following Textures to be loaded. (Default: Nearest) + public static TextureMagFilter MagnificationFilter = TextureMagFilter.Nearest; + + /// Selects the Minification filter for following Textures to be loaded. (Default: Nearest) + public static TextureMinFilter MinificationFilter = TextureMinFilter.Nearest; + + /// Selects the S Wrapping for following Textures to be loaded. (Default: Repeat) + public static TextureWrapMode WrapModeS = TextureWrapMode.Repeat; + + /// Selects the T Wrapping for following Textures to be loaded. (Default: Repeat) + public static TextureWrapMode WrapModeT = TextureWrapMode.Repeat; + + /// Selects the Texture Environment Mode for the following Textures to be loaded. Default: Modulate) + public static TextureEnvMode EnvMode = TextureEnvMode.Modulate; + } + +} From a3518f5df3522c4c9766b2db03a1cf51af261510 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Sat, 24 Oct 2009 10:21:14 +0000 Subject: [PATCH 06/14] Plane.cs belongs to the 'old' structures. --- Source/Examples/Shapes/{ => Old}/Plane.cs | 108 +++++++++++----------- 1 file changed, 54 insertions(+), 54 deletions(-) rename Source/Examples/Shapes/{ => Old}/Plane.cs (96%) diff --git a/Source/Examples/Shapes/Plane.cs b/Source/Examples/Shapes/Old/Plane.cs similarity index 96% rename from Source/Examples/Shapes/Plane.cs rename to Source/Examples/Shapes/Old/Plane.cs index 633bcb0e..6fd0271d 100644 --- a/Source/Examples/Shapes/Plane.cs +++ b/Source/Examples/Shapes/Old/Plane.cs @@ -1,54 +1,54 @@ -#region --- License --- -/* Copyright (c) 2006, 2007 Stefanos Apostolopoulos - * See license.txt for license info - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Text; - -using OpenTK; - -namespace Examples.Shapes -{ - public class Plane : Shape - { - public Plane(int x_res, int y_res, float x_scale, float y_scale) - { - Vertices = new Vector3[x_res * y_res]; - Normals = new Vector3[x_res * y_res]; - Indices = new int[6 * x_res * y_res]; - Texcoords = new Vector2[x_res * y_res]; - - int i = 0; - for (int y = -y_res / 2; y < y_res / 2; y++) - { - for (int x = -x_res / 2; x < x_res / 2; x++) - { - Vertices[i].X = x_scale * (float)x / (float)x_res; - Vertices[i].Y = y_scale * (float)y / (float)y_res; - Vertices[i].Z = 0; - Normals[i].X = Normals[i].Y = 0; - Normals[i].Z = 1; - i++; - } - } - - i = 0; - for (int y = 0; y < y_res - 1; y++) - { - for (int x = 0; x < x_res - 1; x++) - { - Indices[i++] = (y + 0) * x_res + x; - Indices[i++] = (y + 1) * x_res + x; - Indices[i++] = (y + 0) * x_res + x + 1; - - Indices[i++] = (y + 0) * x_res + x + 1; - Indices[i++] = (y + 1) * x_res + x; - Indices[i++] = (y + 1) * x_res + x + 1; - } - } - } - } -} +#region --- License --- +/* Copyright (c) 2006, 2007 Stefanos Apostolopoulos + * See license.txt for license info + */ +#endregion + +using System; +using System.Collections.Generic; +using System.Text; + +using OpenTK; + +namespace Examples.Shapes +{ + public class Plane : Shape + { + public Plane(int x_res, int y_res, float x_scale, float y_scale) + { + Vertices = new Vector3[x_res * y_res]; + Normals = new Vector3[x_res * y_res]; + Indices = new int[6 * x_res * y_res]; + Texcoords = new Vector2[x_res * y_res]; + + int i = 0; + for (int y = -y_res / 2; y < y_res / 2; y++) + { + for (int x = -x_res / 2; x < x_res / 2; x++) + { + Vertices[i].X = x_scale * (float)x / (float)x_res; + Vertices[i].Y = y_scale * (float)y / (float)y_res; + Vertices[i].Z = 0; + Normals[i].X = Normals[i].Y = 0; + Normals[i].Z = 1; + i++; + } + } + + i = 0; + for (int y = 0; y < y_res - 1; y++) + { + for (int x = 0; x < x_res - 1; x++) + { + Indices[i++] = (y + 0) * x_res + x; + Indices[i++] = (y + 1) * x_res + x; + Indices[i++] = (y + 0) * x_res + x + 1; + + Indices[i++] = (y + 0) * x_res + x + 1; + Indices[i++] = (y + 1) * x_res + x; + Indices[i++] = (y + 1) * x_res + x + 1; + } + } + } + } +} From 7f3829acca6351d85342e05cf2ad9942fd323c69 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Sat, 24 Oct 2009 10:35:15 +0000 Subject: [PATCH 07/14] Provide dummy implementations for classes not available on the iPhone. --- Source/OpenTK/Minimal.cs | 93 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 Source/OpenTK/Minimal.cs diff --git a/Source/OpenTK/Minimal.cs b/Source/OpenTK/Minimal.cs new file mode 100644 index 00000000..c57692ac --- /dev/null +++ b/Source/OpenTK/Minimal.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace OpenTK +{ + // Override a number of System.* classes when compiling for + // minimal targets (e.g. MonoTouch). + // Note: the "overriden" classes must not be fully qualified for this to work! + +#if IPHONE + // System.Diagnostics.Debug + static class Debug + { + public static void Write(string message) { } + public static void Write(object obj) { } + public static void WriteLine(string message) { } + public static void WriteLine(object obj) { } + public static void Print(string message) { } + public static void Print(string format, params object[] args) { } + public static void Indent() { } + public static void Unindent() { } + public static void Flush() { } + } + + // System.Diagnostics.Trace + static class Trace + { + public static void Write(string message) { } + public static void Write(object obj) { } + public static void WriteLine(string message) { } + public static void WriteLine(object obj) { } + public static void Indent() { } + public static void Unindent() { } + public static void Flush() { } + } + + // System.Diagnostics.Stopwatch + sealed class Stopwatch + { + DateTime start, stop; + bool running; + + public void Reset() + { + start = stop = DateTime.MinValue; + running = false; + } + + public void Start() + { + start = DateTime.Now; + running = true; + } + + public void Stop() + { + stop = DateTime.Now; + running = false; + } + + public TimeSpan Elapsed + { + get + { + if (running) + return TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks); + else + return TimeSpan.FromTicks(stop.Ticks - start.Ticks); + } + } + } + + // System.Xml.XmlIgnoreAttribute + class XmlIgnoreAttribute : Attribute + { + } + + // System.ComponentModel.EditorBrowrableAttribute + class EditorBrowsableAttribute : Attribute + { + public EditorBrowsableAttribute(EditorBrowsableState state) { } + } + + // System.ComponentModel.EditorBrowsableState + enum EditorBrowsableState + { + Always = 0, + Never = 1, + Advanced = 2, + } +#endif +} From 4f2ac1753b38d6c389131f8d47ca80a2968ba567 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Sat, 24 Oct 2009 10:35:49 +0000 Subject: [PATCH 08/14] Do not qualify Stopwatch fully, to allow it to be overridden by Minimal.cs if necessary. --- Source/OpenTK/BindingsBase.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/OpenTK/BindingsBase.cs b/Source/OpenTK/BindingsBase.cs index 51635f2c..d1a521dc 100644 --- a/Source/OpenTK/BindingsBase.cs +++ b/Source/OpenTK/BindingsBase.cs @@ -129,9 +129,9 @@ namespace OpenTK if (delegates == null) throw new InvalidOperationException("The specified type does not have any loadable extensions."); - Debug.Write("Load extensions for " + this.GetType().FullName + "... "); + Debug.Write("Loading extensions for " + this.GetType().FullName + "... "); - System.Diagnostics.Stopwatch time = new System.Diagnostics.Stopwatch(); + Stopwatch time = new Stopwatch(); time.Reset(); time.Start(); @@ -147,7 +147,7 @@ namespace OpenTK rebuildExtensionList = true; time.Stop(); - Debug.Print("{0} extensions loaded in {1} ms.", supported, time.ElapsedMilliseconds); + Debug.Print("{0} extensions loaded in {1} ms.", supported, time.Elapsed.TotalMilliseconds); time.Reset(); } From 68b2a5942b488fef4ec212183f84a584859cac89 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Tue, 27 Oct 2009 22:23:11 +0000 Subject: [PATCH 09/14] Generate UpdateFrame events even if TargetUpdateFrequency is 0. According to the documentation, setting this value to 0 will result in unconstrained UpdateFrame frequency. Fixes issue [#1294]: "OnUpdateFrame function does not work with maximum update rate". --- Source/OpenTK/GameWindow.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/OpenTK/GameWindow.cs b/Source/OpenTK/GameWindow.cs index 788fff94..f2573eac 100644 --- a/Source/OpenTK/GameWindow.cs +++ b/Source/OpenTK/GameWindow.cs @@ -448,17 +448,19 @@ namespace OpenTK OnUpdateFrameInternal(update_args); update_time = update_watch.Elapsed.TotalSeconds; } - if (TargetUpdateFrequency == 0.0) - break; time = update_watch.Elapsed.TotalSeconds; - next_update -= time; // Stopwatches are not accurate over long time periods. // We accumlate the total elapsed time into the time variable // while reseting the Stopwatch frequently. update_watch.Reset(); update_watch.Start(); + + if (TargetUpdateFrequency == 0.0) + break; + + next_update -= time; } // Calculate statistics From a7eb81a68ce8caf800c652aae70f19a8d2303513 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Tue, 27 Oct 2009 23:57:44 +0000 Subject: [PATCH 10/14] Implemented INativeWindow.MouseEnter/MouseLeave events on Win32 and X11. --- Source/OpenTK/INativeWindow.cs | 13 ++++- Source/OpenTK/NativeWindow.cs | 52 ++++++++++++++++++ .../OpenTK/Platform/MacOS/CarbonGLNative.cs | 4 ++ Source/OpenTK/Platform/Windows/API.cs | 40 ++++++++++++++ Source/OpenTK/Platform/Windows/WinGLNative.cs | 53 ++++++++++++------- Source/OpenTK/Platform/X11/X11GLNative.cs | 17 +++++- 6 files changed, 158 insertions(+), 21 deletions(-) diff --git a/Source/OpenTK/INativeWindow.cs b/Source/OpenTK/INativeWindow.cs index b5f0915e..6bb3b33b 100644 --- a/Source/OpenTK/INativeWindow.cs +++ b/Source/OpenTK/INativeWindow.cs @@ -223,8 +223,17 @@ namespace OpenTK /// Occurs whenever a character is typed. /// event EventHandler KeyPress; - - //event EventHandler MouseEnter; + + /// + /// Occurs whenever the mouse cursor leaves the window . + /// + event EventHandler MouseLeave; + + /// + /// Occurs whenever the mouse cursor enters the window . + /// + event EventHandler MouseEnter; + //event EventHandler MouseMove; //event EventHandler MouseWheel; //event EventHandler MouseDown; diff --git a/Source/OpenTK/NativeWindow.cs b/Source/OpenTK/NativeWindow.cs index edbce7ab..4f075c47 100644 --- a/Source/OpenTK/NativeWindow.cs +++ b/Source/OpenTK/NativeWindow.cs @@ -565,6 +565,16 @@ namespace OpenTK /// public event EventHandler Move; + /// + /// Occurs whenever the mouse cursor enters the window . + /// + public event EventHandler MouseEnter; + + /// + /// Occurs whenever the mouse cursor leaves the window . + /// + public event EventHandler MouseLeave; + /// /// Occurs whenever the window is resized. /// @@ -747,6 +757,32 @@ namespace OpenTK #endregion + #region OnMouseEnter + + /// + /// Called whenever the mouse cursor reenters the window . + /// + /// Not used. + protected virtual void OnMouseEnter(EventArgs e) + { + if (MouseEnter != null) MouseEnter(this, e); + } + + #endregion + + #region OnMouseLeave + + /// + /// Called whenever the mouse cursor leaves the window . + /// + /// Not used. + protected virtual void OnMouseLeave(EventArgs e) + { + if (MouseLeave != null) MouseLeave(this, e); + } + + #endregion + #region OnResize /// @@ -875,6 +911,18 @@ namespace OpenTK #endregion + #region OnMouseEnterInternal + + private void OnMouseEnterInternal(object sender, EventArgs e) { OnMouseEnter(e); } + + #endregion + + #region OnMouseLeaveInternal + + private void OnMouseLeaveInternal(object sender, EventArgs e) { OnMouseLeave(e); } + + #endregion + #region OnMoveInternal private void OnMoveInternal(object sender, EventArgs e) { OnMove(e); } @@ -933,6 +981,8 @@ namespace OpenTK implementation.FocusedChanged += OnFocusedChangedInternal; implementation.IconChanged += OnIconChangedInternal; implementation.KeyPress += OnKeyPressInternal; + implementation.MouseEnter += OnMouseEnterInternal; + implementation.MouseLeave += OnMouseLeaveInternal; implementation.Move += OnMoveInternal; implementation.Resize += OnResizeInternal; implementation.TitleChanged += OnTitleChangedInternal; @@ -949,6 +999,8 @@ namespace OpenTK implementation.FocusedChanged -= OnFocusedChangedInternal; implementation.IconChanged -= OnIconChangedInternal; implementation.KeyPress -= OnKeyPressInternal; + implementation.MouseEnter -= OnMouseEnterInternal; + implementation.MouseLeave -= OnMouseLeaveInternal; implementation.Move -= OnMoveInternal; implementation.Resize -= OnResizeInternal; implementation.TitleChanged -= OnTitleChangedInternal; diff --git a/Source/OpenTK/Platform/MacOS/CarbonGLNative.cs b/Source/OpenTK/Platform/MacOS/CarbonGLNative.cs index b32e130d..4f7a8088 100644 --- a/Source/OpenTK/Platform/MacOS/CarbonGLNative.cs +++ b/Source/OpenTK/Platform/MacOS/CarbonGLNative.cs @@ -954,6 +954,10 @@ namespace OpenTK.Platform.MacOS public event EventHandler KeyPress; + public event EventHandler MouseEnter; + + public event EventHandler MouseLeave; + #endregion } } diff --git a/Source/OpenTK/Platform/Windows/API.cs b/Source/OpenTK/Platform/Windows/API.cs index 19db5f99..02e61dca 100644 --- a/Source/OpenTK/Platform/Windows/API.cs +++ b/Source/OpenTK/Platform/Windows/API.cs @@ -928,6 +928,18 @@ namespace OpenTK.Platform.Windows #region Input functions + [DllImport("user32.dll", SetLastError=true)] + public static extern BOOL TrackMouseEvent(ref TrackMouseEventStructure lpEventTrack); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)] + public static extern bool ReleaseCapture(); + + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] + public static extern IntPtr SetCapture(IntPtr hwnd); + + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] + public static extern IntPtr GetCapture(); + #region Async input #region GetCursorPos @@ -2755,6 +2767,20 @@ namespace OpenTK.Platform.Windows #endregion + #region TrackMouseEventStructure + + struct TrackMouseEventStructure + { + public DWORD Size; + public TrackMouseEventFlags Flags; + public HWND TrackWindowHandle; + public DWORD HoverTime; + + public static readonly int SizeInBytes = Marshal.SizeOf(typeof(TrackMouseEventStructure)); + } + + #endregion + #endregion #region --- Enums --- @@ -4063,6 +4089,20 @@ namespace OpenTK.Platform.Windows #endregion + #region TrackMouseEventFlags + + [Flags] + enum TrackMouseEventFlags : uint + { + HOVER = 0x00000001, + LEAVE = 0x00000002, + NONCLIENT = 0x00000010, + QUERY = 0x40000000, + CANCEL = 0x80000000, + } + + #endregion + #endregion #region --- Callbacks --- diff --git a/Source/OpenTK/Platform/Windows/WinGLNative.cs b/Source/OpenTK/Platform/Windows/WinGLNative.cs index fe87ad60..9b3f9b2c 100644 --- a/Source/OpenTK/Platform/Windows/WinGLNative.cs +++ b/Source/OpenTK/Platform/Windows/WinGLNative.cs @@ -131,6 +131,8 @@ namespace OpenTK.Platform.Windows keyboards.Add(keyboard); mice.Add(mouse); + + EnableMouseLeaveNotifications(); } #endregion @@ -141,7 +143,7 @@ namespace OpenTK.Platform.Windows IntPtr WindowProcedure(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam) { - bool mouse_about_to_enter = false; + bool mouse_left = false; switch (message) { @@ -289,27 +291,26 @@ namespace OpenTK.Platform.Windows KeyPress(this, key_press); break; - //case WindowMessage.MOUSELEAVE: - // Cursor.Current = Cursors.Default; - // break; - - //case WindowMessage.MOUSE_ENTER: - // Cursor.Current = Cursors.Default; - // break; - - // Mouse events: - case WindowMessage.NCMOUSEMOVE: - mouse_about_to_enter = true; // Used to simulate a mouse enter event. - break; - case WindowMessage.MOUSEMOVE: - mouse.Position = new System.Drawing.Point( + System.Drawing.Point point = new System.Drawing.Point( (int)(lParam.ToInt32() & 0x0000FFFF), (int)(lParam.ToInt32() & 0xFFFF0000) >> 16); - if (mouse_about_to_enter) + mouse.Position = point; { - //Cursor.Current = Cursors.Default; - mouse_about_to_enter = false; + Rectangle rect; + Functions.GetClientRect(window.WindowHandle, out rect); + if (!rect.ToRectangle().Contains(point)) + { + Functions.ReleaseCapture(); + if (MouseLeave != null) + MouseLeave(this, EventArgs.Empty); + } + else if (Functions.GetCapture() != window.WindowHandle) + { + Functions.SetCapture(window.WindowHandle); + if (MouseEnter != null) + MouseEnter(this, EventArgs.Empty); + } } break; @@ -619,6 +620,18 @@ namespace OpenTK.Platform.Windows #endregion + void EnableMouseLeaveNotifications() + { + TrackMouseEventStructure tme = new TrackMouseEventStructure(); + tme.Size = TrackMouseEventStructure.SizeInBytes; + tme.Flags |= TrackMouseEventFlags.LEAVE; + tme.TrackWindowHandle = child_window.WindowHandle; + tme.HoverTime = -1; // HOVER_DEFAULT + if (!Functions.TrackMouseEvent(ref tme)) + Debug.Print("[Error] Failed to enable mouse event tracking. Error: {0}", + Marshal.GetLastWin32Error()); + } + #endregion #region INativeWindow Members @@ -1052,6 +1065,10 @@ namespace OpenTK.Platform.Windows public event EventHandler WindowStateChanged; public event EventHandler KeyPress; + + public event EventHandler MouseEnter; + + public event EventHandler MouseLeave; #endregion diff --git a/Source/OpenTK/Platform/X11/X11GLNative.cs b/Source/OpenTK/Platform/X11/X11GLNative.cs index 8cbf1a47..0a55165a 100644 --- a/Source/OpenTK/Platform/X11/X11GLNative.cs +++ b/Source/OpenTK/Platform/X11/X11GLNative.cs @@ -142,7 +142,8 @@ namespace OpenTK.Platform.X11 window.EventMask = EventMask.StructureNotifyMask | EventMask.SubstructureNotifyMask | EventMask.ExposureMask | EventMask.KeyReleaseMask | EventMask.KeyPressMask | EventMask.PointerMotionMask | EventMask.FocusChangeMask | - EventMask.ButtonPressMask | EventMask.ButtonReleaseMask; + EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | + EventMask.EnterWindowMask | EventMask.LeaveWindowMask; attributes.event_mask = (IntPtr)window.EventMask; uint mask = (uint)SetWindowValuemask.ColorMap | (uint)SetWindowValuemask.EventMask | @@ -678,6 +679,16 @@ namespace OpenTK.Platform.X11 FocusedChanged(this, EventArgs.Empty); } break; + + case XEventName.LeaveNotify: + if (MouseLeave != null) + MouseLeave(this, EventArgs.Empty); + break; + + case XEventName.EnterNotify: + if (MouseEnter != null) + MouseEnter(this, EventArgs.Empty); + break; default: //Debug.WriteLine(String.Format("{0} event was not handled", e.type)); @@ -1092,6 +1103,10 @@ namespace OpenTK.Platform.X11 public event EventHandler WindowStateChanged; public event EventHandler KeyPress; + + public event EventHandler MouseEnter; + + public event EventHandler MouseLeave; #endregion From aec4b2fedab16ccac3d34ac259c0cfb5c9d5bdf2 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Tue, 27 Oct 2009 23:58:29 +0000 Subject: [PATCH 11/14] Track mouse enter/leave events. --- Source/Examples/OpenTK/Test/GameWindowStates.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/Examples/OpenTK/Test/GameWindowStates.cs b/Source/Examples/OpenTK/Test/GameWindowStates.cs index 3dd61495..8ca981ee 100644 --- a/Source/Examples/OpenTK/Test/GameWindowStates.cs +++ b/Source/Examples/OpenTK/Test/GameWindowStates.cs @@ -23,6 +23,7 @@ namespace Examples.Tests readonly Font TextFont = new Font(FontFamily.GenericSansSerif, 16); readonly Bitmap TextBitmap = new Bitmap(1024, 256); int texture; + bool mouse_in_window = false; public GameWindowStates() : base(800, 600) @@ -33,6 +34,8 @@ namespace Examples.Tests WindowBorderChanged += delegate(object sender, EventArgs e) { UpdateText(); }; WindowStateChanged += delegate(object sender, EventArgs e) { UpdateText(); }; FocusedChanged += delegate(object sender, EventArgs e) { UpdateText(); }; + MouseEnter += delegate(object sender, EventArgs e) { mouse_in_window = true; UpdateText(); }; + MouseLeave += delegate(object sender, EventArgs e) { mouse_in_window = false; UpdateText(); }; } void KeyUpHandler(object sender, KeyboardKeyEventArgs e) @@ -62,6 +65,7 @@ namespace Examples.Tests gfx.DrawString(String.Format("[1 - 4]: change WindowState (current: {0}).", this.WindowState), TextFont, Brushes.White, new PointF(0, 0)); gfx.DrawString(String.Format("[5 - 7]: change WindowBorder (current: {0}).", this.WindowBorder), TextFont, Brushes.White, new PointF(0, TextFont.Height)); gfx.DrawString(String.Format("Focused: {0}.", this.Focused), TextFont, Brushes.White, new PointF(0, 2 * TextFont.Height)); + gfx.DrawString(String.Format("Mouse {0} window.", mouse_in_window ? "inside" : "outside of"), TextFont, Brushes.White, new PointF(0, 3 * TextFont.Height)); } System.Drawing.Imaging.BitmapData data = TextBitmap.LockBits(new Rectangle(0, 0, TextBitmap.Width, TextBitmap.Height), From 6e222ebaa0d9738710d4189008f8fc525faafdd6 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Wed, 28 Oct 2009 00:39:38 +0000 Subject: [PATCH 12/14] Return readonly IList<> instead of copying arrays of data. --- Source/OpenTK/DisplayDevice.cs | 41 +++++++++++++--------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/Source/OpenTK/DisplayDevice.cs b/Source/OpenTK/DisplayDevice.cs index 8f115c05..0862b76c 100644 --- a/Source/OpenTK/DisplayDevice.cs +++ b/Source/OpenTK/DisplayDevice.cs @@ -30,13 +30,14 @@ namespace OpenTK #region --- Fields --- DisplayResolution current_resolution, original_resolution; - List available_resolutions = new List(); + readonly List available_resolutions = new List(); + readonly IList available_resolutions_readonly; bool primary; - static List available_displays = new List(); - static object display_lock = new object(); + static readonly List available_displays = new List(); + static readonly IList available_displays_readonly; + static readonly object display_lock = new object(); static DisplayDevice primary_display; - //static FadeEffect effect = new FadeEffect(); static Platform.IDisplayDeviceDriver implementation; @@ -47,6 +48,7 @@ namespace OpenTK static DisplayDevice() { implementation = Platform.Factory.Default.CreateDisplayDeviceDriver(); + available_displays_readonly = available_displays.AsReadOnly(); } internal DisplayDevice(DisplayResolution currentResolution, bool primary, @@ -65,6 +67,8 @@ namespace OpenTK if (primary) primary_display = this; } + + available_resolutions_readonly = available_resolutions.AsReadOnly(); } #endregion @@ -155,21 +159,14 @@ namespace OpenTK #endregion - #region public DisplayResolution[] AvailableResolutions + #region public IList AvailableResolutions /// - /// Gets an array of OpenTK.DisplayResolution objects, which describe all available resolutions - /// for this device. + /// Gets the list of objects available on this device. /// - public DisplayResolution[] AvailableResolutions + public IList AvailableResolutions { - get - { - lock (display_lock) - { - return available_resolutions.ToArray(); - } - } + get { return available_resolutions_readonly; } } #endregion @@ -242,20 +239,14 @@ namespace OpenTK #endregion - #region public static DisplayDevice[] AvailableDisplays + #region public static IList AvailableDisplays /// - /// Gets an array of OpenTK.DisplayDevice objects, which describe all available display devices. + /// Gets the list of available objects. /// - public static DisplayDevice[] AvailableDisplays + public static IList AvailableDisplays { - get - { - lock (display_lock) - { - return available_displays.ToArray(); - } - } + get { return available_displays_readonly; } } #endregion From af94d707c0e230fdbad0b8b85df6c3dbbffdab84 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Wed, 28 Oct 2009 09:05:13 +0000 Subject: [PATCH 13/14] Renamed dds textures to not contain strange characters that confuse Prebuild. Added checks for extension support to SwizzledParallax sample. --- .../{Earth CubeMap.dds => earth-cubemap.dds} | Bin ...t.DDS => swizzled-rock-diffuse-height.dds} | Bin ...oss.DDS => swizzled-rock-normal-gloss.dds} | Bin Source/Examples/OpenGL/GLSL/DDSCubeMap.cs | 2 +- .../Examples/OpenGL/GLSL/SwizzledParallax.cs | 23 +++++++----------- 5 files changed, 10 insertions(+), 15 deletions(-) rename Source/Examples/Data/Textures/{Earth CubeMap.dds => earth-cubemap.dds} (100%) rename Source/Examples/Data/Textures/{Swizzled Rock Diffuse&Height.DDS => swizzled-rock-diffuse-height.dds} (100%) rename Source/Examples/Data/Textures/{Swizzled Rock Normal&Gloss.DDS => swizzled-rock-normal-gloss.dds} (100%) diff --git a/Source/Examples/Data/Textures/Earth CubeMap.dds b/Source/Examples/Data/Textures/earth-cubemap.dds similarity index 100% rename from Source/Examples/Data/Textures/Earth CubeMap.dds rename to Source/Examples/Data/Textures/earth-cubemap.dds diff --git a/Source/Examples/Data/Textures/Swizzled Rock Diffuse&Height.DDS b/Source/Examples/Data/Textures/swizzled-rock-diffuse-height.dds similarity index 100% rename from Source/Examples/Data/Textures/Swizzled Rock Diffuse&Height.DDS rename to Source/Examples/Data/Textures/swizzled-rock-diffuse-height.dds diff --git a/Source/Examples/Data/Textures/Swizzled Rock Normal&Gloss.DDS b/Source/Examples/Data/Textures/swizzled-rock-normal-gloss.dds similarity index 100% rename from Source/Examples/Data/Textures/Swizzled Rock Normal&Gloss.DDS rename to Source/Examples/Data/Textures/swizzled-rock-normal-gloss.dds diff --git a/Source/Examples/OpenGL/GLSL/DDSCubeMap.cs b/Source/Examples/OpenGL/GLSL/DDSCubeMap.cs index 5cd968b0..77ca65d6 100644 --- a/Source/Examples/OpenGL/GLSL/DDSCubeMap.cs +++ b/Source/Examples/OpenGL/GLSL/DDSCubeMap.cs @@ -41,7 +41,7 @@ namespace Examples.Tutorial // Textures const TextureUnit TMU0_Unit = TextureUnit.Texture0; const int TMU0_UnitInteger = 0; - const string TMU0_Filename = "Data/Textures/Earth CubeMap.dds"; + const string TMU0_Filename = "Data/Textures/earth-cubemap.dds"; uint TMU0_Handle; TextureTarget TMU0_Target; diff --git a/Source/Examples/OpenGL/GLSL/SwizzledParallax.cs b/Source/Examples/OpenGL/GLSL/SwizzledParallax.cs index 7ab31500..214d5e09 100644 --- a/Source/Examples/OpenGL/GLSL/SwizzledParallax.cs +++ b/Source/Examples/OpenGL/GLSL/SwizzledParallax.cs @@ -48,15 +48,13 @@ namespace Examples.Tutorial // Textures const TextureUnit TMU0_Unit = TextureUnit.Texture0; const int TMU0_UnitInteger = 0; - //const string TMU0_Filename = "Data/Textures/Swizzled Metal Diffuse&Height.dds"; - const string TMU0_Filename = "Data/Textures/Swizzled Rock Diffuse&Height.dds"; + const string TMU0_Filename = "Data/Textures/swizzled-rock-diffuse-height.dds"; uint TMU0_Handle; TextureTarget TMU0_Target; const TextureUnit TMU1_Unit = TextureUnit.Texture1; const int TMU1_UnitInteger = 1; - //const string TMU1_Filename = "Data/Textures/Swizzled Metal Normal&Gloss.dds"; - const string TMU1_Filename = "Data/Textures/Swizzled Rock Normal&Gloss.dds"; + const string TMU1_Filename = "Data/Textures/swizzled-rock-normal-gloss.dds"; uint TMU1_Handle; TextureTarget TMU1_Target; @@ -76,22 +74,19 @@ namespace Examples.Tutorial { this.VSync = VSyncMode.Off; - /* // Check for necessary capabilities: - if ( !GL.SupportsExtension( "VERSION_2_0" ) ) + string extensions = GL.GetString(StringName.Extensions); + if ( !GL.GetString(StringName.Extensions).Contains("GL_ARB_shading_language")) { - MessageBox.Show( "You need at least OpenGL 2.0 to run this example. Aborting.", - "GLSL not supported", MessageBoxButtons.OK, MessageBoxIcon.Exclamation ); - this.Exit( ); + throw new NotSupportedException(String.Format("This example requires OpenGL 2.0. Found {0}. Aborting.", + GL.GetString(StringName.Version).Substring(0, 3))); } - if ( !GL.SupportsExtension( "GL_ARB_texture_compression" ) || - !GL.SupportsExtension( "GL_EXT_texture_compression_s3tc" ) ) + if (!extensions.Contains("GL_ARB_texture_compression") || + !extensions.Contains("GL_EXT_texture_compression_s3tc")) { - MessageBox.Show( "Texture compression extensions not found. Trying to run anyways.", - "Possible problem", MessageBoxButtons.OK, MessageBoxIcon.Warning ); + throw new NotSupportedException("This example requires support for texture compression. Aborting."); } - */ int[] temp = new int[1]; GL.GetInteger( GetPName.MaxTextureImageUnits, out temp[0] ); From 2ca02070a5b3829b659212cf0b0698014d371c36 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Wed, 28 Oct 2009 09:31:59 +0000 Subject: [PATCH 14/14] Recognize and copy dds files as part of example resources. --- Build.exe | Bin 270336 -> 270336 bytes Source/Build/Resources/OpenTK.Prebuild.xml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Build.exe b/Build.exe index 6fb184d8179552efe6248b48839dc40636931534..208433453020aa6d098d09959f70726a3ba2d547 100644 GIT binary patch delta 272 zcmZoTAkc6?U_u9T;`HYeyJZ>kCaw(U6X9fG2xkBS1r~+|mWhhOlNA}`8A~=dGS>46 z1^^{NzypYx7+4uXCJPD(Gw<5LJozJ|=H>ta4^GByn`cT&Ffv9@-Xx_Wm9UhVK_rl& zlp&KLnIW4Yn4yFrk)a4k`fUCnCBw~lU^A~8qbN&FN=k7vpLIK*H6su+ZRfLQE?c7P zY-nm~U|^){VrgWoYhrF5ej47KN8SD83 z9e|P`-~q%;46F7#YJSZ<11xido9c zAQH$>%8<#B%#h6x%uvFR$WR0%JvM)klHq3BV=`Snl2LuKtaSY5DQZ;_SN^9Q~3p= z>$KxsFWNhAO|f6P{Kn$P+ZEn3f8pe{fI1uGbie6}KbfVOfj-&J*UucxxQVHObt@ms TFMg&3%k7C9m_PAPG++S$j+RQ& diff --git a/Source/Build/Resources/OpenTK.Prebuild.xml b/Source/Build/Resources/OpenTK.Prebuild.xml index 82de1370..06cf271a 100644 --- a/Source/Build/Resources/OpenTK.Prebuild.xml +++ b/Source/Build/Resources/OpenTK.Prebuild.xml @@ -150,7 +150,7 @@ - +