查看: 2437|回复: 16

纹理问题

[复制链接]

该用户从未签到

发表于 2009-3-10 16:14:42 | 显示全部楼层 |阅读模式
截取纹理时,怎样将边框颜色去掉。

该用户从未签到

 楼主| 发表于 2009-3-10 17:23:49 | 显示全部楼层
是需要设置那些纹理的状态吗?

该用户从未签到

 楼主| 发表于 2009-3-10 17:35:54 | 显示全部楼层
可能大家没有明白我的意思。打个比喻:
我拿相机给一座山照相,现在把照片的背景色设置为红色,透明度设为0。
这时照片背景应该为透明。目的只显示那座山。但是现在山的旁边出现红色的
边缘。请提示下怎么消除红边。

该用户从未签到

 楼主| 发表于 2009-3-10 17:48:37 | 显示全部楼层
主要一点是我把想要显示的纹理转换成图片保存到硬盘。然后查看图片,
图片没有红色的边缘。说明纹理只在屏幕显示时有红边。

该用户从未签到

发表于 2009-3-10 19:13:15 | 显示全部楼层
Texture::setWrap()

设置为CLAMP_TO_EDGE,CLAMP_TO_BORDER这几个值看一下

该用户从未签到

 楼主| 发表于 2009-3-11 09:13:02 | 显示全部楼层
array你好。你说的这两个状态我都试过了。不行,因为红边不是texture的边缘。
而是纹理内容的外边。

该用户从未签到

 楼主| 发表于 2009-3-11 09:13:30 | 显示全部楼层
可能大家没有明白我的意思。打个比喻:
我拿相机给一座山照相,现在把照片的背景色设置为红色,透明度设为0。
这时照片背景应该为透明。目的只显示那座山。但是现在山的旁边出现红色的
边缘。请提示下怎么消除红边。

该用户从未签到

发表于 2009-3-11 10:27:28 | 显示全部楼层
这就好比我们构建BillBoard的树木时,如果透明图片的质量不好的话,边缘会有很多背景色残留;您这里的问题恐怕是同样的

该用户从未签到

 楼主| 发表于 2009-3-11 11:13:59 | 显示全部楼层
呵呵,那这种情况怎样解决呢?

该用户从未签到

发表于 2009-3-11 11:31:43 | 显示全部楼层
图片的话,选用质量较好的;RTT的话,也许可以考虑提高采样率(attach的后两个参数),以及使用合适的纹理压缩格式,多尝试一下

该用户从未签到

 楼主| 发表于 2009-3-11 11:38:53 | 显示全部楼层
array,能不能把attach后面两个具体参数说明一下?
谢谢……

该用户从未签到

发表于 2009-3-11 12:36:16 | 显示全部楼层
  1. attach  ( BufferComponent  buffer,  
  2.           osg::Image *  image,  
  3.           unsigned int  multisampleSamples = 0,  
  4.           unsigned int  multisampleColorSamples = 0   
  5. )
复制代码

用于设置OpenGL函数glRenderbufferStorageMultisampleCoverageNV中的对应值,查阅API文档和源代码就可以知道了。

该用户从未签到

 楼主| 发表于 2009-3-11 14:05:14 | 显示全部楼层
array你好,我刚刚找了一下camera.h头文件中没有
attach  ( BufferComponent  buffer,  
          osg::Image *  image,  
          unsigned int  multisampleSamples = 0,  
          unsigned int  multisampleColorSamples = 0   
) 这个,只有
attach  ( BufferComponent  buffer,  
          osg::texture*  image,  
          unsigned int level= 0,  
          unsigned int  face= 0   
)
这个函数。

该用户从未签到

 楼主| 发表于 2009-3-11 14:06:13 | 显示全部楼层
因为我是用camera->attach()的

该用户从未签到

发表于 2009-3-11 14:28:16 | 显示全部楼层
Camera类里面当然有这个函数!我已经用了很久了,《你所不知的OSG》也准备就此大书特书一番,因此这点还是有一定自信的。请您再好好找一下。
又或者您的osg版本十分古老?

该用户从未签到

 楼主| 发表于 2009-3-11 15:04:57 | 显示全部楼层
哦可能是我的版本有点老了,我的真没有。
那请问还有那些办法。

该用户从未签到

发表于 2009-3-11 15:56:49 | 显示全部楼层
设置一下生成后的纹理的压缩格式吧,Texture:: InternalFormatMode,看看能否改善纹理的质量
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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