查看: 6860|回复: 11

MFC下的抗锯齿问题

[复制链接]

该用户从未签到

发表于 2008-12-2 10:28:26 | 显示全部楼层 |阅读模式
osg中设置抗锯齿的方法大多都是这样的吧:
osg:isplaySettings* ds = osg::DisplaySettings::instance();
ds->setNumMultiSamples(16);
mViewer->setDisplaySettings(ds);


可是这段代码在osgviewerMFC 下不起作用,除非
直接设置    traits->samples=16;

这样可以在窗口初始化时设置抗锯齿,也就是像素采样率,那如何在程序运行时设置抗锯齿呢?请高手们指教

[ 本帖最后由 forest37 于 2008-12-2 10:30 编辑 ]

该用户从未签到

发表于 2008-12-2 10:32:56 | 显示全部楼层
试一试osg::Multisample
这是一个渲染属性,赋给场景根节点好了

该用户从未签到

 楼主| 发表于 2008-12-2 11:59:21 | 显示全部楼层
我 在窗口初始化时设置 traits->samples=16;
并对根节点进行了如下设置   
osg::Multisample* pms=new osg::Multisample;
    mRoot->getOrCreateStateSet()->setAttributeAndModes(pms,osg::StateAttribute::OFF);
结果是抗锯齿仍然是开着的,any  idea?

该用户从未签到

发表于 2008-12-2 14:57:04 | 显示全部楼层
没有设置Multisample的属性?这个是GL_ARB_multisample扩展的封装,请参看glSampleCoverage函数的用法

还有设置为OFF的话就等于没有设置Multisample了,这时候肯定是窗口初始化的设置有效。

该用户从未签到

 楼主| 发表于 2008-12-2 15:59:33 | 显示全部楼层
首先谢谢您的解答
glSampleCoverage是设置采样如何考虑透明度(alpha)的吧
Multisample看上去没什么属性啊,只有一个mode ,这个mode无非是质量优先,速度优先,好像没有设置不采样,或者设置采样率的接口啊。

该用户从未签到

发表于 2008-12-2 16:07:41 | 显示全部楼层
有关glSampleCoverage的用法详情可以参看:
http://www.opengl.org/sdk/docs/man/xhtml/glSampleCoverage.xml

mode属性不是在什么机器上都可以设置的,,只有nvidia可以

还有请同时开启setMode( GL_MULTISAMPLE, ON );

该用户从未签到

发表于 2009-7-23 16:12:45 | 显示全部楼层
没有设置Multisample的属性?这个是GL_ARB_multisample扩展的封装,请参看glSampleCoverage函数的用法

还有设置为OFF的话就等于没有设置Multisample了,这时候肯定是窗口初始化的设置有效。
array 发表于 2008-12-2 14:57


array大牛
在n卡下只要做一下设置:
在窗口初始化时设置 traits->samples=16;
并对根节点进行了如下设置   
osg::Multisample* pms=new osg::Multisample;
pms->setSampleCoverage(1,true);// 属性设置对了吗?
mRoot->getOrCreateStateSet()->setAttributeAndModes(pms,osg::StateAttribute::ON);
那么mRoot节点下的孩子都有抗锯齿的效果,包括导入的osg模型.。
而在a卡下,就没有抗锯齿的功能????

谢谢了。。。。。

该用户从未签到

发表于 2009-7-23 16:59:39 | 显示全部楼层
A卡对OpenGL的支持差那是出了名的,在开始仿真循环之前用DisplaySettings::instance()->setNumMultiSamples()试一试

该用户从未签到

发表于 2009-7-26 13:20:43 | 显示全部楼层
A卡对OpenGL的支持差那是出了名的,在开始仿真循环之前用DisplaySettings::instance()->setNumMultiSamples()试一试
array 发表于 2009-7-23 16:59


在n卡里怎么setNumMultiSamples(4), 最大只能到4啊。。。8 16什么的 在realize()的时候就建立窗口失败

该用户从未签到

发表于 2009-7-26 14:55:03 | 显示全部楼层
这取决于显卡的支持能力

该用户从未签到

发表于 2009-7-26 16:31:41 | 显示全部楼层
10# array


我的是9600 gt   支持性这么差》??多重采样这么耗显卡吗??

该用户从未签到

发表于 2011-8-24 16:28:35 | 显示全部楼层
受教了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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