The ZBuffer - Managed DirectX resources
Search ZBuffer
Links


 

Tom has specifically asked for feedback on the design changes. Please let him know your ideas, feelings and bugs. Either use directx@microsoft.com or contact him via his blog.

Tom has also informed me that about 40% of D3DX is unintentionally missing from the beta. So don't assume any classes that are gone are gone for good.

The following are the changes I have determined in the Microsoft.DirectX namespace. My analysis is as good as my tools and my eyesight. Please check the facts yourself before berating anyone in public forums or making business decisions. Please let me know if you find any errors.

Deleted Classes/Structs (or maybe moved/renamed and I've not found them):

  • DXHelp
  • GraphicsStream (replaced with GraphicsBuffer)
  • MatrixStack
  • Single16

Changed Classes/Structs:

  • Common Changes
    • GetHashCode - added to lots of classes
    • ToString - becomes sealed
    • Public fields changed to property get/set
    • get_{PropertyName} functions added to match to property get functions. I assume this to allow languages that don't understand properties to have access?
    • Default Constructors gone for structs - is this a .net 2.0 thing?
  • Matrix
    • IsIdentity - Added
    • AffineTransformation, Reflect, Shadow - become static
    • RotateAxis/Quaternion/X/Y/Z/YawPitchRoll, Scale, Translate, Transpose - member functions removed, static functions remain
    • Equals, ==, != - Removed
    • static Invert - arguments switched to match member Invert
    • LookAtLH/RH, OrthoLH/RH, OrthoOffCenterLH/RH, PerspectiveFovLH/RH, PerspectiveLH/RH, PerspectiveOffCenterLH/RH - all now fully spelled out as per .Net guidelines
  • Plane
    • Dot - becomes static Dot and static DotCoordinate
    • Scale - member functions removed, static functions remain
    • ==, != - removed
  • Quaternion
    • Equals, ==, != - removed
    • IsIdentity - Added
    • Exp, Ln - becomes static
    • LengthSq - becomes LengthSquared
    • Multiply, RotateAxis/Matrix/YawPitchRoll - member functions removed, static functions remain
    • SquadSetup - now returns SquadSetup struct rather than using out params
    • ToAxisAngle - now return AxisAngle struct rather than using out params
  • Vector2/3/4
    • Add, Subtract, Multiply, Maximize, Minimize, Project, UnProject, Scale, TransformCoordinate/Normal - member functions removed, static functions remain
    • Cross, Dot, LengthSq - spelled out in full
    • ==, != - removed

New Classes/Structs:

  • AxisAngle
  • ColorOperator
  • ColorValue
  • SquadSetup
  • TimeBombExcpetion - I'm assuming this is to make the beta expire and won't actually be part of the final build

Issues/Inconsistencies/Things that SHOULD have been changed/While we are making major changes lets do this too?

  • MatrixStack gone? Personally I've never used it but MDX should be 100% of the native library, so unless its been removed from that it should continue to exist
  • I'm not sure why all the equality functions are gone. I thought the default case was a bitwise comparison - which isn't sufficient as these wrap unmanaged structures
  • Why is ToString sealed? Does it now at return useful results rather than the type name?
  • What is the logic/rule/pattern behind when to use a static function and when to use a member? I notice there are still a handful of member functions still there.
  • Matrix::TransposeMatrix - should this just be Transpose, none of the other calls are qualified with Matrix
  • Plane::Dot, DotCoordinate, DotNormal, Quaternion::Dot - should be DotProduct~ to match the Vector2/3/4 classes
  • Suggest Matrix.Projection(ProjectionType, Handedness, .......) rather than 12 horribly long function names. Also some sensible overloads here could simplify things.
Updated 10/6/2005 9:45:00 AM by Zman