Version: 9.16.0
VTKViewer_OpenGLHelper.h
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, OPEN CASCADE
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19
20#ifndef VTKVIEWER_OPENGLHELPER_H
21#define VTKVIEWER_OPENGLHELPER_H
22
23#include <vtkObject.h>
24#include <vtkMatrix4x4.h>
25#include "VTKViewer.h"
26
27#ifdef WIN32
28#include <windows.h>
29#endif
30
31#include <GL/gl.h>
32
33
34#ifndef GL_ARB_shader_objects
35typedef GLuint GLhandleARB;
36#endif
37
38#ifndef APIENTRY
39#define APIENTRY
40#endif
41#ifndef APIENTRYP
42#define APIENTRYP APIENTRY *
43#endif
44
45#ifndef GL_ARB_shader_objects
46typedef char GLcharARB;
47#endif
48
49#ifndef GL_VERTEX_PROGRAM_POINT_SIZE_ARB
50#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
51#endif
52
53#ifndef GL_VERTEX_SHADER_ARB
54#define GL_VERTEX_SHADER_ARB 0x8B31
55#endif
56
57#ifndef GL_FRAGMENT_SHADER_ARB
58#define GL_FRAGMENT_SHADER_ARB 0x8B30
59#endif
60
61#ifndef GL_ARB_point_sprite
62#define GL_POINT_SPRITE_ARB 0x8861
63#define GL_COORD_REPLACE_ARB 0x8862
64#endif
65
66#ifndef GL_ARB_vertex_buffer_object
67typedef ptrdiff_t GLsizeiptrARB;
68
69#define GL_ARRAY_BUFFER_ARB 0x8892
70#define GL_STATIC_DRAW_ARB 0x88E4
71#endif
72
73#ifndef GL_COMPILE_STATUS
74#define GL_COMPILE_STATUS 0x8B81
75#endif
76
77#ifndef GL_CURRENT_PROGRAM
78#define GL_CURRENT_PROGRAM 0x8B8D
79#endif
80
81#ifndef GL_DEBUG_TYPE_ERROR
82#define GL_DEBUG_TYPE_ERROR 0x824C
83#endif
84
85#ifndef GL_LINK_STATUS
86#define GL_LINK_STATUS 0x8B82
87#endif
88
89#ifndef GL_TEXTURE0
90#define GL_TEXTURE0 0x84C0
91#endif
92
93#ifndef GL_VALIDATE_STATUS
94#define GL_VALIDATE_STATUS 0x8B83
95#endif
96
97#ifndef GL_NUM_EXTENSIONS
98#define GL_NUM_EXTENSIONS 0x821D
99#endif
100
101namespace GUI_OPENGL {
102char* readFromFile( std::string fileName );
103}
104
106{
107public:
110
111 void Init();
112
113 bool IsInitialized() const { return mIsInitialized; }
114
115public:
116 bool CreateShaderProgram (const std::string& theFilePath,
117 GLhandleARB& theProgram,
118 GLhandleARB& theVertexShader,
119 GLhandleARB& theFragmentShader) const;
120
121 void DestroyShaderProgram (GLhandleARB theProgram,
122 GLhandleARB theVertexShader,
123 GLhandleARB theFragmentShader) const;
124#ifdef VTK_OPENGL2
125 void SetUniformMatrix (const GLint theLocation,
126 const vtkMatrix4x4* theMatrix) const;
127#endif
128
129protected:
130 typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
131 typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
132 typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
133 typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
134 typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
135 typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
136 typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
137 typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
138 typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
139 typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
140 typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
141 typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
142 typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
143 typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
144 typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
145
146#ifdef VTK_OPENGL2
147 typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
148 typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
149 typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
150 typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB program);
151 typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB program, const GLcharARB *name );
152 typedef void (APIENTRYP PFNGLGETSHADERIVARBPROC) (GLuint shader, GLenum pname, GLint *params);
153 typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
154 typedef void (APIENTRYP PFNGLGETSHADERINFOLOGARBPROC) (GLuint shader, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
155 typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
156 typedef void (APIENTRYP PFNGLGENVERTEXARRAYSARBPROC) (GLsizei n, GLuint *arrays);
157 typedef void (APIENTRYP PFNGLBINDVERTEXARRAYARBPROC) (GLuint array);
158 typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
159 typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
160#endif
161
162public:
163 PFNGLSHADERSOURCEARBPROC vglShaderSourceARB;
164 PFNGLCREATESHADEROBJECTARBPROC vglCreateShaderObjectARB;
165 PFNGLCOMPILESHADERARBPROC vglCompileShaderARB;
166 PFNGLCREATEPROGRAMOBJECTARBPROC vglCreateProgramObjectARB;
167 PFNGLATTACHOBJECTARBPROC vglAttachObjectARB;
168 PFNGLLINKPROGRAMARBPROC vglLinkProgramARB;
169 PFNGLUSEPROGRAMOBJECTARBPROC vglUseProgramObjectARB;
170
171 PFNGLGENBUFFERSARBPROC vglGenBuffersARB;
172 PFNGLBINDBUFFERARBPROC vglBindBufferARB;
173 PFNGLBUFFERDATAARBPROC vglBufferDataARB;
174 PFNGLDELETEBUFFERSARBPROC vglDeleteBuffersARB;
175 PFNGLGETATTRIBLOCATIONARBPROC vglGetAttribLocationARB;
176 PFNGLVERTEXATTRIBPOINTERARBPROC vglVertexAttribPointerARB;
177 PFNGLENABLEVERTEXATTRIBARRAYARBPROC vglEnableVertexAttribArrayARB;
178 PFNGLDISABLEVERTEXATTRIBARRAYARBPROC vglDisableVertexAttribArrayARB;
179
180#ifdef VTK_OPENGL2
181 PFNGLDETACHOBJECTARBPROC vglDetachObjectARB;
182 PFNGLDELETEOBJECTARBPROC vglDeleteObjectARB;
183 PFNGLVALIDATEPROGRAMARBPROC vglValidateProgramARB;
184 PFNGLGETSHADERIVARBPROC vglGetShaderivARB;
185 PFNGLGETPROGRAMIVARBPROC vglGetProgramivARB;
186 PFNGLGETSHADERINFOLOGARBPROC vglGetShaderInfoLogARB;
187
188 PFNGLUNIFORMMATRIX4FVARBPROC vglUniformMatrix4fvARB;
189 PFNGLGENVERTEXARRAYSARBPROC vglGenVertexArraysARB;
190 PFNGLBINDVERTEXARRAYARBPROC vglBindVertexArrayARB;
191 PFNGLUNIFORM1IARBPROC vglUniform1iARB;
192 PFNGLGETUNIFORMLOCATIONARBPROC vglGetUniformLocationARB;
193 PFNGLACTIVETEXTUREARBPROC vglActiveTextureARB;
194 PFNGLGETSTRINGIPROC vglGetStringiARB;
195#endif
196
197protected:
199};
200
201#endif
#define VTKVIEWER_EXPORT
Definition: VTKViewer.h:33
ptrdiff_t GLsizeiptrARB
Definition: VTKViewer_OpenGLHelper.h:67
GLuint GLhandleARB
Definition: VTKViewer_OpenGLHelper.h:35
char GLcharARB
Definition: VTKViewer_OpenGLHelper.h:46
#define APIENTRYP
Definition: VTKViewer_OpenGLHelper.h:42
Definition: VTKViewer_OpenGLHelper.h:106
PFNGLENABLEVERTEXATTRIBARRAYARBPROC vglEnableVertexAttribArrayARB
Definition: VTKViewer_OpenGLHelper.h:177
PFNGLDELETEBUFFERSARBPROC vglDeleteBuffersARB
Definition: VTKViewer_OpenGLHelper.h:174
PFNGLCOMPILESHADERARBPROC vglCompileShaderARB
Definition: VTKViewer_OpenGLHelper.h:165
bool mIsInitialized
Definition: VTKViewer_OpenGLHelper.h:198
PFNGLDISABLEVERTEXATTRIBARRAYARBPROC vglDisableVertexAttribArrayARB
Definition: VTKViewer_OpenGLHelper.h:178
PFNGLCREATEPROGRAMOBJECTARBPROC vglCreateProgramObjectARB
Definition: VTKViewer_OpenGLHelper.h:166
PFNGLCREATESHADEROBJECTARBPROC vglCreateShaderObjectARB
Definition: VTKViewer_OpenGLHelper.h:164
PFNGLBUFFERDATAARBPROC vglBufferDataARB
Definition: VTKViewer_OpenGLHelper.h:173
PFNGLBINDBUFFERARBPROC vglBindBufferARB
Definition: VTKViewer_OpenGLHelper.h:172
PFNGLGETATTRIBLOCATIONARBPROC vglGetAttribLocationARB
Definition: VTKViewer_OpenGLHelper.h:175
PFNGLUSEPROGRAMOBJECTARBPROC vglUseProgramObjectARB
Definition: VTKViewer_OpenGLHelper.h:169
PFNGLLINKPROGRAMARBPROC vglLinkProgramARB
Definition: VTKViewer_OpenGLHelper.h:168
PFNGLGENBUFFERSARBPROC vglGenBuffersARB
Definition: VTKViewer_OpenGLHelper.h:171
PFNGLVERTEXATTRIBPOINTERARBPROC vglVertexAttribPointerARB
Definition: VTKViewer_OpenGLHelper.h:176
PFNGLATTACHOBJECTARBPROC vglAttachObjectARB
Definition: VTKViewer_OpenGLHelper.h:167
bool IsInitialized() const
Definition: VTKViewer_OpenGLHelper.h:113
PFNGLSHADERSOURCEARBPROC vglShaderSourceARB
Definition: VTKViewer_OpenGLHelper.h:163
Definition: VTKViewer_OpenGLHelper.cxx:220
char * readFromFile(std::string fileName)
Definition: VTKViewer_OpenGLHelper.cxx:221