查看: 2682|回复: 12

多个texture的模型能合并到一个geometry么

[复制链接]

该用户从未签到

发表于 2013-4-26 09:32:12 | 显示全部楼层 |阅读模式
好像是一个texture对应一个geometry
这样图片多了,geometry也就多了,渲染列表多了,渲染速度就慢了。
有没用办法合并?

不能通过美工和建模的再合并图片了,这样是行,但工作量太大。

该用户从未签到

 楼主| 发表于 2013-4-26 10:28:51 | 显示全部楼层
有木有呢

该用户从未签到

发表于 2013-4-26 10:38:55 | 显示全部楼层
多纹理 多Primitiveset

该用户从未签到

 楼主| 发表于 2013-4-26 10:55:02 | 显示全部楼层
liuzhiyu123 发表于 2013-4-26 10:38
多纹理 多Primitiveset

谢谢
您就是传说中得GL么?

您说的  多纹理 多Primitiveset
是将多个geometry弄成Primitiveset,  然后对这个唯一的geometry使用多层的纹理?

该用户从未签到

发表于 2013-4-26 11:08:34 | 显示全部楼层
可以试试 不过多纹理有数量的限制     GL is me

该用户从未签到

 楼主| 发表于 2013-4-27 08:42:51 | 显示全部楼层
liuzhiyu123 发表于 2013-4-26 11:08
可以试试 不过多纹理有数量的限制     GL is me

我试了一下,确实可以提高效率。
但是,由于是多纹理的问题,最终效果是多个纹理叠加而成的,我对不是本层的纹理全都设置为0,效果也不行。这个问题不太好办啊。有木有其他办法呢,有木有

该用户从未签到

发表于 2013-4-27 08:48:31 | 显示全部楼层
设置不同的纹理单元的坐标,然后enable就行了吧,应该不是多层叠加的

该用户从未签到

 楼主| 发表于 2013-4-27 09:58:02 | 显示全部楼层
liuzhiyu123 发表于 2013-4-27 08:48
设置不同的纹理单元的坐标,然后enable就行了吧,应该不是多层叠加的

对 Geometry 进行 setTexCoordIndices( unit,  array);
这个参数unit就是对应的 textureUnit的index,
这样设置后,对整个Geometry都有作用。

以下是OSG文件的
textureUnit 0 {.....................}
textureUnit 1 {.....................}

TextCoordArray 0 vec2Array 12
{
           1  2
           1  2
           1  2
           1  2
           1  2
           1  2
           0  0
           0  0
           0  0
           0  0
           0  0
           0  0
}


TextCoordArray 1 vec2Array 12
{
           0  0
           0  0
           0  0
           0  0
           0  0
           0  0
           1  2
           1  2
           1  2
           1  2
           1  2
           1  2
}

上面的纹理坐标中的 0 0表示,我不需要这个,但是如果不吧这个加上,显示效果根本不对了

该用户从未签到

 楼主| 发表于 2013-4-27 10:07:00 | 显示全部楼层
这个 TextCoordArray数量 必须对应顶点的数量吧

该用户从未签到

发表于 2013-4-27 10:14:29 | 显示全部楼层
本帖最后由 liuzhiyu123 于 2013-4-27 10:16 编辑

哦 我忘记Geometry了  VertexAttribute 应该是可以设置需要的属性,不过要是顶点是共享的就不太好弄了

该用户从未签到

 楼主| 发表于 2013-4-27 11:30:24 | 显示全部楼层
liuzhiyu123 发表于 2013-4-27 10:14
哦 我忘记Geometry了  VertexAttribute 应该是可以设置需要的属性,不过要是顶点是共享的就不太好弄了

是Geometry的setVertexAttribArray么, 我找了下,没相关的说明。在.openscenegraph.org 中论坛了,好像是用来作shader的。

该用户从未签到

发表于 2013-4-27 12:10:22 | 显示全部楼层
是的,可以给每个顶点设置它的顶点坐标 和 纹理单元 然后在shader中 选择

该用户从未签到

发表于 2014-1-10 16:16:14 | 显示全部楼层
将多个geometry弄成Primitiveset,  然后对这个唯一的geometry使用多层的纹理。。楼主可以指导下,这个是怎么搞的吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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