0022650: Exception in Primitive Array during Redisplay of Presentable Object
[occt.git] / src / OpenGl / OpenGl_Extension.hxx
CommitLineData
7fd59977 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
107typedef 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
120extern GLboolean InitExtensionGLX(Display *display);
121extern GLboolean QueryExtensionGLX(char *extName);
122
123extern GLboolean QueryExtension(char *extName);
124
125extern Display *GetCurrentDisplay(void);
126
127extern GLboolean supportsOneDotOne(void);
128
129extern GLboolean CheckExtension(char *extName, const char *extString);
130
131
132/* Methods defined in OpenGl_GraphicDriver.cxx */
133
134EXPORT GLboolean OpenGl_QueryExtensionGLX (const char *extName);
135
136EXPORT GLboolean OpenGl_QueryExtension (const char *extName);
137
138/*----------------------------------------------------------------------*/
139
140#endif /* _OPENGL_EXTENSION_H__ */