1 #pragma once
2 
3 #include <mbgl/programs/program.hpp>
4 #include <mbgl/programs/attributes.hpp>
5 #include <mbgl/programs/uniforms.hpp>
6 #include <mbgl/shaders/extrusion_texture.hpp>
7 #include <mbgl/style/properties.hpp>
8 #include <mbgl/util/geometry.hpp>
9 
10 namespace mbgl {
11 
12 class ExtrusionTextureProgram : public Program<
13     shaders::extrusion_texture,
14     gl::Triangle,
15     gl::Attributes<attributes::a_pos>,
16     gl::Uniforms<
17         uniforms::u_matrix,
18         uniforms::u_world,
19         uniforms::u_image,
20         uniforms::u_opacity>,
21     style::Properties<>> {
22 public:
23     using Program::Program;
24 
layoutVertex(Point<int16_t> p)25     static LayoutVertex layoutVertex(Point<int16_t> p) {
26         return LayoutVertex{
27             {{
28                 p.x,
29                 p.y
30             }}
31         };
32     }
33 };
34 
35 using ExtrusionTextureLayoutVertex = ExtrusionTextureProgram::LayoutVertex;
36 using ExtrusionTextureAttributes = ExtrusionTextureProgram::Attributes;
37 
38 } // namespace mbgl
39