diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2019-03-13 11:12:28 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2019-03-21 13:48:14 +0100 |
commit | a4de63cf8bd439354ff2124a5039fd6524652ade (patch) | |
tree | 170b3a8d5b0d296f3f6fa662b32edd3ef5b66ed0 | |
parent | f9acadaa20c9b786cf51cc9c250079be7095a437 (diff) | |
download | qtlocation-mapboxgl-a4de63cf8bd439354ff2124a5039fd6524652ade.tar.gz |
[core] integrate gfx::Attributes and gfx::Attributes<>::Bindings
-rw-r--r-- | src/mbgl/gfx/attribute.hpp | 25 | ||||
-rw-r--r-- | src/mbgl/gl/attribute.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/gl/program.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/programs/collision_box_program.hpp | 12 | ||||
-rw-r--r-- | src/mbgl/programs/program.hpp | 8 | ||||
-rw-r--r-- | src/mbgl/programs/symbol_program.hpp | 12 | ||||
-rw-r--r-- | src/mbgl/renderer/paint_property_binder.hpp | 2 |
7 files changed, 35 insertions, 28 deletions
diff --git a/src/mbgl/gfx/attribute.hpp b/src/mbgl/gfx/attribute.hpp index d0b1e65639..4f44d68d7b 100644 --- a/src/mbgl/gfx/attribute.hpp +++ b/src/mbgl/gfx/attribute.hpp @@ -258,24 +258,31 @@ AttributeBinding attributeBinding(const VertexBuffer<detail::VertexType<As...>>& optional<gfx::AttributeBinding> offsetAttributeBinding(const optional<gfx::AttributeBinding>& binding, std::size_t vertexOffset); template <class> -class Attributes; +class AttributeBindings; template <class... As> -class Attributes<TypeList<As...>> final { +class AttributeBindings<TypeList<As...>> final + : public IndexedTuple<TypeList<As...>, + TypeList<ExpandToType<As, optional<AttributeBinding>>...>> { + using Base = IndexedTuple<TypeList<As...>, + TypeList<ExpandToType<As, optional<AttributeBinding>>...>>; + public: - using Bindings = IndexedTuple<TypeList<As...>, TypeList<ExpandToType<As, optional<AttributeBinding>>...>>; + AttributeBindings(const VertexBuffer<Vertex<TypeList<As...>>>& buffer) + : Base{ attributeBinding<TypeIndex<As, As...>::value>(buffer)... } { + } - static Bindings bindings(const VertexBuffer<Vertex<TypeList<As...>>>& buffer) { - return Bindings { attributeBinding<TypeIndex<As, As...>::value>(buffer)... }; + template <class... Args> + AttributeBindings(Args&&... args) : Base(std::forward<Args>(args)...) { } - static Bindings offsetBindings(const Bindings& bindings, const std::size_t vertexOffset) { - return Bindings { offsetAttributeBinding(bindings.template get<As>(), vertexOffset)... }; + AttributeBindings offset(const std::size_t vertexOffset) const { + return { offsetAttributeBinding(Base::template get<As>(), vertexOffset)... }; } - static uint32_t activeBindingCount(const Bindings& bindings) { + uint32_t activeCount() const { uint32_t result = 0; - util::ignore({ ((result += bool(bindings.template get<As>())), 0)... }); + util::ignore({ ((result += bool(Base::template get<As>())), 0)... }); return result; } }; diff --git a/src/mbgl/gl/attribute.hpp b/src/mbgl/gl/attribute.hpp index ce8a7312e9..9115bf5e43 100644 --- a/src/mbgl/gl/attribute.hpp +++ b/src/mbgl/gl/attribute.hpp @@ -71,7 +71,7 @@ public: static AttributeBindingArray toBindingArray(const Locations& locations, - const typename gfx::Attributes<TypeList<As...>>::Bindings& bindings) { + const typename gfx::AttributeBindings<TypeList<As...>>& bindings) { AttributeBindingArray result; result.resize(sizeof...(As)); diff --git a/src/mbgl/gl/program.hpp b/src/mbgl/gl/program.hpp index e60619fb10..b96dd5d9b0 100644 --- a/src/mbgl/gl/program.hpp +++ b/src/mbgl/gl/program.hpp @@ -29,7 +29,7 @@ class Program { public: using Primitive = P; - using AttributeBindings = typename gfx::Attributes<AttributeList>::Bindings; + using AttributeBindings = gfx::AttributeBindings<AttributeList>; using UniformValues = gfx::UniformValues<UniformList>; using TextureBindings = gfx::TextureBindings<TextureList>; diff --git a/src/mbgl/programs/collision_box_program.hpp b/src/mbgl/programs/collision_box_program.hpp index a1bc6d37a3..40c0d82ee2 100644 --- a/src/mbgl/programs/collision_box_program.hpp +++ b/src/mbgl/programs/collision_box_program.hpp @@ -81,8 +81,8 @@ public: UniformValues uniformValues = layoutUniformValues .concat(paintPropertyBinders.uniformValues(currentZoom, currentProperties)); - AttributeBindings allAttributeBindings = gfx::Attributes<CollisionBoxLayoutAttributes>::bindings(layoutVertexBuffer) - .concat(gfx::Attributes<CollisionBoxDynamicAttributes>::bindings(dynamicVertexBuffer)) + AttributeBindings allAttributeBindings = gfx::AttributeBindings<CollisionBoxLayoutAttributes>(layoutVertexBuffer) + .concat(gfx::AttributeBindings<CollisionBoxDynamicAttributes>(dynamicVertexBuffer)) .concat(paintPropertyBinders.attributeBindings(currentProperties)); assert(layoutVertexBuffer.elements == dynamicVertexBuffer.elements); @@ -103,7 +103,7 @@ public: std::move(cullFaceMode), uniformValues, drawScopeIt->second, - gfx::Attributes<AttributeList>::offsetBindings(allAttributeBindings, segment.vertexOffset), + allAttributeBindings.offset(segment.vertexOffset), textureBindings, indexBuffer, segment.indexOffset, @@ -169,8 +169,8 @@ public: UniformValues uniformValues = layoutUniformValues .concat(paintPropertyBinders.uniformValues(currentZoom, currentProperties)); - AttributeBindings allAttributeBindings = gfx::Attributes<CollisionBoxLayoutAttributes>::bindings(layoutVertexBuffer) - .concat(gfx::Attributes<CollisionBoxDynamicAttributes>::bindings(dynamicVertexBuffer)) + AttributeBindings allAttributeBindings = gfx::AttributeBindings<CollisionBoxLayoutAttributes>(layoutVertexBuffer) + .concat(gfx::AttributeBindings<CollisionBoxDynamicAttributes>(dynamicVertexBuffer)) .concat(paintPropertyBinders.attributeBindings(currentProperties)); for (auto& segment : segments) { @@ -189,7 +189,7 @@ public: std::move(cullFaceMode), uniformValues, drawScopeIt->second, - gfx::Attributes<AttributeList>::offsetBindings(allAttributeBindings, segment.vertexOffset), + allAttributeBindings.offset(segment.vertexOffset), textureBindings, indexBuffer, segment.indexOffset, diff --git a/src/mbgl/programs/program.hpp b/src/mbgl/programs/program.hpp index a179c07cb1..4d6a79f729 100644 --- a/src/mbgl/programs/program.hpp +++ b/src/mbgl/programs/program.hpp @@ -30,7 +30,7 @@ public: using PaintAttributeList = typename Binders::AttributeList; using AttributeList = TypeListConcat<LayoutAttributeList, PaintAttributeList>; - using AttributeBindings = typename gfx::Attributes<AttributeList>::Bindings; + using AttributeBindings = gfx::AttributeBindings<AttributeList>; using PaintUniformList = typename Binders::UniformList; using UniformList = TypeListConcat<LayoutUniformList, PaintUniformList>; @@ -65,12 +65,12 @@ public: const gfx::VertexBuffer<LayoutVertex>& layoutVertexBuffer, const Binders& paintPropertyBinders, const typename PaintProperties::PossiblyEvaluated& currentProperties) { - return gfx::Attributes<LayoutAttributeList>::bindings(layoutVertexBuffer) + return gfx::AttributeBindings<LayoutAttributeList>(layoutVertexBuffer) .concat(paintPropertyBinders.attributeBindings(currentProperties)); } static uint32_t activeBindingCount(const AttributeBindings& allAttributeBindings) { - return gfx::Attributes<AttributeList>::activeBindingCount(allAttributeBindings); + return allAttributeBindings.activeCount(); } template <class DrawMode> @@ -102,7 +102,7 @@ public: std::move(cullFaceMode), uniformValues, drawScopeIt->second, - gfx::Attributes<AttributeList>::offsetBindings(allAttributeBindings, segment.vertexOffset), + allAttributeBindings.offset(segment.vertexOffset), textureBindings, indexBuffer, segment.indexOffset, diff --git a/src/mbgl/programs/symbol_program.hpp b/src/mbgl/programs/symbol_program.hpp index b94472dd0c..18cdff3c9f 100644 --- a/src/mbgl/programs/symbol_program.hpp +++ b/src/mbgl/programs/symbol_program.hpp @@ -256,7 +256,7 @@ public: using PaintAttributeList = typename Binders::AttributeList; using AttributeList = TypeListConcat<LayoutAndSizeAttributeList, PaintAttributeList>; - using AttributeBindings = typename gfx::Attributes<AttributeList>::Bindings; + using AttributeBindings = gfx::AttributeBindings<AttributeList>; using LayoutUniformValues = gfx::UniformValues<LayoutUniformList>; using SizeUniformList = typename SymbolSizeBinder::UniformList; @@ -297,14 +297,14 @@ public: const typename PaintProperties::PossiblyEvaluated& currentProperties) { assert(layoutVertexBuffer.elements == dynamicLayoutVertexBuffer.elements && layoutVertexBuffer.elements == opacityVertexBuffer.elements); - return gfx::Attributes<LayoutAttributeList>::bindings(layoutVertexBuffer) - .concat(gfx::Attributes<SymbolDynamicLayoutAttributes>::bindings(dynamicLayoutVertexBuffer)) - .concat(gfx::Attributes<SymbolOpacityAttributes>::bindings(opacityVertexBuffer)) + return gfx::AttributeBindings<LayoutAttributeList>(layoutVertexBuffer) + .concat(gfx::AttributeBindings<SymbolDynamicLayoutAttributes>(dynamicLayoutVertexBuffer)) + .concat(gfx::AttributeBindings<SymbolOpacityAttributes>(opacityVertexBuffer)) .concat(paintPropertyBinders.attributeBindings(currentProperties)); } static uint32_t activeBindingCount(const AttributeBindings& allAttributeBindings) { - return gfx::Attributes<AttributeList>::activeBindingCount(allAttributeBindings); + return allAttributeBindings.activeCount(); } template <class DrawMode> @@ -336,7 +336,7 @@ public: std::move(cullFaceMode), uniformValues, drawScopeIt->second, - gfx::Attributes<AttributeList>::offsetBindings(allAttributeBindings, segment.vertexOffset), + allAttributeBindings.offset(segment.vertexOffset), textureBindings, indexBuffer, segment.indexOffset, diff --git a/src/mbgl/renderer/paint_property_binder.hpp b/src/mbgl/renderer/paint_property_binder.hpp index fc873a87f8..a014b36ece 100644 --- a/src/mbgl/renderer/paint_property_binder.hpp +++ b/src/mbgl/renderer/paint_property_binder.hpp @@ -505,7 +505,7 @@ public: using InterpolationUniformList = typename Property<P>::InterpolationUniformList; using AttributeList = TypeListConcat<ZoomInterpolatedAttributeList<Ps>...>; - using AttributeBindings = typename gfx::Attributes<AttributeList>::Bindings; + using AttributeBindings = gfx::AttributeBindings<AttributeList>; template <class EvaluatedProperties> AttributeBindings attributeBindings(const EvaluatedProperties& currentProperties) const { |