查看: 1443|回复: 1

osg中使用OPENGL加载中文字体的问题

[复制链接]

该用户从未签到

发表于 2009-10-28 20:05:31 | 显示全部楼层 |阅读模式
void CGLChineseFont::drawCNString(const char *str)
{
int len, i;
wchar_t* wstring;
HDC hDC = wglGetCurrentDC();
GLuint list = glGenLists(1);
//glNewList( list, GL_COMPILE_AND_EXECUTE );

len = 0;
for(i=0; str[i]!='\0'; ++i)
{
  if( IsDBCSLeadByte(str[i]) )
   ++i;
  ++len;
}

wstring = (wchar_t*)malloc((len+1) * sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, -1, wstring, len);
wstring[len] = L'\0';

for(i=0; i<len; ++i)
{
  wchar_t wstring1 = wstring[i];
  wglUseFontBitmapsW(hDC, wstring[i], 1, list);
  glCallList(list);
}

free(wstring);
glDeleteLists(list, 1);
}
比如我传过来的是“我爱我的祖国”在窗口中只能显示一个“我”字。为什么?请指出我存在什么问题?是我还需要在哪里指定一个宽度么?

该用户从未签到

发表于 2009-10-28 20:35:54 | 显示全部楼层
参照osgText的实现吧,如果是使用Drawable派生类实现的,注意重载computeBound函数,此外显示列表的应用在这里也不妥当。
另外,有一点希望您注意的是:如果我不是在QQ群上提前看到了您的问题,那么我肯定不理解您要做什么,因为您提供的函数名称为CGLChineseFont::drawCNString,从头至尾与OSG都毫无关系。请注意提问时要提供所有相关的信息,否则没有人能够对您提供帮助!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表