SlimDX Changelog

What's new in SlimDX January 2012

Apr 24, 2012
  • Samples:
  • Fixed a UI rendering bug in the SampleFramework.
  • Direct3D 9:
  • Fixed pinning of UVAtlas callbacks.
  • Fixed a bug in GetAnimationSet() that failed for base animation sets.
  • Direct3D 10:
  • Fixed bug in Get/Set of bool arrays in EffectScalarVariable.
  • EffectResourceVariable now allows clearing an array of resources.
  • Direct3D 11:
  • Added missing UnorderedAccessViewBufferFlags flag.
  • Removed invalid range checks from AttachBuffersAndPrecompute().
  • Added overloads to Set() for int and bool vectors.
  • Fixed bug in Get/Set of bool arrays in EffectScalarVariable.
  • EffectResourceVariable now allows clearing an array of resources.
  • DXGI:
  • Added missing result code.

New in SlimDX September 2011 (Jan 31, 2012)

  • Samples:
  • Added Conway's Game of Life sample using compute shaders.
  • Math:
  • Fixed a bug in TransformPoint().
  • Direct2D:
  • Fixed a bug that incorrectly created RectangleGeometry from a RectangleF.
  • Direct3D 9:
  • Changed Reset(PresentParameters[]) and ResetEx to take a params array of present parameters.
  • Fixed a bug in setting an EffectStateManager.
  • Changed GetAnimationSet() to have a generic result to allow for custom interfaces to be returned.
  • Fixed a null reference exception in Dispose().
  • Direct3D 10:
  • Added an overload to Map() to take an array slice index.
  • Added a Factory() property to the Device to make it easy to get the associated factory.
  • Fixed a stack overflow in FromPointer().
  • Direct3D 11:
  • Added a Factory() property to the Device to make it easy to get the associated factory.
  • Fixed a stack overflow in FromPointer().
  • Changed BlendStateDescription to implement IEquatable and GetHashCode().
  • Fixed the MapSubresource() function to properly calculate the size of the returned data.
  • Fixed the datatypes of PipelineStatistics members to be Int64 instead of Int32.
  • Changed IsDataAvailable() to return a boolean result.
  • Windows:
  • Fixed a bug in RenderForm that prevented UserResized messages from occuring.
  • DXGI
  • Fixed a bug that caused certain types like Factory1 to be unable to be a target of GetParent.
  • RawInput:
  • Added support for custom message handling. Allows the use of WPF and other non-Winforms frameworks.
  • Multimedia:
  • Extended the WaveStream class to support ADPCM formats.
  • DirectInput:
  • Changed DirectInput DeviceInstance to properly mask out the DeviceType flag.
  • Added missing DirectInput buffered data functionality.

New in SlimDX March 2011 (Jun 17, 2011)

  • The March 2011 release of SlimDX was a bug fixing and stability release. In this release we diverged from the usual practice of synchronizing our schedule with that of the DirectX SDK, mostly due to the long wait since the previous release, June 2010.
  • March 2011 boasts several bug fixes, some performance improvements, a few bits of missing functionality, and a couple new samples, and we decided that we couldn't wait any longer for the release.

New in SlimDX August 2009 (Jan 5, 2010)

  • This is a major release in terms of new functionality, mainly due to the long-awaited inclusion of Windows 7 support. The new Windows 7 features include Direct3D 11, Direct2D, and DirectWrite.

