查看: 1304|回复: 6

问一下关于纹理数据操作遇到的障碍

[复制链接]

该用户从未签到

发表于 2010-3-12 09:22:37 | 显示全部楼层 |阅读模式
目的是想将flt格式的模型中的纹理数据读出来,进行修改,然后再贴到模型上。
第一步实现了:
     getStateSet()->getTextureAttribute(0,osg::StateAttribute::TEXTURE);
     得到的是stateAttribute* 类型数据
但就是不知道这些读出的数据是怎么组织的,所以对于修改也就无从下手了。
     恳请高手解疑?

该用户从未签到

发表于 2010-3-12 09:34:55 | 显示全部楼层
看是什么Texture,比如可以这样osg::Texture2D *tex=dynamic_cast<osg::Texture2D*>getStateSet()->getTextureAttribute(0,osg::StateAttribute::TEXTURE);
if(tex)
{
   osg::Image *img=tex->getImage();
  //接下来操作Img或tex
}

该用户从未签到

 楼主| 发表于 2010-3-12 09:35:56 | 显示全部楼层
补充:感觉把这些数据格式化成容易读取和修改的数据组织形式就可以了,不知道怎么实现。。

该用户从未签到

 楼主| 发表于 2010-3-12 09:41:04 | 显示全部楼层
主要是不知道Img或者tex中的数据是一种什么格式的,要读取每个纹素就不知道怎么操作了

该用户从未签到

发表于 2010-3-12 10:02:16 | 显示全部楼层
在Image里可以用img->data(col,row)来访问每个像素,要访问纹素的话最好用shader

该用户从未签到

 楼主| 发表于 2010-3-12 16:24:52 | 显示全部楼层
我用img->data(col,row)来访问了一个像素:
unsigned char* ch=img->data(100,165);
cout<<ch;
这样怎么打印了一大堆的乱码,不应该打印出像素值吗?还有对于osg::Image::data(),[不带参数],应该是返回整个图像的数据吧?其返回值是unsigned char*类型的,对于每个像素要怎么来访问呢?

该用户从未签到

发表于 2010-3-14 23:34:27 | 显示全部楼层
我想这是基本的C/C++语言问题了,要访问指针的值,请使用(*ptr)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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