[shader] bind() is now a pure virtual
- Shader::bind() now receives a GLbyte* - BUFFER_OFFSET now uses GLbyte
This commit is contained in:
@@ -69,7 +69,7 @@ void VertexArrayObject::bindVertexArrayObject() {
|
||||
}
|
||||
|
||||
void VertexArrayObject::verifyBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer,
|
||||
char *offset) {
|
||||
GLbyte *offset) {
|
||||
if (bound_shader != shader.getID()) {
|
||||
throw std::runtime_error(std::string("trying to rebind VAO to another shader from " +
|
||||
util::toString(bound_shader) + "(" + bound_shader_name + ") to " +
|
||||
@@ -84,7 +84,7 @@ void VertexArrayObject::verifyBinding(Shader &shader, GLuint vertexBuffer, GLuin
|
||||
}
|
||||
|
||||
void VertexArrayObject::storeBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer,
|
||||
char *offset) {
|
||||
GLbyte *offset) {
|
||||
bound_shader = shader.getID();
|
||||
bound_shader_name = shader.name;
|
||||
bound_offset = offset;
|
||||
|
||||
@@ -18,7 +18,7 @@ public:
|
||||
~VertexArrayObject();
|
||||
|
||||
template <typename Shader, typename VertexBuffer>
|
||||
inline void bind(Shader& shader, VertexBuffer &vertexBuffer, char *offset) {
|
||||
inline void bind(Shader& shader, VertexBuffer &vertexBuffer, GLbyte *offset) {
|
||||
bindVertexArrayObject();
|
||||
if (bound_shader == 0) {
|
||||
vertexBuffer.bind();
|
||||
@@ -32,7 +32,7 @@ public:
|
||||
}
|
||||
|
||||
template <typename Shader, typename VertexBuffer, typename ElementsBuffer>
|
||||
inline void bind(Shader& shader, VertexBuffer &vertexBuffer, ElementsBuffer &elementsBuffer, char *offset) {
|
||||
inline void bind(Shader& shader, VertexBuffer &vertexBuffer, ElementsBuffer &elementsBuffer, GLbyte *offset) {
|
||||
bindVertexArrayObject();
|
||||
if (bound_shader == 0) {
|
||||
vertexBuffer.bind();
|
||||
@@ -52,8 +52,8 @@ public:
|
||||
|
||||
private:
|
||||
void bindVertexArrayObject();
|
||||
void storeBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, char *offset);
|
||||
void verifyBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, char *offset);
|
||||
void storeBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, GLbyte *offset);
|
||||
void verifyBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, GLbyte *offset);
|
||||
|
||||
GLuint vao = 0;
|
||||
|
||||
@@ -63,7 +63,7 @@ private:
|
||||
const char *bound_shader_name = "";
|
||||
GLuint bound_vertex_buffer = 0;
|
||||
GLuint bound_elements_buffer = 0;
|
||||
char *bound_offset = 0;
|
||||
GLbyte *bound_offset = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
#ifndef MBGL_RENDERER_BUCKET
|
||||
#define MBGL_RENDERER_BUCKET
|
||||
|
||||
#include <mbgl/platform/gl.hpp>
|
||||
#include <mbgl/renderer/render_pass.hpp>
|
||||
#include <mbgl/util/noncopyable.hpp>
|
||||
#include <mbgl/util/mat4.hpp>
|
||||
|
||||
#include <atomic>
|
||||
|
||||
#define BUFFER_OFFSET(i) ((char*)nullptr + (i))
|
||||
#define BUFFER_OFFSET_0 ((GLbyte*)nullptr)
|
||||
#define BUFFER_OFFSET(i) ((BUFFER_OFFSET_0) + (i))
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
|
||||
@@ -74,8 +74,8 @@ void CircleBucket::addGeometry(const GeometryCollection& geometryCollection) {
|
||||
}
|
||||
|
||||
void CircleBucket::drawCircles(CircleShader& shader) {
|
||||
char* vertexIndex = BUFFER_OFFSET(vertexStart_ * vertexBuffer_.itemSize);
|
||||
char* elementsIndex = BUFFER_OFFSET(elementsStart_ * elementsBuffer_.itemSize);
|
||||
GLbyte *vertexIndex = BUFFER_OFFSET(vertexStart_ * vertexBuffer_.itemSize);
|
||||
GLbyte *elementsIndex = BUFFER_OFFSET(elementsStart_ * elementsBuffer_.itemSize);
|
||||
|
||||
for (auto& group : triangleGroups_) {
|
||||
assert(group);
|
||||
|
||||
@@ -23,11 +23,11 @@ void DebugBucket::render(Painter& painter, const StyleLayer&, const TileID&, con
|
||||
}
|
||||
|
||||
void DebugBucket::drawLines(PlainShader& shader) {
|
||||
array.bind(shader, fontBuffer, BUFFER_OFFSET(0));
|
||||
array.bind(shader, fontBuffer, BUFFER_OFFSET_0);
|
||||
MBGL_CHECK_ERROR(glDrawArrays(GL_LINES, 0, (GLsizei)(fontBuffer.index())));
|
||||
}
|
||||
|
||||
void DebugBucket::drawPoints(PlainShader& shader) {
|
||||
array.bind(shader, fontBuffer, BUFFER_OFFSET(0));
|
||||
array.bind(shader, fontBuffer, BUFFER_OFFSET_0);
|
||||
MBGL_CHECK_ERROR(glDrawArrays(GL_POINTS, 0, (GLsizei)(fontBuffer.index())));
|
||||
}
|
||||
|
||||
@@ -216,8 +216,8 @@ bool FillBucket::hasData() const {
|
||||
}
|
||||
|
||||
void FillBucket::drawElements(PlainShader& shader) {
|
||||
char *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
char *elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
GLbyte *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
GLbyte *elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
for (auto& group : triangleGroups) {
|
||||
assert(group);
|
||||
group->array[0].bind(shader, vertexBuffer, triangleElementsBuffer, vertex_index);
|
||||
@@ -228,8 +228,8 @@ void FillBucket::drawElements(PlainShader& shader) {
|
||||
}
|
||||
|
||||
void FillBucket::drawElements(PatternShader& shader) {
|
||||
char *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
char *elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
GLbyte *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
GLbyte *elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
for (auto& group : triangleGroups) {
|
||||
assert(group);
|
||||
group->array[1].bind(shader, vertexBuffer, triangleElementsBuffer, vertex_index);
|
||||
@@ -240,8 +240,8 @@ void FillBucket::drawElements(PatternShader& shader) {
|
||||
}
|
||||
|
||||
void FillBucket::drawVertices(OutlineShader& shader) {
|
||||
char *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
char *elements_index = BUFFER_OFFSET(line_elements_start * lineElementsBuffer.itemSize);
|
||||
GLbyte *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
GLbyte *elements_index = BUFFER_OFFSET(line_elements_start * lineElementsBuffer.itemSize);
|
||||
for (auto& group : lineGroups) {
|
||||
assert(group);
|
||||
group->array[0].bind(shader, vertexBuffer, lineElementsBuffer, vertex_index);
|
||||
|
||||
@@ -405,8 +405,8 @@ bool LineBucket::hasData() const {
|
||||
}
|
||||
|
||||
void LineBucket::drawLines(LineShader& shader) {
|
||||
char* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
char* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
GLbyte* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
GLbyte* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
for (auto& group : triangleGroups) {
|
||||
assert(group);
|
||||
if (!group->elements_length) {
|
||||
@@ -421,8 +421,8 @@ void LineBucket::drawLines(LineShader& shader) {
|
||||
}
|
||||
|
||||
void LineBucket::drawLineSDF(LineSDFShader& shader) {
|
||||
char* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
char* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
GLbyte* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
GLbyte* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
for (auto& group : triangleGroups) {
|
||||
assert(group);
|
||||
if (!group->elements_length) {
|
||||
@@ -437,8 +437,8 @@ void LineBucket::drawLineSDF(LineSDFShader& shader) {
|
||||
}
|
||||
|
||||
void LineBucket::drawLinePatterns(LinepatternShader& shader) {
|
||||
char* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
char* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
GLbyte* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize);
|
||||
GLbyte* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize);
|
||||
for (auto& group : triangleGroups) {
|
||||
assert(group);
|
||||
if (!group->elements_length) {
|
||||
|
||||
@@ -16,7 +16,7 @@ void Painter::drawClippingMasks(const std::set<Source*>& sources) {
|
||||
config.colorMask = { false, false, false, false };
|
||||
config.depthRange = { 1.0f, 1.0f };
|
||||
|
||||
coveringPlainArray.bind(*plainShader, tileStencilBuffer, BUFFER_OFFSET(0));
|
||||
coveringPlainArray.bind(*plainShader, tileStencilBuffer, BUFFER_OFFSET_0);
|
||||
|
||||
for (const auto& source : sources) {
|
||||
source->drawClippingMasks(*this);
|
||||
|
||||
@@ -59,7 +59,7 @@ void Painter::renderDebugFrame(const mat4 &matrix) {
|
||||
plainShader->u_matrix = matrix;
|
||||
|
||||
// draw tile outline
|
||||
tileBorderArray.bind(*plainShader, tileBorderBuffer, BUFFER_OFFSET(0));
|
||||
tileBorderArray.bind(*plainShader, tileBorderBuffer, BUFFER_OFFSET_0);
|
||||
plainShader->u_color = {{ 1.0f, 0.0f, 0.0f, 1.0f }};
|
||||
lineWidth(4.0f * data.pixelRatio);
|
||||
MBGL_CHECK_ERROR(glDrawArrays(GL_LINE_STRIP, 0, (GLsizei)tileBorderBuffer.index()));
|
||||
|
||||
@@ -30,7 +30,7 @@ bool RasterBucket::setImage(std::unique_ptr<util::Image> image) {
|
||||
void RasterBucket::drawRaster(RasterShader& shader, StaticVertexBuffer &vertices, VertexArrayObject &array) {
|
||||
raster.bind(true);
|
||||
shader.u_image = 0;
|
||||
array.bind(shader, vertices, BUFFER_OFFSET(0));
|
||||
array.bind(shader, vertices, BUFFER_OFFSET_0);
|
||||
MBGL_CHECK_ERROR(glDrawArrays(GL_TRIANGLES, 0, (GLsizei)vertices.index()));
|
||||
}
|
||||
|
||||
|
||||
@@ -565,8 +565,8 @@ void SymbolBucket::swapRenderData() {
|
||||
}
|
||||
|
||||
void SymbolBucket::drawGlyphs(SDFShader &shader) {
|
||||
char *vertex_index = BUFFER_OFFSET(0);
|
||||
char *elements_index = BUFFER_OFFSET(0);
|
||||
GLbyte *vertex_index = BUFFER_OFFSET_0;
|
||||
GLbyte *elements_index = BUFFER_OFFSET_0;
|
||||
auto& text = renderData->text;
|
||||
for (auto &group : text.groups) {
|
||||
assert(group);
|
||||
@@ -578,8 +578,8 @@ void SymbolBucket::drawGlyphs(SDFShader &shader) {
|
||||
}
|
||||
|
||||
void SymbolBucket::drawIcons(SDFShader &shader) {
|
||||
char *vertex_index = BUFFER_OFFSET(0);
|
||||
char *elements_index = BUFFER_OFFSET(0);
|
||||
GLbyte *vertex_index = BUFFER_OFFSET_0;
|
||||
GLbyte *elements_index = BUFFER_OFFSET_0;
|
||||
auto& icon = renderData->icon;
|
||||
for (auto &group : icon.groups) {
|
||||
assert(group);
|
||||
@@ -591,8 +591,8 @@ void SymbolBucket::drawIcons(SDFShader &shader) {
|
||||
}
|
||||
|
||||
void SymbolBucket::drawIcons(IconShader &shader) {
|
||||
char *vertex_index = BUFFER_OFFSET(0);
|
||||
char *elements_index = BUFFER_OFFSET(0);
|
||||
GLbyte *vertex_index = BUFFER_OFFSET_0;
|
||||
GLbyte *elements_index = BUFFER_OFFSET_0;
|
||||
auto& icon = renderData->icon;
|
||||
for (auto &group : icon.groups) {
|
||||
assert(group);
|
||||
@@ -604,7 +604,7 @@ void SymbolBucket::drawIcons(IconShader &shader) {
|
||||
}
|
||||
|
||||
void SymbolBucket::drawCollisionBoxes(CollisionBoxShader &shader) {
|
||||
char *vertex_index = BUFFER_OFFSET(0);
|
||||
GLbyte *vertex_index = BUFFER_OFFSET_0;
|
||||
auto& collisionBox = renderData->collisionBox;
|
||||
for (auto &group : collisionBox.groups) {
|
||||
group->array[0].bind(shader, collisionBox.vertices, vertex_index);
|
||||
|
||||
@@ -16,7 +16,7 @@ CollisionBoxShader::CollisionBoxShader()
|
||||
a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data"));
|
||||
}
|
||||
|
||||
void CollisionBoxShader::bind(char *offset) {
|
||||
void CollisionBoxShader::bind(GLbyte *offset) {
|
||||
const int stride = 12;
|
||||
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <mbgl/shader/shader.hpp>
|
||||
#include <mbgl/shader/uniform.hpp>
|
||||
#include <mbgl/platform/gl.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
@@ -10,7 +11,7 @@ class CollisionBoxShader : public Shader {
|
||||
public:
|
||||
CollisionBoxShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
Uniform<float> u_scale = {"u_scale", *this};
|
||||
|
||||
@@ -14,7 +14,7 @@ CircleShader::CircleShader()
|
||||
) {
|
||||
}
|
||||
|
||||
void CircleShader::bind(char *offset) {
|
||||
void CircleShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 4, offset));
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ class CircleShader : public Shader {
|
||||
public:
|
||||
CircleShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this};
|
||||
|
||||
@@ -14,7 +14,7 @@ DotShader::DotShader()
|
||||
) {
|
||||
}
|
||||
|
||||
void DotShader::bind(char *offset) {
|
||||
void DotShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 8, offset));
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ class DotShader : public Shader {
|
||||
public:
|
||||
DotShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
Uniform<std::array<float, 4>> u_color = {"u_color", *this};
|
||||
|
||||
@@ -17,7 +17,7 @@ IconShader::IconShader()
|
||||
a_data2 = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data2"));
|
||||
}
|
||||
|
||||
void IconShader::bind(char *offset) {
|
||||
void IconShader::bind(GLbyte *offset) {
|
||||
const int stride = 16;
|
||||
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
|
||||
@@ -10,7 +10,7 @@ class IconShader : public Shader {
|
||||
public:
|
||||
IconShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this};
|
||||
|
||||
@@ -15,7 +15,7 @@ LineShader::LineShader()
|
||||
a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data"));
|
||||
}
|
||||
|
||||
void LineShader::bind(char *offset) {
|
||||
void LineShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 8, offset + 0));
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ class LineShader : public Shader {
|
||||
public:
|
||||
LineShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this};
|
||||
|
||||
@@ -15,7 +15,7 @@ LinepatternShader::LinepatternShader()
|
||||
a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data"));
|
||||
}
|
||||
|
||||
void LinepatternShader::bind(char *offset) {
|
||||
void LinepatternShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 8, offset + 0));
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ class LinepatternShader : public Shader {
|
||||
public:
|
||||
LinepatternShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this};
|
||||
|
||||
@@ -15,7 +15,7 @@ LineSDFShader::LineSDFShader()
|
||||
a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data"));
|
||||
}
|
||||
|
||||
void LineSDFShader::bind(char *offset) {
|
||||
void LineSDFShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 8, offset + 0));
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ class LineSDFShader : public Shader {
|
||||
public:
|
||||
LineSDFShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this};
|
||||
|
||||
@@ -14,7 +14,7 @@ OutlineShader::OutlineShader()
|
||||
) {
|
||||
}
|
||||
|
||||
void OutlineShader::bind(char *offset) {
|
||||
void OutlineShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset));
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ class OutlineShader : public Shader {
|
||||
public:
|
||||
OutlineShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
Uniform<std::array<float, 4>> u_color = {"u_color", *this};
|
||||
|
||||
@@ -14,7 +14,7 @@ PatternShader::PatternShader()
|
||||
) {
|
||||
}
|
||||
|
||||
void PatternShader::bind(char *offset) {
|
||||
void PatternShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset));
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ class PatternShader : public Shader {
|
||||
public:
|
||||
PatternShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
Uniform<std::array<float, 2>> u_pattern_tl_a = {"u_pattern_tl_a", *this};
|
||||
|
||||
@@ -14,7 +14,7 @@ PlainShader::PlainShader()
|
||||
) {
|
||||
}
|
||||
|
||||
void PlainShader::bind(char *offset) {
|
||||
void PlainShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset));
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ class PlainShader : public Shader {
|
||||
public:
|
||||
PlainShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
Uniform<std::array<float, 4>> u_color = {"u_color", *this};
|
||||
|
||||
@@ -14,7 +14,7 @@ RasterShader::RasterShader()
|
||||
) {
|
||||
}
|
||||
|
||||
void RasterShader::bind(char *offset) {
|
||||
void RasterShader::bind(GLbyte *offset) {
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset));
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ class RasterShader : public Shader {
|
||||
public:
|
||||
RasterShader();
|
||||
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
Uniform<int32_t> u_image = {"u_image", *this};
|
||||
|
||||
@@ -17,7 +17,7 @@ SDFShader::SDFShader()
|
||||
a_data2 = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data2"));
|
||||
}
|
||||
|
||||
void SDFGlyphShader::bind(char *offset) {
|
||||
void SDFGlyphShader::bind(GLbyte *offset) {
|
||||
const int stride = 16;
|
||||
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
@@ -33,7 +33,7 @@ void SDFGlyphShader::bind(char *offset) {
|
||||
MBGL_CHECK_ERROR(glVertexAttribPointer(a_data2, 4, GL_UNSIGNED_BYTE, false, stride, offset + 12));
|
||||
}
|
||||
|
||||
void SDFIconShader::bind(char *offset) {
|
||||
void SDFIconShader::bind(GLbyte *offset) {
|
||||
const int stride = 16;
|
||||
|
||||
MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
|
||||
|
||||
@@ -10,8 +10,6 @@ class SDFShader : public Shader {
|
||||
public:
|
||||
SDFShader();
|
||||
|
||||
virtual void bind(char *offset) = 0;
|
||||
|
||||
UniformMatrix<4> u_matrix = {"u_matrix", *this};
|
||||
UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this};
|
||||
Uniform<std::array<float, 4>> u_color = {"u_color", *this};
|
||||
@@ -34,12 +32,12 @@ protected:
|
||||
|
||||
class SDFGlyphShader : public SDFShader {
|
||||
public:
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
};
|
||||
|
||||
class SDFIconShader : public SDFShader {
|
||||
public:
|
||||
void bind(char *offset);
|
||||
void bind(GLbyte *offset) final;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ public:
|
||||
return program;
|
||||
}
|
||||
|
||||
virtual void bind(GLbyte *offset) = 0;
|
||||
|
||||
protected:
|
||||
GLint a_pos = -1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user