大智若愚  
拈花一笑,淡然处之……
日历
<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

留言簿

随笔档案(18)

文章分类

最新随笔

最新评论

 
前段时间,一直在弄osg中的图像放缩和图像拷贝的问题,主要是其中的两个函数: scaleImage和copySubImage,但是使用过程中总是产生一个问题,提示

这个问题困扰了很久很久,一直在osgChina上查找都没有找到具体的原因。今天上天保佑,在三人共同编程的情况下,终于找到了解决方案,现在我贴出代码,以供大家分享:
 1class MyGraphicsContext {
 2public:
 3    MyGraphicsContext()
 4    {
 5        osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
 6        traits->x = 0;
 7        traits->y = 0;
 8        traits->width = 1;
 9        traits->height = 1;
10        traits->windowDecoration = false;
11        traits->doubleBuffer = false;
12        traits->sharedContext = 0;
13        traits->pbuffer = true;
14
15        _gc = osg::GraphicsContext::createGraphicsContext(traits.get());
16
17        if (!_gc)
18        {
19            traits->pbuffer = false;
20            _gc = osg::GraphicsContext::createGraphicsContext(traits.get());
21        }
22
23        if (_gc.valid()) 
24        {
25            _gc->realize();
26            _gc->makeCurrent();
27        }
28    }
29
30    bool valid() const { return _gc.valid() && _gc->isRealized(); }
31
32private:
33    osg::ref_ptr<osg::GraphicsContext> _gc;
34};

以上是自己的图形上下文,必须要有这个的存在才能正确的调用到上面提到的两个函数,下面是其使用:
 1int main(int argc, char* argv[])
 2{
 3    MyGraphicsContext gc;
 4    if (!gc.valid()) 
 5    {
 6        osg::notify(osg::NOTICE)<<"Unable to create the graphics context required to build 3d image."<<std::endl;
 7        return 0;
 8    }
 9
10    osg::ref_ptr<osg::Image> image =  new osg::Image;
11    osg::ref_ptr<osg::Image> image1 =  new osg::Image;
12    osg::ref_ptr<osg::Image> image2 =  new osg::Image;
13    image1 = osgDB::readImageFile("1.bmp");
14    image2 = osgDB::readImageFile("2.bmp");
15    image->allocateImage(512, 256, 1, image1->getPixelFormat(), image1->getDataType());
16    image->copySubImage(0, 0, 0, image1);
17    image->copySubImage(256,0, 0, image2);
18
19    osgDB::writeImageFile(*image, "0.bmp");
20
21    return 0;
22}
23

只有这样才能正确的处理图像的压缩或者融合,终于解决了这个问题,上苍保佑!~~
posted on 2010-06-03 20:33 灭神佛 阅读(1425) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © 灭神佛 Powered by: 博客园 模板提供:沪江博客