Release Notes (2014-05-10)

General Information

A new version 2.6.0 of SharpDX is available today for download!

This version is a maintenance version of legacy APIs (Direct3D1, Direct2D...etc.) and contains also lots of new features and several issues fixed.

Among the list of new features and fixes in this release, It contains most notably:

  • Distribution model is now embracing nuget to ease the installation of SharpDX across all .NET platforms. We are no longer releasing an installer, as nuget provides a much smoother integration into VisualStudio and your projects, making a SharpDX package a breeze to install.
  • Samples are now released separately on a new github repository SharpDX-Samples and they are using new nuget packages, check-it out!
  • Add support for Windows Phone 8.1 Developer Preview. Note that SharpDX is only supporting Windows Phone Store 8.1 Apps and not WP81 Silverlight Apps, as the [DllImport] is only working on AppStore platform but not for Silverlight. You will still be able to develop on WP81 SL using SharpDX WP8 binaries
  • Add support for Audio in the Toolkit via the new assembly SharpDX.Toolkit.Audio - for Desktop, WinRT and WP8 (Thanks to dfkeenan for this contribution)
  • Add support for DirectManipulation and DirectComposition (Thanks to Zachary Northrup for this contribution)
  • Add support for Direct3D11.2
  • Several issues fixed, see below the detail changelog for details.

This release is integrating several patches and contribution made by the community on github. Thanks to all of them!

Best regards,
The SharpDX team

Changes and bugfixes

Please find below an auto-generated list of all changes and fixes from previous 2.5.0 version.

Build

  • Add comments about the SharpDXForcePlatform (changes)
  • Add InternalVisible for DirectComposition/DirectManipulation #320 (changes)
  • Add SharpDX Resharper shared settings (changes)
  • Added certification tests run from separate cmd file. (changes)
  • Added support for DX11.2 in WinRT apps (changes)
  • Cleanup root directory. Move build files under Build (changes)
  • Configured to use VS2013 msbuild for local rebuild to be able to build correctly Win 8.1 samples. (changes)
  • Fix again build with ftp (changes)
  • Fix build for issue #320 (changes)
  • Fix build with SharpDX.Animation assembly (changes)
  • Fix nuget packages (changes)
  • Fix nuspec for Direct3D11 by removing dependency to D3DCompiler (changes)
  • Fix public key (changes)
  • Fix publish to nightly-builds (changes)
  • Fix sn.exe path for VS2013 (changes)
  • Fixed broken configuration for WinRT (as result of renaming Win8DX11_2 to Win8). (changes)
  • Fixed build context flags for DX11.2 configuration. (changes)
  • Fixed build script according to renamed configurations, removed missing configuration from singned build. (changes)
  • Fixed copying of the Assimp64.dll for Desktop platform during building, issue #159. (changes)
  • Fixed default DX version selection for WinRT platform. (changes)
  • Git update before building (changes)
  • Include D3D11.Effects as part of all desktop builds (changes)
  • Included all sample solutions in SharpDX build definition. (changes)
  • Included nuspec file into SharpDX.Toolkit.Audio project. (changes)
  • Merging SharpDXWP8.sln into SharpDX.sln. We are now back to a single solution for building SharpDX. Hurra! (changes)
  • Modified build file and local rebuild scripts to allow rebuilding of each component separately. (changes)
  • Move files to match nuget packaging (changes)
  • Move SharpDX to next minor verison 2.5.1 (changes: 1, 2)
  • Move timestamp file creation to FtpTimestamp target (changes)
  • Remove Direct2D1 dependency for Toolkit.Graphics for WP8 for nuget (changes)
  • Remove old assemblies used by SharpDoc (changes)
  • Remove settings for prefixing _ for fields (changes)
  • Removed DirectX11.1 Desktop and WinRT configurations. (changes)
  • Removed Win8.1 samples solution from build - need first to sort out the issue with build server. (changes)
  • Renamed Win8DX11_2(Debug|Release) configurations to Win8(Debug|Release). (changes)
  • Reverted local rebuild to use VS2012 environment instead of VS2013 as this breaks WP8 platform build. (changes)
  • Rewrite part of comment about SharpDXForcePlatform (changes)
  • Rewrite sln and project settings to use $(Platform) instead of $(Configuration) (changes)
  • Separate Ftp target (changes)
  • Set SharpDXSdkDir from the directory where SharpDX.targets is stored (changes)
  • Update Readme.md (wip) (changes)
  • Update Resharper settings (changes)
  • Update TeamCity build to support VS2013 and VS2012 (only for WP8) (changes)
  • Updated MSDN documentation. (changes)
  • Use FTP instead of old google code for nightly builds (changes)
  • Work on new nuget for 2.6.0 (changes)

