查看: 1692|回复: 3

小图片如何给大多边形贴纹理?

[复制链接]

该用户从未签到

发表于 2009-5-9 17:16:20 | 显示全部楼层 |阅读模式
我的纹理图片都是比较小的256*256的 但是面图形都是几万平方米大小的,我想让这些纹理图片重复地排列出来.该怎么弄?

该用户从未签到

发表于 2009-5-9 17:31:26 | 显示全部楼层
Texture::setWrap( ..., REPEAT ),和GL_REPEAT的用法一样

该用户从未签到

 楼主| 发表于 2009-5-9 23:34:30 | 显示全部楼层
下面是我用来贴纹理的代码:
  1. Image *img=NULL;
  2. //.....读取影像
  3. if(img)
  4.         {
  5.                 Texture2D *txt=new Texture2D();
  6.                 txt->setWrap(Texture2D::WRAP_S,Texture2D::REPEAT);
  7.                 txt->setWrap(Texture2D::WRAP_T,Texture2D::REPEAT);

  8.                 txt->setFilter(Texture::MIN_FILTER,Texture::LINEAR);
  9.                 txt->setFilter(Texture::MAG_FILTER,Texture::NEAREST);

  10.                 txt->setImage(img);

  11.                 TexGen* gen=new TexGen();
  12.                 gen->setMode(TexGen::OBJECT_LINEAR);
  13.                 gen->setPlane(TexGen::S,Plane(0.f,0.f,1.f,0.f));

  14.                 StateSet* state=new StateSet();

  15.                 state->setTextureAttribute(0,txt,StateAttribute::OVERRIDE);
  16.                 state->setTextureMode(0,GL_TEXTURE_2D,StateAttribute::ON
  17.                         |StateAttribute::OVERRIDE);

  18.                 state->setTextureAttribute(0,gen,StateAttribute::OVERRIDE);
  19.                 state->setTextureMode(0,GL_TEXTURE_GEN_S,StateAttribute::ON
  20.                         |StateAttribute::OVERRIDE);

  21.                 state->setTextureMode(0,GL_TEXTURE_GEN_T,StateAttribute::ON
  22.                         |StateAttribute::OVERRIDE);
  23.                 node.setStateSet(state);

  24.         }
复制代码


已经加了setWrap了.不知道是不是加的不正确.

该用户从未签到

发表于 2009-5-10 00:03:27 | 显示全部楼层
是否正确只要试验就知道了,不过您是否没有正确地将txt对象应用到stateset上?
state->setTextureAttribute(0,txt,StateAttribute::ON);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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