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.Direct3D 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 - see note above):

  • AddressCaps
  • AllocateHierarchy
  • AnimationController
  • AnimationOutput
  • AnimationRootFrame
  • AnimationSet
  • BandwidthTimings
  • BlendCaps
  • BoneCombination
  • BoneInfluences
  • CacheUtilisation
  • ColorOperator [moved to Microsoft.DirectX]
  • ColorValue [moved to Microsoft.DirectX]
  • ComparisonCaps
  • CompressedAnimationSet
  • D3DX
  • DeclarationTypeCaps
  • DegenerateItems
  • DeviceCaps
  • GetDriverLevel
  • DisplacementParameter
  • EffectDefault
  • FilterCaps
  • FormatList
  • Frame
  • InterfaceGuid (now in Constants)
  • InterfaceTimings
  • KeyFramedAnimationSet
  • LineCaps
  • LinePattern
  • LoadUserData
  • LockedBox

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?
    • GetObjectByValue - removed from most (all?) classes
    • Constructor(IntPtr) - removed from most (all?) classes
  • AdapterDetails and AdapterInformation have had their names switched
  • AdapterInformation has become a struct
  • AdapterDetails (formerly AdapterInformation)
    • Information, GetWhqlInformation now return AdapterInformation
    • ==, !== - added
  • AdapterInformation (formerly AdapterDetails )
    • DriverName becomes Driver
    • All properties have 'set' added [Seems quite odd!]
    • Equals, ==, !== - added
  • AttributeWeights
    • Changed from struct to class
    • Now implements IDisposable
    • TextureCoordinate property replaced with GetTextureCoordinates and SetTextureCoordinates
  • BaseEffect
    • Now abstract
    • GetValueCubeTexture, GetValueVolumeTexture - added
    • GetValue now returns GraphicsBuffer and has generic overload
  • BaseMesh
    • No longer abstract - not consitent with BaseEffect
    • GetDeclaration, SetIndexBufferData, SetVertexBufferData, UpdateSematics - removed
    • Clone - first parameter is now device instead of last
    • Clone, ComputeNormals, ConvertAdjacencyToPointReps, ConvertPointRepsToAdjacency, GenerateAdjacency, LockIndexBuffer, LockVertexBuffer - uses GraphicsBuffer not GraphicsStream and/or array
  • BaseTexture
    • Now abstract and implements IDisposable
    • ImageInformation, GetImageInformationFromFile/Stream - added
    • AutoGenerateFilterType becomes AutoGeneratedFilterType
  • BehaviourFlags
    • PreserveFPU becomes PreserveFloatingPointUnit
  • Capabilities (formerly Caps)
    • Changes from struct to class
    • Lots of capabilities now spelled out in full
  • ClipPlaneManager (formerly ClipPlane)
  • ClipPlaneManagerCollection (formerly ClipPlanes)
  • ConstantDescription
    • DefaultValue returns a GraphicsBuffer
    • RegisterSet - removed
  • ConstantTable
    • BufferData, pCachedData - added (though pCachedData looks like it should be private)
    • GraphicsStream replaced by GraphicsBuffer throughout
  • CubeTexture
    • New File and stream based constructors added
    • AddDirtyRectangle() removed - seems like its replaced by the overload that takes a nullable second parameter. I didn't think nullable types are supposed to be used for optional parameters.
    • CheckRequirements - Added
    • All LockRectangle overload replaced with Lock method using GraphicsBuffer and generics.
  • CubeTextureRequirements
    • Constructor now requires arguments
  • Device
    • No longer sealed - might be nice if its not an accident!
    • Constructor and Present that takes a Windows.Forms.Control - removed.
    • Device caps becomes Capabilities
    • AvailableTextureMemory becomes EstimatedTextureMemory
    • GetBackBuffer, PresentationManager - removed
    • GetDisplayMode - added
    • CheckCooperativeLevel - now returns ResultCode rather than using out params
    • ColorFill, DrawRectangle/TrianglePatch, Present, UpdateSurface - now takes a nullable. Again is this using nullalbe instead of simple overrides.
    • DrawUserPrimitives - Now uses a GraphicsBuffer instead of an object
    • GetSamplerStageState*/GetTextureStageState* - now GetSamplerState*/GetTextureState*
    • GetStreamSource - now only takes a streamNumber parameter and returns StreamInformatin instead of VertexBuffer
    • SetStreamSource - extra override for streamNumber and StreamInformation
    • SetPSConstant*, SetVSConstant* - becomes SetPixelShaderConstant*/SetVertexShaderConstant* and now use GraphicsBuffer instead of GraphicsStream
    • ValidateDeviceParams becomes ValidateDeviceParameters
    • event CancelEventHandler DeviceResizing - removed
  • DeviceCreationParameters
    • Behaviour becomes BehaviourFlags
    • FocusWindow - removed.
  • DisplayMode
    • Equals, ==, != - added
  • Effect
    • No longer sealed
    • FromFile, FromStream, FromString - overloads simplified
    • StateManaged becomes EffectStateManager
    • IsTechniqueValid(EffectHandle, returnValue) becomes ValidateTechniqueResult
  • EffectCompiler
    • CompileEffect now returns GraphicsBuffer
    • CompileShader now returns CompiledShaderInformation
    • FromFile, FromStream, FromString - overloads simplified
  • EffectInstance
    • GetDefaults, SetDefaults - removed
  • EffectStateManaged
    • Methods all use GraphicsBuffer instead of GraphicsStream
  • EventDescription
    • Type - added
    • Enable becomes IsEnabled
    • TransitionType becomes Transition
  • ExtendedMaterial
    • Material3D becomes Material
    • TextureFilename becomes TextureFileName
  • Font
    • GetGlyphData(int) - removed
    • DrawText becomes DrawString. Again with the nullable arguments that look like they should be overloads
    • GetGlyphData now returns GlyphData rather than a texture
  • FontDescription
    • CharSet become CharacterSet
  • FragmentLinker
    • AllFragments, GetFragment, GatherFragmentsFromFile/Stream/String, LinkShader - all now use GraphicsBuffer instead of GraphicsStream
  • GammaRamp
    • Changed from struct to class
    • Implements IDisposable
  • Geometry
    • ComputeBoundingBox/Sphere now return BoundingBox/Sphere rather than out params. Nice! Simplifies overloads.
    • ComputeTangentFrame, IntersectTri - removed.
  • ImageInformation
    • Constructor now REQUIRES arguments - no default constructor
    • ImageFileFormat becomes ImageFormat
    • MipLevels becomes NumberMipLevels
  • IndexBuffer
    • No longer sealed
    • CreateGeneric - added
    • SizeInBytes - removed
    • Lock - methods now take and return GraphicsBuffer instead of GraphicsStream and array
    • Equals, ==, != - added
  • IndexBufferDescription
    • Format - added
    • Is16BitIndices - removed
    • Properties not include 'set'
  • IntegratedMetricTensor
    • All methods use GraphicsBuffer instead of GraphicsStream
  • IntersectInformation
    • Dist becomes Distance
  • KeyCallback
    • CallBackData becomes CallbackData
  • KeyQuaternion, KeyVector3
    • Properties have 'set' added.
  • Light
    • Type becomes LightType
    • FromLight becomes UpdateFromLight
  • Manager
    • All Check* functions that used to use out params are renamed to Check*Result and return a ResultCode
    • GetDeviceCaps becomes GetDeviceCapabilities
    • ==, != - removed
    • RegisterSoftwareDevice - added
  • Material
    • Ambient, Diffuse, Emissive, Specular - removed. Use AmbientColor, etc [nice to see this confusing mess tidied up]
    • SpecularSharpness becomes Power
    • ==, != - removed

