diff --git a/.gitignore b/.gitignore
index f9a61c41..0f716233 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,15 @@ build/nuspec/SharpGLforWinForms/lib/
build/nuspec/SharpGLforWPF/lib/
release/2.*
source/SharpGL/packages/
+source/Extensions/WinformsTemplate/Dependencies/
+source/Extensions/WinformsTemplateProject.2010/Dependencies/
+source/Extensions/WinformsTemplateProject/Dependencies/
+source/Extensions/WpfTemplate/Dependencies/
+source/Extensions/WpfTemplateProject.2010/Dependencies/
+source/Extensions/WpfTemplateProject/Dependencies/
+source/Extensions/WinformsTemplate/Dependencies/
+source/Extensions/WinformsTemplateProject.2010/Dependencies/
+source/Extensions/WinformsTemplateProject/Dependencies/
+source/Extensions/WpfTemplate/Dependencies/
+source/Extensions/WpfTemplateProject.2010/Dependencies/
+source/Extensions/WpfTemplateProject/Dependencies/
diff --git a/release/BuildRelease.ps1 b/release/BuildRelease.ps1
index c5d4da2c..e91fa4b9 100644
--- a/release/BuildRelease.ps1
+++ b/release/BuildRelease.ps1
@@ -15,7 +15,7 @@ $scriptParentPath = Split-Path -parent $MyInvocation.MyCommand.Definition
$folderReleaseRoot = $scriptParentPath
$folderSourceRoot = Split-Path -parent $folderReleaseRoot
$folderSharpGLRoot = Join-Path $folderSourceRoot "source\SharpGL"
-$folderNuspecRoot = Join-Path $folderSourceRoot "build\nuspec"
+$folderNuspecRoot = Join-Path $folderSourceRoot "release\Specs"
# Part 1 - Build the core libraries.
Write-Host "Preparing to build the core libraries..."
@@ -52,9 +52,15 @@ EnsureEmptyFolderExists($folderReleaseSamples)
$releaseFolders = gci (Join-Path $folderSharpGLRoot "Samples") -Recurse -Directory -filter "Release" | select FullName
$releaseFolders | ForEach {
$releaseFolder = $_.FullName
- $sampleName = (Get-Item (Split-Path -parent (Split-Path -parent $releaseFolder))).Name
- Write-Host "Built Sample: $sampleName"
- CopyItems (Join-Path $releaseFolder "*.*") (Join-Path $folderReleaseSamples "$sampleName")
+ if ((GetParentFolderName $releaseFolder) -eq "bin") {
+ $sampleName = (Get-Item (Split-Path -parent (Split-Path -parent $releaseFolder))).Name
+ Write-Host "Built Sample: $sampleName"
+
+ # Make sure the destination directory exists, copy the files over.
+ $destinationFolder = (Join-Path $folderReleaseSamples "$sampleName")
+ EnsureFolderExists $destinationFolder
+ Get-ChildItem $releaseFolder -Recurse -Exclude '*.pdb*', '*.xml*' | Copy-Item -Destination $destinationFolder
+ }
}
Write-Host "Built samples."
@@ -69,9 +75,15 @@ EnsureEmptyFolderExists($folderReleaseTools)
$releaseFolders = gci (Join-Path $folderSharpGLRoot "Tools") -Recurse -Directory -filter "Release" | select FullName
$releaseFolders | ForEach {
$releaseFolder = $_.FullName
- $toolName = (Get-Item (Split-Path -parent (Split-Path -parent $releaseFolder))).Name
- Write-Host "Built Tool: $toolName"
- CopyItems (Join-Path $releaseFolder "*.*") (Join-Path $folderReleaseTools "$toolName")
+ if ((GetParentFolderName $releaseFolder) -eq "bin") {
+ $toolName = (Get-Item (Split-Path -parent (Split-Path -parent $releaseFolder))).Name
+ Write-Host "Built Tool: $toolName"
+
+ # Make sure the destination directory exists, copy the files over.
+ $destinationFolder = (Join-Path $folderReleaseTools "$toolName")
+ EnsureFolderExists $destinationFolder
+ Get-ChildItem $releaseFolder -Recurse -Exclude '*.pdb*' | Copy-Item -Destination $destinationFolder
+ }
}
Write-Host "Built tools."
@@ -131,19 +143,12 @@ $folderReleasePackages = Join-Path $folderRelease "Packages"
EnsureEmptyFolderExists($folderReleasePackages)
$nuget = Join-Path $scriptParentPath "Resources\nuget.exe"
-CopyItems (Join-Path $folderReleaseCore "SharpGL.SceneGraph\*.*") (Join-Path $folderNuspecRoot "SharpGLCore\lib\net40")
-$nuspecPath = (Join-Path $folderNuspecRoot "SharpGLCore\SharpGLCore.nuspec")
-. $nuget pack $nuspecPath -Version $releaseVersion -OutputDirectory $folderReleasePackages
-
-CopyItems (Join-Path $folderReleaseCore "SharpGL.WinForms\SharpGL.WinForms.*") (Join-Path $folderNuspecRoot "SharpGLforWinForms\lib\net40")
-$nuspecPath = (Join-Path $folderNuspecRoot "SharpGLforWinForms\SharpGLforWinForms.nuspec")
-SetNuspecDependencyVersion $nuspecPath "SharpGLCore" $releaseVersion
-. $nuget pack $nuspecPath -Version $releaseVersion -OutputDirectory $folderReleasePackages
-
-CopyItems (Join-Path $folderReleaseCore "SharpGL.WPF\SharpGL.WPF.*") (Join-Path $folderNuspecRoot "SharpGLforWPF\lib\net40")
-$nuspecPath = (Join-Path $folderNuspecRoot "SharpGLforWPF\SharpGLforWPF.nuspec")
-SetNuspecDependencyVersion $nuspecPath "SharpGLCore" $releaseVersion
-. $nuget pack $nuspecPath -Version $releaseVersion -OutputDirectory $folderReleasePackages
+CreateNugetPackage $nuget (Join-Path $folderNuspecRoot "SharpGL.nuspec") $releaseVersion @{} (Join-Path $folderReleaseCore "SharpGL.SceneGraph\*.*") $folderReleasePackages
+CreateNugetPackage $nuget (Join-Path $folderNuspecRoot "SharpGL.WinForms.nuspec") $releaseVersion @{"SharpGL"=$releaseVersion} (Join-Path $folderReleaseCore "SharpGL.WinForms\SharpGL.WinForms.*") $folderReleasePackages
+CreateNugetPackage $nuget (Join-Path $folderNuspecRoot "SharpGL.WPF.nuspec") $releaseVersion @{"SharpGL"=$releaseVersion} (Join-Path $folderReleaseCore "SharpGL.WPF\SharpGL.WPF.*") $folderReleasePackages
+CreateNugetPackage $nuget (Join-Path $folderNuspecRoot "SharpGLCore.nuspec") $releaseVersion @{} (Join-Path $folderReleaseCore "SharpGL.SceneGraph\*.*") $folderReleasePackages
+CreateNugetPackage $nuget (Join-Path $folderNuspecRoot "SharpGLforWinForms.nuspec") $releaseVersion @{"SharpGL"=$releaseVersion} (Join-Path $folderReleaseCore "SharpGL.WinForms\SharpGL.WinForms.*") $folderReleasePackages
+CreateNugetPackage $nuget (Join-Path $folderNuspecRoot "SharpGLforWPF.nuspec") $releaseVersion @{"SharpGL"=$releaseVersion} (Join-Path $folderReleaseCore "SharpGL.WPF\SharpGL.WPF.*") $folderReleasePackages
# We're done!
Write-Host "Successfully built version: $releaseVersion"
\ No newline at end of file
diff --git a/release/Resources/PowershellFunctions.ps1 b/release/Resources/PowershellFunctions.ps1
index d7395bae..30e18305 100644
--- a/release/Resources/PowershellFunctions.ps1
+++ b/release/Resources/PowershellFunctions.ps1
@@ -24,6 +24,20 @@ function EnsureEmptyFolderExists($folder) {
EnsureFolderExists($folder)
}
+# Gets the name of the parent folder.
+function GetParentFolderName($folderPath) {
+ return Split-Path (Split-Path $releaseFolder) -leaf
+}
+
+
+# Creates a temporary directory, returning the path.
+function CreateTemporaryDirectory {
+
+ $folderPath = (Join-Path $env:temp ([System.Guid]::NewGuid().ToString()))
+ [Void](New-Item -Type Directory $folderPath)
+ return $folderPath
+}
+
# Sets the version of a dependency in a nuspec.
# e.g:
# SetNuspecDependencyVersion "SharpGLforWinForms.nuspec" "SharpGLCore" "2.3.0.1"
@@ -40,4 +54,28 @@ function SetNuspecDependencyVersion($nuspecPath, $dependencyId, $version) {
}
$nuspecXml.Save($nuspecPath)
+}
+
+# Creates a Nuget package from a spec and a set of items. The items will be
+# copied into the ,p
+function CreateNugetPackage($nuget, $nuspecPath, $version, $dependencyVersions, $libNet4Items, $outputPath) {
+
+ # Create a temporary directory, set the temp spec path.
+ $tempFolder = CreateTemporaryDirectory
+ $tempNuspecPath = Join-Path $tempFolder (Split-Path $nuspecPath -leaf)
+
+ # Copy the source items into the lib/net4 folder.
+ Copy-Item $nuspecPath -Destination $tempNuspecPath
+ CopyItems $libNet4Items (Join-Path $tempFolder "lib/net40")
+
+ # Set the dependency versions.
+ foreach ($dependencyVersion in $dependencyVersions.GetEnumerator()) {
+ SetNuspecDependencyVersion $tempNuspecPath $dependencyVersion.Name $dependencyVersion.Value
+ }
+
+ # Create the package.
+ . $nuget pack $tempNuspecPath -Version $version -OutputDirectory $outputPath
+
+ # Clean up the temporary directory.
+ Remove-Item $tempFolder -Force -Recurse
}
\ No newline at end of file
diff --git a/release/Specs/SharpGL.WPF.nuspec b/release/Specs/SharpGL.WPF.nuspec
new file mode 100644
index 00000000..971caf45
--- /dev/null
+++ b/release/Specs/SharpGL.WPF.nuspec
@@ -0,0 +1,18 @@
+
+
+
+ SharpGL.WPF
+ 2.1.0
+ SharpGL for WPF
+ Dave Kerr
+
+ http://sharpgl.codeplex.com
+ false
+ SharpGL wraps the popular OpenGL library. This package installs SharpGL and the WPF controls.
+ SharpGL wraps the popular OpenGL library. This package installs SharpGL and the WPF controls.
+ Copyright © Dave Kerr 2013
+
+
+
+
+
\ No newline at end of file
diff --git a/release/Specs/SharpGL.WinForms.nuspec b/release/Specs/SharpGL.WinForms.nuspec
new file mode 100644
index 00000000..a914b27e
--- /dev/null
+++ b/release/Specs/SharpGL.WinForms.nuspec
@@ -0,0 +1,18 @@
+
+
+
+ SharpGL.WinForms
+ 2.1.0
+ SharpGL for WinForms
+ Dave Kerr
+
+ http://sharpgl.codeplex.com
+ false
+ SharpGL wraps the popular OpenGL library. This package installs SharpGL and the WinForms controls.
+ SharpGL wraps the popular OpenGL library. This package installs SharpGL and the WinForms controls.
+ Copyright © Dave Kerr 2013
+
+
+
+
+
\ No newline at end of file
diff --git a/release/Specs/SharpGL.nuspec b/release/Specs/SharpGL.nuspec
new file mode 100644
index 00000000..9f3a7480
--- /dev/null
+++ b/release/Specs/SharpGL.nuspec
@@ -0,0 +1,15 @@
+
+
+
+ SharpGL
+ 2.1.0
+ SharpGL
+ Dave Kerr
+
+ http://sharpgl.codeplex.com
+ false
+ SharpGL Core is the core library for SharpGL. It provides wrappers for all OpenGL functions and also includes the Scene Graph classes. Installed as part of SharpGL for WinForms or SharpGL for WPF.
+ SharpGL Core is the core library for SharpGL. It provides wrappers for all OpenGL functions and also includes the Scene Graph classes. Installed as part of SharpGL for WinForms or SharpGL for WPF.
+ Copyright © Dave Kerr 2013
+
+
\ No newline at end of file
diff --git a/build/nuspec/SharpGLCore/SharpGLCore.nuspec b/release/Specs/SharpGLCore.nuspec
similarity index 100%
rename from build/nuspec/SharpGLCore/SharpGLCore.nuspec
rename to release/Specs/SharpGLCore.nuspec
diff --git a/build/nuspec/SharpGLforWPF/SharpGLforWPF.nuspec b/release/Specs/SharpGLforWPF.nuspec
similarity index 100%
rename from build/nuspec/SharpGLforWPF/SharpGLforWPF.nuspec
rename to release/Specs/SharpGLforWPF.nuspec
diff --git a/build/nuspec/SharpGLforWinForms/SharpGLforWinForms.nuspec b/release/Specs/SharpGLforWinForms.nuspec
similarity index 100%
rename from build/nuspec/SharpGLforWinForms/SharpGLforWinForms.nuspec
rename to release/Specs/SharpGLforWinForms.nuspec
diff --git a/source/Extensions/SharpGL/source.extension.vsixmanifest b/source/Extensions/SharpGL/source.extension.vsixmanifest
index c9fcac6e..6c5e33d0 100644
--- a/source/Extensions/SharpGL/source.extension.vsixmanifest
+++ b/source/Extensions/SharpGL/source.extension.vsixmanifest
@@ -12,9 +12,9 @@
SharpGL, OpenGL, 3D
-
-
-
+
+
+
diff --git a/source/Extensions/WinformsTemplate/Dependencies/SharpGL.SceneGraph.dll b/source/Extensions/WinformsTemplate/Dependencies/SharpGL.SceneGraph.dll
deleted file mode 100644
index 168606d3..00000000
Binary files a/source/Extensions/WinformsTemplate/Dependencies/SharpGL.SceneGraph.dll and /dev/null differ
diff --git a/source/Extensions/WinformsTemplate/Dependencies/SharpGL.WinForms.dll b/source/Extensions/WinformsTemplate/Dependencies/SharpGL.WinForms.dll
deleted file mode 100644
index 12d7e26d..00000000
Binary files a/source/Extensions/WinformsTemplate/Dependencies/SharpGL.WinForms.dll and /dev/null differ
diff --git a/source/Extensions/WinformsTemplate/Dependencies/SharpGL.dll b/source/Extensions/WinformsTemplate/Dependencies/SharpGL.dll
deleted file mode 100644
index a44661be..00000000
Binary files a/source/Extensions/WinformsTemplate/Dependencies/SharpGL.dll and /dev/null differ
diff --git a/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.SceneGraph.dll b/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.SceneGraph.dll
deleted file mode 100644
index 168606d3..00000000
Binary files a/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.SceneGraph.dll and /dev/null differ
diff --git a/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.WinForms.dll b/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.WinForms.dll
deleted file mode 100644
index 12d7e26d..00000000
Binary files a/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.WinForms.dll and /dev/null differ
diff --git a/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.dll b/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.dll
deleted file mode 100644
index a44661be..00000000
Binary files a/source/Extensions/WinformsTemplateProject.2010/Dependencies/SharpGL.dll and /dev/null differ
diff --git a/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.SceneGraph.dll b/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.SceneGraph.dll
deleted file mode 100644
index 168606d3..00000000
Binary files a/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.SceneGraph.dll and /dev/null differ
diff --git a/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.WinForms.dll b/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.WinForms.dll
deleted file mode 100644
index 12d7e26d..00000000
Binary files a/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.WinForms.dll and /dev/null differ
diff --git a/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.dll b/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.dll
deleted file mode 100644
index a44661be..00000000
Binary files a/source/Extensions/WinformsTemplateProject/Dependencies/SharpGL.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplate/Dependencies/SharpGL.SceneGraph.dll b/source/Extensions/WpfTemplate/Dependencies/SharpGL.SceneGraph.dll
deleted file mode 100644
index 168606d3..00000000
Binary files a/source/Extensions/WpfTemplate/Dependencies/SharpGL.SceneGraph.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplate/Dependencies/SharpGL.WPF.dll b/source/Extensions/WpfTemplate/Dependencies/SharpGL.WPF.dll
deleted file mode 100644
index 8481ca4b..00000000
Binary files a/source/Extensions/WpfTemplate/Dependencies/SharpGL.WPF.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplate/Dependencies/SharpGL.dll b/source/Extensions/WpfTemplate/Dependencies/SharpGL.dll
deleted file mode 100644
index a44661be..00000000
Binary files a/source/Extensions/WpfTemplate/Dependencies/SharpGL.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.SceneGraph.dll b/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.SceneGraph.dll
deleted file mode 100644
index 168606d3..00000000
Binary files a/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.SceneGraph.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.WPF.dll b/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.WPF.dll
deleted file mode 100644
index 8481ca4b..00000000
Binary files a/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.WPF.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.dll b/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.dll
deleted file mode 100644
index a44661be..00000000
Binary files a/source/Extensions/WpfTemplateProject.2010/Dependencies/SharpGL.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.SceneGraph.dll b/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.SceneGraph.dll
deleted file mode 100644
index 168606d3..00000000
Binary files a/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.SceneGraph.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.WPF.dll b/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.WPF.dll
deleted file mode 100644
index 8481ca4b..00000000
Binary files a/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.WPF.dll and /dev/null differ
diff --git a/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.dll b/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.dll
deleted file mode 100644
index a44661be..00000000
Binary files a/source/Extensions/WpfTemplateProject/Dependencies/SharpGL.dll and /dev/null differ
diff --git a/source/SharpGL/Core/SharpGL.SceneGraph/Primitives/Teapot.cs b/source/SharpGL/Core/SharpGL.SceneGraph/Primitives/Teapot.cs
index b96ef485..7fc22395 100644
--- a/source/SharpGL/Core/SharpGL.SceneGraph/Primitives/Teapot.cs
+++ b/source/SharpGL/Core/SharpGL.SceneGraph/Primitives/Teapot.cs
@@ -246,15 +246,14 @@ public Material Material
/// Extensions for Array type.
///
public static class ArrayExtensions
-{
- ///
- /// Flattens the specified array.
- ///
- /// The array type.
- /// The array.
- /// The flattened array.
- public static T[] Flatten(this T[,,] array)
- where T : struct
+ {
+ ///
+ /// Flattens the specified array.
+ ///
+ /// The array type.
+ /// The array.
+ /// The flattened array.
+ public static T[] Flatten(this T[,,] array) where T : struct
{
int size = Marshal.SizeOf(array[0, 0, 0]);
int totalSize = Buffer.ByteLength(array);
@@ -262,5 +261,5 @@ public static T[] Flatten(this T[,,] array)
Buffer.BlockCopy(array, 0, result, 0, totalSize);
return result;
}
-}
+ }
}
\ No newline at end of file
diff --git a/source/SharpGL/Core/SharpGL/OpenGL.cs b/source/SharpGL/Core/SharpGL/OpenGL.cs
index b161274b..086b7e67 100644
--- a/source/SharpGL/Core/SharpGL/OpenGL.cs
+++ b/source/SharpGL/Core/SharpGL/OpenGL.cs
@@ -6714,22 +6714,24 @@ public virtual bool Create(OpenGLVersion openGLVersion, RenderContextType render
if(width == 0 || height == 0 || bitDepth == 0)
return false;
- // Create an instance of the render context provider.
- switch(renderContextType)
- {
- case RenderContextType.DIBSection:
- renderContextProvider = new DIBSectionRenderContextProvider();
- break;
- case RenderContextType.NativeWindow:
- renderContextProvider = new NativeWindowRenderContextProvider();
- break;
- case RenderContextType.HiddenWindow:
- renderContextProvider = new HiddenWindowRenderContextProvider();
- break;
- case RenderContextType.FBO:
- renderContextProvider = new FBORenderContextProvider();
- break;
- }
+ // TODO: [RS] I suggest to replace the switch-case statement with a RenderContextProviderFactory.
+
+ // Create an instance of the render context provider.
+ switch (renderContextType)
+ {
+ case RenderContextType.DIBSection:
+ renderContextProvider = new DIBSectionRenderContextProvider();
+ break;
+ case RenderContextType.NativeWindow:
+ renderContextProvider = new NativeWindowRenderContextProvider();
+ break;
+ case RenderContextType.HiddenWindow:
+ renderContextProvider = new HiddenWindowRenderContextProvider();
+ break;
+ case RenderContextType.FBO:
+ renderContextProvider = new FBORenderContextProvider();
+ break;
+ }
// Create the render context.
renderContextProvider.Create(openGLVersion, this, width, height, bitDepth, parameter);
diff --git a/source/SharpGL/Core/SharpGL/OpenGLExtensions.cs b/source/SharpGL/Core/SharpGL/OpenGLExtensions.cs
index 4d81ae75..306eea32 100644
--- a/source/SharpGL/Core/SharpGL/OpenGLExtensions.cs
+++ b/source/SharpGL/Core/SharpGL/OpenGLExtensions.cs
@@ -8,6 +8,7 @@ namespace SharpGL
{
public partial class OpenGL
{
+
///
/// Determines whether a named extension function is supported.
///
@@ -4891,5 +4892,915 @@ public IntPtr CreateContextAttribsARB(IntPtr hShareContext, int[] attribList)
public const int ERROR_INVALID_PROFILE_ARB = 0x2096;
#endregion
+
+ #region GL_ARB_explicit_uniform_location
+
+ // Constants
+
+ ///
+ /// The number of available pre-assigned uniform locations to that can default be
+ /// allocated in the default uniform block.
+ ///
+ public const int GL_MAX_UNIFORM_LOCATIONS = 0x826E;
+
+ #endregion
+
+ #region GL_ARB_clear_buffer_object
+
+ ///
+ /// Fill a buffer object's data store with a fixed value
+ ///
+ /// Specifies the target buffer object. The symbolic constant must be GL_ARRAY_BUFFER, GL_ATOMIC_COUNTER_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_DRAW_INDIRECT_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_QUERY_BUFFER, GL_SHADER_STORAGE_BUFFER, GL_TEXTURE_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER, or GL_UNIFORM_BUFFER.
+ /// The sized internal format with which the data will be stored in the buffer object.
+ /// Specifies the format of the pixel data. For transfers of depth, stencil, or depth/stencil data, you must use GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, or GL_DEPTH_STENCIL, where appropriate. For transfers of normalized integer or floating-point color image data, you must use one of the following: GL_RED, GL_GREEN, GL_BLUE, GL_RG, GL_RGB, GL_BGR, GL_RGBA, and GL_BGRA. For transfers of non-normalized integer data, you must use one of the following: GL_RED_INTEGER, GL_GREEN_INTEGER, GL_BLUE_INTEGER, GL_RG_INTEGER, GL_RGB_INTEGER, GL_BGR_INTEGER, GL_RGBA_INTEGER, and GL_BGRA_INTEGER.
+ /// Specifies the data type of the pixel data. The following symbolic values are accepted: GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2, and GL_UNSIGNED_INT_2_10_10_10_REV.
+ /// Specifies a pointer to a single pixel of data to upload. This parameter may not be NULL.
+ public void ClearBufferData(uint target, uint internalformat, uint format, uint type, IntPtr data)
+ {
+ InvokeExtensionFunction(target, internalformat, format, type, data);
+ }
+
+ ///
+ /// Fill all or part of buffer object's data store with a fixed value
+ ///
+ /// Specifies the target buffer object. The symbolic constant must be GL_ARRAY_BUFFER, GL_ATOMIC_COUNTER_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_DRAW_INDIRECT_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_QUERY_BUFFER, GL_SHADER_STORAGE_BUFFER, GL_TEXTURE_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER, or GL_UNIFORM_BUFFER.
+ /// The sized internal format with which the data will be stored in the buffer object.
+ /// The offset, in basic machine units into the buffer object's data store at which to start filling.
+ /// The size, in basic machine units of the range of the data store to fill.
+ /// Specifies the format of the pixel data. For transfers of depth, stencil, or depth/stencil data, you must use GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, or GL_DEPTH_STENCIL, where appropriate. For transfers of normalized integer or floating-point color image data, you must use one of the following: GL_RED, GL_GREEN, GL_BLUE, GL_RG, GL_RGB, GL_BGR, GL_RGBA, and GL_BGRA. For transfers of non-normalized integer data, you must use one of the following: GL_RED_INTEGER, GL_GREEN_INTEGER, GL_BLUE_INTEGER, GL_RG_INTEGER, GL_RGB_INTEGER, GL_BGR_INTEGER, GL_RGBA_INTEGER, and GL_BGRA_INTEGER.
+ /// Specifies the data type of the pixel data. The following symbolic values are accepted: GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2, and GL_UNSIGNED_INT_2_10_10_10_REV.
+ /// Specifies a pointer to a single pixel of data to upload. This parameter may not be NULL.
+ public void ClearBufferSubData(uint target, uint internalformat, IntPtr offset, uint size, uint format, uint type, IntPtr data)
+ {
+ InvokeExtensionFunction(target, internalformat, offset, size, format, type, data);
+ }
+
+ public void ClearNamedBufferDataEXT(uint buffer, uint internalformat, uint format, uint type, IntPtr data)
+ {
+ InvokeExtensionFunction(buffer, internalformat, format, type, data);
+ }
+ public void ClearNamedBufferSubDataEXT(uint buffer, uint internalformat, IntPtr offset, uint size, uint format, uint type, IntPtr data)
+ {
+ InvokeExtensionFunction(buffer, internalformat, offset, size, format, type, data);
+ }
+
+ // Delegates
+ private delegate void glClearBufferData(uint target, uint internalformat, uint format, uint type, IntPtr data);
+ private delegate void glClearBufferSubData(uint target, uint internalformat, IntPtr offset, uint size, uint format, uint type, IntPtr data);
+ private delegate void glClearNamedBufferDataEXT(uint buffer, uint internalformat, uint format, uint type, IntPtr data);
+ private delegate void glClearNamedBufferSubDataEXT(uint buffer, uint internalformat, IntPtr offset, uint size, uint format, uint type, IntPtr data);
+
+ #endregion
+
+ #region GL_ARB_compute_shader
+
+ ///
+ /// Launch one or more compute work groups
+ ///
+ /// The number of work groups to be launched in the X dimension.
+ /// The number of work groups to be launched in the Y dimension.
+ /// The number of work groups to be launched in the Z dimension.
+ public void DispatchCompute(uint num_groups_x, uint num_groups_y, uint num_groups_z)
+ {
+ InvokeExtensionFunction(num_groups_x, num_groups_y, num_groups_z);
+ }
+
+ ///
+ /// Launch one or more compute work groups using parameters stored in a buffer
+ ///
+ /// The offset into the buffer object currently bound to the GL_DISPATCH_INDIRECT_BUFFER buffer target at which the dispatch parameters are stored.
+ public void DispatchComputeIndirect(IntPtr indirect)
+ {
+ InvokeExtensionFunction(indirect);
+ }
+
+ // Delegates
+ private delegate void glDispatchCompute(uint num_groups_x, uint num_groups_y, uint num_groups_z);
+ private delegate void glDispatchComputeIndirect(IntPtr indirect);
+
+ // Constants
+ public const uint GL_COMPUTE_SHADER = 0x91B9;
+ public const uint GL_MAX_COMPUTE_UNIFORM_BLOCKS = 0x91BB;
+ public const uint GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 0x91BC;
+ public const uint GL_MAX_COMPUTE_IMAGE_UNIFORMS = 0x91BD;
+ public const uint GL_MAX_COMPUTE_SHARED_MEMORY_SIZE = 0x8262;
+ public const uint GL_MAX_COMPUTE_UNIFORM_COMPONENTS = 0x8263;
+ public const uint GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 0x8264;
+ public const uint GL_MAX_COMPUTE_ATOMIC_COUNTERS = 0x8265;
+ public const uint GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266;
+ public const uint GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 0x90EB;
+ public const uint GL_MAX_COMPUTE_WORK_GROUP_COUNT = 0x91BE;
+ public const uint GL_MAX_COMPUTE_WORK_GROUP_SIZE = 0x91BF;
+ public const uint GL_COMPUTE_WORK_GROUP_SIZE = 0x8267;
+ public const uint GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC;
+ public const uint GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED;
+ public const uint GL_DISPATCH_INDIRECT_BUFFER = 0x90EE;
+ public const uint GL_DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF;
+ public const uint GL_COMPUTE_SHADER_BIT = 0x00000020;
+
+ #endregion
+
+ #region GL_ARB_copy_image
+
+ ///
+ /// Perform a raw data copy between two images
+ ///
+ /// The name of a texture or renderbuffer object from which to copy.
+ /// The target representing the namespace of the source name srcName.
+ /// The mipmap level to read from the source.
+ /// The X coordinate of the left edge of the souce region to copy.
+ /// The Y coordinate of the top edge of the souce region to copy.
+ /// The Z coordinate of the near edge of the souce region to copy.
+ /// The name of a texture or renderbuffer object to which to copy.
+ /// The target representing the namespace of the destination name dstName.
+ /// The desination mipmap level.
+ /// The X coordinate of the left edge of the destination region.
+ /// The Y coordinate of the top edge of the destination region.
+ /// The Z coordinate of the near edge of the destination region.
+ /// The width of the region to be copied.
+ /// The height of the region to be copied.
+ /// The depth of the region to be copied.
+ public void CopyImageSubData(uint srcName, uint srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName,
+ uint dstTarget, int dstLevel, int dstX, int dstY, int dstZ, uint srcWidth, uint srcHeight, uint srcDepth)
+ {
+ InvokeExtensionFunction(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
+ dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
+ }
+
+ // Delegates
+ private delegate void glCopyImageSubData(uint srcName, uint srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName,
+ uint dstTarget, int dstLevel, int dstX, int dstY, int dstZ, uint srcWidth, uint srcHeight, uint srcDepth);
+
+ #endregion
+
+ #region GL_ARB_ES3_compatibility
+
+ public const uint GL_COMPRESSED_RGB8_ETC2 = 0x9274;
+ public const uint GL_COMPRESSED_SRGB8_ETC2 = 0x9275;
+ public const uint GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276;
+ public const uint GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277;
+ public const uint GL_COMPRESSED_RGBA8_ETC2_EAC = 0x9278;
+ public const uint GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279;
+ public const uint GL_COMPRESSED_R11_EAC = 0x9270;
+ public const uint GL_COMPRESSED_SIGNED_R11_EAC = 0x9271;
+ public const uint GL_COMPRESSED_RG11_EAC = 0x9272;
+ public const uint GL_COMPRESSED_SIGNED_RG11_EAC = 0x9273;
+ public const uint GL_PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69;
+ public const uint GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A;
+ public const uint GL_MAX_ELEMENT_INDEX = 0x8D6B;
+ public const uint GL_TEXTURE_IMMUTABLE_LEVELS = 0x82DF;
+
+ #endregion
+
+ #region GL_ARB_framebuffer_no_attachments
+
+ // Methods
+
+ ///
+ /// Set a named parameter of a framebuffer.
+ ///
+ /// The target of the operation, which must be GL_READ_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER or GL_FRAMEBUFFER.
+ /// A token indicating the parameter to be modified.
+ /// The new value for the parameter named pname.
+ public void FramebufferParameter(uint target, uint pname, int param)
+ {
+ InvokeExtensionFunction(target, pname, param);
+ }
+
+ ///
+ /// Retrieve a named parameter from a framebuffer
+ ///
+ /// The target of the operation, which must be GL_READ_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER or GL_FRAMEBUFFER.
+ /// A token indicating the parameter to be retrieved.
+ /// The address of a variable to receive the value of the parameter named pname.
+ public void GetFramebufferParameter(uint target, uint pname, int[] parameters)
+ {
+ InvokeExtensionFunction(target, pname, parameters);
+ }
+
+ public void NamedFramebufferParameterEXT(uint framebuffer, uint pname, int param)
+ {
+ InvokeExtensionFunction(framebuffer, pname, param);
+ }
+
+ public void GetNamedFramebufferParameterEXT(uint framebuffer, uint pname, int[] parameters)
+ {
+ InvokeExtensionFunction(framebuffer, pname, parameters);
+ }
+
+ // Delegates
+ private delegate void glFramebufferParameteri(uint target, uint pname, int param);
+ private delegate void glGetFramebufferParameteriv(uint target, uint pname, int[] parameters);
+ private delegate void glNamedFramebufferParameteriEXT(uint framebuffer, uint pname, int param);
+ private delegate void glGetNamedFramebufferParameterivEXT(uint framebuffer, uint pname, int[] parameters);
+
+ #endregion
+
+ #region GL_ARB_internalformat_query2
+
+ ///
+ /// Retrieve information about implementation-dependent support for internal formats
+ ///
+ /// Indicates the usage of the internal format. target must be GL_TEXTURE_1D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_RECTANGLE, GL_TEXTURE_BUFFER, GL_RENDERBUFFER, GL_TEXTURE_2D_MULTISAMPLE or GL_TEXTURE_2D_MULTISAMPLE_ARRAY.
+ /// Specifies the internal format about which to retrieve information.
+ /// Specifies the type of information to query.
+ /// Specifies the maximum number of basic machine units that may be written to params by the function.
+ /// Specifies the address of a variable into which to write the retrieved information.
+ public void GetInternalformat(uint target, uint internalformat, uint pname, uint bufSize, int[] parameters)
+ {
+ InvokeExtensionFunction(target, internalformat, pname, bufSize, parameters);
+ }
+
+ ///
+ /// Retrieve information about implementation-dependent support for internal formats
+ ///
+ /// Indicates the usage of the internal format. target must be GL_TEXTURE_1D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_RECTANGLE, GL_TEXTURE_BUFFER, GL_RENDERBUFFER, GL_TEXTURE_2D_MULTISAMPLE or GL_TEXTURE_2D_MULTISAMPLE_ARRAY.
+ /// Specifies the internal format about which to retrieve information.
+ /// Specifies the type of information to query.
+ /// Specifies the maximum number of basic machine units that may be written to params by the function.
+ /// Specifies the address of a variable into which to write the retrieved information.
+ public void GetInternalformat(uint target, uint internalformat, uint pname, uint bufSize, Int64[] parameters)
+ {
+ InvokeExtensionFunction(target, internalformat, pname, bufSize, parameters);
+ }
+
+ // Delegates
+ private delegate void glGetInternalformativ(uint target, uint internalformat, uint pname, uint bufSize, int[] parameters);
+ private delegate void glGetInternalformati64v(uint target, uint internalformat, uint pname, uint bufSize, Int64[] parameters);
+
+ // Constants
+ public const uint GL_RENDERBUFFER = 0x8D41;
+ public const uint GL_TEXTURE_2D_MULTISAMPLE = 0x9100;
+ public const uint GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102;
+ public const uint GL_NUM_SAMPLE_COUNTS = 0x9380;
+ public const uint GL_INTERNALFORMAT_SUPPORTED = 0x826F;
+ public const uint GL_INTERNALFORMAT_PREFERRED = 0x8270;
+ public const uint GL_INTERNALFORMAT_RED_SIZE = 0x8271;
+ public const uint GL_INTERNALFORMAT_GREEN_SIZE = 0x8272;
+ public const uint GL_INTERNALFORMAT_BLUE_SIZE = 0x8273;
+ public const uint GL_INTERNALFORMAT_ALPHA_SIZE = 0x8274;
+ public const uint GL_INTERNALFORMAT_DEPTH_SIZE = 0x8275;
+ public const uint GL_INTERNALFORMAT_STENCIL_SIZE = 0x8276;
+ public const uint GL_INTERNALFORMAT_SHARED_SIZE = 0x8277;
+ public const uint GL_INTERNALFORMAT_RED_TYPE = 0x8278;
+ public const uint GL_INTERNALFORMAT_GREEN_TYPE = 0x8279;
+ public const uint GL_INTERNALFORMAT_BLUE_TYPE = 0x827A;
+ public const uint GL_INTERNALFORMAT_ALPHA_TYPE = 0x827B;
+ public const uint GL_INTERNALFORMAT_DEPTH_TYPE = 0x827C;
+ public const uint GL_INTERNALFORMAT_STENCIL_TYPE = 0x827D;
+ public const uint GL_MAX_WIDTH = 0x827E;
+ public const uint GL_MAX_HEIGHT = 0x827F;
+ public const uint GL_MAX_DEPTH = 0x8280;
+ public const uint GL_MAX_LAYERS = 0x8281;
+ public const uint GL_MAX_COMBINED_DIMENSIONS = 0x8282;
+ public const uint GL_COLOR_COMPONENTS = 0x8283;
+ public const uint GL_DEPTH_COMPONENTS = 0x8284;
+ public const uint GL_STENCIL_COMPONENTS = 0x8285;
+ public const uint GL_COLOR_RENDERABLE = 0x8286;
+ public const uint GL_DEPTH_RENDERABLE = 0x8287;
+ public const uint GL_STENCIL_RENDERABLE = 0x8288;
+ public const uint GL_FRAMEBUFFER_RENDERABLE = 0x8289;
+ public const uint GL_FRAMEBUFFER_RENDERABLE_LAYERED = 0x828A;
+ public const uint GL_FRAMEBUFFER_BLEND = 0x828B;
+ public const uint GL_READ_PIXELS = 0x828C;
+ public const uint GL_READ_PIXELS_FORMAT = 0x828D;
+ public const uint GL_READ_PIXELS_TYPE = 0x828E;
+ public const uint GL_TEXTURE_IMAGE_FORMAT = 0x828F;
+ public const uint GL_TEXTURE_IMAGE_TYPE = 0x8290;
+ public const uint GL_GET_TEXTURE_IMAGE_FORMAT = 0x8291;
+ public const uint GL_GET_TEXTURE_IMAGE_TYPE = 0x8292;
+ public const uint GL_MIPMAP = 0x8293;
+ public const uint GL_MANUAL_GENERATE_MIPMAP = 0x8294;
+ public const uint GL_AUTO_GENERATE_MIPMAP = 0x8295;
+ public const uint GL_COLOR_ENCODING = 0x8296;
+ public const uint GL_SRGB_READ = 0x8297;
+ public const uint GL_SRGB_WRITE = 0x8298;
+ public const uint GL_SRGB_DECODE_ARB = 0x8299;
+ public const uint GL_FILTER = 0x829A;
+ public const uint GL_VERTEX_TEXTURE = 0x829B;
+ public const uint GL_TESS_CONTROL_TEXTURE = 0x829C;
+ public const uint GL_TESS_EVALUATION_TEXTURE = 0x829D;
+ public const uint GL_GEOMETRY_TEXTURE = 0x829E;
+ public const uint GL_FRAGMENT_TEXTURE = 0x829F;
+ public const uint GL_COMPUTE_TEXTURE = 0x82A0;
+ public const uint GL_TEXTURE_SHADOW = 0x82A1;
+ public const uint GL_TEXTURE_GATHER = 0x82A2;
+ public const uint GL_TEXTURE_GATHER_SHADOW = 0x82A3;
+ public const uint GL_SHADER_IMAGE_LOAD = 0x82A4;
+ public const uint GL_SHADER_IMAGE_STORE = 0x82A5;
+ public const uint GL_SHADER_IMAGE_ATOMIC = 0x82A6;
+ public const uint GL_IMAGE_TEXEL_SIZE = 0x82A7;
+ public const uint GL_IMAGE_COMPATIBILITY_CLASS = 0x82A8;
+ public const uint GL_IMAGE_PIXEL_FORMAT = 0x82A9;
+ public const uint GL_IMAGE_PIXEL_TYPE = 0x82AA;
+ public const uint GL_IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x90C7;
+ public const uint GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = 0x82AC;
+ public const uint GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = 0x82AD;
+ public const uint GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = 0x82AE;
+ public const uint GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x82AF;
+ public const uint GL_TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x82B1;
+ public const uint GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x82B2;
+ public const uint GL_TEXTURE_COMPRESSED_BLOCK_SIZE = 0x82B3;
+ public const uint GL_CLEAR_BUFFER = 0x82B4;
+ public const uint GL_TEXTURE_VIEW = 0x82B5;
+ public const uint GL_VIEW_COMPATIBILITY_CLASS = 0x82B6;
+ public const uint GL_FULL_SUPPORT = 0x82B7;
+ public const uint GL_CAVEAT_SUPPORT = 0x82B8;
+ public const uint GL_IMAGE_CLASS_4_X_32 = 0x82B9;
+ public const uint GL_IMAGE_CLASS_2_X_32 = 0x82BA;
+ public const uint GL_IMAGE_CLASS_1_X_32 = 0x82BB;
+ public const uint GL_IMAGE_CLASS_4_X_16 = 0x82BC;
+ public const uint GL_IMAGE_CLASS_2_X_16 = 0x82BD;
+ public const uint GL_IMAGE_CLASS_1_X_16 = 0x82BE;
+ public const uint GL_IMAGE_CLASS_4_X_8 = 0x82BF;
+ public const uint GL_IMAGE_CLASS_2_X_8 = 0x82C0;
+ public const uint GL_IMAGE_CLASS_1_X_8 = 0x82C1;
+ public const uint GL_IMAGE_CLASS_11_11_10 = 0x82C2;
+ public const uint GL_IMAGE_CLASS_10_10_10_2 = 0x82C3;
+ public const uint GL_VIEW_CLASS_128_BITS = 0x82C4;
+ public const uint GL_VIEW_CLASS_96_BITS = 0x82C5;
+ public const uint GL_VIEW_CLASS_64_BITS = 0x82C6;
+ public const uint GL_VIEW_CLASS_48_BITS = 0x82C7;
+ public const uint GL_VIEW_CLASS_32_BITS = 0x82C8;
+ public const uint GL_VIEW_CLASS_24_BITS = 0x82C9;
+ public const uint GL_VIEW_CLASS_16_BITS = 0x82CA;
+ public const uint GL_VIEW_CLASS_8_BITS = 0x82CB;
+ public const uint GL_VIEW_CLASS_S3TC_DXT1_RGB = 0x82CC;
+ public const uint GL_VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD;
+ public const uint GL_VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE;
+ public const uint GL_VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF;
+ public const uint GL_VIEW_CLASS_RGTC1_RED = 0x82D0;
+ public const uint GL_VIEW_CLASS_RGTC2_RG = 0x82D1;
+ public const uint GL_VIEW_CLASS_BPTC_UNORM = 0x82D2;
+ public const uint GL_VIEW_CLASS_BPTC_FLOAT = 0x82D3;
+
+ #endregion
+
+ #region GL_ARB_invalidate_subdata
+
+ ///
+ /// Invalidate a region of a texture image
+ ///
+ /// The name of a texture object a subregion of which to invalidate.
+ /// The level of detail of the texture object within which the region resides.
+ /// The X offset of the region to be invalidated.
+ /// The Y offset of the region to be invalidated.
+ /// The Z offset of the region to be invalidated.
+ /// The width of the region to be invalidated.
+ /// The height of the region to be invalidated.
+ /// The depth of the region to be invalidated.
+ public void InvalidateTexSubImage(uint texture, int level, int xoffset, int yoffset, int zoffset,
+ uint width, uint height, uint depth)
+ {
+ InvokeExtensionFunction(texture, level, xoffset, yoffset, zoffset, width, height, depth);
+ }
+
+ ///
+ /// Invalidate the entirety a texture image
+ ///
+ /// The name of a texture object to invalidate.
+ /// The level of detail of the texture object to invalidate.
+ public void InvalidateTexImage(uint texture, int level)
+ {
+ InvokeExtensionFunction(texture, level);
+ }
+
+ ///
+ /// Invalidate a region of a buffer object's data store
+ ///
+ /// The name of a buffer object, a subrange of whose data store to invalidate.
+ /// The offset within the buffer's data store of the start of the range to be invalidated.
+ /// The length of the range within the buffer's data store to be invalidated.
+ public void InvalidateBufferSubData(uint buffer, IntPtr offset, IntPtr length)
+ {
+ InvokeExtensionFunction(buffer, offset, length);
+ }
+
+ ///
+ /// Invalidate the content of a buffer object's data store
+ ///
+ /// The name of a buffer object whose data store to invalidate.
+ public void InvalidateBufferData(uint buffer)
+ {
+ InvokeExtensionFunction(buffer);
+ }
+
+ ///
+ /// Invalidate the content some or all of a framebuffer object's attachments
+ ///
+ /// The target to which the framebuffer is attached. target must be GL_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER, or GL_READ_FRAMEBUFFER.
+ /// The number of entries in the attachments array.
+ /// The address of an array identifying the attachments to be invalidated.
+ public void InvalidateFramebuffer(uint target, uint numAttachments, uint[] attachments)
+ {
+ InvokeExtensionFunction(target, numAttachments, attachments);
+ }
+
+ ///
+ /// Invalidate the content of a region of some or all of a framebuffer object's attachments
+ ///
+ /// The target to which the framebuffer is attached. target must be GL_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER, or GL_READ_FRAMEBUFFER.
+ /// The number of entries in the attachments array.
+ /// The address of an array identifying the attachments to be invalidated.
+ /// The X offset of the region to be invalidated.
+ /// The Y offset of the region to be invalidated.
+ /// The width of the region to be invalidated.
+ /// The height of the region to be invalidated.
+ public void InvalidateSubFramebuffer(uint target, uint numAttachments, uint[] attachments,
+ int x, int y, uint width, uint height)
+ {
+ InvokeExtensionFunction(target, numAttachments, attachments, x, y, width, height);
+ }
+
+ // Delegates
+ private delegate void glInvalidateTexSubImage(uint texture, int level, int xoffset,
+ int yoffset, int zoffset, uint width, uint height, uint depth);
+ private delegate void glInvalidateTexImage(uint texture, int level);
+ private delegate void glInvalidateBufferSubData(uint buffer, IntPtr offset, IntPtr length);
+ private delegate void glInvalidateBufferData(uint buffer);
+ private delegate void glInvalidateFramebuffer(uint target, uint numAttachments, uint[] attachments);
+ private delegate void glInvalidateSubFramebuffer(uint target, uint numAttachments, uint[] attachments,
+ int x, int y, uint width, uint height);
+
+ #endregion
+
+ #region ARB_multi_draw_indirect
+
+ ///
+ /// Render multiple sets of primitives from array data, taking parameters from memory
+ ///
+ /// Specifies what kind of primitives to render. Symbolic constants GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_LINE_STRIP_ADJACENCY, GL_LINES_ADJACENCY, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_TRIANGLE_STRIP_ADJACENCY, GL_TRIANGLES_ADJACENCY, and GL_PATCHES are accepted.
+ /// Specifies the address of an array of structures containing the draw parameters.
+ /// Specifies the the number of elements in the array of draw parameter structures.
+ /// Specifies the distance in basic machine units between elements of the draw parameter array.
+ public void MultiDrawArraysIndirect(uint mode, IntPtr indirect, uint primcount, uint stride)
+ {
+ InvokeExtensionFunction(mode, indirect, primcount, stride);
+ }
+
+ ///
+ /// Render indexed primitives from array data, taking parameters from memory
+ ///
+ /// Specifies what kind of primitives to render. Symbolic constants GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_LINE_STRIP_ADJACENCY, GL_LINES_ADJACENCY, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_TRIANGLE_STRIP_ADJACENCY, GL_TRIANGLES_ADJACENCY, and GL_PATCHES are accepted.
+ /// Specifies the type of data in the buffer bound to the GL_ELEMENT_ARRAY_BUFFER binding.
+ /// Specifies a byte offset (cast to a pointer type) into the buffer bound to GL_DRAW_INDIRECT_BUFFER, which designates the starting point of the structure containing the draw parameters.
+ /// Specifies the number of elements in the array addressed by indirect.
+ /// Specifies the distance in basic machine units between elements of the draw parameter array.
+ public void MultiDrawElementsIndirect(uint mode, uint type, IntPtr indirect, uint primcount, uint stride)
+ {
+ InvokeExtensionFunction(mode, type, indirect, primcount, stride);
+ }
+
+ private delegate void glMultiDrawArraysIndirect(uint mode, IntPtr indirect, uint primcount, uint stride);
+ private delegate void glMultiDrawElementsIndirect(uint mode, uint type, IntPtr indirect, uint primcount, uint stride);
+
+ #endregion
+
+ #region GL_ARB_program_interface_query
+
+ ///
+ /// Query a property of an interface in a program
+ ///
+ /// The name of a program object whose interface to query.
+ /// A token identifying the interface within program to query.
+ /// The name of the parameter within programInterface to query.
+ /// The address of a variable to retrieve the value of pname for the program interface..
+ public void GetProgramInterface(uint program, uint programInterface, uint pname, int[] parameters)
+ {
+ InvokeExtensionFunction(program, programInterface, pname, parameters);
+ }
+
+ ///
+ /// Query the index of a named resource within a program
+ ///
+ /// The name of a program object whose resources to query.
+ /// A token identifying the interface within program containing the resource named name.
+ /// The name of the resource to query the index of.
+ public void GetProgramResourceIndex(uint program, uint programInterface, string name)
+ {
+ InvokeExtensionFunction(program, programInterface, name);
+ }
+
+ ///
+ /// Query the name of an indexed resource within a program
+ ///
+ /// The name of a program object whose resources to query.
+ /// A token identifying the interface within program containing the indexed resource.
+ /// The index of the resource within programInterface of program.
+ /// The size of the character array whose address is given by name.
+ /// The address of a variable which will receive the length of the resource name.
+ /// The address of a character array into which will be written the name of the resource.
+ public void GetProgramResourceName(uint program, uint programInterface, uint index, uint bufSize, out uint length, out string name)
+ {
+ var lengthParameter = new uint[1];
+ var nameParameter = new string[1];
+ InvokeExtensionFunction(program, programInterface, index, bufSize, lengthParameter, nameParameter);
+ length = lengthParameter[0];
+ name = nameParameter[0];
+ }
+
+ ///
+ /// Retrieve values for multiple properties of a single active resource within a program object
+ ///
+ /// The name of a program object whose resources to query.
+ /// A token identifying the interface within program containing the resource named name.
+ /// The index within the programInterface to query information about.
+ /// The number of properties being queried.
+ /// An array of properties of length propCount to query.
+ /// The number of GLint values in the params array.
+ /// If not NULL, then this value will be filled in with the number of actual parameters written to params.
+ /// The output array of parameters to write.
+ public void GetProgramResource(uint program, uint programInterface, uint index, uint propCount, uint[] props, uint bufSize, out uint length, out int[] parameters)
+ {
+ var lengthParameter = new uint[1];
+ var parametersParameter = new int[1][];
+ InvokeExtensionFunction(program, programInterface, index, propCount, props, bufSize, lengthParameter, parametersParameter);
+ length = lengthParameter[0];
+ parameters = parametersParameter[0];
+ }
+
+ ///
+ /// Query the location of a named resource within a program.
+ ///
+ /// The name of a program object whose resources to query.
+ /// A token identifying the interface within program containing the resource named name.
+ /// The name of the resource to query the location of.
+ public void GetProgramResourceLocation(uint program, uint programInterface, string name)
+ {
+ InvokeExtensionFunction(program, programInterface, name);
+ }
+
+ ///
+ /// Query the fragment color index of a named variable within a program.
+ ///
+ /// The name of a program object whose resources to query.
+ /// A token identifying the interface within program containing the resource named name.
+ /// The name of the resource to query the location of.
+ public void GetProgramResourceLocationIndex(uint program, uint programInterface, string name)
+ {
+ InvokeExtensionFunction(program, programInterface, name);
+ }
+
+ private delegate void glGetProgramInterfaceiv(uint program, uint programInterface, uint pname, int[] parameters);
+ private delegate uint glGetProgramResourceIndex(uint program, uint programInterface, string name);
+ private delegate void glGetProgramResourceName(uint program, uint programInterface, uint index, uint bufSize, uint[] length, string[] name);
+ private delegate void glGetProgramResourceiv(uint program, uint programInterface, uint index, uint propCount, uint[] props, uint bufSize, uint[] length, int[] parameters);
+ private delegate int glGetProgramResourceLocation(uint program, uint programInterface, string name);
+ private delegate int glGetProgramResourceLocationIndex(uint program, uint programInterface, string name);
+
+ #endregion
+
+ #region GL_ARB_shader_storage_buffer_object
+
+ ///
+ /// Change an active shader storage block binding.
+ ///
+ /// The name of the program containing the block whose binding to change.
+ /// The index storage block within the program.
+ /// The index storage block binding to associate with the specified storage block.
+ public void ShaderStorageBlockBinding(uint program, uint storageBlockIndex, uint storageBlockBinding)
+ {
+ InvokeExtensionFunction(program, storageBlockIndex, storageBlockBinding);
+ }
+
+ private delegate void glShaderStorageBlockBinding(uint program, uint storageBlockIndex, uint storageBlockBinding);
+
+ // Constants
+ public const uint GL_SHADER_STORAGE_BUFFER = 0x90D2;
+ public const uint GL_SHADER_STORAGE_BUFFER_BINDING = 0x90D3;
+ public const uint GL_SHADER_STORAGE_BUFFER_START = 0x90D4;
+ public const uint GL_SHADER_STORAGE_BUFFER_SIZE = 0x90D5;
+ public const uint GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6;
+ public const uint GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7;
+ public const uint GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x90D8;
+ public const uint GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9;
+ public const uint GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA;
+ public const uint GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x90DB;
+ public const uint GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC;
+ public const uint GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x90DD;
+ public const uint GL_MAX_SHADER_STORAGE_BLOCK_SIZE = 0x90DE;
+ public const uint GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x90DF;
+ public const uint GL_SHADER_STORAGE_BARRIER_BIT = 0x2000;
+ public const uint GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39;
+
+ #endregion
+
+ #region GL_ARB_stencil_texturing
+
+ // Constants
+ public const uint GL_DEPTH_STENCIL_TEXTURE_MODE = 0x90EA;
+
+ #endregion
+
+ #region GL_ARB_texture_buffer_range
+
+ ///
+ /// Bind a range of a buffer's data store to a buffer texture
+ ///
+ /// Specifies the target of the operation and must be GL_TEXTURE_BUFFER.
+ /// Specifies the internal format of the data in the store belonging to buffer.
+ /// Specifies the name of the buffer object whose storage to attach to the active buffer texture.
+ /// Specifies the offset of the start of the range of the buffer's data store to attach.
+ /// Specifies the size of the range of the buffer's data store to attach.
+ public void TexBufferRange(uint target, uint internalformat, uint buffer, IntPtr offset, IntPtr size)
+ {
+ InvokeExtensionFunction(target, internalformat, buffer, offset, size);
+ }
+
+ ///
+ /// Bind a range of a buffer's data store to a buffer texture
+ ///
+ /// The texture.
+ /// Specifies the target of the operation and must be GL_TEXTURE_BUFFER.
+ /// Specifies the internal format of the data in the store belonging to buffer.
+ /// Specifies the name of the buffer object whose storage to attach to the active buffer texture.
+ /// Specifies the offset of the start of the range of the buffer's data store to attach.
+ /// Specifies the size of the range of the buffer's data store to attach.
+ public void TextureBufferRangeEXT(uint texture, uint target, uint internalformat, uint buffer, IntPtr offset, IntPtr size)
+ {
+ InvokeExtensionFunction(texture, target, internalformat, buffer, offset, size);
+ }
+
+ private delegate void glTexBufferRange(uint target, uint internalformat, uint buffer, IntPtr offset, IntPtr size);
+ private delegate void glTextureBufferRangeEXT(uint texture, uint target, uint internalformat, uint buffer, IntPtr offset, IntPtr size);
+
+ #endregion
+
+ #region GL_ARB_texture_storage_multisample
+
+ ///
+ /// Specify storage for a two-dimensional multisample texture.
+ ///
+ /// Specify the target of the operation. target must be GL_TEXTURE_2D_MULTISAMPLE or GL_PROXY_TEXTURE_2D_MULTISAMPLE.
+ /// Specify the number of samples in the texture.
+ /// Specifies the sized internal format to be used to store texture image data.
+ /// Specifies the width of the texture, in texels.
+ /// Specifies the height of the texture, in texels.
+ /// Specifies whether the image will use identical sample locations and the same number of samples for all texels in the image, and the sample locations will not depend on the internal format or size of the image.
+ public void TexStorage2DMultisample(uint target, uint samples, uint internalformat, uint width, uint height, bool fixedsamplelocations)
+ {
+ InvokeExtensionFunction(target, samples, internalformat, width, height, fixedsamplelocations);
+ }
+
+ ///
+ /// Specify storage for a three-dimensional multisample array texture
+ ///
+ /// Specify the target of the operation. target must be GL_TEXTURE_3D_MULTISAMPLE_ARRAY or GL_PROXY_TEXTURE_3D_MULTISAMPLE_ARRAY.
+ /// Specify the number of samples in the texture.
+ /// Specifies the sized internal format to be used to store texture image data.
+ /// Specifies the width of the texture, in texels.
+ /// Specifies the height of the texture, in texels.
+ /// Specifies the depth of the texture, in layers.
+ /// Specifies the depth of the texture, in layers.
+ public void TexStorage3DMultisample(uint target, uint samples, uint internalformat, uint width, uint height, uint depth, bool fixedsamplelocations)
+ {
+ InvokeExtensionFunction(target, samples, internalformat, width, height, depth, fixedsamplelocations);
+ }
+
+ ///
+ /// Specify storage for a two-dimensional multisample texture.
+ ///
+ /// The texture.
+ /// Specify the target of the operation. target must be GL_TEXTURE_2D_MULTISAMPLE or GL_PROXY_TEXTURE_2D_MULTISAMPLE.
+ /// Specify the number of samples in the texture.
+ /// Specifies the sized internal format to be used to store texture image data.
+ /// Specifies the width of the texture, in texels.
+ /// Specifies the height of the texture, in texels.
+ /// Specifies whether the image will use identical sample locations and the same number of samples for all texels in the image, and the sample locations will not depend on the internal format or size of the image.
+ public void TexStorage2DMultisampleEXT(uint texture, uint target, uint samples, uint internalformat, uint width, uint height, bool fixedsamplelocations)
+ {
+ InvokeExtensionFunction(texture, target, samples, internalformat, width, height, fixedsamplelocations);
+ }
+
+ ///
+ /// Specify storage for a three-dimensional multisample array texture
+ ///
+ /// The texture.
+ /// Specify the target of the operation. target must be GL_TEXTURE_3D_MULTISAMPLE_ARRAY or GL_PROXY_TEXTURE_3D_MULTISAMPLE_ARRAY.
+ /// Specify the number of samples in the texture.
+ /// Specifies the sized internal format to be used to store texture image data.
+ /// Specifies the width of the texture, in texels.
+ /// Specifies the height of the texture, in texels.
+ /// Specifies the depth of the texture, in layers.
+ /// Specifies the depth of the texture, in layers.
+ public void TexStorage3DMultisampleEXT(uint texture, uint target, uint samples, uint internalformat, uint width, uint height, uint depth, bool fixedsamplelocations)
+ {
+ InvokeExtensionFunction(texture, target, samples, internalformat, width, height, depth, fixedsamplelocations);
+ }
+
+ // Delegates
+ private delegate void glTexStorage2DMultisample(uint target, uint samples, uint internalformat, uint width, uint height, bool fixedsamplelocations);
+ private delegate void glTexStorage3DMultisample(uint target, uint samples, uint internalformat, uint width, uint height, uint depth, bool fixedsamplelocations);
+ private delegate void glTexStorage2DMultisampleEXT(uint texture, uint target, uint samples, uint internalformat, uint width, uint height, bool fixedsamplelocations);
+ private delegate void glTexStorage3DMultisampleEXT(uint texture, uint target, uint samples, uint internalformat, uint width, uint height, uint depth, bool fixedsamplelocations);
+
+ #endregion
+
+ #region GL_ARB_texture_view
+
+ ///
+ /// Initialize a texture as a data alias of another texture's data store.
+ ///
+ /// Specifies the texture object to be initialized as a view.
+ /// Specifies the target to be used for the newly initialized texture.
+ /// Specifies the name of a texture object of which to make a view.
+ /// Specifies the internal format for the newly created view.
+ /// Specifies lowest level of detail of the view.
+ /// Specifies the number of levels of detail to include in the view.
+ /// Specifies the index of the first layer to include in the view.
+ /// Specifies the number of layers to include in the view.
+ public void TextureView(uint texture, uint target, uint origtexture, uint internalformat, uint minlevel, uint numlevels, uint minlayer, uint numlayers)
+ {
+ InvokeExtensionFunction(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers);
+ }
+
+ // Delegates
+ private delegate void glTextureView(uint texture, uint target, uint origtexture, uint internalformat, uint minlevel, uint numlevels, uint minlayer, uint numlayers);
+
+ // Constants
+ public const uint GL_TEXTURE_VIEW_MIN_LEVEL = 0x82DB;
+ public const uint GL_TEXTURE_VIEW_NUM_LEVELS = 0x82DC;
+ public const uint GL_TEXTURE_VIEW_MIN_LAYER = 0x82DD;
+ public const uint GL_TEXTURE_VIEW_NUM_LAYERS = 0x82DE;
+
+ #endregion
+
+ #region GL_ARB_vertex_attrib_binding
+
+ ///
+ /// Bind a buffer to a vertex buffer bind point.
+ ///
+ /// The index of the vertex buffer binding point to which to bind the buffer.
+ /// The name of an existing buffer to bind to the vertex buffer binding point.
+ /// The offset of the first element of the buffer.
+ /// The distance between elements within the buffer.
+ public void BindVertexBuffer(uint bindingindex, uint buffer, IntPtr offset, uint stride)
+ {
+ InvokeExtensionFunction(bindingindex, buffer, offset, stride);
+ }
+
+ ///
+ /// Specify the organization of vertex arrays.
+ ///
+ /// The generic vertex attribute array being described.
+ /// The number of values per vertex that are stored in the array.
+ /// The type of the data stored in the array.
+ /// GL_TRUE if the parameter represents a normalized integer (type must be an integer type). GL_FALSE otherwise.
+ /// The offset, measured in basic machine units of the first element relative to the start of the vertex buffer binding this attribute fetches from.
+ public void VertexAttribFormat(uint attribindex, int size, uint type, bool normalized, uint relativeoffset)
+ {
+ InvokeExtensionFunction(attribindex, size, type, normalized, relativeoffset);
+ }
+
+ ///
+ /// Specify the organization of vertex arrays.
+ ///
+ /// The generic vertex attribute array being described.
+ /// The number of values per vertex that are stored in the array.
+ /// The type of the data stored in the array.
+ /// The offset, measured in basic machine units of the first element relative to the start of the vertex buffer binding this attribute fetches from.
+ public void VertexAttribIFormat(uint attribindex, int size, uint type, uint relativeoffset)
+ {
+ InvokeExtensionFunction(attribindex, size, type, relativeoffset);
+ }
+
+ ///
+ /// Specify the organization of vertex arrays.
+ ///
+ /// The generic vertex attribute array being described.
+ /// The number of values per vertex that are stored in the array.
+ /// The type of the data stored in the array.
+ /// The offset, measured in basic machine units of the first element relative to the start of the vertex buffer binding this attribute fetches from.
+ public void VertexAttribLFormat(uint attribindex, int size, uint type, uint relativeoffset)
+ {
+ InvokeExtensionFunction(attribindex, size, type, relativeoffset);
+ }
+
+ ///
+ /// Associate a vertex attribute and a vertex buffer binding.
+ ///
+ /// The index of the attribute to associate with a vertex buffer binding.
+ /// The index of the vertex buffer binding with which to associate the generic vertex attribute.
+ public void VertexAttribBinding(uint attribindex, uint bindingindex)
+ {
+ InvokeExtensionFunction(attribindex, bindingindex);
+ }
+
+ ///
+ /// Modify the rate at which generic vertex attributes advance.
+ ///
+ /// The index of the binding whose divisor to modify.
+ /// The new value for the instance step rate to apply.
+ public void VertexBindingDivisor(uint bindingindex, uint divisor)
+ {
+ InvokeExtensionFunction(bindingindex, divisor);
+ }
+
+ ///
+ /// Bind a buffer to a vertex buffer bind point.
+ /// Available only when When EXT_direct_state_access is present.
+ ///
+ /// The vertex array object.
+ /// The index of the vertex buffer binding point to which to bind the buffer.
+ /// The name of an existing buffer to bind to the vertex buffer binding point.
+ /// The offset of the first element of the buffer.
+ /// The distance between elements within the buffer.
+ public void VertexArrayBindVertexBufferEXT(uint vaobj, uint bindingindex, uint buffer, IntPtr offset, uint stride)
+ {
+ InvokeExtensionFunction(vaobj, bindingindex, buffer, offset, stride);
+ }
+
+ ///
+ /// Specify the organization of vertex arrays.
+ /// Available only when When EXT_direct_state_access is present.
+ ///
+ /// The vertex array object.
+ /// The generic vertex attribute array being described.
+ /// The number of values per vertex that are stored in the array.
+ /// The type of the data stored in the array.
+ /// GL_TRUE if the parameter represents a normalized integer (type must be an integer type). GL_FALSE otherwise.
+ /// The offset, measured in basic machine units of the first element relative to the start of the vertex buffer binding this attribute fetches from.
+ public void VertexArrayVertexAttribFormatEXT(uint vaobj, uint attribindex, int size, uint type, bool normalized, uint relativeoffset)
+ {
+ InvokeExtensionFunction(vaobj, attribindex, size, type, normalized, relativeoffset);
+ }
+
+ ///
+ /// Specify the organization of vertex arrays.
+ /// Available only when When EXT_direct_state_access is present.
+ ///
+ /// The vertex array object.
+ /// The generic vertex attribute array being described.
+ /// The number of values per vertex that are stored in the array.
+ /// The type of the data stored in the array.
+ /// The offset, measured in basic machine units of the first element relative to the start of the vertex buffer binding this attribute fetches from.
+ public void VertexArrayVertexAttribIFormatEXT(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset)
+ {
+ InvokeExtensionFunction(vaobj, attribindex, size, type, relativeoffset);
+ }
+
+ ///
+ /// Specify the organization of vertex arrays.
+ /// Available only when When EXT_direct_state_access is present.
+ ///
+ /// The vertex array object.
+ /// The generic vertex attribute array being described.
+ /// The number of values per vertex that are stored in the array.
+ /// The type of the data stored in the array.
+ /// The offset, measured in basic machine units of the first element relative to the start of the vertex buffer binding this attribute fetches from.
+ public void VertexArrayVertexAttribLFormatEXT(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset)
+ {
+ InvokeExtensionFunction(vaobj, attribindex, size, type, relativeoffset);
+ }
+
+ ///
+ /// Associate a vertex attribute and a vertex buffer binding.
+ /// Available only when When EXT_direct_state_access is present.
+ ///
+ /// The vertex array object.
+ /// The index of the attribute to associate with a vertex buffer binding.
+ /// The index of the vertex buffer binding with which to associate the generic vertex attribute.
+ public void VertexArrayVertexAttribBindingEXT(uint vaobj, uint attribindex, uint bindingindex)
+ {
+ InvokeExtensionFunction(vaobj, attribindex, bindingindex);
+ }
+
+ ///
+ /// Modify the rate at which generic vertex attributes advance.
+ /// Available only when When EXT_direct_state_access is present.
+ ///
+ /// The vertex array object.
+ /// The index of the binding whose divisor to modify.
+ /// The new value for the instance step rate to apply.
+ public void VertexArrayVertexBindingDivisorEXT(uint vaobj, uint bindingindex, uint divisor)
+ {
+ InvokeExtensionFunction(vaobj, bindingindex, divisor);
+ }
+
+ // Delegates
+ private delegate void glBindVertexBuffer(uint bindingindex, uint buffer, IntPtr offset, uint stride);
+ private delegate void glVertexAttribFormat(uint attribindex, int size, uint type, bool normalized, uint relativeoffset);
+ private delegate void glVertexAttribIFormat(uint attribindex, int size, uint type, uint relativeoffset);
+ private delegate void glVertexAttribLFormat(uint attribindex, int size, uint type, uint relativeoffset);
+ private delegate void glVertexAttribBinding(uint attribindex, uint bindingindex);
+ private delegate void glVertexBindingDivisor(uint bindingindex, uint divisor);
+ private delegate void glVertexArrayBindVertexBufferEXT(uint vaobj, uint bindingindex, uint buffer, IntPtr offset, uint stride);
+ private delegate void glVertexArrayVertexAttribFormatEXT(uint vaobj, uint attribindex, int size, uint type, bool normalized, uint relativeoffset);
+ private delegate void glVertexArrayVertexAttribIFormatEXT(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset);
+ private delegate void glVertexArrayVertexAttribLFormatEXT(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset);
+ private delegate void glVertexArrayVertexAttribBindingEXT(uint vaobj, uint attribindex, uint bindingindex);
+ private delegate void glVertexArrayVertexBindingDivisorEXT(uint vaobj, uint bindingindex, uint divisor);
+
+ // Constants
+ public const uint GL_VERTEX_ATTRIB_BINDING = 0x82D4;
+ public const uint GL_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5;
+ public const uint GL_VERTEX_BINDING_DIVISOR = 0x82D6;
+ public const uint GL_VERTEX_BINDING_OFFSET = 0x82D7;
+ public const uint GL_VERTEX_BINDING_STRIDE = 0x82D8;
+ public const uint GL_VERTEX_BINDING_BUFFER = 0x8F4F;
+ public const uint GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9;
+ public const uint GL_MAX_VERTEX_ATTRIB_BINDINGS = 0x82DA;
+
+ #endregion
}
}
diff --git a/source/SharpGL/Core/SharpGL/SharpGL.csproj b/source/SharpGL/Core/SharpGL/SharpGL.csproj
index 02576d84..183942d2 100644
--- a/source/SharpGL/Core/SharpGL/SharpGL.csproj
+++ b/source/SharpGL/Core/SharpGL/SharpGL.csproj
@@ -63,8 +63,8 @@
-
+
@@ -88,6 +88,7 @@
+
diff --git a/source/SharpGL/Samples/WPF/CelShadingSample/MainWindow.xaml.cs b/source/SharpGL/Samples/WPF/CelShadingSample/MainWindow.xaml.cs
index 5a36d300..5a4062bb 100644
--- a/source/SharpGL/Samples/WPF/CelShadingSample/MainWindow.xaml.cs
+++ b/source/SharpGL/Samples/WPF/CelShadingSample/MainWindow.xaml.cs
@@ -43,7 +43,6 @@ private void OpenGLControl_OpenGLDraw(object sender, OpenGLEventArgs args)
scene.RenderImmediateMode(gl);
break;
}
- default: break;
}
}
@@ -53,8 +52,6 @@ private void OpenGLControl_OpenGLInitialized(object sender, OpenGLEventArgs args
// Initialise the scene.
scene.Initialise(gl);
-
- gl.Enable(OpenGL.GL_DEPTH_TEST);
}
private void OpenGLControl_Resized(object sender, OpenGLEventArgs args)
@@ -62,15 +59,8 @@ private void OpenGLControl_Resized(object sender, OpenGLEventArgs args)
// Get the OpenGL instance.
var gl = args.OpenGL;
- // Create a projection matrix for the scene with the screen size.
- scene.CreateProjectionMatrix((float)ActualWidth, (float)ActualHeight);
-
- // When we do immediate mode drawing, OpenGL needs to know what our projection matrix
- // is, so set it now.
- gl.MatrixMode(OpenGL.GL_PROJECTION);
- gl.LoadIdentity();
- gl.MultMatrix(scene.ProjectionMatrix.to_array());
- gl.MatrixMode(OpenGL.GL_MODELVIEW);
+ // Create the projection matrix for the screen size.
+ scene.CreateProjectionMatrix(gl, (float)ActualWidth, (float)ActualHeight);
}
///
diff --git a/source/SharpGL/Samples/WPF/CelShadingSample/Scene.cs b/source/SharpGL/Samples/WPF/CelShadingSample/Scene.cs
index 83bd2b20..cd415f32 100644
--- a/source/SharpGL/Samples/WPF/CelShadingSample/Scene.cs
+++ b/source/SharpGL/Samples/WPF/CelShadingSample/Scene.cs
@@ -12,6 +12,10 @@ namespace CelShadingSample
///
public class Scene
{
+ ///
+ /// Initialises the Scene.
+ ///
+ /// The OpenGL instance.
public void Initialise(OpenGL gl)
{
// We're going to specify the attribute locations for the position and normal,
@@ -43,14 +47,22 @@ public void Initialise(OpenGL gl)
///
/// Creates the projection matrix for the given screen size.
///
+ /// The OpenGL instance.
/// Width of the screen.
/// Height of the screen.
- public void CreateProjectionMatrix(float screenWidth, float screenHeight)
+ public void CreateProjectionMatrix(OpenGL gl, float screenWidth, float screenHeight)
{
// Create the projection matrix for our screen size.
const float S = 0.46f;
float H = S * screenHeight / screenWidth;
projectionMatrix = glm.pfrustum(-S, S, -H, H, 1, 100);
+
+ // When we do immediate mode drawing, OpenGL needs to know what our projection matrix
+ // is, so set it now.
+ gl.MatrixMode(OpenGL.GL_PROJECTION);
+ gl.LoadIdentity();
+ gl.MultMatrix(projectionMatrix.to_array());
+ gl.MatrixMode(OpenGL.GL_MODELVIEW);
}
///
@@ -130,14 +142,6 @@ public void RenderRetainedMode(OpenGL gl, bool useToonShader)
// Unbind the shader.
shader.Unbind(gl);
}
-
- ///
- /// Gets the projection matrix.
- ///
- public mat4 ProjectionMatrix
- {
- get { return projectionMatrix; }
- }
// The shaders we use.
private ShaderProgram shaderPerPixel;
diff --git a/source/SharpGL/Samples/WPF/ObjectLoadingSample/MainWindow.xaml.cs b/source/SharpGL/Samples/WPF/ObjectLoadingSample/MainWindow.xaml.cs
index a93d3b62..2411d4bc 100644
--- a/source/SharpGL/Samples/WPF/ObjectLoadingSample/MainWindow.xaml.cs
+++ b/source/SharpGL/Samples/WPF/ObjectLoadingSample/MainWindow.xaml.cs
@@ -85,7 +85,8 @@ private void fileOpenItem_Click(object sender, RoutedEventArgs e)
// Create a file open dialog.
var fileOpenDialog = new OpenFileDialog();
fileOpenDialog.Filter = "Wavefront Files (*.obj)|*.obj|All Files (*.*)|*.*";
- if(fileOpenDialog.ShowDialog(this) == true)
+
+ if (fileOpenDialog.ShowDialog(this) == true)
{
// Get the path.
var filePath = fileOpenDialog.FileName;
diff --git a/source/SharpGL/Samples/WPF/ObjectLoadingSample/Scene.cs b/source/SharpGL/Samples/WPF/ObjectLoadingSample/Scene.cs
index a1ee3616..4603db51 100644
--- a/source/SharpGL/Samples/WPF/ObjectLoadingSample/Scene.cs
+++ b/source/SharpGL/Samples/WPF/ObjectLoadingSample/Scene.cs
@@ -129,12 +129,19 @@ public void RenderRetainedMode(OpenGL gl)
// Go through each mesh and render the vertex buffer array.
foreach(var mesh in meshes)
{
- // Set the variables for the shader program.
- shaderPerPixel.SetUniform3(gl, "DiffuseMaterial", mesh.material.Diffuse.r, mesh.material.Diffuse.g, mesh.material.Diffuse.b);
- shaderPerPixel.SetUniform3(gl, "AmbientMaterial", mesh.material.Ambient.r, mesh.material.Ambient.g, mesh.material.Ambient.b);
- shaderPerPixel.SetUniform3(gl, "SpecularMaterial", mesh.material.Specular.r, mesh.material.Specular.g, mesh.material.Specular.b);
- shaderPerPixel.SetUniform1(gl, "Shininess", mesh.material.Shininess);
-
+ // If we have a material for the mesh, we'll use it. If we don't, we'll use the default material.
+ if (mesh.material != null)
+ {
+ shaderPerPixel.SetUniform3(gl, "DiffuseMaterial", mesh.material.Diffuse.r, mesh.material.Diffuse.g, mesh.material.Diffuse.b);
+ shaderPerPixel.SetUniform3(gl, "AmbientMaterial", mesh.material.Ambient.r, mesh.material.Ambient.g, mesh.material.Ambient.b);
+ shaderPerPixel.SetUniform3(gl, "SpecularMaterial", mesh.material.Specular.r, mesh.material.Specular.g, mesh.material.Specular.b);
+ shaderPerPixel.SetUniform1(gl, "Shininess", mesh.material.Shininess);
+ }
+ else
+ {
+ int i = 0;
+ // TODO: we should really set a default material here.
+ }
var vertexBufferArray = meshVertexBufferArrays[mesh];
vertexBufferArray.Bind(gl);
@@ -226,7 +233,7 @@ private void CreateVertexBufferArray(OpenGL gl, Mesh mesh)
private void CreateTextures(OpenGL gl, IEnumerable meshes)
{
- foreach(var mesh in meshes.Where(m => m.material.TextureMapDiffuse != null))
+ foreach(var mesh in meshes.Where(m => m.material != null && m.material.TextureMapDiffuse != null))
{
// Create a new texture and bind it.
var texture = new Texture2D();
@@ -287,6 +294,8 @@ public mat4 ProjectionMatrix
get { return projectionMatrix; }
}
+ private readonly Material defaultMaterial;
+
private readonly List meshes = new List();
private readonly Dictionary meshVertexBufferArrays = new Dictionary();
private readonly Dictionary meshTextures = new Dictionary();
diff --git a/source/SharpGL/Samples/WPF/ObjectLoadingSample/SceneDenormaliser.cs b/source/SharpGL/Samples/WPF/ObjectLoadingSample/SceneDenormaliser.cs
index 32aedac7..e51e432b 100644
--- a/source/SharpGL/Samples/WPF/ObjectLoadingSample/SceneDenormaliser.cs
+++ b/source/SharpGL/Samples/WPF/ObjectLoadingSample/SceneDenormaliser.cs
@@ -49,6 +49,7 @@ public static List Denormalize(FileFormatWavefront.Model.Scene scene)
var ts = indices.Any(ind => ind.uv.HasValue == false)
? null
: indices.Select(ind => uvs[ind.uv.Value]).Select(v => new vec2(v.u, v.v)).ToArray();
+
meshes.Add(new Mesh
{
vertices = vs,
@@ -57,6 +58,7 @@ public static List Denormalize(FileFormatWavefront.Model.Scene scene)
material = facesWithSameIndexCount.First().Material,
indicesPerFace = currentIndexCount
});
+
facesWithSameIndexCount = new List();
facesWithSameIndexCount.Add(face);
currentIndexCount = face.Indices.Count;
diff --git a/source/SharpGL/Samples/WPF/SimpleShaderSample/MainWindow.xaml.cs b/source/SharpGL/Samples/WPF/SimpleShaderSample/MainWindow.xaml.cs
index d0bdac02..2d26e14b 100644
--- a/source/SharpGL/Samples/WPF/SimpleShaderSample/MainWindow.xaml.cs
+++ b/source/SharpGL/Samples/WPF/SimpleShaderSample/MainWindow.xaml.cs
@@ -58,7 +58,7 @@ private void OpenGLControl_OpenGLInitialized(object sender, OpenGLEventArgs args
gl.Enable(OpenGL.GL_DEPTH_TEST);
float[] global_ambient = new float[] { 0.5f, 0.5f, 0.5f, 1.0f };
- float[] light0pos = new float[] { 0.0f, 5.0f, 10.0f, 1.0f };
+ float[] light0pos = new float[] { 0.5f, 0.75f, 0.75f, 1.0f };
float[] light0ambient = new float[] { 0.2f, 0.2f, 0.2f, 1.0f };
float[] light0diffuse = new float[] { 0.3f, 0.3f, 0.3f, 1.0f };
float[] light0specular = new float[] { 0.8f, 0.8f, 0.8f, 1.0f };
@@ -80,19 +80,39 @@ private void OpenGLControl_OpenGLInitialized(object sender, OpenGLEventArgs args
VertexShader vertexShader = new VertexShader();
vertexShader.CreateInContext(gl);
vertexShader.SetSource(
+ "varying vec3 normal;" + Environment.NewLine +
+
"void main()" + Environment.NewLine +
"{" + Environment.NewLine +
- "gl_Position = ftransform();" + Environment.NewLine +
- "}" + Environment.NewLine);
+ "normal = gl_NormalMatrix * gl_Normal;" + Environment.NewLine +
+ "gl_Position = ftransform();" + Environment.NewLine +
+ "}" + Environment.NewLine
+ );
// Create a fragment shader.
FragmentShader fragmentShader = new FragmentShader();
fragmentShader.CreateInContext(gl);
fragmentShader.SetSource(
+ "varying vec3 normal;" + Environment.NewLine +
+
"void main()" + Environment.NewLine +
"{" + Environment.NewLine +
- "gl_FragColor = vec4(0.4,0.4,0.8,1.0);" + Environment.NewLine +
- "}" + Environment.NewLine);
+ "float intensity;" + Environment.NewLine +
+ "vec4 color;" + Environment.NewLine +
+ "vec3 n = normalize(normal);" + Environment.NewLine +
+ "intensity = dot(vec3(gl_LightSource[0].position), n);" + Environment.NewLine +
+
+ "if (intensity > 0.95)" + Environment.NewLine +
+ "color = vec4(0.5, 0.5, 1.0, 1.0);" + Environment.NewLine +
+ "else if (intensity > 0.5)" + Environment.NewLine +
+ "color = vec4(0.3, 0.3, 0.6, 1.0);" + Environment.NewLine +
+ "else if (intensity > 0.25)" + Environment.NewLine +
+ "color = vec4(0.2, 0.2, 0.4, 1.0);" + Environment.NewLine +
+ "else" + Environment.NewLine +
+ "color = vec4(0.1, 0.1, 0.2, 1.0);" + Environment.NewLine +
+ "gl_FragColor = color;" + Environment.NewLine +
+ "}" + Environment.NewLine
+ );
// Compile them both.
vertexShader.Compile();
diff --git a/source/SharpGL/Samples/WinForms/SceneSample/FormSceneSample.cs b/source/SharpGL/Samples/WinForms/SceneSample/FormSceneSample.cs
index e92b1358..d914c6ed 100644
--- a/source/SharpGL/Samples/WinForms/SceneSample/FormSceneSample.cs
+++ b/source/SharpGL/Samples/WinForms/SceneSample/FormSceneSample.cs
@@ -15,6 +15,8 @@
using SharpGL.SceneGraph.Lighting;
using SharpGL.SceneGraph.Effects;
using SharpGL.SceneGraph.Primitives;
+using SharpGL.SceneGraph.Transformations;
+using SharpGL.SceneGraph.Quadrics;
namespace SceneSample
{
@@ -31,31 +33,109 @@ public FormSceneSample()
sceneControl1.MouseMove += new MouseEventHandler(FormSceneSample_MouseMove);
sceneControl1.MouseUp += new MouseEventHandler(sceneControl1_MouseUp);
- // Add some design-time primitives.
- sceneControl1.Scene.SceneContainer.AddChild(new
- SharpGL.SceneGraph.Primitives.Grid());
- sceneControl1.Scene.SceneContainer.AddChild(new
- SharpGL.SceneGraph.Primitives.Axies());
+ // Add some design-time primitives.
+ sceneControl1.Scene.SceneContainer.AddChild(new Grid());
+ sceneControl1.Scene.SceneContainer.AddChild(new Axies());
- // Create a light.
+ // Create a light.
Light light = new Light()
{
On = true,
- Position = new Vertex(3, 10, 3),
+ Position = new Vertex(-3, 10, 3),
GLCode = OpenGL.GL_LIGHT0
};
- // Add the light.
+ // Add the light.
sceneControl1.Scene.SceneContainer.AddChild(light);
- // Create a sphere.
- Cube cube = new Cube();
- cube.AddEffect(arcBallEffect);
-
- // Add it.
- sceneControl1.Scene.SceneContainer.AddChild(cube);
+ // Create the torso.
+ Cube torso = new Cube()
+ {
+ Transformation = new LinearTransformation()
+ {
+ TranslateZ = 4.0f,
+ ScaleX = 1.0f, ScaleY = 1.25f, ScaleZ = 1.25f
+ },
+ Name = "Torso"
+ };
+
+ torso.AddEffect(arcBallEffect);
+
+ // Create the head.
+ Cube head = new Cube()
+ {
+ Transformation = new LinearTransformation()
+ {
+ TranslateZ = 1.5f,
+ ScaleX = 0.4f,
+ ScaleY = 0.4f,
+ ScaleZ = 0.4f
+ },
+ Name = "Left Arm"
+ };
+
+ // Create the arms.
+ Cube rightArm = new Cube()
+ {
+ Transformation = new LinearTransformation()
+ {
+ TranslateY = -1.3f, TranslateZ = -0.5f,
+ ScaleX = 0.2f, ScaleY = 0.2f
+ },
+ Name = "Right Arm"
+ };
+
+ Cube leftArm = new Cube()
+ {
+ Transformation = new LinearTransformation()
+ {
+ TranslateX = -1.0f, TranslateY = 1.3f, TranslateZ = -0.1f,
+ RotateY = 45.0f,
+ ScaleX = 0.2f, ScaleY = 0.2f
+ },
+ Name = "Left Leg"
+ };
+
+ // Create the legs.
+ Cube rightLeg = new Cube()
+ {
+ Transformation = new LinearTransformation()
+ {
+ TranslateY = -0.7f, TranslateZ = -1.3f,
+ ScaleX = 0.2f, ScaleY = 0.2f, ScaleZ = 2f
+ },
+ Name = "Right Leg"
+ };
+
+ Cube leftLeg = new Cube()
+ {
+ Transformation = new LinearTransformation()
+ {
+ TranslateY = 0.7f, TranslateZ = -1.3f,
+ ScaleX = 0.2f, ScaleY = 0.2f, ScaleZ = 2f
+ },
+ Name = "Left Leg"
+ };
- // Add the root element to the tree.
+ //Sphere head = new Sphere()
+ //{
+ // Transformation = new LinearTransformation()
+ // {
+ // TranslateZ = 0.5f
+ // },
+ // Name = "Head"
+ //};
+
+ torso.AddChild(head);
+ torso.AddChild(rightArm);
+ torso.AddChild(leftArm);
+ torso.AddChild(rightLeg);
+ torso.AddChild(leftLeg);
+
+ // Add torso to scene.
+ sceneControl1.Scene.SceneContainer.AddChild(torso);
+
+ // Add the root element to the scene tree view control.
AddElementToTree(sceneControl1.Scene.SceneContainer, treeView1.Nodes);
}
diff --git a/source/SharpGL/SharpGL.sln b/source/SharpGL/SharpGL.sln
index 3240ade3..3bcbc42d 100644
--- a/source/SharpGL/SharpGL.sln
+++ b/source/SharpGL/SharpGL.sln
@@ -1,6 +1,8 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.22310.1
+MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{EC6B45C3-BF0D-41E0-B3FE-D73A8265F1D3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpGL", "Core\SharpGL\SharpGL.csproj", "{5EF45533-E2C7-46F2-B4A3-B8F36CD406E0}"
@@ -18,6 +20,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{D2E990
SharedAssemblyInfo.cs = SharedAssemblyInfo.cs
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleShaderSample", "Samples\WPF\SimpleShaderSample\SimpleShaderSample.csproj", "{6DB0A8E3-0385-4B1A-BF61-44F8275909A2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SceneSample", "Samples\WinForms\SceneSample\SceneSample.csproj", "{5DDE8F09-0202-41F1-BE23-E4843CA38A07}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -88,6 +94,28 @@ Global
{47BCAA39-EDAD-4404-B6BD-4742B0ABB523}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{47BCAA39-EDAD-4404-B6BD-4742B0ABB523}.Release|x86.ActiveCfg = Release|Any CPU
{47BCAA39-EDAD-4404-B6BD-4742B0ABB523}.Release|x86.Build.0 = Release|Any CPU
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Debug|x86.ActiveCfg = Debug|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Debug|x86.Build.0 = Debug|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Release|Any CPU.ActiveCfg = Release|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Release|Mixed Platforms.Build.0 = Release|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Release|x86.ActiveCfg = Release|x86
+ {6DB0A8E3-0385-4B1A-BF61-44F8275909A2}.Release|x86.Build.0 = Release|x86
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Debug|x86.Build.0 = Debug|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Release|x86.ActiveCfg = Release|Any CPU
+ {5DDE8F09-0202-41F1-BE23-E4843CA38A07}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -100,4 +128,7 @@ Global
{47BCAA39-EDAD-4404-B6BD-4742B0ABB523} = {EC6B45C3-BF0D-41E0-B3FE-D73A8265F1D3}
{D2E99047-F511-4CE1-B07F-41412E9FF7B4} = {EC6B45C3-BF0D-41E0-B3FE-D73A8265F1D3}
EndGlobalSection
+ GlobalSection(NDepend) = preSolution
+ Project = ".\SharpGL1.ndproj"
+ EndGlobalSection
EndGlobal