MeVisLab Toolbox Reference
mlOpenGL.h
Go to the documentation of this file.
1/*************************************************************************************
2**
3** Copyright 2007, MeVis Medical Solutions AG
4**
5** The user may use this file in accordance with the license agreement provided with
6** the Software or, alternatively, in accordance with the terms contained in a
7** written agreement between the user and MeVis Medical Solutions AG.
8**
9** For further information use the contact form at https://www.mevislab.de/contact
10**
11**************************************************************************************/
12
13#ifndef ML_OPENGL_H
14#define ML_OPENGL_H
15
16
18
19#include "mlOpenGLSystem.h"
20
21#ifdef _MSC_VER
22#pragma warning( push )
23// Suppress warning that is irrelevant for private static members:
24#pragma warning(disable : 4251 ) // class 'std::string' needs to have dll-interface to be used by clients of class 'ml::OpenGL'
25#endif
26
27// Include the GLEW header, which allows to access the entire OpenGL and extensions API
28// without using native Windows or Unix headers
29#include <GL/glew.h>
30#include <cstdio>
31#include <string>
32
34
36
59{
60public:
62 static bool init();
63
65 static const std::string& getVendorString();
66
68 static const std::string& getRendererString();
69
71 static const std::string& getVersionString();
72
74 static bool isMesaSoftwareRenderer() { return _isMesaSoftwareRenderer; }
75
77 static bool supports10Bit() { return _supports10Bit; }
78
81
83 static bool supportsPBO();
84
92
95
98
101
104
107
110
113
116
118 static bool isSupported(const char* extension);
119
126
128 static void disableAllClipPlanes();
129
131 static void disableAllLights();
132
134 static std::string uniformTypeToString(GLenum type);
135
137 static std::string getUniformValue(GLint program, GLint uniform, GLenum type);
138
140 struct TypeInfo {
141 TypeInfo(const std::string& aType, const std::string& aName,
142 const std::string& aValue = std::string(),
143 const std::string& aSize = std::string()) {
144 this->type = aType;
145 this->name = aName;
146 this->value = aValue;
147 this->size = aSize;
148 };
149 std::string name;
150 std::string type;
151 std::string value;
152 std::string size;
153 };
154
156 static void getActiveUniforms(GLuint program, std::vector<TypeInfo>& uniforms, bool withValues);
157
159 static const char* internalFormatToString( GLuint format );
160
161private:
162 static GLint _videoMemorySizeInMB;
163 static GLint _maxGLTextureSize;
164 static GLint _maxGLTextureSize3D;
165 static GLint _maxTextureImageUnits;
166 static GLint _maxVertexAttributes;
167 static GLint _maxVaryingFloats;
168 static GLint _maxSmoothLineWidth;
169 static GLint _maxClipPlanes;
170 static GLint _maxLights;
171 static bool _supportsRenderTo3DTexture;
172 static bool _supports10Bit;
173 static bool _isMesaSoftwareRenderer;
174
175 static void queryCapabilities();
176 static void detect10BitCapability();
177 static void queryVideoMemorySize();
178
181 static bool hardwareSupports10BitContext();
182
183 static std::string getGLString(int name);
184
185 static std::string _vendor;
186 static std::string _renderer;
187 static std::string _version;
188
189};
190
192
193#ifdef _MSC_VER
194#pragma warning( pop )
195#endif
196
197
198#endif
MeVis OpenGL Information Interface (Singleton)
Definition mlOpenGL.h:59
static bool supportsPBO()
Returns whether PixelBufferObjects are supported.
static std::string uniformTypeToString(GLenum type)
Returns the uniform type as string.
static std::string getUniformValue(GLint program, GLint uniform, GLenum type)
Returns the uniform value as string.
static GLint getMaxLights()
Returns the maximum number of lights.
static GLint getMaxSmoothLineWidth()
Returns the maximum size of a supported smooth line width.
static void disableAllLights()
Disables all lights (needs a valid OpenGL context!).
static GLint getMaxTextureImageUnits()
Returns the maximum available texture units (using GL_MAX_TEXTURE_IMAGE_UNITS).
static bool init()
Initializes the OpenGL information and GLEW, returns true if everything is ok.
static const std::string & getRendererString()
Returns the OpenGL driver string.
static const char * internalFormatToString(GLuint format)
Returns the internal GL format as string;.
static void disableAllClipPlanes()
Disables all clip planes (needs a valid OpenGL context!).
static bool supports10Bit()
Returns whether the OpenGL driver supports visible 10-bit OpenGL contexts.
Definition mlOpenGL.h:77
static GLint getVideoMemorySizeInMB()
Returns the maximum available video memory size in MB.
static GLint getMaxVertexAttributes()
Returns the maximum available vertex attributes (using GL_MAX_VERTEX_ATTRIBS).
static bool supportsRenderTo3DTexture()
Returns whether rendering to 3D textures is supported by FrameBufferObjects.
static GLint getMaxClipPlanes()
Returns the maximum number of clip planes.
static const std::string & getVersionString()
Return the OpenGL version string.
static GLint getMaxVaryingFloats()
Returns the maximum available varying floats (using GL_MAX_VARYING_FLOATS).
static bool isMesaSoftwareRenderer()
Returns whether the OpenGL driver is the Mesa software renderer (typically llvmpipe).
Definition mlOpenGL.h:74
static GLint getMaxTextureSize3D()
Returns the maximum 3D texture size (using GL_MAX_3D_TEXTURE_SIZE).
static bool isSupported(const char *extension)
Checks whether the given extension is supported.
static const std::string & getVendorString()
Returns the OpenGL vendor string.
static GLint getMaxTextureSize()
Returns the maximum 2D texture size (using GL_MAX_TEXTURE_SIZE).
static void getActiveUniforms(GLuint program, std::vector< TypeInfo > &uniforms, bool withValues)
Returns the active uniforms from a shader.
static void clearTextureUnitsAndShaders()
This method binds the 0 target to all texture units and ARB/GLSL shaders.
#define ML_OPENGL_END_NAMESPACE
Closes the namespace for all ML code after the usage of ML_UTILS_START_NAMESPACE.
#define ML_OPENGL_START_NAMESPACE
Macro to put all following code into the namespace ML_NAMESPACE to avoid collisions with symbols of o...
#define MLOPENGL_EXPORT
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
Struct to store infos about a type, e.g., about a uniform.
Definition mlOpenGL.h:140
std::string name
Definition mlOpenGL.h:149
TypeInfo(const std::string &aType, const std::string &aName, const std::string &aValue=std::string(), const std::string &aSize=std::string())
Definition mlOpenGL.h:141
std::string type
Definition mlOpenGL.h:150
std::string value
Definition mlOpenGL.h:151
std::string size
Definition mlOpenGL.h:152