New in SlimDX March 2009 SP1 (May 9, 2009)

  • The March 2009 release is a major release in terms of new functionality and improvements behind the scenes. Many missing corners were filled in, and several usability enhancements were made across the library on top of the standard array of bug fixes. A new DLL containing beta-level technologies, such as Direct2D and Direct3D11, was added to showcase developing APIs. These APIs will be moved into the core SlimDX DLL once they are given a full release by Microsoft. Until then, they should be viewed as previews, and should not be used for products that expect stable behavior.
  • Performance is another issue focused on in the March release. After extensive testing, several improvements were made to the error handling infrastructure, which showed significant performance increases across the entire library. On top of this, performance issues in the math library were discovered and subsequently eliminated. This involved modifying the types to use fields instead of properties, as value type getters are inlined in .NET prior to version 3.5. These small changes could have a substantial impact on your application simply by recompiling with the new DLL.
  • The following is a list of changes that were made to SlimDX for the March 2009 release.
  • General
  • Added a second DLL, SlimDX.Windows7.dll, to the project to allow for the implementation of beta APIs, such as DX11 and Direct2D.
  • Refactored the handling of COM objects to allow SlimDX to correctly handle certain types / usage scenarios; in particular those having to do with implicitly created objects, such as a D3D9 device s render target, without requiring the user to Dispose() of those objects manually, which violates the Dispose() idiom). Users who were previously using the manual Dispose() workaround will need to remove that workaround, as it will now throw an exception indicating that implicit and ancillary objects should not be Dispose() d.
  • Improved the performance of the internal error checking mechanism.
  • Result watches can no longer be set on success results.
  • Fixed a bug that caused an ObjectDisposedException to be thrown whenever a constructor for an object failed.
  • Design
  • Fixed an off-by-one bug in Color3Converter and Color4Converter.
  • Samples
  • Added a SkinnedMesh sample.
  • Added a simple Direct2D sample.
  • Added a simple text DirectWrite sample.
  • Added a multiformatted text DirectWrite sample.
  • The EnableVSync option in the SampleFramework wasn t being respected in D3D10 mode. That has been fixed.
  • Math
  • Changed all math types to use fields instead of properties. This has been shown to give a substantial performance improvement.
  • Modified the type converters so that math types will still work correctly in PropertyGrid.
  • Added a Rows[([(Int32])]) property and a Columns[([(Int32])]) property to get and set the rows and columns of a matrix.
  • Added array overloads for several math functions, notably Multiply(Matrix*, Matrix*, Matrix*, Int32).
  • Some quick testing shows that for 5 or more matrices, the array multiply is 30% faster per matrix than doing them one at a time.
  • Added a ToArray()()() method to Matrix.
  • Direct2D
  • Set up the Direct2D subsystem.
  • Added the Factory class.
  • Added the RenderTarget base class.
  • Added the WindowRenderTarget class.
  • Added the Resource class.
  • Added the Brush class.
  • Added the SolidColorBrush class.
  • Added the StrokeStyle class.
  • Added the Bitmap class.
  • Added the Geometry class.
  • Added the Layer class.
  • Added the StateBlock class.
  • Added the BitmapBrush class.
  • Added the Mesh class.
  • Added the TessellationSink class.
  • Added the BitmapRenderTarget class.
  • Added the DeviceContextRenderTarget class.
  • Added the GdiInteropRenderTarget class.
  • Added the SimplifiedGeometrySink class.
  • Added the geometry classes: Rectangle, RoundedRectangle, Ellipse, Transformed, and Path.
  • Added the GeometrySink class.
  • Added gradient brush support.
  • Direct2D is functionally complete.
  • DirectWrite
  • Set up the DirectWrite subsystem.
  • Added the Factory class.
  • Added the FontCollection class.
  • Added the TextFormat class.
  • Added the TextLayout class.
  • Added the Typography class.
  • Added font features.
  • Added the RenderingParameters class.
  • Direct3D 9
  • Renamed DevCaps2 to DeviceCaps2 to conform to .NET naming style.
  • Changed the texture Fill2DCallback callbacks to return colors instead of vectors.
  • Changed Frame and MeshContainer to no longer be abstract.
  • Changed Surface.FromMemory and FromStream to FromFileInMemory(Surface, array[]()[], Filter, Int32) and FromFileInStream(Surface, Stream, Filter, Int32).
  • Changed Volume.FromMemory and FromStream to FromFileInMemory(Volume, array[]()[], Filter, Int32) and FromFileInStream(Volume, Stream, Filter, Int32).
  • Changed AnimationOutputFlags values to be powers of two.
  • Changed MeshData to be immutable to avoid subtle bugs.
  • Fixed a bug where the non-Ex Adapters member was not set in a Direct3DEx object.
  • Fixed a bug in SetValue)(EffectHandle, T) for undersized matrices.
  • Fixed a bug in the mesh loading functions that affected the loading of effect instances.
  • Fixed missing error checks in the adapter enumeration code (includes Ex).
  • Fixed functions accepting a palette array as a parameter to accept null.
  • Fixed a performance issue where FromStream methods would unnecessarily make copies when passed a DataStream.
  • Fixed several Surface methods which were directly casting between RECT and System.Drawing.Rectangle.
  • Fixed a bug in SetPixelShaderConstant(Int32, Matrix) for boolean arrays that incorrectly copied the array.
  • Fixed several bugs in IEffectStateManager that caused it to be unusable.
  • Added a DefaultAllocateHierarchy class.
  • Added new functions FromMemory(Surface, array[]()[], Filter, Int32, Format, Int32, Rectangle) and FromStream(Surface, Stream, Filter, Int32, Format, Int32, Rectangle) that call the expected native functions.
  • Added support for passing arrays of present parameters when creating a device for multihead support.
  • Added support for UVAtlas.
  • Added Matrix overloads for SetVertexShaderConstant(Int32, Matrix) and SetPixelShaderConstant(Int32, Matrix).
  • Added support for default XFile templates.
  • Added ResetStreamSourceFrequency(Int32).
  • Added overloads to SetRawValue(EffectHandle, DataStream) for arrays.
  • Added CertificationDate property to AdapterDetails.
  • Direct3D 10
  • Added QueryType enumeration.
  • Added QueryFlags enumeration.
  • Added Query class.
  • Added QueryDescription structure.
  • Added FilterFlags enumeration.
  • Added ImageInformation class.
  • Added ImageLoadInformation class.
  • Added overloads to texture loading methods to support passing ImageLoadInformation structures.
  • Fixed a crash that was caused by calling AsEffect()()() twice on any given EffectPool.
  • DXGI
  • Fixed a crash bug that was caused by an extra Release() in GetBuffer)(Int32).
  • DirectInput
  • Refactored the DirectInput class to be instance based. This mirrors the changes already made to other portions of the library.
  • Removed the custom collections and replaced them with generic equivalents.
  • DirectSound
  • Fixed a typo in an effect constant.
  • Fixed a bug that caused exceptions when enumerating devices.
  • Changed SoundBuffer to allow writing any arbitrary data type.
  • SetSpeakerConfiguration(SpeakerConfiguration, SpeakerGeometry) used the wrong Speakers enum. This has been fixed.
  • Added DuplicateSoundBuffer(SoundBuffer, SoundBuffer%).
  • XAudio2
  • Fixed an issue that could cause access violations when disposing voices.
  • Changed AudioBuffer to take a Stream as data input instead of a byte array.
  • Added the VoiceSendDescriptor class, and modified SetOutputVoices(array[]()[]) to take a list of VoiceSendDescriptor objects.
  • Added the SetSourceSampleRate(Int32) method to the SourceVoice class.
  • Multimedia
  • Replaced the erroneous use of auto_ptr for WaveFormat to a custom auto_array type.
  • Invalid use of auto_ptr was also causing extended wave formats to drop extra bytes. This has been fixed.
  • Removed the WaveFile class and replaced it with WaveStream.
  • Added the ability to construct a WaveStream from any other Stream type.
  • Raw Input
  • Added the ability to determine device handles from the DeviceInfo class.
  • Windows
  • Added a new SlimDX.Windows namespace for Win32-specific interop.
  • Added MessagePump class for handling common message loop capabilities.