summaryrefslogtreecommitdiff
path: root/src/mbgl/programs/collision_box_program.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/programs/collision_box_program.hpp')
-rw-r--r--src/mbgl/programs/collision_box_program.hpp82
1 files changed, 40 insertions, 42 deletions
diff --git a/src/mbgl/programs/collision_box_program.hpp b/src/mbgl/programs/collision_box_program.hpp
index cd7f0bfd68..7b81752a94 100644
--- a/src/mbgl/programs/collision_box_program.hpp
+++ b/src/mbgl/programs/collision_box_program.hpp
@@ -3,8 +3,6 @@
#include <mbgl/programs/program.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
-#include <mbgl/shaders/collision_box.hpp>
-#include <mbgl/shaders/collision_circle.hpp>
#include <mbgl/style/properties.hpp>
#include <mbgl/util/geometry.hpp>
@@ -21,8 +19,8 @@ using CollisionBoxLayoutAttributes = TypeList<
using CollisionBoxDynamicAttributes = TypeList<attributes::a_placed>;
class CollisionBoxProgram : public Program<
- shaders::collision_box,
- gfx::Line,
+ CollisionBoxProgram,
+ gfx::PrimitiveType::Line,
TypeListConcat<CollisionBoxLayoutAttributes, CollisionBoxDynamicAttributes>,
TypeList<
uniforms::u_matrix,
@@ -62,48 +60,48 @@ public:
}
template <class DrawMode>
- void draw(gl::Context& context,
- DrawMode drawMode,
- gfx::DepthMode depthMode,
- gfx::StencilMode stencilMode,
- gfx::ColorMode colorMode,
- gfx::CullFaceMode cullFaceMode,
- const UniformValues& uniformValues,
+ void draw(gfx::Context& context,
+ const DrawMode& drawMode,
+ const gfx::DepthMode& depthMode,
+ const gfx::StencilMode& stencilMode,
+ const gfx::ColorMode& colorMode,
+ const gfx::CullFaceMode& cullFaceMode,
+ const LayoutUniformValues& layoutUniformValues,
const gfx::VertexBuffer<gfx::Vertex<CollisionBoxLayoutAttributes>>& layoutVertexBuffer,
const gfx::VertexBuffer<gfx::Vertex<CollisionBoxDynamicAttributes>>& dynamicVertexBuffer,
const gfx::IndexBuffer& indexBuffer,
- const SegmentVector<Attributes>& segments,
+ const SegmentVector<AttributeList>& segments,
const Binders& paintPropertyBinders,
const typename PaintProperties::PossiblyEvaluated& currentProperties,
const TextureBindings& textureBindings,
float currentZoom,
const std::string& layerID) {
- typename AllUniforms::Values allUniformValues = uniformValues
+ UniformValues uniformValues = layoutUniformValues
.concat(paintPropertyBinders.uniformValues(currentZoom, currentProperties));
- typename Attributes::Bindings allAttributeBindings = gl::Attributes<CollisionBoxLayoutAttributes>::bindings(layoutVertexBuffer)
- .concat(gl::Attributes<CollisionBoxDynamicAttributes>::bindings(dynamicVertexBuffer))
+ AttributeBindings allAttributeBindings = gfx::AttributeBindings<CollisionBoxLayoutAttributes>(layoutVertexBuffer)
+ .concat(gfx::AttributeBindings<CollisionBoxDynamicAttributes>(dynamicVertexBuffer))
.concat(paintPropertyBinders.attributeBindings(currentProperties));
assert(layoutVertexBuffer.elements == dynamicVertexBuffer.elements);
for (auto& segment : segments) {
- auto vertexArrayIt = segment.vertexArrays.find(layerID);
+ auto drawScopeIt = segment.drawScopes.find(layerID);
- if (vertexArrayIt == segment.vertexArrays.end()) {
- vertexArrayIt = segment.vertexArrays.emplace(layerID, context.createVertexArray()).first;
+ if (drawScopeIt == segment.drawScopes.end()) {
+ drawScopeIt = segment.drawScopes.emplace(layerID, context.createDrawScope()).first;
}
- program.draw(
+ program->draw(
context,
std::move(drawMode),
std::move(depthMode),
std::move(stencilMode),
std::move(colorMode),
std::move(cullFaceMode),
- allUniformValues,
- vertexArrayIt->second,
- Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
+ uniformValues,
+ drawScopeIt->second,
+ allAttributeBindings.offset(segment.vertexOffset),
textureBindings,
indexBuffer,
segment.indexOffset,
@@ -114,8 +112,8 @@ public:
class CollisionCircleProgram : public Program<
- shaders::collision_circle,
- gfx::Triangle,
+ CollisionCircleProgram,
+ gfx::PrimitiveType::Triangle,
TypeListConcat<CollisionBoxLayoutAttributes, CollisionBoxDynamicAttributes>,
TypeList<
uniforms::u_matrix,
@@ -150,46 +148,46 @@ public:
}
template <class DrawMode>
- void draw(gl::Context& context,
- DrawMode drawMode,
- gfx::DepthMode depthMode,
- gfx::StencilMode stencilMode,
- gfx::ColorMode colorMode,
- gfx::CullFaceMode cullFaceMode,
- const UniformValues& uniformValues,
+ void draw(gfx::Context& context,
+ const DrawMode& drawMode,
+ const gfx::DepthMode& depthMode,
+ const gfx::StencilMode& stencilMode,
+ const gfx::ColorMode& colorMode,
+ const gfx::CullFaceMode& cullFaceMode,
+ const LayoutUniformValues& layoutUniformValues,
const gfx::VertexBuffer<gfx::Vertex<CollisionBoxLayoutAttributes>>& layoutVertexBuffer,
const gfx::VertexBuffer<gfx::Vertex<CollisionBoxDynamicAttributes>>& dynamicVertexBuffer,
const gfx::IndexBuffer& indexBuffer,
- const SegmentVector<Attributes>& segments,
+ const SegmentVector<AttributeList>& segments,
const Binders& paintPropertyBinders,
const typename PaintProperties::PossiblyEvaluated& currentProperties,
const TextureBindings& textureBindings,
float currentZoom,
const std::string& layerID) {
- typename AllUniforms::Values allUniformValues = uniformValues
+ UniformValues uniformValues = layoutUniformValues
.concat(paintPropertyBinders.uniformValues(currentZoom, currentProperties));
- typename Attributes::Bindings allAttributeBindings = gl::Attributes<CollisionBoxLayoutAttributes>::bindings(layoutVertexBuffer)
- .concat(gl::Attributes<CollisionBoxDynamicAttributes>::bindings(dynamicVertexBuffer))
+ AttributeBindings allAttributeBindings = gfx::AttributeBindings<CollisionBoxLayoutAttributes>(layoutVertexBuffer)
+ .concat(gfx::AttributeBindings<CollisionBoxDynamicAttributes>(dynamicVertexBuffer))
.concat(paintPropertyBinders.attributeBindings(currentProperties));
for (auto& segment : segments) {
- auto vertexArrayIt = segment.vertexArrays.find(layerID);
+ auto drawScopeIt = segment.drawScopes.find(layerID);
- if (vertexArrayIt == segment.vertexArrays.end()) {
- vertexArrayIt = segment.vertexArrays.emplace(layerID, context.createVertexArray()).first;
+ if (drawScopeIt == segment.drawScopes.end()) {
+ drawScopeIt = segment.drawScopes.emplace(layerID, context.createDrawScope()).first;
}
- program.draw(
+ program->draw(
context,
std::move(drawMode),
std::move(depthMode),
std::move(stencilMode),
std::move(colorMode),
std::move(cullFaceMode),
- allUniformValues,
- vertexArrayIt->second,
- Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
+ uniformValues,
+ drawScopeIt->second,
+ allAttributeBindings.offset(segment.vertexOffset),
textureBindings,
indexBuffer,
segment.indexOffset,