Вместо букв выводятся каракули 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;
}
Подскажите, пожалуйста, как исправить.