/**

	\page pagGuideEdgeRendering Edge Enhancement and Wireframe Rendering Tutorial

	This tutorial demonstrates how to improve the perception of the objects in a scene and how to perform hidden line removal wireframe rendering using the edge extraction and enhnacement capabilities of Visualization Library.
	
	<center>
	<table border=1 cellspacing=0 cellpadding=5>
	<tr>
		<td> <b>Edge Rendering Off</b> </td>
		<td> <b>Silhouettes</b> </td>
		<td> <b>Silhouettes + Creases</b> </td>
		<td> <b>Silhouettes + Creases + Hidden Lines</b> </td>
	</tr>
	<tr>
		<td> <img src="pics/pagGuideWireframe3a.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe3b.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe3c.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe3d.jpg"> </td>
	</tr>
	<tr>
		<td> <img src="pics/pagGuideWireframe1a.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe1b.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe1c.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe1d.jpg"> </td>
	</tr>
	<tr>
		<td> <img src="pics/pagGuideWireframe6a.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe6b.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe6c.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe6d.jpg"> </td>
	</tr>
	<tr>
		<td colspan=4> <b>Cartoonish models with silhouette enhancement</b> </td>
	</tr>
	<tr>
		<td> <img src="pics/pagGuideWireframe4b.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe4a.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe5b.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe5a.jpg"> </td>
	</tr>
	<tr>
		<td colspan=4> <b>Hidden line removal wireframe</b> </td>
	</tr>
	<tr>
		<td> <img src="pics/pagGuideWireframe7a.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe7b.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe7c.jpg"> </td>
		<td> <img src="pics/pagGuideWireframe7d.jpg"> </td>
	</tr>
	</table>
	</center>

	In this tutorial we will implement a simple application capable of loading models by drag&drop and applying edge enhancement and hidden line removal wireframe rendering to the whole scene. The user will also be able to interactively switch on and off various edge rendering features:

<table border=1 cellspacing=0 cellpadding=5>
	<tr> <th>Key</th><th>Mode</th> </tr>
	<tr> <td>'1'</td><td>edge rendering off</td> </tr>
	<tr> <td>'2'</td><td>edge rendering on: silhouette only</td> </tr>
	<tr> <td>'3'</td><td>edge rendering on: silhouette + creases</td> </tr>
	<tr> <td>'4'</td><td>edge rendering on: silhouette + creases + hidden lines</td> </tr>
	<tr> <td>'5'</td><td>hidden line removal wireframe: silhouette + creases</td> </tr>
	<tr> <td>'6'</td><td>hidden line removal wireframe: silhouette + creases + hidden lines</td> </tr>
</table>

  The edges are always extracted from the triangles or quads that are part of a vl::Geometry and can be of three types: \a silhouette edges, \a crease edges and \a boundary edges. 
	
	- \a Silhouette edges are those edges that are shared by a backfacing and front facing quad or triangle. 
	
	- \a Crease edges are those edges that are shared by two triangles or quads and that form an angle >= creaseAngle(), ie: 0 means that the two triangles or quads are coplanar; the edges of a cube define 90 degrees angles; the lateral edges of a 10 faces cylinder define 36 (360/10) degrees angles and so on. 
	
	- \a Boundary edges are those edges that belong to a single triangle or quad.

  <img src="pics/pagGuideWireframe_edges.jpg">

For more information see also vl::EdgeExtractor and vl::EdgeRenderer.

	[From \p App_EdgeRendering.cpp]
	\dontinclude App_EdgeRendering.cpp
	\skip class
	\until // Have fun!
*/