#include #include #include #include using namespace mbgl; SDFShader::SDFShader() : Shader( "sdf", shaders[SDF_SHADER].vertex, shaders[SDF_SHADER].fragment ) { if (!valid) { fprintf(stderr, "invalid sdf shader\n"); return; } a_pos = glGetAttribLocation(program, "a_pos"); a_offset = glGetAttribLocation(program, "a_offset"); a_tex = glGetAttribLocation(program, "a_tex"); a_angle = glGetAttribLocation(program, "a_angle"); a_minzoom = glGetAttribLocation(program, "a_minzoom"); a_maxzoom = glGetAttribLocation(program, "a_maxzoom"); a_rangeend = glGetAttribLocation(program, "a_rangeend"); a_rangestart = glGetAttribLocation(program, "a_rangestart"); a_labelminzoom = glGetAttribLocation(program, "a_labelminzoom"); } void SDFGlyphShader::bind(char *offset) { const int stride = 16; glEnableVertexAttribArray(a_pos); glVertexAttribPointer(a_pos, 2, GL_SHORT, false, stride, offset + 0); glEnableVertexAttribArray(a_offset); glVertexAttribPointer(a_offset, 2, GL_SHORT, false, stride, offset + 4); glEnableVertexAttribArray(a_labelminzoom); glVertexAttribPointer(a_labelminzoom, 1, GL_UNSIGNED_BYTE, false, stride, offset + 8); glEnableVertexAttribArray(a_minzoom); glVertexAttribPointer(a_minzoom, 1, GL_UNSIGNED_BYTE, false, stride, offset + 9); glEnableVertexAttribArray(a_maxzoom); glVertexAttribPointer(a_maxzoom, 1, GL_UNSIGNED_BYTE, false, stride, offset + 10); glEnableVertexAttribArray(a_angle); glVertexAttribPointer(a_angle, 1, GL_UNSIGNED_BYTE, false, stride, offset + 11); glEnableVertexAttribArray(a_rangeend); glVertexAttribPointer(a_rangeend, 1, GL_UNSIGNED_BYTE, false, stride, offset + 12); glEnableVertexAttribArray(a_rangestart); glVertexAttribPointer(a_rangestart, 1, GL_UNSIGNED_BYTE, false, stride, offset + 13); glEnableVertexAttribArray(a_tex); glVertexAttribPointer(a_tex, 2, GL_UNSIGNED_BYTE, false, stride, offset + 14); } void SDFIconShader::bind(char *offset) { const int stride = 20; glEnableVertexAttribArray(a_pos); glVertexAttribPointer(a_pos, 2, GL_SHORT, false, stride, offset + 0); glEnableVertexAttribArray(a_offset); glVertexAttribPointer(a_offset, 2, GL_SHORT, false, stride, offset + 4); glEnableVertexAttribArray(a_labelminzoom); glVertexAttribPointer(a_labelminzoom, 1, GL_UNSIGNED_BYTE, false, stride, offset + 8); glEnableVertexAttribArray(a_minzoom); glVertexAttribPointer(a_minzoom, 1, GL_UNSIGNED_BYTE, false, stride, offset + 9); glEnableVertexAttribArray(a_maxzoom); glVertexAttribPointer(a_maxzoom, 1, GL_UNSIGNED_BYTE, false, stride, offset + 10); glEnableVertexAttribArray(a_angle); glVertexAttribPointer(a_angle, 1, GL_UNSIGNED_BYTE, false, stride, offset + 11); glEnableVertexAttribArray(a_rangeend); glVertexAttribPointer(a_rangeend, 1, GL_UNSIGNED_BYTE, false, stride, offset + 12); glEnableVertexAttribArray(a_rangestart); glVertexAttribPointer(a_rangestart, 1, GL_UNSIGNED_BYTE, false, stride, offset + 13); glEnableVertexAttribArray(a_tex); glVertexAttribPointer(a_tex, 2, GL_SHORT, false, stride, offset + 16); }