查看: 2251|回复: 8

osg中多纹理映射

[复制链接]

该用户从未签到

发表于 2010-2-11 11:59:01 | 显示全部楼层 |阅读模式
在一个顶点序列中,利用osg:rawElementsUInt生成了多个几何体,每个几何体对应不同的纹理单元和纹理坐标,利用setTexCoordArray方法只能关联一个纹理单元,不同的几何体想关联不同的纹理单元该如何设置?

该用户从未签到

发表于 2010-2-11 12:43:01 | 显示全部楼层
setTexCoordArray的unit参数就是指定多个纹理单元的,可以反复使用setTexCoordArray来为每个纹理单元设置纹理坐标数组

该用户从未签到

 楼主| 发表于 2010-2-11 14:28:54 | 显示全部楼层
本帖最后由 zhufu0208 于 2010-2-11 14:30 编辑

可能我表达的不够清楚  纹理坐标和顶点是一一对应的
使用setTexCoordArray(unit,texCoordarray*)的时候  texCoordarray参数中包含了所有顶点的纹理坐标
如果使用多次使用setTexCoordArray(unit,texCoordarray×);只改变纹理单元,最后的结果不对

该用户从未签到

发表于 2010-2-11 14:32:22 | 显示全部楼层
setTexCoordArray可以给不同的纹理单元设置不同的坐标数组,它的使用没有问题。并且OpenGL也不存在别的用法。注意DrawElementsUInt只是针对给定的顶点数组信息来设计不同的图元组合,它不负责构成新的顶点,因此不要以它为基准来设置数组数据

该用户从未签到

 楼主| 发表于 2010-2-11 15:11:40 | 显示全部楼层
texCoordarray中包含了所有顶点对应的纹理坐标,多次使用setTexCoordArray(unit,texCoordarray*),一个顶点对应了多个纹理单元的纹理,在渲染的时候是如何渲染?

该用户从未签到

发表于 2010-2-11 15:30:00 | 显示全部楼层
如果没有使用纹理权重的设置或者着色语言的话,那么基本是简单叠加的。当然TexEnv也会对它们的混合方式产生影响。一般来说,调整纹理单元的权重通过着色语言来实现比较合适

该用户从未签到

 楼主| 发表于 2010-2-11 15:59:36 | 显示全部楼层
使用DrawElementsUInt生成多个图元  不同的图元所使用的纹理是不一样的  在Geometry中设置完图元信息后,如何设置纹理对应信息?  如果使用 setTexCoordArray(unit,texCoordarray*)设置纹理坐标, 一个顶点对应了多个坐标,  如何能够在渲染的时候根据顶点所在的图元映射相应的纹理?

该用户从未签到

发表于 2010-2-11 17:48:35 | 显示全部楼层
那样基本上做不到。正如我上一贴所说的,DrawElementsUInt只是针对给定的顶点数组信息来设计不同的图元组合,它不负责构成新的顶点。
您可以把生成多个图元的代码变为生成多个Geometry对象,并赋予不同的纹理坐标

该用户从未签到

 楼主| 发表于 2010-2-11 18:05:24 | 显示全部楼层
好的  谢谢  array   !
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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