Мне нужно сделать такую вещь чтобы было как на картинке только она накладывается на модель(каждая буква отдельная текстура) носить текстуры всего алфавита не разумно:) ну там получается так первая текстура это мишень а вторая буква и они накладываются на модель
И так:
1. Можно ли сделать из буквы Текстуру.
2. Если нет то может по другому
Я текст вывоже через CreateFont
Использую OpenGL, С++
>Я текст вывоже через CreateFont
glCopyTexImage2D / glCopyTexSubImage2D - медленно, тормозно, неудобно. но работать будет и метод прост как пробка
FBO - православно, навороченно, быстро, но придется немного помучиться.
на этапе загрузки:
алгоритм в первом случае такой:
1) рисуешь зеленый круг
2) выводишь текст
3) копируешь область в толькочтосозданную текстуру
4) переходишь к 1)
алгоритм во втором случае такой:
1)создаешь фреймбуффер
2)создаешь текстуру буквы и привязываешь его к фреймбуфферу
2) биндишь фреймбуффер
3) рисуешь зеленый круг
4) выводишь текст
5) переходишь к 2
приблизительно
freetype. Там тривиально.
Спасибо HolyDel
нельзя проще сделать из буквы текстуру?
а можно ли текст написать боком?? а то я его пишу а он все равно ко мне направлен?
можно все че угодно.
>а можно ли текст написать боком?? а то я его пишу а он все равно ко мне направлен?
??? зд штоль?
.:) и как сделать чтобы он уменшался когда я удалаюсь от него?? он у меня одного размера а как?
не не 3д обычный тексти пита того смотри рисунок
мне чтобы текстуры с буквами не тягать понятно что надо??
вобщем написал такую функцию
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( ); }
Тема в архиве.