[core] make GL value defaults constexpr
This commit is contained in:
@@ -82,8 +82,8 @@ set(MBGL_CORE_FILES
|
||||
src/mbgl/gl/debugging.cpp
|
||||
src/mbgl/gl/debugging.hpp
|
||||
src/mbgl/gl/gl.cpp
|
||||
src/mbgl/gl/gl_config.cpp
|
||||
src/mbgl/gl/gl_config.hpp
|
||||
src/mbgl/gl/gl_values.cpp
|
||||
src/mbgl/gl/object_store.cpp
|
||||
src/mbgl/gl/object_store.hpp
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace gl {
|
||||
|
||||
struct ClearDepth {
|
||||
using Type = GLfloat;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = 1;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glClearDepth(value));
|
||||
}
|
||||
@@ -26,7 +26,7 @@ struct ClearDepth {
|
||||
|
||||
struct ClearColor {
|
||||
using Type = Color;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = { 0, 0, 0, 0 };
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glClearColor(value.r, value.g, value.b, value.a));
|
||||
}
|
||||
@@ -39,7 +39,7 @@ struct ClearColor {
|
||||
|
||||
struct ClearStencil {
|
||||
using Type = GLint;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = 0;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glClearStencil(value));
|
||||
}
|
||||
@@ -52,7 +52,7 @@ struct ClearStencil {
|
||||
|
||||
struct StencilMask {
|
||||
using Type = GLuint;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = ~0u;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glStencilMask(value));
|
||||
}
|
||||
@@ -65,7 +65,7 @@ struct StencilMask {
|
||||
|
||||
struct DepthMask {
|
||||
using Type = GLboolean;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = GL_TRUE;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glDepthMask(value));
|
||||
}
|
||||
@@ -78,7 +78,7 @@ struct DepthMask {
|
||||
|
||||
struct ColorMask {
|
||||
struct Type { bool r, g, b, a; };
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = { GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE };
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glColorMask(value.r, value.g, value.b, value.a));
|
||||
}
|
||||
@@ -96,7 +96,7 @@ constexpr bool operator!=(const ColorMask::Type& a, const ColorMask::Type& b) {
|
||||
|
||||
struct StencilFunc {
|
||||
struct Type { GLenum func; GLint ref; GLuint mask; };
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = { GL_ALWAYS, 0, ~0u };
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glStencilFunc(value.func, value.ref, value.mask));
|
||||
}
|
||||
@@ -115,7 +115,7 @@ constexpr bool operator!=(const StencilFunc::Type& a, const StencilFunc::Type& b
|
||||
|
||||
struct StencilTest {
|
||||
using Type = bool;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = GL_FALSE;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(value ? glEnable(GL_STENCIL_TEST) : glDisable(GL_STENCIL_TEST));
|
||||
}
|
||||
@@ -128,7 +128,7 @@ struct StencilTest {
|
||||
|
||||
struct StencilOp {
|
||||
struct Type { GLenum sfail, dpfail, dppass; };
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = { GL_KEEP, GL_KEEP, GL_REPLACE };
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glStencilOp(value.sfail, value.dpfail, value.dppass));
|
||||
}
|
||||
@@ -147,7 +147,7 @@ constexpr bool operator!=(const StencilOp::Type& a, const StencilOp::Type& b) {
|
||||
|
||||
struct DepthRange {
|
||||
struct Type { GLfloat near, far; };
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = { 0, 1 };
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glDepthRange(value.near, value.far));
|
||||
}
|
||||
@@ -164,7 +164,7 @@ constexpr bool operator!=(const DepthRange::Type& a, const DepthRange::Type& b)
|
||||
|
||||
struct DepthTest {
|
||||
using Type = bool;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = GL_FALSE;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(value ? glEnable(GL_DEPTH_TEST) : glDisable(GL_DEPTH_TEST));
|
||||
}
|
||||
@@ -177,7 +177,7 @@ struct DepthTest {
|
||||
|
||||
struct DepthFunc {
|
||||
using Type = GLenum;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = GL_LEQUAL;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glDepthFunc(value));
|
||||
}
|
||||
@@ -190,7 +190,7 @@ struct DepthFunc {
|
||||
|
||||
struct Blend {
|
||||
using Type = bool;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = GL_TRUE;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(value ? glEnable(GL_BLEND) : glDisable(GL_BLEND));
|
||||
}
|
||||
@@ -203,7 +203,7 @@ struct Blend {
|
||||
|
||||
struct BlendFunc {
|
||||
struct Type { GLenum sfactor, dfactor; };
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = { GL_ONE, GL_ONE_MINUS_SRC_ALPHA };
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glBlendFunc(value.sfactor, value.dfactor));
|
||||
}
|
||||
@@ -221,7 +221,7 @@ constexpr bool operator!=(const BlendFunc::Type& a, const BlendFunc::Type& b) {
|
||||
|
||||
struct BlendColor {
|
||||
using Type = Color;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = { 0, 0, 0, 0 };
|
||||
inline static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glBlendColor(value.r, value.g, value.b, value.a));
|
||||
}
|
||||
@@ -234,7 +234,7 @@ struct BlendColor {
|
||||
|
||||
struct Program {
|
||||
using Type = GLuint;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = 0;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glUseProgram(value));
|
||||
}
|
||||
@@ -247,7 +247,7 @@ struct Program {
|
||||
|
||||
struct LineWidth {
|
||||
using Type = GLfloat;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = 1;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glLineWidth(value));
|
||||
}
|
||||
@@ -260,7 +260,7 @@ struct LineWidth {
|
||||
|
||||
struct ActiveTexture {
|
||||
using Type = uint8_t;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = 0;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glActiveTexture(GL_TEXTURE0 + value));
|
||||
}
|
||||
@@ -275,7 +275,7 @@ struct ActiveTexture {
|
||||
|
||||
struct PixelZoom {
|
||||
struct Type { GLfloat xfactor; GLfloat yfactor; };
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = { 1, 1 };
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glPixelZoom(value.xfactor, value.yfactor));
|
||||
}
|
||||
@@ -293,7 +293,7 @@ constexpr bool operator!=(const PixelZoom::Type& a, const PixelZoom::Type& b) {
|
||||
|
||||
struct RasterPos {
|
||||
using Type = std::array<GLdouble, 4>;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = {{ 0, 0, 0, 0 }};
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glRasterPos4d(value[0], value[1], value[2], value[3]));
|
||||
}
|
||||
@@ -308,7 +308,7 @@ struct RasterPos {
|
||||
|
||||
struct BindTexture {
|
||||
using Type = GLuint;
|
||||
static const Type Default;
|
||||
static const constexpr Type Default = 0;
|
||||
static void Set(const Type& value) {
|
||||
MBGL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, value));
|
||||
}
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
#include "gl_config.hpp"
|
||||
|
||||
namespace mbgl {
|
||||
namespace gl {
|
||||
|
||||
const StencilFunc::Type StencilFunc::Default = { GL_ALWAYS, 0, ~0u };
|
||||
const StencilMask::Type StencilMask::Default = ~0u;
|
||||
const StencilTest::Type StencilTest::Default = GL_FALSE;
|
||||
const StencilOp::Type StencilOp::Default = { GL_KEEP, GL_KEEP, GL_REPLACE };
|
||||
const DepthRange::Type DepthRange::Default = { 0, 1 };
|
||||
const DepthMask::Type DepthMask::Default = GL_TRUE;
|
||||
const DepthTest::Type DepthTest::Default = GL_FALSE;
|
||||
const DepthFunc::Type DepthFunc::Default = GL_LEQUAL;
|
||||
const Blend::Type Blend::Default = GL_TRUE;
|
||||
const BlendFunc::Type BlendFunc::Default = { GL_ONE, GL_ONE_MINUS_SRC_ALPHA };
|
||||
const BlendColor::Type BlendColor::Default = { 0, 0, 0, 0 };
|
||||
const ColorMask::Type ColorMask::Default = { GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE };
|
||||
const ClearDepth::Type ClearDepth::Default = 1;
|
||||
const ClearColor::Type ClearColor::Default = { 0, 0, 0, 0 };
|
||||
const ClearStencil::Type ClearStencil::Default = 0;
|
||||
const Program::Type Program::Default = 0;
|
||||
const LineWidth::Type LineWidth::Default = 1;
|
||||
const ActiveTexture::Type ActiveTexture::Default = 0;
|
||||
const BindTexture::Type BindTexture::Default = 0;
|
||||
|
||||
#ifndef GL_ES_VERSION_2_0
|
||||
const PixelZoom::Type PixelZoom::Default = { 1, 1 };
|
||||
const RasterPos::Type RasterPos::Default = {{ 0, 0, 0, 0 }};
|
||||
#endif // GL_ES_VERSION_2_0
|
||||
|
||||
} // namespace gl
|
||||
} // namespace mbgl
|
||||
32
src/mbgl/gl/gl_values.cpp
Normal file
32
src/mbgl/gl/gl_values.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
#include <mbgl/gl/gl_values.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
namespace gl {
|
||||
|
||||
const constexpr StencilFunc::Type StencilFunc::Default;
|
||||
const constexpr StencilMask::Type StencilMask::Default;
|
||||
const constexpr StencilTest::Type StencilTest::Default;
|
||||
const constexpr StencilOp::Type StencilOp::Default;
|
||||
const constexpr DepthRange::Type DepthRange::Default;
|
||||
const constexpr DepthMask::Type DepthMask::Default;
|
||||
const constexpr DepthTest::Type DepthTest::Default;
|
||||
const constexpr DepthFunc::Type DepthFunc::Default;
|
||||
const constexpr Blend::Type Blend::Default;
|
||||
const constexpr BlendFunc::Type BlendFunc::Default;
|
||||
const constexpr BlendColor::Type BlendColor::Default;
|
||||
const constexpr ColorMask::Type ColorMask::Default;
|
||||
const constexpr ClearDepth::Type ClearDepth::Default;
|
||||
const constexpr ClearColor::Type ClearColor::Default;
|
||||
const constexpr ClearStencil::Type ClearStencil::Default;
|
||||
const constexpr Program::Type Program::Default;
|
||||
const constexpr LineWidth::Type LineWidth::Default;
|
||||
const constexpr ActiveTexture::Type ActiveTexture::Default;
|
||||
const constexpr BindTexture::Type BindTexture::Default;
|
||||
|
||||
#ifndef GL_ES_VERSION_2_0
|
||||
const constexpr PixelZoom::Type PixelZoom::Default;
|
||||
const constexpr RasterPos::Type RasterPos::Default;
|
||||
#endif // GL_ES_VERSION_2_0
|
||||
|
||||
} // namespace gl
|
||||
} // namespace mbgl
|
||||
Reference in New Issue
Block a user