查看: 1554|回复: 9

osg文字清晰度对比

[复制链接]

该用户从未签到

发表于 2014-11-24 09:07:19 | 显示全部楼层 |阅读模式
本帖最后由 rubby 于 2014-11-24 09:08 编辑

各位大哥:

我使用osg开发,显示的文字效果如图1所示,文字颜色设置为白色(1.0,1.0,1.0,1.0)。


但是其它三维软件显示文字效果如图2所示。

发现的问题是:osg显示的文字不够白,不够清晰,请问这是什么原因,麻烦各位大哥给小弟一点提示。
会不会是灯光的原因?

我设置的文字状态信息是:
  1. osg::StateSet* stateset = genode->getOrCreateStateSet();
  2.         stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF|osg::StateAttribute::PROTECTED);//关闭灯光
  3.         stateset->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF);//关闭深度测试       
  4.         stateset->setMode(GL_BLEND,osg::StateAttribute::OFF|osg::StateAttribute::PROTECTED);
复制代码

图1

图1

图2

图2

该用户从未签到

发表于 2014-11-24 20:15:21 | 显示全部楼层
文字显示的原理不一样,有的直接在屏幕上绘制文字像素,有的把文字渲染到纹理,然后以纹理的形式显示。直接绘制像素的清晰锐利,纹理的就会因为纹理过滤、缩放等因素变得模糊。

该用户从未签到

 楼主| 发表于 2014-11-24 21:04:40 | 显示全部楼层
sky11811 发表于 2014-11-24 20:15
文字显示的原理不一样,有的直接在屏幕上绘制文字像素,有的把文字渲染到纹理,然后以纹理的形式显示。直接 ...

精辟,一语中的。

我现在是用osgText::Text 以hud方式显示这些文字的。
应该就是如你所说的:以纹理的形式显示。

请问,在osg中如何直接在屏幕绘制文字像素。我目前是采用osg+MFC开发。
请大侠指点一二?小弟跪谢。

该用户从未签到

发表于 2014-11-24 22:42:31 | 显示全部楼层
osg好像不支持这种方式,我自己写过类似的代码。

该用户从未签到

发表于 2014-11-26 13:53:52 | 显示全部楼层
关闭光照,设置文字分辨率characterResolation

该用户从未签到

 楼主| 发表于 2014-11-26 20:10:54 | 显示全部楼层
buaahc 发表于 2014-11-26 13:53
关闭光照,设置文字分辨率characterResolation

多谢您的回复,我尝试了下,在如下的代码中,
我将分辨率设置为128,128与256 256,但是清晰度没有变化。难道是需要用Freeteype字体吗?
Thanks again.

  1.         osgText::Font* fontHei= osgText::readFontFile("Fonts/simhei.ttf");
  2.         osg::ref_ptr<osgText::Text> depthText = new osgText::Text;
  3. color,position,osgText::Text::XZ_PLANE);
  4.         depthText->setFont(fontHei);
  5.         depthText->setCharacterSize(size);               
  6.         depthText->setFontResolution( 256, 256 );  //设置分辨率
  7.         depthText->setColor(color);
复制代码

该用户从未签到

发表于 2014-11-26 22:39:48 | 显示全部楼层
osg导致很多人不愿意深入的学习opengl,相关的图形学知识。这不好。
显示文字包括汉字很容易,绘制文字到位图,然后把像素直接画在屏幕即可。
osg做很多事太容易,这有时不是好事

该用户从未签到

发表于 2014-11-27 16:20:18 | 显示全部楼层
OpenGL绘制文字就可以了?

该用户从未签到

发表于 2014-11-28 11:58:49 | 显示全部楼层
osg文字渲染的纹理宽高与Quad的宽高不对应,导致文字不清晰,可以修改osgText::Text或自己写,但并不容易

该用户从未签到

 楼主| 发表于 2014-11-28 16:05:20 | 显示全部楼层
anlingbin 发表于 2014-11-28 11:58
osg文字渲染的纹理宽高与Quad的宽高不对应,导致文字不清晰,可以修改osgText::Text或自己写,但并不容易

多谢你解释原因。 要是有相关例子就更好了。anyway, thanks
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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