Porting WW: Needed Functionality

Needed Functionality
This currently is an mostly complete list of the Microsoft.DirectX functionality within WorldWind. You can view the current status here Porting_WW:_Current_DirectX. This list needs to analyzed and trimmed to the minimum before selecting a 3D engine.


 * 1) Caps - Represents the capabilities of the hardware exposed through the Microsoft Direct3D object.
 * 2) CustomVertex
 * 3) *CustomVertex.PositionColored[] - custom vertex format structure that contains postion and color information
 * 4) *CustomVertex.TransformedColored[] - custom vertex format structure that contains transformed vertices and color information
 * 5) Device - provides access to devices, properties, set behavior, perform initialization, etc.
 * 6) *BeginScene - Begins a scene.
 * 7) *Clear - Clears the viewport or a set of rectangles in the viewport to a specified RGBA color, clears the depth buffer, and erases the stencil buffer.
 * 8) *DeviceCaps – Retrieves the capabilities of the rendering device [where used?]
 * 9) **MaxTextureHeight – Retrieves the maximum texture height for the current device.
 * 10) **SupportsHardwareTransformAndLight -
 * 11) *DeviceLost - Occurs when a device is about to be lost (for example, immediately prior to a reset).
 * 12) *DeviceReset - Occurs after a device is reset, allowing an application to re-create all Pool.Default resources.
 * 13) *DeviceResizing - Occurs when a device is resizing, allowing the application to cancel the default handling of the resize.
 * 14) *EndScene - Ends a scene that was started by calling the Device.BeginScene method.
 * 15) *Lights - Retrieves the LightsCollection collection on the current device.
 * 16) *Present - Presents the display with the contents of the next buffer in the sequence of back buffers owned by the device
 * 17) *RenderState - Retrieves a render-state value for a device.
 * 18) *Reset - Resets the presentation parameters for the current device.
 * 19) *SamplerState - Retrieves a device's sampler states.
 * 20) *SetTexture - Assigns a texture to a device stage.
 * 21) *TestCooperativeLevel - Reports the current cooperative-level status of the Direct3D device for a windowed or full-screen application.
 * 22) *TextureState - Retrieves a state value for an assigned texture.
 * 23) *Transform - Retrieves a matrix that describes a transformation state.
 * 24) **Projection
 * 25) **View
 * 26) **World
 * 27) *VertexFormat - Retrieves or sets the supported flexible vertex formats.
 * 28) *Viewport - Retrieves or sets the viewport parameters for the current device.
 * 29) **Height
 * 30) **Width
 * 31) DeviceType - Specifies a device type.
 * 32) *Hardware
 * 33) *Reference
 * 34) Font - Encapsulates the textures and resources needed to render a specific font on a specific device.
 * 35) *DrawText – draws formatted text
 * 36) FontDescription - Defines the attributes of a font.
 * 37) *FaceName - Retrieves or sets the name of the font.
 * 38) *Height - Retrieves or sets the height of the font in logical units
 * 39) *IsItalic - Determines whether a font is italic.
 * 40) *Quality - Retrieves or sets the output quality of a font.
 * 41) *Weight - Retrieves or sets the weight of a font.
 * 42) Format - Defines various types of surface formats.
 * 43) *Dxt3 - DXT3 compression texture format.
 * 44) ImageFileFormat - Defines the supported image file formats.
 * 45) Line - Implements line drawing using textured triangles.
 * 46) *Begin - Prepares a device to draw lines.
 * 47) *Draw - Draws a line strip in screen space. Input is in the form of an array that defines points (of Vector2) on the line strip.
 * 48) *End - Restores the device to the state it was in when Line.Begin was called.
 * 49) Manager - Provides information about the environment, and enumerates and retrieves device capabilities.
 * 50) *GetDeviceCaps - Retrieves information specific to a device.
 * 51) Matrix – describes and manipulates a matrix
 * 52) *LookAtRH - Builds a right-handed look-at matrix.
 * 53) *Multiply - Determines the product of two matrices.
 * 54) *PerspectiveFovRH - Builds a right-handed perspective projection matrix based on a field of view (FOV).
 * 55) *RotationAxis – Builds a matrix that rotates around an arbitrary axis
 * 56) *RotationYawPitchRoll - Builds a matrix with a specified yaw, pitch, and roll.
 * 57) *RotationZ - Builds a matrix that rotates around the z-axis.
 * 58) *Translation - Builds a matrix using specified offsets.
 * 59) Quaternion - describes and manipulates a quaternion
 * 60) *RotationAxis - Builds a quaternion that is rotated around an arbitrary axis.
 * 61) *RotationYawPitchRoll - Builds a quaternion with the given yaw, pitch, and roll.
 * 62) Plane – describes and manipulates a plane
 * 63) *Normalize – returns the normal of a plane
 * 64) PresentParameters - Describes the presentation parameters.
 * 65) *AutoDepthStencilFormat - Retrieves or sets the DepthFormat of the depth stencil surface the device creates.
 * 66) *BackBufferHeight - Retrieves or sets the height of a swap chain's back buffers, in pixels.
 * 67) *BackBufferWidth - Retrieves or sets the width of a swap chain's back buffers, in pixels.
 * 68) *EnableAutoDepthStencil - Retrieves or sets a Boolean value that indicates whether Microsoft Direct3D manages depth buffers for an application.
 * 69) *PresentationInterval - Retrieves or sets the maximum rate at which the swap chain's back buffers can be presented.
 * 70) *SwapEffect - Retrieves or sets the swap effect.
 * 71) *Windowed - Boolean value that indicates whether an application is running in a windowed mode.
 * 72) Sprite – provides methods and properties to simplify the drawing of sprites
 * 73) *Begin - Prepares a device for drawing sprites.
 * 74) *Dispose - Immediately releases the unmanaged resources used by the Sprite object.
 * 75) *Draw - Adds a sprite to the list of batched sprites.
 * 76) *End - Restores the device to the state it was in before Sprite.Begin was called.
 * 77) *Transform - Retrieves or sets a Matrix object.
 * 78) Surface – queries and prepares surfaces
 * 79) *Description – description of a surface
 * 80) SurfaceDescription – describes a surface
 * 81) *Height
 * 82) *Width
 * 83) Texture
 * 84) *GetLevelDescription – retrieves a level description of a texture
 * 85) *GetSurfaceLevel – retrieves the specified texture surface level
 * 86) *LockRectangle – locks a rectangle on a texture resource
 * 87) *TextureLoader.FromFile – Creates a texture from a file
 * 88) *TextureLoader.FromStream – creates a texture from a file in memory
 * 89) *UnlockRectangle – unlocks a rectangle on a texture resource
 * 90) *Filter [enum] – defines texture filtering modes for a texture stage
 * 91) *LockFlags [enum] – defines the type of lock to perform
 * 92) *Pool [enum] – Memory class that holds buffers for a resource
 * 93) Vector2 - Describes and manipulates a vector in two-dimensional (2-D) space.
 * 94) Vector3 – Describes and manipulates a vector in three-dimensional (3-D) space.
 * 95) *Cross – Determines the cross product of two 3-D vectors
 * 96) *Dot - Determines the dot product of two 3-D vectors
 * 97) *LengthSq – Returns the square of the length of a 3-D vector
 * 98) *Normalize – returns the normalized version of a 3-D vector
 * 99) *Project – Projects a vector from object space into screen space.Scale - Scales a 3-D vector
 * 100) *Subtract - Subtracts two 3-D vectors
 * 101) *TransformCoordinate – Transforms a 3-D vector or an array of 3-D vectors by a given matrix, projecting the result back into w = 1.
 * 102) *Unproject - Projects a vector from screen space into object space.
 * 103) ViewPort - Retrieves or sets the viewport parameters for the current device.
 * 104) *MaxZ
 * 105) *MinZ