osgTexture2D ,纹理贴图
我有一个非常大的四边形,用来描述一个海面,我想在这个巨大的四边形上贴上 海面效果的纹理。如果直接贴上去,纹理很明显是不对的, 如何来设置纹理的UV,用哪个函数来设置呢?我尝试着改了
osg::Vec2Array* texcoords = new osg::Vec2Array(4);
(*texcoords).set(0.0f, 0.0f);
(*texcoords).set(1.0f, 0.0f);
(*texcoords).set(1.0f, 1.0f);
(*texcoords).set(0.0f, 1.0f);
geom->setTexCoordArray(0,texcoords);
上面这段代码中的坐标,没有找到预想中的效果。需要做什么样的设置呢? 请您给出更详细的信息,,另外,建议您先了解一下OPENGL纹理映射的机制~~~~~~~ 你需要的是重复纹理是么?那需要texture2d 的setWrap(...) function 对,重复纹理的效果。相同的一张纹理,贴在一个很大的面上。
如果用setWrap可以重复贴在面上的话,uv怎么设置呢? 我这么理解不知道对不对:
osg的纹理贴图,是按一个面的点的个数去一一对应一个texcood, 一个六边形,那么就需要设置六个texcood的坐标。
我的问题是: 如果我用个 四边形,这个四边形对应有四个顶点,我要把一张贴图贴到这个四边形上去,如果只贴一次很显然,最后纹理效果会有一个巨大的拉升。那么我就需要重复贴这张纹理,每次贴设置的uv坐标都确保不失真。 这样的话,我就需要在这个很大的四边形上来计算uv, 每个uv保证每次贴图都不失真。 那么这个uv的坐标用哪个函数来实现,如何设置。 您只要设置大于1的UV坐标就可以了,同时设置了Wrap为REPEAT之后,就可以让贴图重复指定的次数 谢谢 array,aya_daxiang ,解决了重复纹理的问题。 hjsxixi 发表于 2011-3-10 14:21
谢谢 array,aya_daxiang ,解决了重复纹理的问题。
楼主,重复纹理贴图需要增加顶点个数嘛?
页:
[1]