summaryrefslogtreecommitdiff
path: root/src/mbgl/gl/context.hpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-09-27 13:00:27 +0200
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-09-27 11:03:29 -0700
commitce42d22984d19fa020e6fba77e2585c0fd9dacf4 (patch)
tree76e1a33a58bfb023987de1cc7aca59e649624db3 /src/mbgl/gl/context.hpp
parent21386b31465302d63cae5d93680442555c8560f1 (diff)
downloadqtlocation-mapboxgl-ce42d22984d19fa020e6fba77e2585c0fd9dacf4.tar.gz
[core] rename gl::Config to gl::Context
Diffstat (limited to 'src/mbgl/gl/context.hpp')
-rw-r--r--src/mbgl/gl/context.hpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/mbgl/gl/context.hpp b/src/mbgl/gl/context.hpp
new file mode 100644
index 0000000000..995f087c6b
--- /dev/null
+++ b/src/mbgl/gl/context.hpp
@@ -0,0 +1,108 @@
+#pragma once
+
+#include <mbgl/gl/state.hpp>
+#include <mbgl/gl/value.hpp>
+
+namespace mbgl {
+namespace gl {
+
+class Context {
+public:
+ void resetState() {
+ stencilFunc.reset();
+ stencilMask.reset();
+ stencilTest.reset();
+ stencilOp.reset();
+ depthRange.reset();
+ depthMask.reset();
+ depthTest.reset();
+ depthFunc.reset();
+ blend.reset();
+ blendFunc.reset();
+ blendColor.reset();
+ colorMask.reset();
+ clearDepth.reset();
+ clearColor.reset();
+ clearStencil.reset();
+ program.reset();
+ lineWidth.reset();
+ activeTexture.reset();
+ bindFramebuffer.reset();
+ viewport.reset();
+#ifndef GL_ES_VERSION_2_0
+ pixelZoom.reset();
+ rasterPos.reset();
+#endif // GL_ES_VERSION_2_0
+ for (auto& tex : texture) {
+ tex.reset();
+ }
+ vertexBuffer.reset();
+ elementBuffer.reset();
+ vertexArrayObject.reset();
+ }
+
+ void setDirtyState() {
+ stencilFunc.setDirty();
+ stencilMask.setDirty();
+ stencilTest.setDirty();
+ stencilOp.setDirty();
+ depthRange.setDirty();
+ depthMask.setDirty();
+ depthTest.setDirty();
+ depthFunc.setDirty();
+ blend.setDirty();
+ blendFunc.setDirty();
+ blendColor.setDirty();
+ colorMask.setDirty();
+ clearDepth.setDirty();
+ clearColor.setDirty();
+ clearStencil.setDirty();
+ program.setDirty();
+ lineWidth.setDirty();
+ activeTexture.setDirty();
+ bindFramebuffer.setDirty();
+ viewport.setDirty();
+#ifndef GL_ES_VERSION_2_0
+ pixelZoom.setDirty();
+ rasterPos.setDirty();
+#endif // GL_ES_VERSION_2_0
+ for (auto& tex : texture) {
+ tex.setDirty();
+ }
+ vertexBuffer.setDirty();
+ elementBuffer.setDirty();
+ vertexArrayObject.setDirty();
+ }
+
+ State<value::StencilFunc> stencilFunc;
+ State<value::StencilMask> stencilMask;
+ State<value::StencilTest> stencilTest;
+ State<value::StencilOp> stencilOp;
+ State<value::DepthRange> depthRange;
+ State<value::DepthMask> depthMask;
+ State<value::DepthTest> depthTest;
+ State<value::DepthFunc> depthFunc;
+ State<value::Blend> blend;
+ State<value::BlendFunc> blendFunc;
+ State<value::BlendColor> blendColor;
+ State<value::ColorMask> colorMask;
+ State<value::ClearDepth> clearDepth;
+ State<value::ClearColor> clearColor;
+ State<value::ClearStencil> clearStencil;
+ State<value::Program> program;
+ State<value::LineWidth> lineWidth;
+ State<value::ActiveTexture> activeTexture;
+ State<value::BindFramebuffer> bindFramebuffer;
+ State<value::Viewport> viewport;
+#ifndef GL_ES_VERSION_2_0
+ State<value::PixelZoom> pixelZoom;
+ State<value::RasterPos> rasterPos;
+#endif // GL_ES_VERSION_2_0
+ std::array<State<value::BindTexture>, 2> texture;
+ State<value::BindBuffer<GL_ARRAY_BUFFER>> vertexBuffer;
+ State<value::BindBuffer<GL_ELEMENT_ARRAY_BUFFER>> elementBuffer;
+ State<value::BindVAO> vertexArrayObject;
+};
+
+} // namespace gl
+} // namespace mbgl