Core

  • Add rawvalue constructors for Half (changes)
  • Added finalizer suppression on all platforms, removed unnecessary check (pull request #192). (changes)
  • Adding Matrix3x3 class. Add Decompose Uniform scaled matrices. (changes)
  • Change and simplify RenderLoop implementation to allow custom loop. (changes)
  • Fixed new render loop to process correctly form closing and switching between render controls. (changes)
  • Make RenderLoop.Control setter and RenderLoop.NextFrame a bit more thread safe (not completely) (changes)
  • Restored ReleaseOnFinalizer functionality (pull request #192). (changes)
  • Simplify implem of MathUtil.NearEqual. Add some tests for testing precisely ULP tests (changes)

D3DCompiler

  • added d3dcompiler.h override, because in the Win 8.1 SDK the needed functions are removed from WinRT builds (changes)
  • Added ShaderProfile to the ShaderBytecode and changed EffectCompiler to use it instead of ShaderVersionReader (changes)
  • Reverted changes to D3D compiler and removed missing Win SDK functions in DX11.2 build (changes)

Direct2D

  • Added constructor to Bitmap to allow instantiation from a WIC.BitmapLock (issue #199). (changes)
  • Added mapping for 3D perspective transform effect. (changes)
  • Added mapping for OpacityMetadata effect. (changes)
  • Breaking change: renamed BitmapSourceEffect to BitmapSource to match the general schema, as all effects are already contained in Effects namespace. (changes)
  • Issue #166: Fixed retrieving D2D effect property name. (changes)
  • Reduced code duplication by refactoring CommandSinkVtbl inheritance chain. (changes)

Direct2D1

  • Documentation for SimplifiedGeometrySinkNative (changes)
  • Fix parameter name (changes)
  • Included mappings for newly added functionality in DX11.2 (issue #203). (changes)

Direct2D1/WIC

  • Fix issue #299. Add explicit methods CopyPixels that accept a byte[] buffer and a stride (changes)

Direct3D11

  • Add GraphicsDevice.SetTargets method with renderTargetCount (changes)
  • Add implem for InfoQueue.GetStorageFilter/GetRetrievalFilter (changes)
  • Add inheritance IEquatable<InputElement> to InputElement (changes)
  • Added HasSignature Property on EffectPassDescription [D3DCompiler] Added LastErrorString property on function linking graph (changes)
  • added support for checking D3D11.2 feature support (changes)
  • Breaking changes of DeviceContext.Map in case MapFlags.DoNotWait is used. Now DeviceContext.Map with MapFlags.DoNotWait will return an empty DataBox is still in used by the GPU. (changes)
  • Fix memory leak in IDrawingSurfaceBackgroundContentProvider (changes)
  • Fixed issue #136 (changes)
  • Fixed 'SetMarker' method mapping for ID3DUserDefinedAnnotation (changes)
  • Improved mappings for D3D11.2 ModuleInstance Bind* methods (changes)
  • improved mappings for DX11.2 interfaces (changes)
  • Improved shader linking classes for Direct3D 11.2 (changes)
  • improvemd DX 11.2 mappings (changes)
  • Make method CommonShaderStage.SetShader public (changes)

Direct3D9

DirectInput

DirectWrite

  • Add LocalFontFileLoader.GetFilePath and GetLastWriteTime methods. Update FontEnumeration sample to describe how to access this for system fonts (changes)
  • Added constructors for Factory1 class. (changes)
  • Fix for github issue #128 - overriden dwrite_1.h to make IDWriteFontFace1::HasKerningPairs pure virtual, to include it in SharpDX API. (changes)

Documentation

  • Removed empty paragraphs from documentation. (changes)

DXGI

  • Add Rational.ToString (changes)
  • Added proper constructors to SwapChain1 and adjusted SwapChainGraphicsPresenter to use them. (changes)
  • Change signature of FormatHelper.SizeInBytes to return an int. Add an exception in case it is == 0 (changes)
  • Fix FormatHelper.SizeInBytes regression, don't throw an exception (changes)
  • Fix issue #244. Remove partial typeless format from FormatHelper.IsTypeLess for formats: R32_Float_X8X24_Typeless/X32_Typeless_G8X24_UInt and R24_UNorm_X8_Typeless/X24_Typeless_G8_UInt (changes)
  • Fix issue #301 Remove obsolete on Adapter.GetOutput* methods (changes)
  • Fixed mapping for DX11.1 ISurfaceImageSourceNative::BeginDraw::surface parameter (aparently was renamed in DX11.2). (changes)
  • Fixed mappings for changed DX11.2 interfaces. (changes)
  • fixed Toolkit compilation on WinRT platform (changes)
  • improved mapping for DirectX 11.2 features (changes)
  • moved structure mapping to correct place (changes)
  • Remaped manually broken interfaces for DX11.2 build (changes)

External

  • Add dependency to YamlDotNet fork from https://github.com/xoofx/YamlDotNet (changes)

General

  • Added more ReSharper settings in solution. (changes)
  • Fixed ReSharper settings to place using import directives consistently across the solution. (changes)

Graphics

  • Breaking changes, move from LeftHanded to RightHanded for all samples and model import to have more compatibility with XNA samples (changes)
  • Fix #260. Force to recreate the full swapchain when going to fullscreen as It seems that DXGI is not updating correctly the refresh rate without. (changes)
  • Fix eol in RasterizerStateCollection (changes)

MediaFoundation

  • Add new dsp interfaces from Wmcodecdsp.h (changes)
  • Add SourceResolver constructor. Add CreateObjectXXX overrides methods. Add CreateObjectFromStream method. (changes)
  • constructor to create MFT from Guid (changes)
  • Fix #377 and restore SourceResolver on WP81 by using mfplat.dll instead of mf.dll (changes)
  • Fix compilation issue on WinRT (changes)
  • Fix complation issues (changes)
  • Fixed certification issue on WP 8.1 platform. (changes)
  • Fixed mapping to allow creation of objects provided by the DXVAFactory class. (changes)
  • map to the correct DLL for MFCreateSinkWriterFromURL (Mfreadwrite.dll) (changes)

Merge

Misc

  • #ifdef-ing out VideoPresenter and VideoPresenterShadow as they only exist on Desktop builds. (changes)
  • * Added CodeComments.xml to DComp and DManip * Whitespace fixes (changes)
  • * Added comments to various DirectManipulation functions * Changed some DManip factory methods to be internal, as they are already wrapped by constructors and helper functions (changes)
  • * Fixed the parsing of certain MSDN docs * Added the ability to look up MSDN doc sub-items by term name (for better parameter, enum item, and field matching) * Added doc comments * Fixed certain setter overload incorrectly being autoconverted to properties (changes)
  • * Sort interface methods into the same ordering that Visual C++ uses (overloaded functions don't get serialized in declaration order) * Added the ability to modify the method offsets from the XML mappings * Turned more properties back into methods (changes)
  • Add defines for GetProcAddress and CloseHandle (changes)
  • Add logo-web (changes)
  • Add overload for MFCopyImage_, so we can use it with Mediabuffer.Lock (changes)
  • Add Property IgnoreUnkownCharacters to SpriteFont for completely skipping glyphs which are not present in the fontmap (changes)
  • Add support for SwapChainPanel's size synchronization (changes)
  • Added [Toolkit.Audio] and desktop example. (changes)
  • Added Advanced Text renderer sample to demo how to apply effects/color on text layouts. (changes)
  • Added basic transform interface extensions for instantiating transform groups. (changes)
  • Added comment about static temporary sample buffer. Locking during the buffer copy and callback. (changes)
  • Added Controller.GetCapabilities() which matches the GetState(out) overload. (changes)
  • Added HasSignature Property on EffectPassDescription Added LastErrorString property on function linking graph (changes)
  • Added int Color constructors (changes)
  • Added largely complete but also untested wrappers for DirectComposition and DirectManipulation. * Made small change to SharpGen that allows overloaded interface methods to work properly * Moved the NativeMessage struct (wraps MSG) and made it public * Small modification to the SharpDX.Animation mappings in order to allow DComp interfaces to work properly (changes)
  • added missing structure to mapping rules (changes)
  • -Added partial class for library reflection -Added constructor to instanciate library reflection from bytecode. (changes)
  • Added Quaternion.RotationLookAt which creates a quaternion from forward and up vectors (changes)
  • Added RectangleF overload for SpriteBatch draw method (changes)
  • Added space efficent Project/Unproject Overloads (changes)
  • Adds CompositionTargetEx to avoid rendering without new RenderingTime (changes)
  • Adds Direct3DUserControl as a cusotm SwapChainPanel (changes)
  • Adds methos stub for changed composition scale (changes)
  • Adds missing CubeRenderer code commonly referenced in some samples (changes)
  • Adds sample files for Windows 8.1 (changes)
  • Adds solution for Windows 8.1 samples (changes)
  • Breaking Change: Seperated Matrix.Billboard into Matrix.BillboardLH & Matrix.BillboardRH (changes)
  • Catches FileNotFoundException in Desinger on Initialize of CubeRenderer (changes)
  • Changed ContentManager Interface to be more extendable (changes)
  • Changes 'BitmapSourceEffect' to 'BitmapSource' and 'bitmapSourceEffect' to 'bitmapSource' (changes)
  • Changes SwapChainPanelTarget to get Width and Height from panel. UpdateForSizeChange is called on panel.SizeChanged instead of Window.Current.CoreWindow.SizeChanged. (changes)
  • Clean up/fix more XML documentation. (changes)
  • Deletes projects using SwapChainPanel as a window background (changes)
  • Demonstrates some of the flexibility available with SwapChainPanel in Windows 8.1 (changes)
  • Exposes Boolean for D3D rendering in DesignMode as named DependencyProperty, to make it switchable. (changes)
  • Fix alignments (changes)
  • Fix dll import for CoCreateInstanceApp if build type is W8CORE (otherwise Imaging factory creation fails on WinRT, Windows Phone 8.1) (changes)
  • Fix Quaternion.RotationLookAt (changes)
  • Fix Simplify method (which needs only Simplified sink and not a full GeometrySink), as per: (changes)
  • Fixed another NRE while implicitly converting ShaderSignature (changes)
  • fixed issue #86 (changes)
  • Fixed merge conflict. (changes: 1, 2)
  • Fixed NullReferenceException while converting (changes)
  • Fixed SkinnedEffect matrix read back and VertexElement.BlendWeights semantic name (changes)
  • Fixed ternary operator (changes)
  • Fixes double byte character GetCharABCWidthFloat returns null (changes)
  • Forgot to invert the condition in the last commit (changes)
  • FormatMessageW to use localization library path in WinRT build (changes)
  • Geometric Primitives now support PatchLists (changes)
  • GeometricPrimitive now supports an all PrimitiveTypes (changes)
  • If count exceeds SoundStream data range, only read to data range end. Issue #312 (changes)
  • Implementation of ClockStateSink, SampleGrabberSinkCallback, SampleGrabberSinkCallback2, and VideoPresenter interfaces. (changes)
  • Initializes ShapeRenderer and CubeRenderer (temporarily removed CubeRenderer because Exception was thrown in desinger) (changes)
  • Invert condition for better readability (changes)
  • Latest MSDN docs (changes)
  • map to the correct DLL for MFCreateSinkWriterFromURL (Mfreadwrite.dll) (changes)
  • media foundation api enhancements (returns instead of out params, enums instead of ints) (changes)
  • Moves D3D initialization to Direct3DUserControl.Loaded-Event to have DependencyPropertys set (changes)
  • OnProcessSample/OnProcessSampleEx callbacks take in an IntPtr to the data buffer, rather than copying the information to a managed byte[]. (changes)
  • Prevent that internal stream Read uses negative count. Issue #312 (changes)
  • Quaternion NaN Angle Fix (changes)
  • Remove duplicate code (changes)
  • Removed unnecessary casts and added conversion in D3DCompiler-Namespace (changes)
  • Removes dirty init from App.xaml.cs and MainPage.xaml.cs, makes MainPage a normal Page and no more SwapChainPanel (changes)
  • Removes Projects not related to SwapChainPanel (changes)
  • Removes projects using SwapChainPanel as a window background (changes)
  • Removes SizeChanged event listening from Direct3DUserControl, as this is done by SwapChainPanelTarget itself. (changes)
  • Renames callback method DisplayProperties_LogicalDpiChanged to DisplayInformation_LogicalDpiChanged (changes)
  • Replaces SwapChainBackgroundPanelTarget with SwapChainPanelTarget (changes)
  • Revert "[Toolkit.Compiler] Add SkipOptimization and PreferFlowControl when compiling shaders in debug mode" (changes)
  • Revert changes on SharpDX.sln.DotSettings (changes)
  • Sets size of MainPage to 1366x768 to match default device size in Blend designer (changes)
  • SourceReader support to open from a URL (also works with local file paths) (changes)
  • Updated documentation (changes)
  • Updating mapping file that was stomped in a merge. (changes)
  • VertexBufferLayout Bug Fix (changes)
  • VoidAction Delegate is redundant with .Net Action Delegate (changes)

Multimedia

  • Removed CharSet.Ansi from WaveFormat* structures as they don't have string members (issue #190). (changes)

Samples

  • Added AdvancedTextRenderingApp sample to SharpDXSamples solution. (changes)
  • Changed references for MultiCube sample to use same .NET version. (changes)
  • Display Frametime at bottom of window. Useful for checking VSync. (changes)
  • Fix for windows 8.1 transparency bug. (changes)
  • Fix issue #248 in Direct3D9 samples. Use ColorBGRA instead of plain Color (changes)
  • Fix issue #307. Add XAML SurfaceImageSource DirectX interop sample (WIP) (changes)
  • Fix missing file (changes)
  • Fixed designer crashes for MiniCubeXaml/Win8.1 (github issue #274). (changes)
  • Fixed expired package certificates for sample projects. Adjusted Win8.1 sample manifest to match new schema. (changes)
  • Fixed issue with Direct3D10/WPFHost sample when user locks computer and logs in back (github issue #193). (changes)
  • Fixed MiniCubeXaml sample for Win8.1. (changes)
  • Fixed samples references to use DX11.2 for WinRT. (changes)
  • Fixed Win8 samples compilation after renaming BitmapSourceEffect to BitmapSource. (changes)
  • Fixed Win8 samples compilation. (changes)
  • Remove samples and move them to new repository https://github.com/sharpdx/SharpDX-Samples (changes)
  • Remove test code and restore original code for sample "XAML SurfaceImageSource..." (#307) (changes)
  • Remove unused file (changes)
  • Remove x86/ARM platform targets as Any CPU is sufficient (#307) (changes)
  • Reorder members in Windows 8.1 samples to match C++ files. Add a readme.. Sample "XAML SurfaceImageSource DirectX interop sample" is completed (changes)
  • Update Win8.1 sample to use SwapChain2 and fix scaling issues (changes)
  • Warn about WP8 samples not robust (changes)

Samples.Direct2D

  • Adjusted OfflineImageProcessingApp sample according to renaming of BitmapSourceEffect to BitmapSource. (changes)

Samples.Win81

  • Fixed sample certificate configuration. (changes)
  • Fixed sample project compilation (missing ShapeRenderer.cs) and deleted unused MiniCube project. (changes)

Samples.WinRT

  • Fixed crashing on exit by pausing rendering when window visibility changes (this affects only SurfaceImageSource targets, issue #207). (changes)
  • Retargeted WinRT 8 samples to WinRT 8.1. (changes)

SharpCli

  • Patch SharpDX pdb files during compilation to use relative path to source file instead of absolute paths in order to facilitate redistribuable pdbs (changes)
  • Remove patch for pdbs as we need to do it at deploy time for nuget (changes)
  • Safe guard if patching url relative is not working (changes)

SharpDX

  • Add custom collection debug view (changes)
  • Add DataPointer.IsEmpty (changes)
  • Add DefaultValue attribute on ComponentBase class (changes)
  • Add Equal(ref other) for vector/quaternion/matrix (changes)
  • Add helper methods on DataPointer to CopyFrom, CopyTo and convert to DataStream/DataBuffer (changes)
  • Add IsZero in vector to quickly check if its (exactly) equal to zero (changes)
  • Add MathUtil.SmoothStep and SmootherStep (changes)
  • Add Rectangle.ToString() method (changes)
  • Add Vector/Scalar component-wise addition and subtraction operators/functions (changes)
  • Added a graphics debugger implementation to capture programmatically VS Graphics Debug logs. It is available only for Desktop or WinRT/Debug platforms. (changes)
  • Added constructor overloads to ObservableDictionary and improved code formatting. (changes)
  • Added converstion operators between Rectangle and RectangleF structures. (changes)
  • Added DX11.2 support in SharpGen (changes)
  • Added 'Infinite' static readonly property to RectangleF structure to represent an infinite rectangle. (changes)
  • Added methods to create skew Matrix3x2 (changes)
  • added new solution and project configurations for DirectX 11.2 (changes)
  • Added observable dictionary and refactored ContentManager to use it as a single way to register a custom IContentReader. (changes)
  • Added Premultiply methods to Color* structs (github issue #302). (changes)
  • BREAKING CHANGES: Rectangle/F Left and Top affect rectangle size (changes)
  • BREAKING CHANGES: Remove obsolete NextDPointF and rename NextDPoint to NextPoint (changes)
  • Change Color converter from/to string to allow #RRGGBBAA colors as used in paint editors or on the web (changes)
  • Change message in ComObject.Dispose for automatic release. Remove in case of release on finalizer is enabled. (changes)
  • Change protected internal ComponentBase.name to private (changes)
  • Changed the default value of Color.Transparent to be 0x00000000 (issue #177). (changes)
  • Changed unmanaged dllimport to Unicode for NativeFile (issue #190). (changes)
  • Changed Win32 functions marshaling to use Unicode charset instead of Auto or Ansi (issue #190). (changes)
  • Changed window management native functions to marshal as Auto instead of Ansi (github issue #185). (changes)
  • Clean up Rectangle and RectangleF (changes)
  • cleaned up mappings and fixed WICRect -> Rectangle mapping (changes)
  • Fix bug so that MathUtil.NextLong can produce the specified max value (changes)
  • Fix compilation issue (changes)
  • Fix compilation issue on net20 target (changes)
  • Fix compilation issue on non desktop platform due to non availability of Browsable attribute (changes)
  • Fix issue #171. Add (Point|Size2|Size2F).Zero|Empty static property (changes)
  • Fix issue #268, invalid behavior of DataStream.ReadByte (changes)
  • Fix issue #268, invalid behavior of DataStream.ReadByte (remove remaining sbyte*) (changes)
  • Fix license date (changes)
  • Fix merge conflict. (changes)
  • Fixed Color to Color3 converstion operator - github issue #154. (changes)
  • Fixed compilation - internal ObfuscationAttribute not visible in SharpDX.XInput, SharpDX.Toolkit.Input and SharpDX.Toolkit.Yaml. (changes)
  • Fixed compilation for WinRT platform, deleted an extension that already exists in WinRT 8.1. (changes)
  • Fixed DLL name for CoCreateInstanceApp for WinRT and WP8 platforms. (changes)
  • Fixed marshalling of 'GetProcAddress' function (issue #204). (changes)
  • Fixed MathUtils.NearEquals for a corner-case (github issue #180). (changes)
  • fixed merge conflict (changes)
  • Fixed quaternion-to-axis formula (issue #328). (changes)
  • Fixed RenderLoop compilation. (changes)
  • Fixed SoundStream.Seek method (github issue #310). (changes)
  • Fixed WP8.1 build to use correct headers for code generation. (changes)
  • Improved code by using more meaningful names for variables. (changes)
  • Improved comments of conversion operators for Point structure. (changes)
  • improved DirectX 11.2 configuration to include DirectX 11.1 (changes)
  • Improved GetHashCode method for math structures (issue #202). (changes)
  • Included DX11.2 configurations in automated build (changes)
  • Make RenderForm resize working when RenderForm is hosted in a HwndHost for WPF. Remove minimum size restriction of 200,200. (changes)
  • Make RenderLoop to process all windows message instead of the main window (changes)
  • Rebuilt MSDN documentation cache (issue #357). (changes)
  • Remove direct usage of MathUtil.ZeroTolerance in favor of MathUtil.IsZero (changes)
  • Remove MathUtil.WithinEpsilon(a,b) in favor of a more accurate MathUtil.NearEqual. Replace all code performing near equal using MathUtil.ZeroTolerance with MathUtil.NearEqual. Add MathUil.IsZero/IsOne and replace all code using it. Move random functions from MathUtil to RandomUtil. (changes)
  • Remove normalization from quaternion billboard functions and always normalize input in RotationLookAt (changes)
  • Remove reference to Serializable. Delete TypeConverter for all types as they are not supported on all platforms (changes)
  • Remove stupid code and comments (Don't recall to have written such a joke code), anyway, delete (changes)
  • Removed 'Empty' static fields from Point structure as it is semantically incorrect. (changes)
  • Removed unused namespaces. (changes)
  • Removed unused struct as it represents the Ansi version, while only Unicode one is used (issue #190). (changes)
  • Removed VSGraphicsDebugger from WinRT platform as it causes issues. (changes)
  • Rename RenderLoop.UseCustomDoEvents to RenderLoop.UseLightweightWindowMessageLoop (changes)
  • Rename VectorXXX.Modulate(..) functions to VectorXXX.Multiply(..). (changes)
  • Reuse stable Matrix3x3 functions to produce quaternions. (changes)
  • Revert RotationLookAt changes from issue 217. Split RotationLookAt into Left/Right handed and add Billboard function for Quaternions (changes: 1, 2)
  • Transform Vector3 with Matrix3x3 (changes)
  • Update msdndoc.zip (changes)
  • Use MathUtil.SmoothStep for all SmoothStep methods (changes)
  • Use RenderLoop custom window message loop instead of Application.DoEvents. Handle correctly filtered message internally by using Application.FilterMessage (changes)
  • Vector divide operators & function for x=float/vector (changes)

SharpDX.MediaFoundation

  • Added Name property and initialization code for MediaAttributeKey for easier debugging (issue #356). (changes)
  • Fixed WinRT and WP8 builds by excluding unsupported classes. (changes)
  • Restored removed classes for WinRT platform. (changes)

SharpDX.WP81

  • Added support for WP8.1 platform as a separate build. (changes)
  • Fixed LoadLibrary function import to pass certification for WP81 platform. (changes)

SharpGen

  • Add diagnostic message to understand why SharpGen is re-running everyday instead of early exit (changes)
  • Allow VS2012, VS2013 to be used to compile standard DirectX June 2010 (changes)
  • Fix binary gccxml removing reference to E:\ folder inside the binary causing an exception if the folder is not present on the computer (changes)
  • Fix issue #234. Error message was not clear (changes)
  • Fix issues with gccxml for VS2013. Add define _MSC_FULL_VER=170000000 in order to avoid inclusion of nosal2 that will invalid all SAL annotations (changes)

SharpPak

  • Fix issue with recursive assembly references when merging. Use latest version of Mono.Linker to fix issue with WPF (changes)
  • Fix issue with static Module initializer by patching Mono.Linker. Update to latest version of Mono.Cecil. (changes)
  • Fix obfuscation attributes when merging assemblies (changes)

Toolit.Graphics

  • Factorize code for fullscreen triangle in PrimitiveQuad (changes)

Toolkit

  • Add IContentReaderFactory to IContentManager to allow dynamic ContentReader association based on type. Allow to load the same asset with different type (like Content.Load<Image> and Content.Load<Texture2D>). Make ContentManager more robust to null arguments. (changes)
  • Fix compilation on Win8/WP8 (changes)
  • Force the content manager to expect a ContentReaderAttribute on the type. No more seek on the original stream. (changes)
  • Simplify SharpDX.targets file (changes)

Toolkit.Audio

  • Added AudioException and added it to a few sports in the AudioManager. (changes)
  • Added missing disposal to AudioManager. (changes)
  • Added nuspec file for SharpDX.Toolkit.Audio assembly (issue #313). (changes)
  • Added required constants to complete port of function "ReverbConvertI3DL2ToNative". (changes)
  • Added SoundEffect.FromFile and example. (changes)
  • Added SoundEffectInstance.IsLooped. (changes)
  • Added ToolkitAudio MSBuild task (issue #314). (changes)
  • Changed device initialization to raise audio exception if no default audio devices exist. (changes)
  • Changed pooling so it now pools source voices per wave type when possible, falls back to pooling per SoundEffect if unable to. As yet does not restrict maximum number of allocated voices. (changes)
  • Changed SoundEffectInstance.IsLooped implementation. (changes)
  • Code cleanup, added XML documentation. (changes)
  • Fix .Net2.0 Compat issues (changes)
  • Fix build (changes)
  • Fix Win8 Build problems (changes)
  • Fixed functionality on DX11.2 platform (certain functions are changed from XAudio v2.7 to v2.8). (changes)
  • Fixed Reverb Crash. Still doesn't work, X3DAudio always calculates reverb level of zero. (changes)
  • Fixed UserFilter Flag issue. And some minor tweeking. (changes)
  • Get it to complie under WP8 (changes)
  • Improved code. (changes)
  • Major refactor for new pooling. (changes)
  • Minor Changes to pooling and disposal. (changes)
  • Minor Refactoring (changes)
  • Ported WaveBankReader form DirectX toolkit. (changes)
  • Quick code clean up. (changes)
  • Refactored audio content loading functionality to use separate content reader classes. (changes)
  • SoundEffect Instances can now be returned to the pool (changes)
  • Started adding Reverb (changes)
  • Started implenting WaveBank (changes)

Toolkit.Compiler

  • Add SkipOptimization and PreferFlowControl when compiling shaders in debug mode (changes)
  • Added functionality to build EffectData from ShaderBytecode (changes)
  • Fix issue #276. Take ceiling for advance instead of round to have better spacing (will slightly increase overall size). Fix offsets for small fonts when rendering "," (changes)

Toolkit.Content

  • Improved error reporting when an asset is not found (issue #181). (changes)
  • Made some ContentManager members protected to allow easier extensibility (issue #325). (changes)

Toolkit.Game

  • Add comments and cleaned up code for Desktop platform classes. (changes)
  • Add context switching support for WP8/DrawingSurface platform. (changes)
  • Add GameContext.UseCustomDoEvents (changes)
  • Add support for setting Window.Title with WPF rendering (changes)
  • Added generic method overloads for IServiceRegistry and its implementation GameServiceRegistry (issue #175). (changes)
  • Added missing event handler unbinding for Desktop/WPF platform. (changes)
  • Added possibility to rebind a running game to a different game context for the Desktop-WinForms platform. (changes)
  • Added support for GameContext switching for Desktop/WPF platform. (changes)
  • Added support for SwapChainPanel in DX11.2. (changes)
  • Added support for switching game context for WP8/BackgroundGrid platform. (changes)
  • Added support for switching GameContext on WinRT/XAML platform. (changes)
  • Added ToDisposeContent helper method to GameSystem. (changes)
  • Added Unload(Type,string) method to ContentManager to match the Load method overloads (issue #324). (changes)
  • Added WPF support for DX11.2 build. (changes)
  • Applied an indirect fix that allows workaround of the issue #179 and changed appropiate samples to use .NET4 instead of 4.5.1. (changes)
  • Changed default present interval from Immediate to One for GameWindowRenderer, as in main game it is One by default (issue #321). (changes)
  • Changed SwitchContext functionality to recreate only the GraphicsPresenter instead of the whole GraphicsDevice. (changes)
  • Changed the default value for Game.IsFixedTimeStep from true to false (github issue #160). (changes)
  • Fix compilation issues. Simplify GameContext class and remove typed method in order to avoid assembly references (like WPF on Desktop when not using it) (changes)
  • Fix DrawInstanced indirect overload (changes)
  • Fix issue #237. Remove redundant code (changes)
  • Fix issue #279. Mouse position was incorrect after switching to fullscreen. Remove call to PointToClient to avoid GC (changes)
  • Fix WPF issue for SharpDXElement to make it focusable (changes)
  • Fixed compilation - removed unused member. (changes)
  • Fixed github bug #235 - WPF SharpDXElement disappears when switching displays. (changes)
  • Fixed high CPU consumption when IsFixedTimestep=true (github issue #265). (changes)
  • Fixed issue #297. (changes)
  • Fixed RenderForm fullscreen behavior when changing AllowUserResizing property (issue #329). (changes)
  • Fixed resize behavior when switching game context for Desktop/WinForms platform. (changes)
  • Fixed unbinding of event handlers from previous control when switching game context in Desktop/WinForms platform. (changes)
  • Fixed WPF support for DX11.2 build (issue #371). (changes)
  • Improved FileSystemContentResolver to handle enxtensionless paths with a dot in the name. (changes)
  • Made gameTime field protected to allow access of derived classes outside of Draw and Update methods (issue #366). (changes)
  • Mouse visibility state processed correctly if it was set from Game constructor before creation of game window. (changes)
  • Use the assembly path from the Game class to probe content path (changes)

Toolkit.Games

  • Remove strict dependency to EffectCompiler assembly from Toolkit.Game on Desktop (changes)

Toolkit.Graphics

  • Add Effect.Clone() (changes)
  • Add EffectDefaultParameters.WorldInverseTransposeView parameter (changes)
  • Add event Effect.Initialized useful when using dynamic recompilation of shaders at runtime (changes)
  • Add generic constraint on CreateSharedData method (changes)
  • Add GeometricPrimitive.Plane uv factor for uv remapping (changes)
  • Add GraphicsPerformance.Enabled and GraphicsPerformance.AllowProfiling (changes)
  • Add performance marker through GraphicsDevice.Performance (changes)
  • Add RenderTarget2D implicit cast to Direct3D11.Resource (changes)
  • Add support for automatic ViewInverse in effect (changes)
  • Add support for rendering in WPF through a standard WinForm (changes)
  • Add support for Texture.GetData with DoNotWait new flag. (changes)
  • Add TextureView to wrap raw ShaderResourceView and RenderTargetView and to provide exact size of the 1st mipmap as well as texel size. Update all internals to use TextureView. (changes)
  • added a method in SpriteFont to check if a character is present in the font (changes)
  • Adds support for SwapChainPanel CompositionScale (changes)
  • Adjust swapchain size according to composition scale on SwapChainPanel control (changes)
  • Adjusted SpriteBatch.Draw methods accoding to added Rectangle-to-RectangleF conversions and reordered methods for better readability. (changes)
  • Avoid to resize the backbuffer if the size is not different (changes)
  • Breaking change remove GraphicsDevice.DrawQuad methods and add GraphicsDevice.Quad property instead (changes)
  • Change API for selecting a Texture.TextureView by passing the ViewFormat. Internally we are now using a dictionary to store TextureView (changes)
  • Exposed IndexBuffer & VertexBuffer in Geometric Primitives (changes)
  • Fix calculation for mipmap counts (changes)
  • Fix compilation issue (changes)
  • Fix compilation issues on net20 platform (changes)
  • Fix compilation issues on net20 platform (bis) (changes)
  • Fix compilation on DX11.2 for issue #290 (changes)
  • Fix EffectParameter value arrays where value is not a multiple of sizeof(float4) (changes)
  • Fix issue #140. Matrix with size different from float4x4 (like 4x3, 3x4...etc.) are now correctly set into the constant buffer. (changes)
  • Fix issue #161 with default values in constant buffers causing an AccessViolationException (changes)
  • Fix issue #184 with SpriteFont.MeasureText. This should now compute the correct width including whitespaces (changes)
  • Fix issue #236 with SpriteFont layout (changes)
  • Fix issue #246. Static initializer is removed in GraphicsAdapter (changes)
  • Fix issue #266. Switch to DirectWrite for tkfont and fix issue with offsets/measure when rendering. (changes)
  • Fix issue #276. Add AntiAlias mode to FontDescription. Handle gamma correction. (changes)
  • Fix issue #276. Fix spacing, fix several issues in original DirectXTk implementation. Add SpriteFontApp sample (changes)
  • Fix issue #276. Improve spacing, apply Ceiling on the final value instead of the original advance value (changes)
  • Fix issue #276. Improve tkfont error handling. Disable anti-aliasing when font size is <= 13 to mimic System.Drawing text anti-aliasing behavior (changes)
  • Fix issue #276. Revert to Round only for final offset (changes)
  • Fix issue #359. Release Resource COM object when finished with custom ShaderResourceView (changes)
  • Fix issue for WPF, allowing to use Depth as ShaderResource when creating backbuffer (changes)
  • Fix last commit (changes)
  • Fix regression on backbuffer resizing when using Window.AllowUserResizing = true (changes)
  • Fix SamplerState code to apply anisotropy fix on level_9_1 for for custom sampler state (changes)
  • Fixed compilation after adding additional contructor in Color that accepts ints. (changes)
  • Fixed DepthStencilBuffer creation to support texture arrays (issue #210). (changes)
  • Fixed effect parameters setting for arrays (issue #332). (changes)
  • Fixed GraphicsDevice disposing attached EffectPools. (changes)
  • Fixed issue #167: add flag to allow SpriteFont to dispose unmanaged resources from SpriteFontData. (changes)
  • Fixed memory leak in GeometricPrimitive, issue #158. (changes)
  • Fixed null-ref in implicit cast for TextureView, issue #162. (changes)
  • implemented syncronization for WPF platform to avoid flickering under heavy load (changes)
  • Improvement for issue #266. Make sure all glyphs will snap to the nearest pixel when rendering by rounding advance and line spacing to nearest. Add cleartype rendering (experimental). (changes)
  • Remove assert on DDSHelper when creating an image (changes)
  • Remove EffectPool from GraphicsDevice's list on dispose, fix for issue #165. (changes)
  • Rename MaterialKeysBase to MaterialKeys, and MaterialKeys to TextureKeys. Make them static class. (changes)
  • Restore access to GraphicsResource.GraphicsDevice (changes)
  • Try to fix issue #290. Breaking change, as the FindBestDevices no longer retrieve the list of all available modes. For fullscreen, rely on DXGIOutput.FindClosestMatchingMode instead. (changes)
  • Update SpriteFontApp sample and add ClearType/Scaling sample (changes)
  • VertexBufferLayout from type ignored instance count (changes)

Toolkit.Input

  • Breaking changes of KeyboardState. Now contains one states for Down keys and two events Pressed/Released since last frame. (changes)
  • Change behavior of buttons handling for MouseManager using new ButtonState. Refactor code using ButtonState. (changes)
  • Fix issue on WinRT for released moust buttons (changes)
  • Fixed KeyboardInput for WinRT to work with overlaid XAML IInputElement. For example, the input event wasn't propagated to a focused TextBox. (changes)
  • Improved code comments and reordered members in MouseManager class. (changes)

Toolkit.Samples

  • Added a sample showing switching of context for WinRT/XAML platform. (changes)
  • Added audio sample back to solution (removed accidentally after merge). (changes)
  • Added Audio sample for WinRT platform. (changes)
  • Added Audio sample for WP8 platform, changed AudioGame to use Pointer input instead of Mouse to have same sample code on all platforms. (changes)
  • Added foreground swapchain sample for DX11.2. (changes)
  • Added MiniCube sampel for Win 8.1 SwapChainPanel control. Implemented as separate solution to not break building of other samples on older OS. (changes)
  • Added ShaderLinking sample to demonstrate DX11.2 shader linking functionality. (changes)
  • Added TiledResources sample for DirectX 11.2 (changes)
  • Added WP81 MiniCube sample. (changes)
  • Fix compilation issue on WinRT for MouseInput (changes)
  • Fix compilation issues on desktop (changes)
  • Fixed mouse controls in Audio sample. (changes)
  • Fixed StreamOutParticles sample after changes in pull request #200. (changes)
  • Fixed TiledResources sample after KeyboardState refactoring. (changes)
  • Improved audio sample to demonstrate how to pause, resume and stop sound effects. (changes)
  • Moved Audio sample content and code to a common folder to reuse it for different platform samples. (changes)
  • Removed usage of SharpDXSdkDir environment variable from samples as it breaks continuous integration for WinRT (changes)
  • Retargeted WinRT 8 samples to WinRT 8.1 according to the new WinRT 8.1 support. (changes)
  • Updated temporary certificate for all WinRT samples. (changes)

Toolkit.Yaml

  • Add new SharpDX.Toolkit.Yaml project that allows to load Yaml files directly into .NET object using the ContentManager. (changes)
  • Add support for loading other assets directly from a YAML file (Commit merged from dfkeenan) (changes)
  • Add support for serialization of some default types (Color, Vector4...etc.) in compact YAML form (aka flow). Update to SharpYaml 1.1 (changes)
  • Fix reference to SharpYaml (changes)
  • Switch to SharpYaml from nuget (changes)
  • Update to SharpYaml 1.2 (changes)

Tools.CompilerTask

  • Add TkItem.ParentTaskItem, not yet used but will be used when working on per-option files (changes)

VisualStudio

  • Fix bug in previous commit for #311 (changes)
  • Fix issue #311. Check SharpDXSdkDir environment variable for both user and machine. (changes)
  • Fix LeftHanded to RightHanded (changes)
  • Update SharpDX Toolkit for VisualStudio to support VS2013 (changes)

WIC

  • Fixed creation of a WIC Bitmap from a System.Drawing.Bitmap without a palette (issue #342). (changes)
  • Improved mapping for DdsFrameDecode class. (changes)

XACT3

Hi All!

We have seen recently lots of exciting news coming from for C#, .NET and DirectX. SharpDX is going to try to keep up with all of this and this post is explaining what's on the roadmap.

First of all, as you probably know, there are three major fix/new features for .NET and DirectX that will have most likely an impact for SharpDX:

Until now, we had to use a laborious bridge between .NET and native code in order to get access to DirectX on WP8. With Windows Phone 8.1, we should be able to provide pure AnyCPU assemblies for WP8.1. That will simplify a lot our build system as we had to keep a separate special build for WP8 in order to build SharpDX in x86 and ARM. We are just going to start to work on WP8.1 SharpDX migration.

This was a high request from us, and it is great to see it coming. While the SIMD feature is still in a very alpha stage, only available on an alpha JIT and Windows 8, we will keep an eye on this and as soon as we have a broader set of platforms supported we will try to move to it. Current maths code in SharpDX is not deeply spread all other the code but we will have to study how to integrate SIMD in SharpDX, or to simplify its integration and avoid redundancy with part of our math library.

  • DirectX12

We are still in negotiation with Microsoft to get an early access to start development of a managed wrapper for DX12 that could be available for day-one official release of DirectX12 for developers supposedly later this year.

We have also lots of things done/planned for the upcoming SharpDX 2.6 release:
  • Embrace nuget to deploy SharpDX to all platforms/framework: This is not easy, as SharpDX is coming into different form, depending on several OS platforms (Desktop+DirectX11, Desktop+DirectX11.2, WinRT+DirectX11.2, WP8+DirectX11) * several .NET platforms (2.0/4.0)
  • Audio support in the Toolkit thanks to the contribution of developers on our github repository.
  • Loads of bugfixes, small and new features accessible from latest version (DirectX11.2...etc.)
Also, in order to simplify our build and the maintenance burden, we are planning to abandon support for 2.0/3.5 .NET framework.We don't know yet if it will be effective for 2.6 or later, but if you have any issue with this, please tell us.

All of this is keeping us busy, considering that we have also several other spare time projects to develop, but we will try to keep you updated with SharpDX!

Best regards,
xoofx
Current latest dev package of SharpDX 2.5.1 is integrating the work done by Artiom to provide DirectX11.2 in SharpDX.

You will find also in the Toolkit two samples using some of the features of this new API:
  • ShaderLinking sample explores usage of Shader Linking capabilities to allow combination of small functions/shaders at runtime
  • TiledResources is a direct port of http://tiledresources.codeplex.com/ using Direct3D Tiled Resources
The code was compiled against latest VS2013 RC and Windows8.1 SDK.

Regards,
The SharpDX Team
Hi All,

We have recently closed the SharpDX forum after a bit more than one year of maintenance and support for it. I would like to explain here in more details the reason of this change.

First of all, the forum has received close to 1000 members, with in fact half active users (480 with at least a single post), with a total of 900 topics and 4100 posts. Let's just look at the big cake of posts:

SharpDXForumUsersPosts



As you can see, the spread of the number of posts per users, and repartition is quite exponential. From the top, xoofx and Artiom have been mainly answering questions to other users. For the users in the top 20, they were both askers/answerers though most of the time it was more for asking than answering.

Most of the posters are coming for one to a couple of questions, sometimes it is the same issue we have been responding many times.

The whole forum can be quite considered as a big FAQ. There are plenty of issues spotted, plenty of issues resolved, it is a goldmine for whoever is looking for some help. That's great. But unfortunately, for the two main maintainer - xoofx and Artiom - of this forum, It is way too much work considering that we have: a daytime job, a family (with kids), a life, some coding projects outside SharpDX, bug fixes for SharpDX, preparations for next releases of SharpDX, developement of new/requested features... etc. and of course, the forum to maintain. With only 1 hour to a few hours per day of spare time, we cannot afford to spent an hour on the forum and sometimes, believe us, It can take some time to track down what is presented by someone as a bug but is in fact a wrong usage of the DirectX API.

Since my last post in June where I explained that I would no longer help on the forum/bugfixes, Artiom has been trying to do this job as much as he can, but of course, as It was for my case, this cannot be done by a single person, and at some point, we are completely exhausted (and bored, let's tell the truth), to answer to questions that could have been solved most of the time if the person reporting the issue would have spent more time on google, on msdn documentation and/or digging into the problem more carefully.

Last week, Artiom was not available to help on the forum, and after few days of questions stacking up, I have decided that It was no longer possible for us to maintain it. We would love to work on SharpDX fulltime, being paid to provide better documentation, helping on the forum and building some nice demos showcase with it. But well, this is not the case and we have to deal with it.

I don't know how much they were behind the development and support of XNA, but they were definitely not two people maintaining and building the whole stuff behind the scene!

So we apologize for the inconvenience, but we really need to enjoy also our spare time as you surely try to do in your life. We have spent - and are still spending, a large amount of our spare time to provide a free, open source and viable solution for DirectX for .NET, but as I have said previously, SharpDX is just a backend project. It is used to build higher level framework/engine (like MonoGame, like DeltaEngine, like Paradox...etc.), used by some serious group/company to develop game/demo/tools/multimedia applications, used also by hundreds of wannabe just trying to jump into the DirectX galaxy. 

Just look at Calcifer demo by Still (pouet link), recently released at Evoke 2013 demo party, hey, they are using SharpDX! But SharpDX is a very small contribution in this whole great production, it is mainly their talents and hard work. And these guys have not requested a single help on the forum or by email, they know how to program Direct3D11 and do great things with this API.


Calcifer Demo by Still (using SharpDX)

Yes, SharpDX is mainly a low level API, it is almost a plain DirectX for C#, nothing more, and if you want to master it, prepare yourself for some hard work, not just a little XNA sample grabbed on internet that you can download and press compile/run easily.

But hey, SharpDX forum closed doesn't imply that you won't find any help on Internet!

If you have a question regarding:
  • The usage of the DirectX API, you can try to post your question on gamedev.net DiretX and XNA. You can also find some help on gamedev.stackexchange.com.
  • For anything specific to the SharpDX Toolkit, you will find little help on these forums. The Toolkit is a bonus in SharpDX, a little high level framework on top of Direct3D11 to help prototyping things much easily than using straight Direct3D11. It is open source, so you can dig into the source code yourself. The code is globally well commented and there are lots of samples already available. But if you are really still struggling with the Toolkit, try to use MonoGame instead. It is XNA compatible and has a bigger community. The Toolkit is mainly for people that want to access the full Direct3D11 API on all platforms with lots of helpers. It is not suitable for beginners as It still requires you to understand how things are working under the hood.
  • For any bug regarding SharpDX, please use github SharpDX issue. Keep in mind that there are some level of priority between the API/Platforms:
    • Direct3D11/DXGI/D3DCompiler on Desktop/WinRT/WP8 have the highest priority. The main reason behind this choice is that we are using SharpDX at my work, mainly these APIs, so any bugs in theses API are critical for my work as well.
    • All other APIs have a lower priority.
    • The Toolkit is a special case. It is not part of DirectX but can be considered as a bonus API. We are maintaining it because we are using it for our spare time projects, but if we don't, It won't get much attention. The Toolkit (and SharpDX as a whole in fact), is in the hand of their users.

I really hope that this post has clarify some of the obscure reason of the sudden forum shutdown. We are still committed to bug fixes and new features (Artiom has been working hard to provide DirectX11.2 for next release!) but we would like also to enjoy our spare time!

Thank you for your understanding,
Best Regards,
xoofx

Release Notes (2013-08-10)

General Information

A new version 2.5.0 of SharpDX is available today for download.

This version is a maintenance version of legacy APIs (Direct3D1, Direct2D...etc.) and contains also lots of improvements for the SharpDX Toolkit with new features and several issues fixed.

Among the list of new features and fixes in this release for the Toolkit, It contains most notably:

  • An installer to ease the installation of SharpDX.
  • A Visual Studio package that you can download from the extension manager that provides an advanced project template Wizard for the Toolkit. You can see the SharpDX Toolkit for VisualStudio on the Visual Studio Gallery.
  • Add support for Input via the new assembly SharpDX.Toolkit.Input supporting Mouse, Keyboard and Pointer APIs - for Desktop, WinRT and WP8.
  • Add support for integration of WPF in the Toolkit.
  • Add support for 3D Model loading.
  • Add support for Primitive 3D.
  • Add support for DrawingSurface on WP8.
  • Add support for dynamic re-compilation of effects at runtime when sourcecode changed without having to recompile an application (Check Toolkit CustomEffect sample).
  • Add support for more events for better notification in GraphicsDevice state changes.
  • Add support for multiple-window/control on Desktop with the Toolkit (see MultiWindow Sample).
  • Several issues fixed in the Toolkit preventing correct usage of custom effects.
  • An improved SharpDX.Toolkit.Compiler/tkfxc supporting input file dependency to track changes and compile an effect only if all dependent files - including indirect "includes" - changed. This improves drastically the performance when compiling.
  • A new Toolkit.CompilerTask and a msbuild extension "SharpDX.targets" (used in Toolkit samples), that provides FX file compiling and automatic references of SharpDX assemblies depending on the project settings.
  • Various fixes, performance improvements, etc.

There are also some breaking changes since 2.4.2:

  • Viewport/ViewportF is now part of SharpDX core instead of having different structure for each D3D APIs
  • DrawingRectangle/DrawingRectangleF is removed, as they were confusing. New Rectangle and RectangleF is used for all D3D APIs. The old Rectangle constructor was changed from (left, top, right, bottom) to (x, y, width, height).
  • Support for Dispose on finalizers for ComObject is removed, as they are not supported by all platforms and can lead to unpredictable results.

For building easily SharpDX, there is also a new batch file MakeSharpDX_localbuild.cmd. This will rebuild all SharpDX platforms at once. Any build errors will be written in console and in the BuildErrors.log file.

This release is integrating several patches made by the community on github. Thanks to all of them!

Best regards,
The SharpDX team

Changes and bugfixes

Please find below an auto-generated list of all changes and fixes from previous 2.4.2 version.

Animation

  • Spell check (changes: 1, 2)

Build

  • Make sure that we perform a pull rebase just before pushing back master_integration (changes)
  • Remove work-tree (changes)
  • Fix SharpDX.targets (changes: 1, 2)
  • Add auto commit to master from master_integration when build is fine for all platforms. Used from TeamCity server. (changes)
  • Add FtpUpload to FullBuild (changes)
  • Add Net35Plus defines to build project to allow usage of 3.5+ language features (extension methods...etc.) (changes)
  • Add Zip and FTP for nightly builds (changes)
  • Added batch file to rebuild all platforms at once (changes: 1, 2)
  • Added nuspec file (changes)
  • Added switch to SharpDX.targets to allow selecting DX version - 11 or 11.1 (changes)
  • Change build output from local directory to $(SolutionDir)\Bin\XXX. Nant file is not yet updated so MakeSharpDX.com is temporarily not working. (changes)
  • Change directories for distribution in Bin. Now prefixed by DirectX11 (for DirectX Runtime June 2010) and DirectX11_1 (for Windows 8 Runtime) (changes)
  • Cleanup SharpDX.sln and fix compilation errors for Toolkit.Input for all release targets (changes)
  • Fix assembly signing (changes)
  • Fix automated build (changes)
  • Fix build for Windows 8 (changes)
  • Fix build on Windows RT (changes)
  • Fix compilation errors for WP8 (changes)
  • Fix compilation on W8/WP8 (changes)
  • Fix compilation under Win8 (changes)
  • Fix documentation config for wp8 (changes)
  • Fix error in build (changes)
  • Fix git command (changes)
  • Fix issue for Zip and clean samples, nightly builds (changes)
  • Fix nant release build to use SharpDX.build for building the package for release (changes)
  • Fix nuget packaging (changes)
  • Fix packaging issue (changes)
  • Fix path for generated XML documentation (changes)
  • Fix release notes for 2.5.0 (changes)
  • Fix samples reference to SharpDX assemblies when packaging with installer (changes)
  • Fix various build issues (WP8, documentation) (changes: 1, 2)
  • Make ZIP file configurable (changes)
  • Modified SharpDX.build script to accomodate local rebuild with one command (changes: 1, 2)
  • Remove AppPackages directory from final build (changes)
  • Remove copy local as all projects are now outputing to the same folder (changes)
  • Remove Samples from SharpDX solution to speedup and simplify build (changes)
  • Remove SharpCore from SharpDXWP8.sln (changes)
  • Remove SharpDoc, moved to an external github projects https://github.com/xoofx/SharpDoc . Cleanup tools, remove SharpCore/SharpDoc/SharpDocPak and integrate remaining files into SharpGen. Move specific SharpDoc styles for SharpDX into Documentation. (changes)
  • Remove temporary Win8 Samples from main solution (changes)
  • Remove tkfont from Win8 build (changes)
  • Removed whitespace which didn't allow DX11.1 selection on Desktop platform (changes)
  • Start to migrate from Nant to msbuild for building/packaging (changes)
  • Start to switch to new build system on CLI (changes)
  • Try fixing error by adding git --work-tree to be able to run it from TeamCity (changes)
  • Use http://code.google.com/p/sharpdx-nightly-builds/ instead of ftp to store latest builds (changes)
  • Use merge instead of rebase from master to master_integration (changes)

D3DCompiler

  • Remove ShaderBytecode.Compile internal SharpDXException when disabling Configuration.ThrowOnShaderCompileError (changes)
  • Spell check (changes: 1, 2)

Direct2D1

  • Add PrintControl.AddPage methods (changes)
  • Fix issue #339. Matrix5x4 was not correctly handled for Effect properties (changes)
  • Fix issue #392. Dispose BitmapFrameEncode.Options to avoid a memory leak (changes)
  • FIX: The ColorContexts property of the BitmapDecoder and BitmapFrameDecode never worked; WIC requires the color contexts objects to be created before calling the method (very odd indeed). Marked this property as obsolete. Replaced it by a TryGetColorContexts method. This method doesn't throw an exception when requesting the color contexts of a bitmap that does not support color contexts; instead it returns null. (changes)
  • Replaced DataStream usages by DataPointer where appropiate (github issue #90) (changes)
  • Spell check (changes: 1, 2)

Direct3D

  • Replace all Viewport with new global SharpDX.Viewport. SharpDX.Direct3D11.Viewport with SharpDX.ViewportF. Add cast method from SharpDX.Viewport to ViewportF (changes)

Direct3D10

  • Spell check (changes: 1, 2)

Direct3D11

  • Add better handling of caching DeviceChild.Device (changes)
  • Add Device.IsSupportedFeatureLevel, remove CheckError on D3D11.CreateDevice in this case to avoid SharpDXException being catched (changes)
  • Add missing file (changes: 1, 2)
  • Add uint for scalar shader variables. This also fixes a dangerous bug were the uint would be implicitly converted to int and if the most significant bit was 1 then the final value would be very wrong. (changes)
  • Breaking change signature for RasterizerState.SetViewports, remove the last "s". Fix GraphicsDevice.Clear issue when changing render targets. (changes)
  • DrawingSurfaceContentProvider SynchronizedTexture as IntPtr (changes)
  • Fix DrawingSurface support for WP8. MiniCube.DrawingSurface sample is working (changes)
  • Fix interface errors for WP8 IDrawingSurfaceContentProvider (changes)
  • Fix issue #336. Remove some BlendState, DepthStencilState, RasterizerState constructors to avoid redundancy and conflicts in VB6 (changes)
  • Fix issue #390. Remove ImageLoadInformation from WinRT/WP8 builds (changes)
  • Fix issue #430. Add D3D11_SO_.* constants to GeometryShader (changes)
  • FIX: The ColorContexts property of the BitmapDecoder and BitmapFrameDecode never worked; WIC requires the color contexts objects to be created before calling the method (very odd indeed). Marked this property as obsolete. Replaced it by a TryGetColorContexts method. This method doesn't throw an exception when requesting the color contexts of a bitmap that does not support color contexts; instead it returns null. (changes)
  • Remove using of "ref" in constructors to support VB (changes)
  • Restore DeviceDebug/InfoQueue for WP8, now accessible on all platforms (changes)
  • Spell check (changes: 1, 2)
  • WP8 IDrawingSurfaceContentProvider (changes)

Direct3D9

  • Added missing else branches to various FromStream methods. (changes)
  • Fix issue #349. DeviceEx constructor should accept null DisplayModeEx parameter. (changes: 1, 2)
  • Fix issue #372. Resource.Device no longer generates allocation (changes)
  • Fix issue #373. Add IndexBuffer.LockToPointer and VertexBuffer.LockToPointer methods (changes)
  • Spell check (changes: 1, 2)

DirectInput

  • Fix issue #352. Rename UpArrow to Up and remove invalid mappings. (changes: 1, 2)
  • Fix issue #377. Avoid boxing of structs while unmarshalling KeyboardState (changes)
  • Spell check (changes: 1, 2)

DirectSound

  • Add DirectSound.DuplicateSoundBuffer. Add Volume.Minimum/Maximum (changes)
  • Spell check (changes: 1, 2)

DirectWrite

  • FIX: Fixed memory leak in TextRendererShadow class (changes: 1, 2)
  • Replace DirectWrite.Matrix by SharpDX.Matrix3x2 (changes)

Documentation

  • Add SharpDX.Toolkit.Input to doc generation (changes)

DXGI

  • Add Output1.GetDisplayModeList1 method (changes)
  • Fix compilation error for DirectX11.0 (changes)
  • Fix issue #103. KeyedSync.Acquire return Result. Add Result.WaitAbandoned and Result.WaitTimout. Add ResultDescriptor for common errors. Improve SharpGen to support return and check of HRESULT at the same time. (changes)
  • Spell check (changes: 1, 2)

External

  • Fix issue #431. Get latest assimp and recompile it with V100 platform instead of V110 (changes)
  • Update to nant 0.9.2 (changes)

General

MediaFoundation

  • Add MediaServiceKeys and add SericeProvider.GetService<T> method (changes)
  • Add MediaSessionCallback to provide a default callback to handle MediaSession events (changes)
  • Bug fix in Transform.ProcessOutput return value (changes)
  • Clear AsyncResult.NativePointer once used by the callback in order to avoir false-positive log in ObjectTracker (changes)
  • Fix compilation error with AsyncCallback (changes)
  • Fix compilation errors on Windows RT (changes)
  • Fix compilation for WP8 (changes)
  • Fix compilation on Windows App and Phone 8 (changes)
  • Fix compilation with ServiceProvider (changes)
  • Fix invalid implem of MediaEventGenerator.GetEvent isBlocking (changes)
  • Fix issue #269. MediaEngine.PlaybackEvent should be fired. Add MediaEngineApp sample on Dekstop. (changes)
  • Fix issue #367. Dispose correctly all SourceReader (changes)
  • Fix issue #38. Implemented AsyncCallback for MediaEventGenerator. (changes)
  • Fix issue with AsyncCallback in order for MediaSession to work with it (changes)
  • Fix issue with MediaEngine.Source that was passing an invalid filename to the native layer (changes)
  • Fix MediaManager.Shutdown to use isStartup internal state (changes)
  • Make DXGIDeviceManager available on Windows 8 Desktop (changes)
  • Make MediaEngine available on Windows 8 Desktop (changes)
  • Map missing enums and guids, remap some interface to allow audio encoding and decoding using IMFTransform. (changes)
  • Rename MediaFactory.TEnumEx to FindTransform. Add ResultCode with all MF_E_ result code error. Fix Transform methods by returning boolean (changes)
  • Spell check (changes: 1, 2)
  • Start to work on AsyncCallback (changes)

RawInput

  • Fix regression by using by default Application.AddMessageFilter (changes)
  • Fix regression when there is no windows having the focus in an application (changes)
  • Use of SharpDX.Win32.MessageFilterHook instead of Application.AddMessageFilter (changes)

Release

  • Last fixes for 2.4.2. Remove unused documentation links. (changes)

Samples

  • Add Direct3D11.1 ScreenCapture sample using DXGI OutputDuplication (changes)
  • Add ID3D10Multithread.SetMultithreadProtected(true); in MediaPlayer to avoid instability (changes)
  • Add ModelRendering sample on WP8 and WinRT (changes)
  • Add Toolkit WP8 DrawingSurface sample (changes)
  • Added Direct2D1 offline image processing sample. (changes)
  • added sample for Desktop mouse input (changes)
  • change ref's to out (changes)
  • Fix compilation (changes)
  • Fix compilation with Matrix3x2 (changes)
  • Fix issue #342. WP8 MiniCube SharpDXBase should use new SharpDX.ViewportF (changes)
  • Fix issue #360 (changes: 1, 2)
  • Fix Toolkit samples to use SharpDX.targets (changes)
  • Fix Win8 samples (changes)
  • Fix Win8 samples using new SharpDX.ViewportF (changes)
  • Fix WP8 sample using SharpDX.targets (changes)
  • Fixed CustomLayout sample (changes)
  • fixed memory leak (changes)
  • Fixed resume issue on windows phone, see https://code.google.com/p/sharpdx/issues/detail?id=414&colspec=ID%20Type%20Status%20Priority%20Component%20Owner%20Summary%20Opened%20Modified for details... (changes)
  • Hide SystemTray on all WP8 toolkit samples (changes)
  • Remove all old sample.csproj (changes)
  • Remove unused compiled file (changes)
  • Update CustomEffect with latest changes from tkfxc/Effect compiler. (changes)

SharpDoc

  • Add nested types. Not entirely well supported (changes)
  • Fix invalid XHTML tags (changes)
  • Fix issue with MSHC. URL in css are not working. Ask for a workaround on MSFT forum (changes)
  • Fix remaining issue with MSHC documentation generation (changes)
  • Start to add support for MSHC documentation (changes)

SharpDX

  • * math tweaks (changes)
  • @ math fixes (changes)
  • Add a comment in MathUtil.Wrap tests for floats to point out that precision cannot be guaranteed and safely tested (changes)
  • Add clamp method for integers. (changes)
  • Add Color.ToColor4 method (changes)
  • Add Color3.Black and Color3.White (changes)
  • Add Color4.Black and Color4.White (changes)
  • Add comments (changes)
  • Add constructors for Color4 - fix issue 328 (changes)
  • Add Contains methods to DrawingRectangle. (changes)
  • Add Contains methods to DrawingRectangleF. (changes)
  • Add Contains methods to Rectangle. (changes)
  • Add Contains methods to RectangleF. (changes)
  • Add ID3D10Multithread interface to SharpDX.Direct3D.DeviceMultithread that will be shared between Direct3D10 and Direct3D11. This is needed when using MediaEngine Video/Texture interop. (changes)
  • Add implementation for Matrix.Skew (changes)
  • Add Lerp() and SmoothStep() to Matrix3x2 (changes)
  • Add Lerp() and SmoothStep() to Matrix3x2 (cherry picked from commit ad96d3f4c5d383ec617b4fc10fc6fb2d45603566) (changes)
  • Add license to OrientedBoudingBox (changes)
  • Add Matrix vectors. (changes)
  • Add Matrix3x2.Rotation() about a center point (changes)
  • Add Matrix3x2.Transformation() (changes: 1, 2)
  • Add properties for Rectangle/F size and corner positions (changes)
  • Add Resource.FromMemory overloads to load textures from unmanaged memory (changes)
  • Add SharpDX.Win32.MessageFilterHook that provides IMessageFilter hook for a particular window HWND handle (changes)
  • Add Thread name to TaskUtil.Start (changes)
  • Add Up, Down, Left, Right, ForwardRH, ForwardLH, BackwardRH and BackwardLH to Vector3 (changes)
  • Added comments. (changes)
  • Added GetPickRay method. (changes)
  • Added MathUtil.Lerp (changes: 1, 2)
  • Added missing commentary to Bool4. (changes)
  • Added new methods for random to MathUtil. (changes)
  • BREAKING CHANGES: Remove of DrawingPoint/F, DrawingRectangle/F. Rename of DrawingSize/F to Size2/F, and DrawingPoint to Point. DrawingPointF is now Vector2. Constructor of Rectangle/F are taking (X, Y, WIDTH, HEIGHT) instead of (left, top, right, bottom). Add several missing helper methods in Rectangle/F (Intersects, Union) (changes)
  • Change GetRandomXXX to NextXXX to match Random class naming. (changes)
  • changed MathUtil.Wrap to throw exception if min argument is greater than max to avoid confusion as the correct behavior is not defined (changes)
  • Clean up comments in Matrix3x2 (changes: 1, 2)
  • Clean up MathUtil (changes)
  • cleaned up ToString overloads for Color, Color4 and ColorBGRA structures (changes)
  • comment fixes. (changes: 1, 2, 3)
  • Comment fixes. (changes)
  • Deactivate code Ray.GetPickRay as it is using a non accessible struct (changes)
  • Don't call RenderForm.OnUserResized event when cachedSize is empty (changes)
  • Enclose MathUtil extension methods by #if NET35Plus (changes)
  • Fix a Color3.cs ToString formatting indexes. (changes)
  • Fix behavior of MathUtil.Wrap methods for int and floats (changes)
  • Fix bug inside Wrap - change to overload. (changes)
  • Fix ColorBGRA.SmoothStep() (changes)
  • Fix ColorBGRA.SmoothStep() (cherry picked from commit 05f4280a61c01101678f83267501fd3c6f4ab596) (changes)
  • Fix comment for Matrix3x2.TranslationVector (changes: 1, 2)
  • Fix comments (changes: 1, 2, 3)
  • Fix compilation error (changes)
  • Fix compilation issues for Net20 target (changes)
  • Fix issue #334. Add Matrix3x2.Invert method. (changes: 1, 2)
  • Fix issue #357. Fix comments for X/Y/Width/Height (changes: 1, 2)
  • Fix issue #380. Add ObjectTracker Tracked/UnTracked events. (changes: 1, 2)
  • Fix issue #382. DrawingRectangleF.Contains was not testing correctly (changes)
  • Fix issue #420. Fix BinarySerializer to support self-recursive serialization (changes)
  • fix Issue 328 - Color3 ToString method bug fixed (changes)
  • Fix issue 423. Whenever DataStream.DataPointer was used, we need to use PositionPointer instead. Change all usage inside SharpDX. (changes)
  • Fix issue with ID3D10Multithread mapping for WP8/Win8 (changes)
  • Fix issue with Matrix.Invert returning Matrix.Zero when determinant was too small (<1e-6) (changes)
  • Fix issue with string marshaling on Windows Phone (changes)
  • Fix MathUtil.Wrap (changes)
  • Fix RenderForm UserResized event from maximized to restored (changes: 1, 2)
  • Fix various spellcheck. squash commits from pull request https://github.com/sharpdx/SharpDX/pull/94 (changes)
  • Fix Vector4 operator / with Vector4 (changes)
  • FIX: DisposeBase now raises Disposing and Disposed events in a thread safer manner. (changes: 1, 2)
  • fixed compilation of MathUtil (changes)
  • Fixed issue #127 (changes)
  • Fixed WinRT build - added missing 'using' directive' (changes: 1, 2)
  • fixes (changes)
  • Implementation of OrientedBoundingBox struct (changes)
  • Issue 379: BoundingFrustum.GetCorners allocation @ fixed (changes)
  • Make internal method CppObjectShadow.ToIntPtr public and move it to CppObject.ToCallbackPtr (changes)
  • New formula for MathUtil.Lerp (changes: 1, 2)
  • NEW: Added support for thread static object tracking (changes: 1, 2)
  • NEW: Extended Variant structure to support reading/writing file-times as DateTime objects, and writing string objects. (changes: 1, 2)
  • RectangleF methods should accept floats (changes)
  • Reduce duplicate code in Rectangle/F (changes)
  • Reduce duplicate lerp code and use MathUtil.Lerp() everywhere (changes)
  • Reduced code duplication in string formatting for Color3 and extracted text to constant (changes)
  • Remove finalizer on DisposeBase and Configuration.EnableReleaseOnFinalizer. This APIs are not safe in a multithreaded application with COM objects (changes)
  • removed commented code and improved comments formatting (changes: 1, 2)
  • Rename Random.NextTimespan to NextTime (changes: 1, 2)
  • Rename SharpDX.Win32.PropertyKey to PropertyBagKey (changes)
  • reordered members of Rectangle and RectangleF to meet code conventions (changes)
  • Skip processing F10 key when pressed from a RenderForm as it is blocking the rendering (changes)
  • Spell check (changes: 1, 2)
  • Two simple gauss methods. (changes)
  • Update BoundingFrustum.cs (changes: 1, 2)
  • Update some internal usage of Dictionary<IntPtr,XXX> to use an IEqualityComparer<IntPtr> in order to avoid boxing/gc (changes)
  • Update Source/SharpDX/DrawingRectangleF.cs (changes)
  • Utilities.FreeMemory won't release IntPtr.Zero pointer (changes)

SharpGen

  • Add more detailed statistics for each API (changes)
  • Change NamingRulesManager behavior for abbreviation. Breaking changes for somes enums/struct/class names that were previously not correctly CamelCase (changes)

Tests

  • added unit test for MathUtil.Wrap methods (changes)
  • fixed some test cases for MathUtilWrapTests (changes)

tkfxc

  • Add support for fast compilation when source file and include files are not changed compare to the output file, using the /Ti command line switch to use this feature. (changes: 1, 2)
  • Fix issue #429. Add several missing options to tkfxc (changes)
  • Imrpoves performance for compiler with /Ti option (CompileOnlyIfNewer). Output dependency file checked when option is set. (changes)

tkmodel

  • Spell check (changes: 1, 2)
  • Start to work on tkmodel using AssimpNet (changes)

Toolkit

  • Added a sample for a simple particle system. (changes)
  • Added input support for WPF (changes: 1, 2)
  • Added WPF support in Toolkit (work in progress) (changes: 1, 2)
  • Allow unloading assets by name. (changes)
  • Fix compiling issue on WinRT (changes)
  • Fix ContentManager to use Reader from type instead of registered readers (changes)
  • Fixed compilation error (changes)
  • Improve GC performance by fixing a couple of possible allocation hotspots (changes)
  • Make SharpDX.targets work with any 4.5.x framework (changes)
  • Refactor IContentReader to use ReaderContentParameters. Allow to load a custom Effect object with the content manager via Content.Load<CustomEffect> (changes)
  • Removed unnecessary using directive (changes)
  • Restore ContentManager's RootDirectory functionality. (cherry picked from commit e8eb769ddfae1afe16c6ff19367ed08a6a2786cc) (changes)
  • Spell check (changes: 1, 2)

Toolkit.Compiler

  • Add support for StreamOutput with only a VertexShader and without a GeometryShader (changes)
  • Catch all exceptions in Compiler tasks (changes)
  • Finish support for Model compiler, tkmodel command line and msbuild task (changes: 1, 2)
  • Fix compilation errors (changes)
  • Fix Effect compiler error messages and parsing from task (changes)
  • Fix error reporting to correct line for included files by patching preprocessor output (changes)
  • Fix some issues with 11.1 profile (changes)
  • fixed model compilation to create destination subdirectories (changes)
  • Fixed texture compilation task to work correctly with subfolders (changes)
  • Improve ToolkitFxc msbuild task. Add SharpDX.targets to automatically configure a msbuild project using SharpDX assemblies and compiling HLSL files with ToolkitFxc (changes)
  • Make MathUtil static - add random extensions. (changes)
  • ModelCompiler Bug Fix (changes: 1, 2)
  • Prepare support for dynamic recompilation at runtime for shaders (only available on Desktop) (changes)
  • Refactor TkFont by using XNA like XML declaration file and support compilation from Visual Studio. Update toolkit samples to use new ToolkitFont action (changes)
  • Remove dependency to System.Linq with Font (changes)
  • Simplify MaterialKey (changes)
  • Spell check (changes: 1, 2)
  • Store Debug/Reflection data when shader compiled in Debug mode to improve experience with Graphics Debugger like NSight (changes)
  • Update to latest Assimp.NET. Recompile assimp binaries to use latest FBX support (changes)
  • Use Assimp ImportFromFile instead of ImportFromStream to let assimp to be able to look up for mtl files for obj assets (changes)

Toolkit.CompilerTask

  • Add Bin\Redist\D3D to PATH variable in order to support D3DCompiler_46.dll automatically (changes)
  • Add license/comments (changes)
  • Add new project to support msbuild task to compile Toolkit FX files (changes)
  • Add support for compiling to a C# file (changes)
  • Fix TkFxc Task to compile correctly under WinRT by copying automatically all generated fxo file to AppX folder (this is also working with project dependency). Add support for cs generated file. (changes)
  • Fixed message type reporting by msbuild task for parsed messages (changes)
  • Handle "Link" from Visual Studio (changes)
  • refactored content compilation tasks to remove duplicate code (changes)
  • Spell check (changes: 1, 2)
  • Try to support output files to be copied with project dependency. Not working yet. (changes)

Toolkit.Game

  • Add helper method Game.ToDisposeContent to automatically dispose content created in a LoadContent method (changes)
  • Add support for custom Width/Height for DrawingSurface. (changes)
  • Add typed GameWindowContextWinForm and update all internal class in game (changes: 1, 2)
  • Added few comments to GameWindow (changes)
  • Added more events for better notification in GraphicsDevice state changes (changes)
  • Added resize support for WPF (changes: 1, 2)
  • Added support for low priority rendering to normalize input latency for WPF platform (changes: 1, 2)
  • Exclude GameContext with WPF until full support (changes)
  • Finish dynamic effect recompilation with EffectCompilerSsystem. Supported on Desktop. (changes)
  • Fix compilation errors after renaming (changes)
  • Fix for DrawingSurface on Windows Phone 8, better handling of back/dispose of GraphicsDevice (changes)
  • Fix for issue #98: more control over SharpDXElement resize behavior (changes)
  • Fix issue #329 with SwapChainBackgroundPanel when used with emulator. Fix MetaTunnel.fxo shader (changes: 1, 2)
  • Fix issue #345 and #346. Add support for multiple window/control. Add new GameSystem in GameWindowRenderer. Add new sample MultiWindow only for desktop. (changes: 1, 2)
  • Fix issue #363. Perform a ClearState before a new BeginDraw to ensure that there is no unstable d3d11 device states. Toolkit samples should work on Nokia handset (changes)
  • Fix issue #389, NullPointerException on Game.Exit() (changes)
  • Fix issue #395. Avoid LoadContent to be called twice while initializing (changes)
  • Fix issue #400. Improve stability of EffectCompilerSystem, by allowing concurrent read/write on dependency/shader files. (changes)
  • Fix issue #433. Backbuffer format is now passed from preferred parameters. MSAA setup from preferred is still not implemented for backbuffer. (changes)
  • Fix issue for a NullPointerException in EffectCompilerSystem with latest changes (changes)
  • Fix issue in GameWindowWindowsPhoneBackgroundXaml with nextRenderTarget variable (changes)
  • Fix issue of GraphicsDeviceManager.DeviceCreated called instead of GraphicsDeviceManager.PreparingDeviceSettings when resizing (changes: 1, 2)
  • Fix issue with "back to application" on WP8 on hardware (changes)
  • Fix issue with DepthBuffer not being created on WP8 (changes)
  • Fix issue with DrawingSurfaceBackground and GraphicsDevice.SetRenderTarget not getting the correct viewport for the render target (changes)
  • Fix issue with GameSystem ordering in Game class (changes)
  • Fix issue with initial directory for game content (changes)
  • Fix issue with regression when using multiple window, revert back using standard application window dispatching on desktop (changes)
  • Fix regression on Window.AllowUserResizing (changes)
  • Fix remaining issue with memory leak in WP8. Not yet entirely perfect, but it is a bit more stable (changes)
  • Fix samples to unload dynamic content. Make sure UnloadContent is callable only if LoadContent was called. (changes: 1, 2)
  • Fixed issue #358 - SharpDX.Toolkit doesn't detect window-size changes in WinRT (snap, fill, fullscreen). (changes)
  • Improve stability of EffectCompilerSystem, by allowing concurrent read/write on dependency/shader files. (changes)
  • Improves GraphicsDevice recover on WP8 BackgroundXaml. (changes)
  • Plug back WP8 DrawingBackgroungSurface support with new GameContext and internal GameWindow (changes)
  • Port back support for WinRT SwapChainBackgroundPanel to new GameContext and internals GamePlatform/GameWindow. (changes)
  • Refactor and simplify the design of GameContext. Make it platform dependent but lighter/easier to instantiate, with a single entry point. (changes)
  • Refactor code in GameWindowPhoneBackgroundXaml for WP8 (changes)
  • Refactor GameWindow for WinRT using CoreWindow/IFrameView (changes)
  • Remove IsFullScreen to false on Win8 Metro (changes)
  • Separate Game/GameSystem.LoadContent from Initialize, in scenarios where Initialize method is overriden, the base.Initialize should not start to load content until all game systems are initialized (changes)
  • Spell check (changes: 1, 2)
  • Start refactoring internals of GamePlatform/GameWindow to have a better plugin system and support multiple sub windows system (WPF/Windows Forms on Desktop, DrawingSurface/DrawingSurfaceBackground on WP8, IFrameview/SwapchainBackgroundPanel on WinRT) (changes: 1, 2)
  • Start to fix issue of WP8 lost device/back (changes)
  • Start to work on desktop refactoring for GameWindow (changes: 1, 2)

Toolkit.Graphics

  • Add a check in RenderTarget2D.New in MSAA scenarios and forbid the use of MSAALevel.None (changes)
  • Add BasicEffectRenderer to support rendering of models using classic BasicEffect. (changes)
  • Add BoundingSphere to mesh. Force AssimpLibrary to use a specific path (default was not working when running from msbuild task). Start to work on ModelRenderer. Add temporary sample test for displaying a model. (changes)
  • Add BufferFlags.StreamOut (changes)
  • Add comments to GraphicsDevice.GetRenderTargets. Improve efficiency when setting render tagets. (changes)
  • Add CppObject.Tag in order to provide fast association between Toolkit instance and Direct3D11 instance. (changes)
  • Add Effect.DefaultParameters and EffectDefaultParameters class to handle automatically default parameters for custom effects (World, View, WorldViewProjection, ViewProjection...etc) when using Model.Draw method with a custom effect (on override or per mesh part) (changes)
  • Add EffectConstantBuffer.Update method (changes)
  • Add EffectPass.UnApply method. Unbind texture input in PrimitiveQuad.DrawQuad(ShaderResourceView). Add Color to PrimitiveQuad. (changes)
  • Add GeometricPrimitive Cube, Cylinder, GeoSphere, Plane, Sphere, Teapot and Torus. Add sample Geometrics.Desktop to demonstrate their usage. (changes)
  • Add GraphicsDevice.DrawQuad(ShaderResourceView) to draw a quad texture. Add GraphicsDevice.AutoViewportFromRenderTargets, true by default to set automatically viewport when a new rendertarget is set through GraphicsDevice.SetRenderTargets (changes)
  • Add GraphicsDevice.GetRenderTargets(...) (changes)
  • Add GraphicsDevice.SetStreamOutputTargets and ResetStreamOutputTargets (changes)
  • Add Material for ModelData (changes)
  • Add Model classes. First implem draft, not yet tested. (changes)
  • Add Model.Draw with the possibility to override default Effect (changes)
  • Add new TextureCompilerTask, currently a passthrough. Refactor internals of content serialization to check for a version number. Add IContentResolver.Exists() method. (changes)
  • Add RasterizerStateCollection.WireFrame and RasterizerStateCollection.WireFrameCullNone (changes)
  • Add static property Size to VertexPositionColor, PositionColorTexture, PositionNormalTexture, PositionTexture. (changes: 1, 2)
  • Add stock SamplerStates with Mirror mode for UVW (changes)
  • Add support for DepthStencilBuffer as ShaderInput (changes: 1, 2)
  • Add support for embedded resources. Simplify model loading to match XNA behavior. Add several models to test. Pending issues if a model have wrong relative file name for FBX (changes)
  • Add support for IntPtr as a valid DeviceWindowHandle on Windows Desktop when creating a swapchain. (changes)
  • Add support for Model.Draw with an effect that doesn't inherit from IEffectMatrices (changes)
  • Add support for RectangleF in VertexElement (changes)
  • Add support for StreamOutput declarations (changes)
  • Add support in Effect for Initial Counters with UAV (changes)
  • Add WorldView as a predefined Effect parameter for Model.Draw (changes)
  • Added a bool flag in GraphicsDeviceManager to allow setting SharderResource flag for the depth buffer. Fix for isse #110 (changes)
  • Added support to specify the fullscreen monitor (changes: 1, 2)
  • Allow same bytecode to be reused in different shader types (GeometryShader using the VertexShader as pure stream output shader) (changes)
  • Allow to change the format of a Image.PixelBuffer after creation, if format has same byte size (changes)
  • Allow to specify the DepthFormat a constructor time with a RenderTargetGraphicsPresenter (changes)
  • Changed comments to ModelData instead of EffectData to reflect the code. (changes)
  • ContentManager Bug Fix (changes: 1, 2)
  • Dispose internal Effect used by SpriteBatch (changes)
  • Fix compilation error (with .NET 2.0) (changes)
  • Fix instantiation of GeometryShader with StreamOutput on level 10.0 (changes)
  • Fix issue #330. A SpriteBatch.Draw method was not taking rotation into account (changes)
  • Fix issue #335. Using StructLayout.Explicit with fixed size and field offset was generating a wrong code (seems a bug in JIT), leading to a crash in EffectPass.Apply(). Change Explicit layout to sequential and remove field offset fixed this. (changes)
  • Fix issue #344. Support GraphicsDeviceManager.ApplyChanges on Desktop. Improve performance/compliance while switching from/to fullscreen mode on desktop (changes)
  • Fix issue #351. Resize Window event was not triggered when GameWindow.AllowUserResizing=true (changes: 1, 2)
  • Fix issue #354. Add nuget dependency to Direct2D1 (changes)
  • Fix issue #362. One method of SpriteBatch.Draw was not using SpriteEffects parameter (flip horizontal/vertical) (changes: 1, 2)
  • Fix issue #364. Provides detailed exception when a shader with a more recent profile is used on the current GraphicsDevice. Fix bug in GraphicsDevice constructor not using requested profiles on desktop. (changes)
  • Fix issue #366. NullPointerException was occurring with constant buffer not correctly remapped to internal resource index after parameter reordering. (changes)
  • Fix issue #388. Allow to Save Gif image/texture. (changes)
  • Fix issue when using GraphicsDeviceManager.IsFullScreen = true and closing application was causing a crash. SwapChain must be revert to non fullscreen before disposing a device. (changes)
  • Fix issue while cloning technique description (changes)
  • Fix issue with BasicEffect used with an effect that is using Geometry (changes)
  • Fix issue with DepthStencilBuffer on WP8. Default to non-typeless if no shader resource are required, as TypeLess (changes)
  • Fix issue with Game.Exit on Desktop. Fix model texture loading. Improve sample with translation to center of model. (changes)
  • Fix issue with memory trashing in EffectParameter.Get/Set Matrix Array (changes)
  • Fix issue with StreamOutputRasterizedStream. (changes)
  • Fix issue with TextureCube not correctly initialized (changes)
  • Fix issue with wrong slots being assigned in EffectPass (changes)
  • Fix model loading. (changes)
  • Fix spritebatch GC allocs using Dictionary<IntPtr,...> use Dictionary<ShaderResourceView, ...> instead. Also calculate correct width/height per ShaderResourceView (changes)
  • Fix stock HLSL effects after latest recompilation mode added (changes)
  • Fixed exception at changing fullscreen state with adapters which don't have any output (for example, like WARP) (changes)
  • Fixed fullscreen monitor selection in certain circumstances and added a demo sample (changes: 1, 2)
  • Fixed github issue #95 (changes)
  • Fixed memory garbage generation in GeometricPrimitive drawing (changes)
  • fixed memory garbage generation in PixelFormat.Equals(PixelFormat) method (changes)
  • Fixed spelling error in method name (github issue #100) (changes)
  • fixing few grammatic errors (changes: 1, 2, 3)
  • fixing some grammatic errors (changes: 1, 2, 3)
  • Improve release of Disposable objects on WP8. Still a small memory leak somewhere... (changes)
  • Improved GamePlatform to work over RDP with Desktop platform, same as for WinRT (changes)
  • Make GraphicsAdapter working even if we cannot retrieve the output display modes. (changes)
  • Make SpriteFont use specified default character (changes)
  • Optimize resource slot bindings by compacting consecutive slots in Effect/EffectPass. (changes)
  • Reduced code duplication (changes)
  • Remove usage of Direct3D11 Device.GetDeviceRemoveReason internal method (changes)
  • Removed garbage generation during SpriteFont.ForEachGlyph calls (changes)
  • Removed garbage generation from SpriteBatch.End call (changes)
  • Removed GraphicsAdapter.Dispose() (changes: 1, 2)
  • Reset shader stages in SpriteBatch (changes)
  • Revert "[Toolkit.Graphics] Fix issue with StreamOutputRasterizedStream." (changes)
  • Simplify EffectData to allow only a single effect to be stored. Refactor EffectPool to match the new behavior. (changes)
  • Some objects created by GraphicsDevice were not being disposed correctly: - GraphicsAdapter -> added call to GraphicsAdapter.Dispose() in GraphicsDevice.Dispose() - GraphicsOutput -> wrapped in ToDipose(output..) - object output1 in GraphicsOutput's initialization code was not being disposed in DirectX11.1 (changes: 1, 2)
  • Spell check (changes: 1, 2)
  • Try to fix issue #348. Force MaximumAnisotropy to 2 for 9.1 feature level. (changes: 1, 2)
  • Unbind texture while drawing with SpriteBatch to avoid warnings (changes)
  • Update StockEffects compiled file with latest tkfxc (changes: 1, 2)
  • Use PropertyKey/PropertyCollection for all properties (EffectData, ModelData). Make Material definition more generic by using only properties. (changes)
  • Use readonly on fields that should not be modified (changes)
  • Use SpriteFont.Spacing to advance character glyph, still not sure about the "correct" behavior of this property (changes)

Toolkit.Input

  • Added KeyboardInput samples, fixed modifier keys handling (changes)
  • Add IEquatable and ==, != operator to KeyboardState, MouseState, PointerPoint (changes)
  • added blank Toolkit.Input project to solution (changes)
  • added comments for Pointer* classes. (changes)
  • Added comments to PointerPlatformDestop class (changes)
  • added pointer input sample for WinRT platform (changes)
  • added sample pointer input projects for Desktop platform (changes)
  • added support for setting mouse position on Desktop platform and fixed the samples (changes)
  • Added XML comments and simplified code (changes)
  • added xml documentation for SharpDX.Toolkit.Input assembly (changes)
  • Change behavior of PointerManager to return position independent window size in the range [0,1] (changes)
  • Change behavior of position returned by MouseManager, now in the range [0,1] in order to avoid windows size dependent position. (changes)
  • Change PointerInput sample to use Arial10 font and Desktop to use 4.0 framework. (changes)
  • Changed GUIDs for SharpDX.sln MouseInput projects to be different from those in Samples solution (changes)
  • Deleted unused PointerPointProperties file (changes)
  • Fix issue #403. MouseState.WheelDelta is now absolute and compatible with XNA behavior. (changes)
  • Fix issue with duplicate entries in pressed keys (changes)
  • Fix minor potential issue in MouseManager (changes)
  • Fixed comments and variables after class rename (WindowBinder -> MousePlatform) (changes)
  • fixed compilation for net20 profile (changes)
  • fixed csproj and fixed WinRT xaml integration (changes)
  • Fixed duplicate keys on .NET 2.0 platform. (changes)
  • Fixed grammar errors in comments (changes)
  • Fixed keyboard input on WPF platform (changes: 1, 2)
  • Fixed MouseInput samples for SharpDX.sln (changes)
  • Fixed MouseInput samples for ToolkitSamples.sln (changes)
  • Handle pointer input for Desktop platform (mouse only) (changes)
  • Implemented basic touch support for desktop platform (changes)
  • Implemented keyboard input support for desktop platforms (changes)
  • implemented mouse input for WinRT (changes)
  • implemented mouse support for Desktop platform (changes)
  • implemented mouse support for WinRT (changes)
  • Implemented pointer input events for WinRT platform (changes)
  • Implemented WinRT keyboard support (changes)
  • Improved initialization logic of MousePlatformWinRT - will throw exception an appropiate control was not provided (changes)
  • Input support for WP8 platform (changes)
  • made a few methods static (changes)
  • Modified samples for PointerInput according to new sample projects structure (changes)
  • Refactored pointer input for Desktop platform (changes)
  • Refactored pointer input for WinRT platform (changes)
  • Renamed WindowBinder* classes to MousePlatform - which describe better their purpose (changes)
  • Replace KeyState with ButtonState in MouseState. (changes)
  • Replaced Point struct by SharpDX.DrawingPoint (changes)
  • Small code improvements (changes)
  • Spell check (changes: 1, 2)
  • Updated MouseInput sample project GUIDs (changes)

Toolkit.Samples

  • Added sample showing usage of a custom shader with SpriteBatch class (changes: 1, 2)
  • Change ModelRendering on WP8 to use DrawingSurface instead of DrawingBackgroundSurface (changes)
  • Improved mouse input sample to explain the changes in coordinates to be in range [0; 1] (changes)
  • Moved KeyboardManager creation from LoadContent to game constructor (changes)
  • Removed unneeded shader name specification to avoid confusion (changes: 1, 2)

Tools

  • Modified SharpGitLog to generate correct changelog for 2.5.0 release (changes)

VisualStudio

  • Add a workaround on WP8 to generate a solution with proper Any CPU configuration for WP8, forcing it to use x86 instead of Any CPU by default. (changes)
  • Add Folder Content to the solution by default. Change template title (changes)
  • Add platform WinRT XAML (changes)
  • Add SharpDX VisualStudio package with project templates for the Toolkit (changes)
  • Add templates for inputs. Add check/uncheck all (changes)
  • Add WP8 platform templates (changes)
  • Make Wizard form not resizable (changes)
  • Update Wizard to support WinRT (changes)

WIC

  • Add SharpDX.WIC.ResultCode from WINCODEC_ERR_.* macros (changes)
  • Added TryGetMetadataByName method to the WIC MetadataQueryReader. This method doesn't throw an exception when the requested property is not found or not supported; instead null is returned. (changes: 1, 2)
  • Enable SharpDX.WIC.Bitmap.Lock methods for Windows 8 build (changes: 1, 2)
  • Fix issue #418. Index out of range when reading a byte[0] from a MetadatqQueryReader (changes)
  • FIX: Now also registers the WIC result descriptor provider when the Direct2D1 module is initialized. (changes: 1, 2)
  • WIC MetadataQueryWriter now also uses the Variant structure, just like the MetadataQueryReader. Some types - like DateTime - are marshaled differently by Marshal.GetNativeVariantForObject. See http://archive.msdn.microsoft.com/wictools for details (we should actually mimic all the code in it) (changes: 1, 2)

WP8

  • Added support for DrawingSurface (changes)
  • clean up CreateDeviceResources (changes)
  • comment on whats going wrong (changes)
  • Fix compilation with latest changes (changes: 1, 2)
  • fix issue where i was creating a Defferred Context (changes)
  • Fix issue with model loading on WP8. Working on emulator, not yet working on HW (changes)
  • Fixed broken build (changes: 1, 2)
  • fixing DepthStencil (changes)
  • fixing incorrect code (changes)
  • fixing up misinterpretations (changes)
  • Improved code (changes)
  • Remove samples from WP8 solution (changes)
  • Sample for IDrawingSurfaceContentProvider (changes)
  • Wired up DrawingSurface control (changes)
  • Wired up the IDrawingSurfaceContentProvider (changes)
  • wiring up base/provider/interop/renderer (changes)

X3DAudio

  • Fix issue #370. Add X3DAudio.Calculate with DspSettings. Force DspSettings constructor and rewrite marshaling in order to avoid GC. (changes)

XACT3

XAudio2

  • Add XAudio2 errors codes into SharpDX.XAudio2.ResultCode (changes)
  • Fix issue #205. Callback setup was broken (changes)
  • Fix issue #333. SourceVoice.SubmitSourceBuffer was invalid with xWMA (changes)
  • Fix issue #338. Make first param of XAudio2.SetDebugConfiguration non optional (changes)
  • Fix issue #384. Add constants to Echo, Reverb, MasteringLimiter and Equalizer (changes)
  • Spell check (changes: 1, 2)

XInput

  • Add new Controller.GetState method to perform GetState and IsConnected in a same call. Add Controller.UserIndex value (changes)
  • Fix issue #368. Vibration.Left/RightMotorSpeed should be declared as ushort (changes)

Page 1 of 4