查看: 3732|回复: 6

如何消除OSG纹理映射产生黑边

[复制链接]

该用户从未签到

发表于 2008-6-7 16:17:24 | 显示全部楼层 |阅读模式
在OSG 2.4中,将纹理映射到一个四边形上,在纹理的边缘,即纹理坐标u,v为0或1时,会产生一个黑边,如何消除。代码如下:

osg::Image* image = osgDB:: readImageFile("earthmap1k.jpg");
if (!image) return NULL;

osg::StateSet* stateset = new osg:: StateSet;
osg::Texture2D* texture = new osg:: Texture2D;
texture->setImage(image);
stateset->setTextureAttributeAndModes(0, texture, osg:: StateAttribute::ON );
stateset->setMode( GL_LIGHTING, osg:: StateAttribute:ROTECTED );

osg::Geode* geode = new osg::Geode();
geode->setStateSet(stateset);

osg::Geometry* Geom = new osg::Geometry();
osg::Vec3Array* vertices = new osg::Vec3Array;
osg::Vec2Array* texCoords = new osg::Vec2Array;

vertices->push_back( osg::Vec3(-100, 0, -100) );
vertices->push_back( osg::Vec3(-100, 0, 100) );
vertices->push_back( osg::Vec3(0, 0, 100) );
vertices->push_back( osg::Vec3(0, 0, -100) );

texCoords->push_back(osg::Vec2(0, 0));
texCoords->push_back(osg::Vec2(0, 1));
texCoords->push_back(osg::Vec2(1, 1));
texCoords->push_back(osg::Vec2(1, 0));

Geom->setVertexArray(vertices);
Geom->addPrimitiveSet(new osg:rawArrays(osg:: PrimitiveSet:: POLYGON, 0, vertices->size()));

osg:: Vec4Array* colors = new osg:: Vec4Array;
colors->push_back(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
Geom->setColorArray(colors);
Geom->setColorBinding(osg:: Geometry:: BIND_OVERALL);

Geom->setTexCoordArray(0, texCoords);

geode->addDrawable(Geom);

该用户从未签到

发表于 2008-6-7 18:15:57 | 显示全部楼层
对于texture,设置osg::Texture::setWrap试一试

该用户从未签到

 楼主| 发表于 2008-6-7 20:02:48 | 显示全部楼层
解决了,使用 texture->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE);

多谢!

该用户从未签到

发表于 2008-6-16 09:01:51 | 显示全部楼层
现在太多做广告的了,好烦人啊,好好的讨论区被搞得污烟瘴气的。
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-6-16 10:44:40 | 显示全部楼层
    楼上,是不是有什么论坛什么插件治这个?有什么办法吗?这几天也是被这个弄的恶心的不行

    该用户从未签到

    发表于 2008-6-16 14:40:10 | 显示全部楼层
    回FreeSouth,我没有搞过论坛,不太清楚怎么治这个东西。。。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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