summaryrefslogtreecommitdiff
path: root/inc/OpenGl_Extension.hxx
blob: 4ca860945224c10cf0aee02f07d1e6f9eb64936e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
 * Fonction
 * ~~~~~~~~
 *   Gestion des extensions sous OpenGL
 *
 *
 * Attention:
 * ~~~~~~~~~~~
 *  Ce package a ete teste sur SGI, OSF, SUN,  HP et WNT.
 *
 * Remarques:
 * ~~~~~~~~~~~
 *  Le InitExtensionGLX permet d'initialiser le display. Ceci est necessaire
 *  pour travailler sur les extensions de GLX. On ne peut appeler QueryExtensionGLX
 *  si on n'a pas fait cette manip.
 *  Par contre QueryExtension gere les extensions a GL,  on n'a pas besoin du
 *  Display.
 *
 *  Pour l'instant on ne gere pas les extensions a GLU et a WGL.
 *
 * Historique des modifications
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *   14-10-97: FMN ; Creation
 *   23-10-97: FMN ; Ajout gestion glx
 *   19-11-97: FMN ; Ajout GetCurrentDisplay
 *   04-12-97: FMN ; Ajout supportsOneDotOne
 *   19-06-98: FMN ; Portage Optimizer (C++)
 */
/*----------------------------------------------------------------------*/

#ifndef _OPENGL_EXTENSION_H__
#define _OPENGL_EXTENSION_H__

/*----------------------------------------------------------------------*/
/*
 * Includes
 */

#if defined(WNT) && !defined(HAVE_NO_DLL)
# ifdef __OpenGl_DLL
#  define EXPORT __declspec(dllexport)
# else
#  define EXPORT
# endif  /* DLL */
#else
# define EXPORT
#endif  /* WNT */

#if defined(WNT)
# ifdef STRICT
#  undef STRICT
# endif
# define STRICT
# include <windows.h>
#endif

#include <GL/gl.h>
#include <GL/glu.h>

#ifdef WNT
# include <windows.h>
# ifndef Display
# define Display char
# endif  /* Display */
#else
# include <GL/glx.h>
#endif /* WNT */


#ifdef GL_VERSION_1_1
#define GL_EXT_vertex_array                 1
#define GL_EXT_polygon_offset               1
#define GL_EXT_blend_logic_op               1
#define GL_EXT_texture                      1
#define GL_EXT_copy_texture                 1
#define GL_EXT_subtexture                   1
#define GL_EXT_texture_object               1
#endif /* GL_VERSION_1_1 */


#ifndef  GLU_VERSION_1_2
#define GLUtesselator    GLUtriangulatorObj
#define GLU_TESS_BEGIN   100100
#define GLU_TESS_VERTEX  100101
#define GLU_TESS_END     100102
#define GLU_TESS_ERROR   100103
#define GLU_TESS_COMBINE 100105
#endif

#define INVALID_EXT_FUNCTION_PTR 0xffffffff
/* 
 * Contournement temporaire glPolygoneOffsetEXT 
 * La syntaxe change entre OpenGL 1.0 et OpenGL 1.1
 */
 
#if defined (__sun) || defined (__osf__) || defined (__hp)
#define glPolygonOffsetEXT(a, b) glPolygonOffset(a, b)
#endif
#if defined (__sun) 
#define GL_POLYGON_OFFSET_EXT   GL_POLYGON_OFFSET_FILL            
#endif

#ifdef WNT
#define glPolygonOffsetEXT(a, b) glPolygonOffset(a, b)
#define GL_POLYGON_OFFSET_EXT   GL_POLYGON_OFFSET_FILL            
#endif /* WNT */

#if defined (__sun) || defined (__osf__) || defined (__hp) || defined (__sgi) 
#else 
typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
#endif

/*----------------------------------------------------------------------*/
/*
 * Prototypes
 */

/*
 * Points d'entree Public du module 
 */


extern GLboolean InitExtensionGLX(Display *display);
extern GLboolean QueryExtensionGLX(const char *extName);

extern GLboolean QueryExtension(const char *extName);

extern Display *GetCurrentDisplay(void);

extern GLboolean supportsOneDotOne(void);

extern GLboolean CheckExtension(const char *extName, const char *extString);


/* Methods defined in OpenGl_GraphicDriver.cxx */

EXPORT GLboolean OpenGl_QueryExtensionGLX (const char *extName);

EXPORT GLboolean OpenGl_QueryExtension    (const char *extName);

/*----------------------------------------------------------------------*/

#endif /* _OPENGL_EXTENSION_H__ */