查看: 1010|回复: 2

关于image->getColor的问题

[复制链接]

该用户从未签到

发表于 2014-12-14 20:18:35 | 显示全部楼层 |阅读模式
int main()
{
        osg::ref_ptr<osg::Image>image_in = new osg::Image;
        image_in = osgDB::readImageFile("Images/os64.png");

        int s0, t0, r0;
        int count = 0;
        s0 = image_in->s();
        t0 = image_in->t();
        r0 = image_in->r();

        for (unsigned i = 0; i < s0; i++)
        {
                for (unsigned j = 0; j < t0; j++)
                {
                        osg::Vec4 color = image_in->getColor(i, j, 1);
                        count++;
                        std::cout << count << ":" << color.x() << "  " << color.y() << "  " << color.z() << std::endl;
                }
        }

        osg::ref_ptr<osg:rawPixels>bitmap_in = new osg::DrawPixels;
        bitmap_in->setPosition(osg::Vec3(0.0, 0.0, 0.0));
        bitmap_in->setImage(image_in);

        osg::ref_ptr<osg::Geode>geode = new osg::Geode;
        geode->addDrawable(bitmap_in.get());

        osg::ref_ptr<osgViewer::Viewer>viewer = new osgViewer::Viewer;
        viewer->setSceneData(geode.get());

        viewer->addEventHandler(new  osgViewer::WindowSizeHandler);
        return viewer->run();
}


每次执行到i=38或j=48就会中断,说+                image_in        {_ptr=0x00bfb0e0 <无可用信息,未为 osgdb_pngd.dll 加载任何符号> }
换了好多图像,都会在循环到某个值时中断。
Image 10.png

该用户从未签到

发表于 2014-12-15 13:45:53 | 显示全部楼层
osg::Vec4 color = image_in->getColor(i, j, 1);
r为什么取1?
如果是二维纹理,r应该是0而不是1,安全选项都是r() - 1

该用户从未签到

发表于 2014-12-19 10:17:05 | 显示全部楼层
先声明 我是刚刚入门。
昨天我做逐像素取值并按像素再绘制时也遇到了这个问题,但那时因为我给存像素的数组分配的空间不足,你这个好像没有这个问题。
getcolor(i,j)就够了,r值默认是0U吧,可以试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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