MeVisLab Resolution Independence API
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
33ML_OPENGL_START_NAMESPACE
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
91 static GLint getVideoMemorySizeInMB();
92
94 static GLint getMaxTextureSize();
95
97 static GLint getMaxTextureSize3D();
98
101
104
106 static GLint getMaxVaryingFloats();
107
109 static GLint getMaxSmoothLineWidth();
110
112 static GLint getMaxClipPlanes();
113
115 static GLint getMaxLights();
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
191ML_OPENGL_END_NAMESPACE
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 isSupported(const char *extension)
Checks whether the given extension is supported.
static GLint getMaxClipPlanes()
Returns the maximum number of clip planes.
static bool supportsRenderTo3DTexture()
Returns whether rendering to 3D textures is supported by FrameBufferObjects.
static const char * internalFormatToString(GLuint format)
Returns the internal GL format as string;.
static GLint getVideoMemorySizeInMB()
Returns the maximum available video memory size in MB.
static const std::string & getVendorString()
Returns the OpenGL vendor string.
static void disableAllClipPlanes()
Disables all clip planes (needs a valid OpenGL context!).
static bool isMesaSoftwareRenderer()
Returns whether the OpenGL driver is the Mesa software renderer (typically llvmpipe).
Definition mlOpenGL.h:74
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 GLint getMaxLights()
Returns the maximum number of lights.
static GLint getMaxTextureImageUnits()
Returns the maximum available texture units (using GL_MAX_TEXTURE_IMAGE_UNITS).
static std::string getUniformValue(GLint program, GLint uniform, GLenum type)
Returns the uniform value as string.
static GLint getMaxVertexAttributes()
Returns the maximum available vertex attributes (using GL_MAX_VERTEX_ATTRIBS).
static bool init()
Initializes the OpenGL information and GLEW, returns true if everything is ok.
static bool supportsPBO()
Returns whether PixelBufferObjects are supported.
static GLint getMaxTextureSize3D()
Returns the maximum 3D texture size (using GL_MAX_3D_TEXTURE_SIZE).
static std::string uniformTypeToString(GLenum type)
Returns the uniform type as string.
static GLint getMaxVaryingFloats()
Returns the maximum available varying floats (using GL_MAX_VARYING_FLOATS).
static void disableAllLights()
Disables all lights (needs a valid OpenGL context!).
static bool supports10Bit()
Returns whether the OpenGL driver supports visible 10-bit OpenGL contexts.
Definition mlOpenGL.h:77
static const std::string & getVersionString()
Return the OpenGL version string.
static GLint getMaxSmoothLineWidth()
Returns the maximum size of a supported smooth line width.
static void clearTextureUnitsAndShaders()
This method binds the 0 target to all texture units and ARB/GLSL shaders.
static const std::string & getRendererString()
Returns the OpenGL driver string.
#define MLOPENGL_EXPORT
Macro to put all following code into the namespace ML_NAMESPACE to avoid collisions with symbols of o...
Struct to store infos about a type, e.g., about a uniform.
Definition mlOpenGL.h:140
std::string size
Definition mlOpenGL.h:152
std::string name
Definition mlOpenGL.h:149
std::string type
Definition mlOpenGL.h:150
std::string value
Definition mlOpenGL.h:151
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