попробуй FTGL для рисования текста, у GLFW должно быть событие TextEntered, через него можно получить unicode символа. Я использую SFML, но и GLFW использовал, там почти так же. Вот кусочек моей реализации:
Код
Engine::Engine() {
...
// Create Font
//
Theme->Font = ftglCreatePixmapFont(Theme->Data["general"].Func["font"][0].Str.c_str());
//
int size = Theme->Data["general"].Func["font"][1].Num;
ftglSetFontFaceSize(Theme->Font, size, size);
ftglSetFontCharMap(Theme->Font, ft_encoding_unicode);
...
}
void UIEdit::TextEntered (Uint16 key) {
if (!Focused) return;
//
wstring s1 = wText.substr(0, sPos);
wstring s2 = wText.substr(sPos, wText.size());
//
Uint8 b1 = key;
Uint8 b2 = key >> 8;
wchar_t wch = key;
if (!((b2 != 0 || b1 >= 0x20) && (b1 <= 0x7E))) return;
wText = s1;
wText += wch;
wText += s2;
//
StickCounter = 0;
Stick = true;
//
lPos = sPos;
sPos++;
}
void UIEdit::Draw (int x, int y) {
...
glColor3f(TextColors[n], TextColors[n+1], TextColors[n+2]);
glRasterPos2f(tx+TextOffsets[to], ty+TextOffsets[to+1]);
ftglRenderFont(Theme->Font, s.c_str(), RENDER_ALL);
...
}
Добавлено (23.03.2014, 19:31)
---------------------------------------------
вот если что полная реализация UIEdit (не законченная): код