All Classes Files Functions Variables Typedefs Pages
GLProperty.hpp
1 #pragma once
2 
3 #include <GL/glew.h>
4 
5 namespace lumina {
6 
7 #define PROPS\
8  X(MaxColorAttachments, int, GL_MAX_COLOR_ATTACHMENTS)\
9  X(MaxColorTextureSamples, int, GL_MAX_COLOR_TEXTURE_SAMPLES)\
10  X(MaxDepthTextureSamples, int, GL_MAX_DEPTH_TEXTURE_SAMPLES)\
11  X(MaxDrawBuffers, int, GL_MAX_DRAW_BUFFERS)\
12  X(MaxDualSourceDrawBuffers, int, GL_MAX_DUAL_SOURCE_DRAW_BUFFERS)\
13  X(MaxFramebufferHeight, int, GL_MAX_FRAMEBUFFER_HEIGHT)\
14  X(MaxFramebufferLayers, int, GL_MAX_FRAMEBUFFER_LAYERS)\
15  X(MaxFramebufferSamples, int, GL_MAX_FRAMEBUFFER_SAMPLES)\
16  X(MaxFramebufferWidth, int, GL_MAX_FRAMEBUFFER_WIDTH)\
17  X(MaxIntegerSamples, int, GL_MAX_INTEGER_SAMPLES)\
18  X(MaxSamples, int, GL_MAX_SAMPLES)\
19  X(MaxAtomicCounterBufferSize, int, GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE)\
20  X(MaxCombinedShaderOutputResources, int, GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES)\
21  X(MaxCombinedShaderStorageBlocks, int, GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS)\
22  X(MaxImageSamples, int, GL_MAX_IMAGE_SAMPLES)\
23  X(MaxImageUnits, int, GL_MAX_IMAGE_UNITS)\
24  X(MaxProgramTexelOffset, int, GL_MAX_PROGRAM_TEXEL_OFFSET)\
25  X(MaxSubroutines, int, GL_MAX_SUBROUTINES)\
26  X(MaxSubroutineUniformLocations, int, GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS)\
27  X(MaxUniformBlockSize, int, GL_MAX_UNIFORM_BLOCK_SIZE)\
28  X(MaxUniformLocations, int, GL_MAX_UNIFORM_LOCATIONS)\
29  X(MaxVaryingVectors, int, GL_MAX_VARYING_VECTORS)\
30  X(MaxVertexAttribRelativeOffset, int, GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET)\
31  X(MaxVertexAttribBindings, int, GL_MAX_VERTEX_ATTRIB_BINDINGS)\
32  X(MaxVertexAttribStride, int, GL_MAX_VERTEX_ATTRIB_STRIDE)\
33  X(MaxCombinedTextureImageUnits, int, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS)
34 
35 
36 
37 
38 // define enum
39 #define X(name_, type_, gl_) name_,
40 enum class GLProp { PROPS NUM };
41 #undef X
42 
43 // define helper functions
44 #define X(name_, type_, gl_) case GLProp::name_: return gl_;
45 inline GLenum translateGLProp(GLProp prop) {
46  switch(prop) {
47  PROPS
48  default: return GL_INVALID_ENUM;
49  }
50 }
51 #undef X
52 
53 #define X(name_, type_, gl_) case GLProp::name_: return #gl_;
54 inline const char* getGLPropName(GLProp prop) {
55  switch(prop) {
56  PROPS
57  default: return "???";
58  }
59 }
60 #undef X
61 
62 }