OpenGL中的汉字显示
来源:互联网 发布:2017年9月非农数据 编辑:程序博客网 时间:2024/05/18 14:24
void COpenGLDemoView::glDrawString(unsigned char *str)
{
GLYPHMETRICSFLOAT pgmf[1];
HDC hDC=wglGetCurrentDC();
HFONT hFont;
LOGFONT lf ;
memset(&lf,0,sizeof(LOGFONT));
lf.lfHeight = 1 ;
lf.lfWidth = 0 ;
lf.lfEscapement = 0 ;
lf.lfOrientation = 0 ;
lf.lfWeight = FW_NORMAL ;
lf.lfItalic = FALSE ;
lf.lfUnderline = FALSE ;
lf.lfStrikeOut = FALSE ;
lf.lfCharSet = GB2312_CHARSET ;
lf.lfOutPrecision = OUT_TT_PRECIS ;
lf.lfClipPrecision= CLIP_DEFAULT_PRECIS ;
lf.lfQuality = PROOF_QUALITY ;
lf.lfPitchAndFamily = VARIABLE_PITCH | TMPF_TRUETYPE | FF_MODERN ;
lstrcpy (lf.lfFaceName, "宋体") ;
hFont = CreateFontIndirect(&lf);
//设置当前字体
SelectObject(wglGetCurrentDC(),hFont);
DWORD dwChar;
int ListNum;
for(size_t i=0;i<strlen((char *)str);i++)
{
if(IsDBCSLeadByte(str[i]))
{
dwChar=(DWORD)((str[i]<<8)|str[i+1]);
i++;
}
else
dwChar=str[i];
ListNum=glGenLists(1);
wglUseFontOutlines(hDC,dwChar,1,ListNum,0.0,0.1f,WGL_FONT_POLYGONS,pgmf);
glCallList(ListNum);
glDeleteLists(ListNum,1);
}
}
{
GLYPHMETRICSFLOAT pgmf[1];
HDC hDC=wglGetCurrentDC();
HFONT hFont;
LOGFONT lf ;
memset(&lf,0,sizeof(LOGFONT));
lf.lfHeight = 1 ;
lf.lfWidth = 0 ;
lf.lfEscapement = 0 ;
lf.lfOrientation = 0 ;
lf.lfWeight = FW_NORMAL ;
lf.lfItalic = FALSE ;
lf.lfUnderline = FALSE ;
lf.lfStrikeOut = FALSE ;
lf.lfCharSet = GB2312_CHARSET ;
lf.lfOutPrecision = OUT_TT_PRECIS ;
lf.lfClipPrecision= CLIP_DEFAULT_PRECIS ;
lf.lfQuality = PROOF_QUALITY ;
lf.lfPitchAndFamily = VARIABLE_PITCH | TMPF_TRUETYPE | FF_MODERN ;
lstrcpy (lf.lfFaceName, "宋体") ;
hFont = CreateFontIndirect(&lf);
//设置当前字体
SelectObject(wglGetCurrentDC(),hFont);
DWORD dwChar;
int ListNum;
for(size_t i=0;i<strlen((char *)str);i++)
{
if(IsDBCSLeadByte(str[i]))
{
dwChar=(DWORD)((str[i]<<8)|str[i+1]);
i++;
}
else
dwChar=str[i];
ListNum=glGenLists(1);
wglUseFontOutlines(hDC,dwChar,1,ListNum,0.0,0.1f,WGL_FONT_POLYGONS,pgmf);
glCallList(ListNum);
glDeleteLists(ListNum,1);
}
}
int COpenGLDemoView::DrawGLScene()
{// Here's Where We Do All The Drawing
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity(); // Reset The Current Modelview Matrix
glTranslatef(-2.5f,0.0f,-10.0f); // Move One Unit Into The Screen
unsigned char str[] = "你好,中国";
this->glDrawString(str);
return TRUE; // Everything Went OK
// Everything Went OK
}
{// Here's Where We Do All The Drawing
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity(); // Reset The Current Modelview Matrix
glTranslatef(-2.5f,0.0f,-10.0f); // Move One Unit Into The Screen
unsigned char str[] = "你好,中国";
this->glDrawString(str);
return TRUE; // Everything Went OK
// Everything Went OK
}
效果如图所示:
- OpenGL中的汉字显示
- VB OpenGL 汉字显示
- OpenGL显示三维汉字
- OpenGL显示文字--显示汉字
- OpenGL显示文字--显示汉字
- OpenGL显示文字--显示汉字
- 在OpenGL中显示TrueType汉字
- 一个极好的OpenGL汉字显示类
- openGL学习笔记5 显示汉字
- OpenGL 显示汉字,别的地方摘录
- Linux下Modern OpenGL显示汉字
- 单片机系统中的汉字显示
- CEGUI中的汉字显示实现
- 一个极好的OpenGL汉字显示类(转,作者Y_Y)
- 附录4 一个OpenGL下的汉字显示类
- OpenGL系统设计-位图 字体(3) 汉字显示
- 【OpenGL游戏开发之五】freetype2 显示汉字
- MyEclipse UML图中的汉字显示
- OpenGL入门笔记(十五)
- OpenGL入门笔记(十四)
- OpenGL入门笔记(十三)
- 【转】Lucene倒排索引原理
- Lucene学习笔记(一)
- OpenGL中的汉字显示
- OpenGL入门笔记(十二)
- C语言的变参函数设计
- OpenGL的显示列表
- OpenGL选择机制的一点讨论
- 代码分析
- 用Soap消息调用Web Services(续)
- 【转】用JDOM建立XML文件
- 【翻译】Use a bitmap as a background image