New Classes/Structs:

  • BoundingBox
  • BoundingSphere
  • CompiledShaderInformation
  • Constants - this has all the Guid constants that used to be dotted around e.g. in InterfaceGuid
  • GlyphData

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

  • Light::UpdateFromLight - should this be a copy constructor? Smells like one.
  • Get_, Set_ methods missing from KeyQuaternion, KeyVector3, IndexBufferDescription (and probably others)
  • IntersectTri!!!! I know nobody understand barycentric coordinates but why is this gone?
  • FragmentLinker::AllFragments - should this be Fragments - you don't say 'all' on other collections
  • FragmentLinker::GetFragment() - should this be Fragments[] - also sensible for a collection
  • Lots of places with Nullable arguments that seem to be used to simplify overload lists. I'm pretty sure this isn't what they are supposed to be used for and feels more like C++ optional arguments. If you want to have an overload without a parameter then create an overload rather than accepting null.
  • Capabilities using full names. This appears to have been a rather half hearted attempt. Some of the Enum types have been expanded but not the property names. caps become capabilities most of the time, Max and Min never get spelt out in full. Seems like a work in progress?
  • Device::Device, Device::Present, DeviceCreationParameters::FocusWindows. We need the forms integration for managed code. Seems like a bit of a loss of functionality. Creation requires an IntPtr - welcome to 1985!
  • ConstantTable::pCachedData - should be private
  • ClipPlaneManager - why rename this it *IS* a clip plane. ClipPlaneManagerCollection (formerly ClipPlanes) - rename also seems wrong.
Updated 10/6/2005 5:00:00 PM by Zman