- Features
-
- AGI.Graphics.Overlays
-
- Added an initial version of overlays. Overlays are used to render objects in 2D screen-space on top of a 3D scene. For example, overlays can be used to display your company's logo, create a heads-up display (HUD), or create a translucent user interface. See the overview for details.
- AGI.Graphics.Primitives
-
- Added a DisplayConditionPerPoint property to the point batch and a DisplayConditionPerString property to the text batch. This property is evaluated per point/string in the batch as opposed to the DisplayCondition property which is evaluated for the entire batch.
- AGI.Graphics.Imaging.Video
-
- IAgGxVideoData has improved support for asynchronous network streams and H.264 transport streams.
- Added NextFrame and NextAnimationFrame to IAgGxVideoData to allow for more fine grained control of frame decoding.
- Added Play, Pause, Stop, Reset, and IsPlaying to IAgGxVideoData to allow for better control over video playback.
- AGI.Graphics.Scene3D
-
- AgGxCamera now provides interfaces to take snapshots (AgGxCameraSnapshot) and record video (AgGxCameraVideoRecording). See the new snapshot and video recording overviews.
- Added FarNearPlaneRatio property to AgGxCamera. See the updated overview.
- Added BackgroundColor property to AgGxScene.
- AGI.UI.Controls.Graphics
-
- Added AnimationRefresh property to AGIControl3D.
- Added RealTime and XRealTime enumerations to AgGxAnimationMode.
- Added RealTimeOffset and RealTimeMultiplier properties to AGIControl3D.
- Improvements
- Summary of Breaking Changes
-
- AgGxVertexUpdate was moved from AGI.Graphics.Primitives to AGI.Graphics
- ImageWidth was renamed to Width and ImageHeight was renamed to Height in both IAgGxImageAttributes and IAgGxConstantImageAttributes.
- When a primitive in a composite is picked, the order of objects in the IAgGxPickResult.Objects is now in the opposite order. The composite is first, followed by the primitive. See the Picking Overview.
- Renamed IAgGxObjectCollection to IAgGxVariantCollection and AgGxObjectCollection to AgGxVariantCollection. For .NET users, the corresponding method signatures remain unchanged. The variant datatype is still represented as System.Object.
- Renamed AGIControl3D.RefreshDelta to AGIControl3D.TargetFrameRate and AGIControl3D.UpdateDelta to AGIControl3D.TimeStep.
- Renamed AgGxAnimationMode to AgGxAnimationRefresh.
- No updates.
- Features
-
- AGI.Graphics.Primitives
-
- Added the text batch primitive. See the overview.
- AGI.Graphics.Imaging.Video
-
- AgGxVideoData replaced AgGxImageDataVideo. See the new Dynamic Images from Video Overview.
- Added the ability to render dynamic images on COLLADA models. See the Dynamic Images on Models Overview.
- IAgGxDynamicImageDataConditioner was added, to allow for conditioning of dynamic images.
- Improvements
-
- AGI.Graphics.Primitives
-
- Improved polyline, triangle mesh, and point batch rendering performance. For scenes with thousands of these primitives, performance increased as much as 50%.
- Improved textured surface mesh rendering performance by up to 25%.
- Fixed artifacts when the viewer is zoomed in close on a textured surface mesh.
- Documentation
-
- Added an overview on the new text batch primitive.
- The Performance Overview now includes information on the text batch primitive.
- Added overviews on Dynamic Images from Video and Dynamic Images on Models.
- General
-
- The express editions of Visual Studio are now supported.
- Improved globalization. Time now works with other culture setups/languages.
- Summary of Breaking Changes
-
- AgGxPrimitiveManager.Add no longer takes the AgGxMovement parameter.
- AgGxVideoData replaced AgGxImageDataVideo. AgGxVideoData is now in AGI.Graphics.Imaging.Video.
- Features
-
- AGI.Graphics.GlobeInlays
-
- AgGxGlobeInlayProjectedImage was added to provide projected imagery on terrain or the ellipsoid.
- AGI.Graphics.Imaging
-
- AgGxImageProjectionData was added to provide support for projecting images on terrain or the ellipsoid.
- The IAgGxDynamicImageProjection interface was added to provide support for dynamic updating of projection data, similar to IAgGxDynamicImageData. See the Dynamic Images and Projections Overview.
- AgGxImageDataVideo was added to provide dynamic image data from video files and synchronization with animation. The current version of the library supports most AVI formats. Future versions of the library will support additional video formats and streaming video.
- AGI.Graphics
- Improvements
-
- Documentation
-
- There is a new overview on Dynamic Images and Projections.
- AGI.Graphics.Primitives
-
- The surface mesh primitive was renamed from AgGxPrimitiveMeshSurface to AgGxPrimitiveSurfaceMesh. It is no longer a prototype. The new SetTextureMatrix method can be used to rotate, translate, and/or scale a texture applied to the mesh. See the Surface Mesh Overview.
- AGI.Graphics.Imaging
-
- Image Conditioners can now be applied directly to IAgGxImageData with Apply and ApplyInPlace. For convenience, IAgGxImageData now contains Flip and Rotate conditioners.
- IAgGxImageAttributes now has a BufferPolicy property to allow for fine tuning of memory management.
- IAgGxImageData.ScanEntry is no longer read-only.
- Added PixelAspectRatio property to IAgGxImageAttributes.
- AgGxConditionerConvolution now has an equivalent GetKernel accessor for its SetKernel method.
- AGI.UI.Controls.Graphics
-
- Control properties can now be set at design time.
- Added better categorization of properties and events, and better documentation in the designer.
- Added support for setting of individual MouseMode properties.
- Added animation and related events.
- Summary of Breaking Changes
-
- Many enumerations were renamed. Enumeration types are now prefixed with AgGx instead of AgEGx. The e prefix was dropped from enumeration values.
- Moved AgGxVerticalOrigin and AgGxHorizontalOrigin from AGI.Graphics.Scene3D to AGI.Graphics.
- AGI.Graphics.Scene3D
-
- Removed the Capabilities property from AgGxSceneManager. Also removed AgGxCapabilities. Now call Supported or SupportedWithTexture on AgGxPrimitiveSurfaceMesh.
- AGI.Graphics.Primitives
-
- The surface mesh primitive was renamed from AgGxPrimitiveMeshSurface to AgGxPrimitiveSurfaceMesh. Minor changes were made to some methods. See the Surface Mesh Overview.
- AGI.Graphics.Imaging
-
- Methods in IAgGxImageData were renamed: FromTemplate to LoadFromTemplate, FromDimensions to LoadFromDimensions, FromAttributes to LoadFromAttributes, and FromSize to LoadFromSize.
- The IAgGxImageAttributes FileName and FileType properties were renamed to ImageName and ImageType, respectively.
- AGI.UI.Controls.Graphics
-
- Changed Anim to Animation in property and event names.
- Features
-
- AGI.Graphics.GlobeInlays
-
- Globe inlays now use the same display conditions as primitives. See their DisplayCondition property
- .
- AGI.Graphics.Primitives
-
- AgGxPrimitivePolyline and AgGxPrimitivePointBatch now have SetPartial methods that enable efficient updating of a subset of vertices in a primitive. See the Performance Overview.
- A new property, PrecisionExponent, was added to primitive manager to set the tradeoff between precision and performance when rendering primitives.
- AGI.Graphics.ComputationalGeometry.Astro
-
- A new object, AgGxSurfacePolygonHoles, can be used as input to the surface triangulator to triangulate polygons with holes. See the section in the Triangle Mesh Primitive Overview.
- AGI.Graphics.Imaging
-
- The IAgGxDynamicImageData interface was added to support dynamic images and textures.
- A HasChannel method was added to IAgGxImageAttributes to allow for generic channel querying.
- IAgGxImageAttributes now has a property, MetaData, for working with image metadata.
- AGI.UI.Controls.Graphics
-
- Added Pan method to Control3D. Click the hand button on the toolbar in the QuickStart to enter pan mode. Shift-left mouse click on the globe and move the mouse to grab and move the globe.
- Improvements
-
- Documentation
-
- There are new overviews on Performance and Picking.
- AGI.Graphics.Primitives
-
- AgGxPrimitiveTriangleMesh, AgGxPrimitivePolyline and AgGxPrimitivePointBatch now implement IAgGxPrimitiveWithColor. This allows you to loop through heterogeneous groups of these primitives and modify color without dynamic casting.
- Summary of Breaking Changes
-
- AGI.Graphics.Scene3D
-
- The PickedObject property on AgGxPickResult is now named Objects. Instead of a single object, now it is a collection of all the objects on the pick stack when the pick was recorded. See the Picking Overview.
- IAgGxTexture2DImage, IAgGxTexture2DFont, and IAgGxTexture2DMemory were replaced by IAgGxRendererTexture2D.
- AGI.Graphics.GlobeInlays
-
- Removed IsDisplayed from IAgGxGlobeInlay and removed IAgGxConditionalDisplayInlay. These were replaced with the DisplayCondition property.
- AGI.Graphics.Primitives
-
- All initialize methods on AgGxPrimitiveTriangleMesh, AgGxPrimitivePolyline, and AgGxPrimitivePointBatch now have an AgGxVertexUpdate parameter that influences the efficiency of Set and SetPartial methods. See the Performance Overview.
- Primitive initialize methods no longer have the AgGxMovement parameter. Since it is only used for culling in the primitive manager, it is now the second parameter to AgGxPrimitiveManager.Add. The composite primitive, AgGxPrimitiveComposite, no longer has an initialize method since it only took the AgGxMovement parameter. These changes do not affect the prototype primitives: AgGxPrimitiveMarker and AgGxPrimitiveMeshSurface.
- When initializing or setting the polyline or point batch primitive with per-vertex colors, a new parameter, AgGxRenderPassHint, that indicates if the colors are opaque, translucent, or unknown must be provided. This affects InitializeWithColors, InitializeCartographicWithColors, SetWithColors, and SetCartographicWithColors on both AgGxPrimitivePolyline and AgGxPrimitivePointBatch.
- AGI.Graphics
-
- The ConditionalDisplay property on all primitives was renamed to DisplayCondition.
- IAgGxConditionalDisplay was renamed to IAgGxDisplayCondition. All classes that started with AgGxConditionalDisplay, now start with AgGxDisplayCondition.