<!-- ##### SECTION Title ##### -->
visu_extension

<!-- ##### SECTION Short_Description ##### -->
All objects drawn by V_Sim are defined in by a #OpenGLExtension object

<!-- ##### SECTION Long_Description ##### -->
<para>
All objects that are drawn by V_Sim are handled by a #OpenGLExtension object.
Such an object has an OpenGL list. This list is only COMPILED. When V_Sim receives
the 'OpenGLAskForReDraw' or the 'OpenGLForceReDraw' signals, each list of all
known #OpenGLExtension are excecuted. This excecution can be canceled if the used flag
of the #OpenGLExtension object is set to FALSE. The order in which the lists are called
depends on the priority of the #OpenGLExtension object. This priority is set to
#OPENGL_EXTENSION_PRIORITY_NORMAL as default value, but it can be tune by a call to
OpenGLExtensionSet_priority(). This priority is an integer, the lower it is, the sooner
the list is excecuted.
</para>
<para>
The method registerOpenGLExtension() is used to declare to V_Sim that there is a new
#OpenGLExtension object available. This allows to create extension when V_Sim is already
running. Nevertheless, an extension must be initialized in the initialisation process,
it is better to add an #initOpenGLExtensionFunc method in the #listInitExtensionFunc array
declared in extensions/externalOpenGLExtensions.h.
</para>
<para>
Once again, the OpenGL list corresponding to an OpenGL extension is COMPILE only.
Then, OpenGL methods like glIsenabled() are totally unusefull because it is called when the
list is compiled not when the list is called. If the extension needs to alter some OpenGL
state, such as desable GL_LIGHTING, it needs to set a flag for the extension. With this flag,
V_Sim will save the OpenGL states and restore it when the list is called. Use
OpenGLExtensionSet_saveOpenGLState() to set this flag.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### STRUCT OpenGLExtension_struct ##### -->
<para>

</para>

@name: 
@description: 
@objectListId: 
@rebuild: 
@priority: 
@saveState: 
@isSensitiveToRenderingMode: 
@preferedRenderingMode: 
@used: 

<!-- ##### TYPEDEF OpenGLExtension ##### -->
<para>

</para>


<!-- ##### USER_FUNCTION rebuildObjectListFunc ##### -->
<para>

</para>

@dataObj: 


<!-- ##### MACRO OPENGL_EXTENSION_PRIORITY_FIRST ##### -->
<para>

</para>



<!-- ##### MACRO OPENGL_EXTENSION_PRIORITY_HIGH ##### -->
<para>

</para>



<!-- ##### MACRO OPENGL_EXTENSION_PRIORITY_NORMAL ##### -->
<para>

</para>



<!-- ##### MACRO OPENGL_EXTENSION_PRIORITY_LOW ##### -->
<para>

</para>



<!-- ##### MACRO OPENGL_EXTENSION_PRIORITY_LAST ##### -->
<para>

</para>



<!-- ##### FUNCTION OpenGLExtension_new ##### -->
<para>

</para>

@name: 
@description: 
@objectListId: 
@rebuild: 
@Returns: 


<!-- ##### FUNCTION OpenGLExtension_free ##### -->
<para>

</para>

@extension: 


<!-- ##### FUNCTION OpenGLExtensionGet_list ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION OpenGLExtensionGet_active ##### -->
<para>

</para>

@extension: 
@Returns: 


<!-- ##### FUNCTION OpenGLExtensionSet_active ##### -->
<para>

</para>

@extension: 
@value: 


<!-- ##### FUNCTION OpenGLExtensionSet_priority ##### -->
<para>

</para>

@extension: 
@priority: 


<!-- ##### FUNCTION OpenGLExtensionSet_saveOpenGLState ##### -->
<para>

</para>

@extension: 
@saveState: 


<!-- ##### FUNCTION OpenGLExtensionSet_sensitiveToRenderingMode ##### -->
<para>

</para>

@extension: 
@status: 


<!-- ##### FUNCTION OpenGLExtensionSet_preferedRenderingMode ##### -->
<para>

</para>

@extension: 
@value: 
@Returns: 


<!-- ##### FUNCTION OpenGLExtensionRegister ##### -->
<para>

</para>

@extension: 


<!-- ##### FUNCTION OpenGLExtensionRemove ##### -->
<para>

</para>

@extension: 


<!-- ##### FUNCTION callAllExtensionsLists ##### -->
<para>

</para>



<!-- ##### FUNCTION rebuildAllExtensionsLists ##### -->
<para>

</para>

@dataObj: 


<!-- ##### FUNCTION initOpenGLExtensions ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION loadExtensions ##### -->
<para>

</para>



