c12912ac81782bfcd9e0272741b8fbaa4b887fa8
[occt.git] / src / OpenGl / OpenGl_Extension.hxx
1 /*
2  * Fonction
3  * ~~~~~~~~
4  *   Gestion des extensions sous OpenGL
5  *
6  *
7  * Attention:
8  * ~~~~~~~~~~~
9  *  Ce package a ete teste sur SGI, OSF, SUN,  HP et WNT.
10  *
11  * Remarques:
12  * ~~~~~~~~~~~
13  *  Le InitExtensionGLX permet d'initialiser le display. Ceci est necessaire
14  *  pour travailler sur les extensions de GLX. On ne peut appeler QueryExtensionGLX
15  *  si on n'a pas fait cette manip.
16  *  Par contre QueryExtension gere les extensions a GL,  on n'a pas besoin du
17  *  Display.
18  *
19  *  Pour l'instant on ne gere pas les extensions a GLU et a WGL.
20  *
21  * Historique des modifications
22  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23  *   14-10-97: FMN ; Creation
24  *   23-10-97: FMN ; Ajout gestion glx
25  *   19-11-97: FMN ; Ajout GetCurrentDisplay
26  *   04-12-97: FMN ; Ajout supportsOneDotOne
27  *   19-06-98: FMN ; Portage Optimizer (C++)
28  */
29 /*----------------------------------------------------------------------*/
30
31 #ifndef _OPENGL_EXTENSION_H__
32 #define _OPENGL_EXTENSION_H__
33
34 /*----------------------------------------------------------------------*/
35 /*
36  * Includes
37  */
38
39 #if defined(WNT) && !defined(HAVE_NO_DLL)
40 # ifdef __OpenGl_DLL
41 #  define EXPORT __declspec(dllexport)
42 # else
43 #  define EXPORT
44 # endif  /* DLL */
45 # ifdef STRICT
46 #  undef STRICT
47 # endif
48 # define STRICT
49 # include <windows.h>
50 #else
51 # define EXPORT
52 #endif  /* WNT */
53
54 #include <GL/gl.h>
55 #include <GL/glu.h>
56
57 #ifdef WNT
58 # include <windows.h>
59 # ifndef Display
60 # define Display char
61 # endif  /* Display */
62 #else
63 # include <GL/glx.h>
64 #endif /* WNT */
65
66
67 #ifdef GL_VERSION_1_1
68 #define GL_EXT_vertex_array                 1
69 #define GL_EXT_polygon_offset               1
70 #define GL_EXT_blend_logic_op               1
71 #define GL_EXT_texture                      1
72 #define GL_EXT_copy_texture                 1
73 #define GL_EXT_subtexture                   1
74 #define GL_EXT_texture_object               1
75 #endif /* GL_VERSION_1_1 */
76
77
78 #ifndef  GLU_VERSION_1_2
79 #define GLUtesselator    GLUtriangulatorObj
80 #define GLU_TESS_BEGIN   100100
81 #define GLU_TESS_VERTEX  100101
82 #define GLU_TESS_END     100102
83 #define GLU_TESS_ERROR   100103
84 #define GLU_TESS_COMBINE 100105
85 #endif
86
87 #define INVALID_EXT_FUNCTION_PTR 0xffffffff
88 /* 
89  * Contournement temporaire glPolygoneOffsetEXT 
90  * La syntaxe change entre OpenGL 1.0 et OpenGL 1.1
91  */
92  
93 #if defined (__sun) || defined (__osf__) || defined (__hp)
94 #define glPolygonOffsetEXT(a, b) glPolygonOffset(a, b)
95 #endif
96 #if defined (__sun) 
97 #define GL_POLYGON_OFFSET_EXT   GL_POLYGON_OFFSET_FILL            
98 #endif
99
100 #ifdef WNT
101 #define glPolygonOffsetEXT(a, b) glPolygonOffset(a, b)
102 #define GL_POLYGON_OFFSET_EXT   GL_POLYGON_OFFSET_FILL            
103 #endif /* WNT */
104
105 #if defined (__sun) || defined (__osf__) || defined (__hp) || defined (__sgi) 
106 #else 
107 typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
108 #endif
109
110 /*----------------------------------------------------------------------*/
111 /*
112  * Prototypes
113  */
114
115 /*
116  * Points d'entree Public du module 
117  */
118
119
120 extern GLboolean InitExtensionGLX(Display *display);
121 extern GLboolean QueryExtensionGLX(char *extName);
122
123 extern GLboolean QueryExtension(char *extName);
124
125 extern Display *GetCurrentDisplay(void);
126
127 extern GLboolean supportsOneDotOne(void);
128
129 extern GLboolean CheckExtension(char *extName, const char *extString);
130
131
132 /* Methods defined in OpenGl_GraphicDriver.cxx */
133
134 EXPORT GLboolean OpenGl_QueryExtensionGLX (const char *extName);
135
136 EXPORT GLboolean OpenGl_QueryExtension    (const char *extName);
137
138 /*----------------------------------------------------------------------*/
139
140 #endif /* _OPENGL_EXTENSION_H__ */