Escolar Documentos
Profissional Documentos
Cultura Documentos
Tlio Caraciolo
Conversa de Hoje
Tcnicas
Fontes
Bitmap Fonts
Utilizamos a funo
BOOL wglUseFontBitmaps(HDC hdc, DWORD first,DWORD count, DWORD listBase);
... continuando,
Para usar Bitmap Fonts, precisamos criar um display list de tamanho 96 unsigned int base; base = glGenList(96); Depois, utilizamos a funo do windows CreateFont(), para criar a font e receber um handle.
Cdigo
HFONT hFont; // handle de font no windows // Criaremos uma fonte Courier de tamanho 14 hFont = CreateFont(14, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE | DEFAULT_PITCH, Courier); // verificamos se deu tudo certo prtica aconselhvel no Windows If (!hFont) return 0; // Selecionamos um device, como assim um device? :P SelectObject(g_HDC, hFont); // Finalmente, preparamos a fonte para ser usada wglUseFontBitmaps(g_HDC, 32, 96, base);
Escrevendo
Precisamos ainda, posicionar o texto na tela, para isso, utilizamos glRasterPos2f(x, y) Complicado no? Podemos fazer nossa prpria funo, ou usar o GLUT.
Com GLUT
character
Quais fontes?
http://www.opengl.org/resources/libraries/glut/spec3/n
ode76.html
Cdigo
// posicionamos na tela glRasterPos2f(0.5, 0.5);
// String a ser escrita na tela char* p = (char*) Pode ser assim?; while (*p != '\0') { glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *p++); }
Hora de trabalhar
Outline Fonts
uma struct do windows: GLYPHMETRICSFLOAT. Precisamos de um display list com 256. E utilizamos a funo wglUseFontOutlines(). Que possui o depth parameter (profundidade)
Novament, o GLUT
ode78.html glPushMatrix(); // Mesmo esquema... p = (char*) string; while (*p != '\0') glutStrokeCharacter(font, *p++); glPopMatrix();
Testes, trabalho...
o GLUT
glFont
students.cs.byu.edu/~bfish/glfont.php Baixar e executar
glFont.exe
Cdigo
GLFONT font;
unsigned int tex; glEnable(GL_TEXTURE_2D); glGenTexture(1, &tex); Font.create(arquivo.glf, tex); font.Begin(); font.drawString(Testando, 5, 5, 0); font.End();
Consideraes
Devemos, por outro lado, estar cientes de como fazer o mesmo sem ele. Muitas vezes o GLUT bastante limitado e a ajuda que ele prov termina sendo insuficiente.
Trabalhar...
Testar exemplos com os dois tipos de fonts Como nossa aula foi bem rpida, o resto do tempo utilizaremos para discutir sobre o projeto e implementao...