Суббота, 18 Мая 2024, 14:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » OpenGL. Поле ввода
OpenGL. Поле ввода
SaiteiДата: Воскресенье, 23 Марта 2014, 18:59 | Сообщение # 1
старожил
Сейчас нет на сайте
Как реализовать поле ввода? Помогите пожалуйста. Я использую GLFW+GLEW. Если с примером кода - вообще шикарно...
XakepДата: Воскресенье, 23 Марта 2014, 19:31 | Сообщение # 2
めちゃくちゃちゃ
Сейчас нет на сайте
попробуй 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 (не законченная): код

Форум игроделов » Программирование » C/C++ » OpenGL. Поле ввода
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг