Software Technology Choices

We have decided on a few key pieces of software technology to facilitate the implementation.

OpenGL

OpenGL is a standard software API for 3D graphics. OpenGL was originally developed by SGI, when it was called just GL, but in 1992 they released it as an open standard dubbed OpenGL. The design of the OpenGL API is meant to allow its implementation to be accelerated directly in hardware on many modern video graphics cards. It is really the only option for accelerated graphics under Linux at present, while it also competes well with DirectX on Windows platforms. Besides being accelerated, one of its advantages is a viewport abstraction, or real world coordinates. Geometric primitives can be drawn in their real world coordinates, and OpenGL can easily handle (accelerated) transformations of those coordinates for rendering, panning, zooming, and clipping. Though OpenGL targets 3D applications, all of the benefits of using it for 3D also apply to using it only for 2D.

Since there are accelerated implementations of the OpenGL API on both Linux and Windows, the core of the radar display drawing code will be source-code portable between both platforms.

On the Linux side, hardware acceleration of OpenGL is available because various drivers for the XFree86 X11 server implementation support the XFree86 Direct Rendering Infrastructure (DRI).

Qt GUI Library

The Qt/Desktop library developed by Trolltech is a cross-platform C++ GUI toolkit released for Linux with an open source license. It has a mature, clean, object-oriented interface, many sophisticated toolkit components (inluding an OpenGL interface), and support for typesafe signals and slots generated from a meta-object compiler (moc). Also, one crucial advantage for Qt is its advanced GUI designer.

Other projects have already used Qt with great success, notably MAPR. RAF has also begun converting its Motif-based software to Qt, with the intention of eventually running display tools like ncplot on both Windows and Linux hosts.

ACE

ACE is the ADAPTIVE Communication Environment. It is a software API for facilitating C++ network programming through the use of well-thought-out object-oriented patterns and paradigms. It includes not just socket level TCP programming but also shared memory, memory-mapped files, multicast, thread and concurrency programming, and event handling. The API abstraction also hides operating system details, so software written to the ACE interface can compile and run on both Linux and Windows.

UDP Broadcast

Though this seems an obvious choice on the surface for meeting the high bandwidth requirements of radar data, especially Rapid DOW, with as little overhead as possible, there were other considerations. There are other high-speed networks and data buses, and even for ethernet there are reliable multicast protocols in addition to the unreliable user datagram protocol (UDP).

R-DOW will rely on gigibit ethernet. It appears to support the necessary bandwidth, and its commodity components offer one of the least expensive networking options, both in terms of hardware cost and in terms of capitalizing on existing familiarity and OS support.

A broadcasting protocol, be it multicast or UDP broadcast, obviously also offers scalability. Multiple hosts can tap into the broadcast stream without consuming any extra network bandwidth and without requiring any extra configuration on the part of the producer.