Вместо букв выводятся каракули opengl

Мне нужно вывести кириллические буквы на экран. Скачал нужный .ttf и выводится вот это введите сюда описание изображения

(с латиницей также)

Вот код

#include <glut.h>
#include <ft2build.h>
#include FT_FREETYPE_H

FT_Library library;
FT_Face face;

void renderText(const char* text, float x, float y) {
    FT_Set_Pixel_Sizes(face, 0, 24);

    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

    const char* p;

    for (p = text; *p; p++) {
        if (FT_Load_Char(face, *p, FT_LOAD_RENDER))
            continue;

        glPushMatrix();
        glTranslatef(x + face->glyph->bitmap_left, y - face->glyph->bitmap_top, 0);

        glPixelTransferf(GL_RED_SCALE, 1.0);
        glPixelTransferf(GL_GREEN_SCALE, 1.0);
        glPixelTransferf(GL_BLUE_SCALE, 1.0);

        glBitmap(face->glyph->bitmap.width, face->glyph->bitmap.rows, 0, 0, face->glyph->bitmap.width, 0, face->glyph->bitmap.buffer);

        glPopMatrix();

        x += face->glyph->advance.x >> 6;
        y += face->glyph->advance.y >> 6;
    }
}

void display(void) {
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(1.0, 1.0, 1.0);
    renderText("КОТИКИ", 100, 100);

    glFlush();
}

int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(400, 400);
    glutCreateWindow("OpenGL");

    glClearColor(0.0, 0.0, 0.0, 0.0);
    gluOrtho2D(0, 400, 0, 400);

    if (FT_Init_FreeType(&library) || FT_New_Face(library, "font.ttf", 0, &face)) {
        // обработка ошибки и выход из программы
        return -1;
    }

    glutDisplayFunc(display);
    glutMainLoop();

    FT_Done_Face(face);
    FT_Done_FreeType(library);

    return 0;
}

Подскажите, пожалуйста, как исправить.


Ответы (0 шт):