ID do artigo: 131024 - Última revisão: terça-feira, 21 de novembro de 2006 - Revisão: 3.4

Desenho texto Three-Dimensional em aplicativos de OpenGL

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Recolher tudo

Sumário

Operações de GDI, tais como TextOut, poderá ser executadas em uma janela de OpenGL somente se a janela é armazenado em buffer único. Implementação do OpenGL para Windows NT não suporta gráficos GDI em uma janela em buffer duplo. Portanto, você não pode usar funções GDI para desenhar texto em uma janela em buffer duplo, por exemplo. Para desenhar texto em uma janela em buffer duplo, um aplicativo pode usar as funções wglUseFontBitmaps e wglUseFontOutlines para criar listas de exibição de caracteres em uma fonte e desenhe os caracteres na fonte com a função glCallLists.

A função wglUseFontOutlines é novo no Windows NT 3.51 e pode ser usada para desenhar caracteres 3D de fontes TrueType. Esses caracteres podem ser girados, em escala, transformados e exibidos como qualquer outra imagem 3D do OpenGL. Esta função é projetada para trabalhar com fontes TrueType.

O exemplo GLFONT mostra como usar a função wglUseFontOutlines para criar listas de exibição de caracteres em uma fonte TrueType e como desenhar, dimensionar e girar glifos na fonte usando glCallLists para desenhar os caracteres e outras funções de OpenGL para girar e escala-los. Você precisa SDK do Win32 para Windows NT 3.51 para compilar este exemplo, e você precisará incorporar wglUseFontOutlines em seu próprio aplicativo. Você também precisa Windows NT 3.51 para executar o aplicativo.

Mais Informações

O seguinte arquivo está disponível para download no Centro de download da Microsoft:
Glfont.exe (http://download.microsoft.com/download/platformsdk/sample24/1/w9xnt4/en-us/glfont.exe)
Para obter informações adicionais sobre como baixar arquivos de suporte da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
119591  (http://support.microsoft.com/kb/119591/EN-US/ ) Como obter arquivos de suporte da Microsoft a partir de serviços online
Microsoft examinou esse arquivo em busca de vírus. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o arquivo foi publicado. O arquivo é armazenado em servidores com segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo. Para especificar a fonte TrueType para o qual deseja wglUseFontOutlines para criar listas de exibição, crie primeiro a fonte de lógica desejada usando CreateFont ou CreateFontIndirect . Em seguida, você deve selecione HFONT criado em um contexto de dispositivo de tela (HDC) com SelecionarObjeto e enviar o HDC para a função wglUseFontOutlines . Cada caractere é mapeado no x e y instruções de listas de exibição. Você precisa especificar a profundidade na direção z negativo no parâmetro extrusão wglUseFontOutlines .

Você também pode especificar se deseja que os glifos 3D a ser criado com segmentos de linha ou polígonos. Para instruir wglUseFontOutlines para criar os glifos 3D com segmentos de linhas, especifique WGL_FONT_LINES no formato de parâmetro. Para criá-los com polígonos, especifique WGL_FONT_POLYGONS.

Aqui está um exemplo mostrando como criar um conjunto de listas de exibição para desenhar os caracteres da fonte Arial TrueType como um conjunto de polígonos:
   LOGFONT     lf;
   HFONT       hFont, hOldFont;
   GLYPHMETRICSFLOAT agmf[256];

   // An hDC and an hRC have already been created.
   wglMakeCurrent( hDC, hRC );

   // Let's create a TrueType font to display.
   memset(&lf,0,sizeof(LOGFONT));
   lf.lfHeight               =   -20 ;
   lf.lfWeight               =   FW_NORMAL ;
   lf.lfCharSet              =   ANSI_CHARSET ;
   lf.lfOutPrecision         =   OUT_DEFAULT_PRECIS ;
   lf.lfClipPrecision        =   CLIP_DEFAULT_PRECIS ;
   lf.lfQuality              =   DEFAULT_QUALITY ;
   lf.lfPitchAndFamily       =   FF_DONTCARE|DEFAULT_PITCH;
   lstrcpy (lf.lfFaceName, "Arial") ;

   hFont = CreateFontIndirect(&lf);
   hOldFont = SelectObject(hDC,hFont);

   // Create a set of display lists based on the TT font we selected
   if (!(wglUseFontOutlines(hDC, 0, 255, GLF_START_LIST, 0.0f, 0.15f,
      WGL_FONT_POLYGONS, agmf)))
        MessageBox(hWnd,"wglUseFontOutlines failed!","GLFont",MB_OK);

   DeleteObject(SelectObject(hDC,hOldFont));
   .  .  .  .
   .  .  .  .
   .  .  .  .
   .  .  .  .
				
para exibir esses caracteres 3D em uma seqüência de caracteres, use o seguinte código:
   // Display string with display lists created by wglUseFontOutlines()
   glListBase(GLF_START_LIST); // indicate start of display lists

   // Draw the characters
   glCallLists(6, GL_UNSIGNED_BYTE, "OpenGL");
				

A informação contida neste artigo aplica-se a:
  • Interface de Programação de Aplicativos do Microsoft Win32 nas seguintes plataformas
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows NT Workstation 4.0 Developer Edition
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows 95
Palavras-chave: 
kbmt kbfile kbinfo KB131024 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 131024  (http://support.microsoft.com/kb/131024/en-us/ )