Today, we are pleased to announce the first stable release of Forge - a high performance OpenGL visualization library for C/C++ applications that use CUDA/OpenCL as computational backbone.
<h3>Features</h3>
Forge's functionality is primarily exposed via C API. We recommend using the C++ wrapper written atop C API. The C API is mainly intended to enable easy write of bindings for other languages. First, we shall go through the details of how to create a window using Forge and later illustrate the rest of functionality from v1.0 using some sample code snippets and images.

<h4>How to Create a Window</h4>

<ul> 	
 	<li>Full documentation of the library can be found <a href="http://arrayfire.org/forge/index.htm">here</a>.</li>
 	<li>Forge exposes all it's objects and function via the namespace <code>forge</code>. It has the following main classes.
<ul>
 	<li><code>forge::Window</code> - objects of this class provide the rendering canvas over which other objects are rendered.</li>
 	<li><code>forge::Image</code> and <code>forge::Chart</code> are the two main rendering objects that drawn on <code>forge::Window</code>
<ul>
 	<li><code>forge::Image</code> is a rendering of a simple image to Window.</li>
 	<li><code>forge::Chart</code> is base object to which other plotting objects (listed below) are appended and rendered in the order of addition with alpha blending.
<ul>
 	<li><code>forge::Histogram</code> - bar graphs</li>
 	<li><code>forge::Plot</code> - 2D and 3D plots</li>
 	<li><code>forge::Surface</code> - 3D surface plots</li>
 	<li><code>forge::VectorField</code> - 2D and 3D vector fields</li>
</ul>
</li>
</ul>
</li>
 	<li><code>forge::Font</code> - provides the choice of selecting the font for your program's rendering. You may skip using this class and the library will defer to the default fonts.</li>
 	<li><code>forge::Error</code> - This is the exception object that you should use to catch the errors thrown by Forge.</li>
</ul>
</li>
<li> Forge provides basic mouse interactivity such as pan, zoom and trackball rotation. </li>
<li> All chart objects can have legends specific to each type of plot added to charts. </li>
<li> Default window toolkit used by Forge is <a href="http://www.glfw.org/" target="_blank">GLFW</a>. However, you can also build Forge with <a href="https://www.libsdl.org/" target="_blank">SDL2</a>. </li>
 	<li>Forge being a rendering only library, provides only the logic for rendering. However, we do provide helper functions through <a href="https://github.com/arrayfire/forge/blob/devel/include/ComputeCopy.h">ComputeCopy.h headers</a> for the user's convenience.</li>
 	<li>You can find the list of examples <a href="http://arrayfire.org/forge/examples.htm">here</a>. These examples use the above <code>ComputeCopy</code> header.</li>
</ul>

<h4>Sample Images</h4>

<table border="0">
<tbody>
<tr>
<td>

[caption id="attachment_9630" align="alignnone" width="283"]<a href="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_image.png"><img src="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_image-283x300.png" alt="Image" width="283" height="300" class="size-medium wp-image-9630" /></a> Image[/caption]

</td>
<td>

[caption id="attachment_9629" align="alignnone" width="300"]<a href="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_hist.png"><img src="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_hist-300x203.png" alt="Histogram" width="300" height="203" class="size-medium wp-image-9629" /></a> Histogram[/caption]

</td>
</tr>
<tr>
<td>

[caption id="attachment_9628" align="alignnone" width="300"]<a href="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_bubble.png"><img src="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_bubble-300x254.png" alt="2D Plot" width="300" height="254" class="size-medium wp-image-9628" /></a> 2D Plot[/caption]

</td>
<td>

[caption id="attachment_9634" align="alignnone" width="300"]<a href="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_surface.png"><img src="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_surface-300x238.png" alt="Surface" width="300" height="238" class="size-medium wp-image-9634" /></a> Surface[/caption]

</td>
</tr>
<tr>
<td>

[caption id="attachment_9632" align="alignnone" width="300"]<a href="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_plot31.png"><img src="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_plot31-300x251.png" alt="3D Plot" width="300" height="251" class="size-medium wp-image-9632" /></a> 3D Plot[/caption]

</td>
<td>

[caption id="attachment_9633" align="alignnone" width="300"]<a href="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_plot32.png"><img src="https://sandbox.arrayfire.com/wp-content/uploads/2017/05/fgv1_plot32-300x253.png" alt="Rotated 3D Plot" width="300" height="253" class="size-medium wp-image-9633" /></a> Rotated 3D Plot[/caption]

</td>
</tr>
</tbody>
</table>

<h4>Community</h4>
Forge is continually improving through addition of new features. We welcome your feedback:

General discussion forums on the <a href="https://groups.google.com/forum/#!forum/arrayfire-users" target="_blank">ArrayFire Google Group</a>
Live discussion chat on the <a href="https://gitter.im/arrayfire/forge?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge" target="_blank">Forge Gitter</a>
Issue reports on the <a href="https://github.com/arrayfire/forge/issues" target="_blank">Forge GitHub</a>
Finally, as you find success with Forge, we invite you to contribute a post to this blog to share with the broader community. Email sales@arrayfire.com to contribute to this blog.