Как использовать freetypegl с {0, w, h, 0} ортопроекцией? - PullRequest
0 голосов
/ 25 ноября 2018

freetypegl написан для работы с проекцией {0, w, 0, h), почти все демонстрации, включенные в эту библиотеку, работают с этой проекцией.Я предпочитаю {0, w, h, 0}, и я не знаю, как изменить код, чтобы иметь возможность работать с этим орто.Я попытался отменить uvs, но затем текст выровнялся по верхней границе, и он не выглядит хорошо.

Как я могу изменить код для работы с проекцией {0, w, h, 0}?

void AddGlyph(Vector2& position, const char c, uint color, texture_font_t* ftFont)
{
    texture_glyph_t* glyph = texture_font_get_glyph(ftFont, &c);
    if (c) {
        if (string) {
            position.x += texture_glyph_get_kerning(glyph, &c- 1) * scale;
        }

        //One glyph is a quad and quad has 4 vertices and 6 elements, 
        //it does not impact the case
        MapBuffer(4, 6);

        float x0 = position.x + static_cast<float>(glyph->offset_x),
              y0 = position.y + static_cast<float>(glyph->offset_y),
              x1 = x0 + static_cast<float>(glyph->width),
              y1 = y0 - static_cast<float>(glyph->height),

              u0 = glyph->s0,
              v0 = glyph->t0,
              u1 = glyph->s1,
              v1 = glyph->t1;

        //vertex struct is position, uv, color
        AddVertexData(Vector2(x0, y0), Vector2(u0, v0), color);
        AddVertexData(Vector2(x0, y1), Vector2(u0, v1), color);
        AddVertexData(Vector2(x1, y1), Vector2(u1, v1), color);
        AddVertexData(Vector2(x1, y0), Vector2(u1, v0), color);

        //default rectangle elements dependence
        AddRectElements();

        position.x += glyph->advance_x * scale;
    }
}

void DrawString(const std::string& text, Vector2& position, uint color, const Font& font)
{
    using namespace ftgl;
    texture_font_t* ftFont = font.getFTFont();

    for (const auto& c : text) {
        AddGlyph(position, c, color, ftFont);
    } 
}

Может мне стоит изменить код библиотеки?Если так, что я должен изменить?

...