ПрограммированиеФорумГрафика

Можно ли из текста сделать текстуру

#0
1:34, 26 янв 2011

Мне нужно сделать такую вещь чтобы было как на картинке только она накладывается на модель(каждая буква отдельная текстура) носить текстуры всего алфавита не разумно:) ну там получается так первая текстура это мишень а вторая буква и они накладываются на модель
И так:
1. Можно ли сделать из буквы Текстуру.
2. Если нет то может по другому
Я текст вывоже через CreateFont
Использую OpenGL, С++
Мишени | Можно ли из текста сделать текстуру

#1
5:21, 26 янв 2011

>Я текст вывоже через CreateFont
glCopyTexImage2D / glCopyTexSubImage2D - медленно, тормозно, неудобно. но работать будет и метод прост как пробка

FBO - православно, навороченно, быстро, но придется немного помучиться.

на этапе загрузки:
алгоритм в первом случае такой:
1) рисуешь зеленый круг
2) выводишь текст
3) копируешь область в толькочтосозданную текстуру
4) переходишь к 1)

алгоритм во втором случае такой:
1)создаешь фреймбуффер
2)создаешь текстуру буквы и привязываешь его к фреймбуфферу
2) биндишь фреймбуффер
3) рисуешь зеленый круг
4) выводишь текст
5) переходишь к 2

приблизительно

#2
9:44, 26 янв 2011

freetype. Там тривиально.

#3
10:51, 26 янв 2011

Спасибо HolyDel
нельзя проще сделать из буквы текстуру?

#4
17:20, 27 янв 2011

а можно ли текст написать боком?? а то я его пишу а он все равно ко мне направлен?

#5
17:35, 27 янв 2011

можно все че угодно.

#6
17:40, 27 янв 2011

>а можно ли текст написать боком?? а то я его пишу а он все равно ко мне направлен?
??? зд штоль?

#7
17:41, 27 янв 2011

.:) и как сделать чтобы он уменшался когда я удалаюсь от него?? он у меня одного размера а как?

#8
17:45, 27 янв 2011

не не 3д обычный тексти пита того смотри рисунок Мишени | Можно ли из текста сделать текстуру

#9
17:45, 27 янв 2011

мне чтобы текстуры с буквами не тягать понятно что надо??

#10
18:34, 27 янв 2011

вобщем написал такую функцию

void CreateTex(GLuint &tex,char bukva)
{  
  if(!glIsTexture(tex))
    glGenTextures(1,&tex);
  glViewport(0, 0,512, 512);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluPerspective(45.0, 1, 0.0001, 6.0);
  glMatrixMode(GL_MODELVIEW);
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  glDisable(GL_LIGHTING);
  glDisable(GL_TEXTURE_2D);
  glTranslatef(0,0,-1);
  glColor3f(1,1,1);
  glRasterPos3f(0,0,0);
  glPushAttrib(GL_LIST_BIT);
  glListBase(FontVeryBig - 32);
  glCallLists(1, GL_UNSIGNED_BYTE, &bukva);
  glPopAttrib();
  glBindTexture(GL_TEXTURE_2D, tex);
  glCopyTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 512, 512, 0 );
  glEnable(GL_LIGHTING);
  glEnable(GL_TEXTURE_2D);
  WindowResize();
}
ПрограммированиеФорумГрафика

Тема в архиве.