|
发表于 2011-2-15 16:20:12
|
显示全部楼层
就我猜测,你是否在GDI的绘图代码里面做了一些类似于擦除的操作?注意了,你的GDI代码千万不能直接或者间接的调用到BeginPaint和EndPaint函数。否则会导致一些问题的(比如闪烁之类的)。而且,你的GDI代码一定要在frame执行完成之后才能开始,而且GDI绘图所需要的窗口DC,最好在frame调用完成之后才能获取,不能事先获取了放着,这些都是可能导致问题的。
不过上述都是我的猜测。GDI和OpenGL本身是不冲突的,也没有理由冲突,因为他们最终都是要把图像绘制到DC上面去,一回事。
至于你说到的,使用GDI是否会改善锯齿方面的问题,这个我个人认为,绝无改善的可能。相反,使用OpenGL倒还有改善的可能,比如你打开了反走样开关,效果还是蛮好的:
const bool bSupported = osg::isGLExtensionOrVersionSupported(0u, "WGL_ARB_multisample", fltOGLVersion);
if(bSupported)
{
pTraits->samples = 4;
pTraits->sampleBuffers = 1;
}
上面的变量pTraits,就是osg::GraphicsContext::Traits类型的指针,初始化osg的时候所需要自行new出来的对象。osg在场景反走样方面,还是做了许多包装的,挺好用的。 |
|