查看: 2041|回复: 2

请教:关于 OverlodeNode 和osgEarth 2 的着色器

[复制链接]

该用户从未签到

发表于 2010-10-29 14:01:21 | 显示全部楼层 |阅读模式
osgEarth 2.0 使用了着色器,不能用  OverlodeNode了,
我尝试了一下,如果禁用program 属性是可以使用 OverlodeNode的。

看起来好像 OverlodeNode的里也是用了着色语言,是两者发生覆盖了么?
另外OverlodeNode有一个 setTexEnvMode 方法,这个方法可以调整纹理混合么?
我试了试,付给他GL_BLEND参数,好像没有用。

有没有什么方法可以在使用着色器的同时使用 overlodeNode?

该用户从未签到

发表于 2010-10-29 17:17:06 | 显示全部楼层
首先OverlodeNode是一个没有太大用途的功能,至少从目前看来,它根本就不适合用来做数据向地面的纹理贴敷这种事情……
OverlodeNode可能用到也可能不用到着色语言,不过子节点的渲染属性会自动覆盖父节点的,因此使用着色器的时候反而不用担心osgEarth做了什么;您可以尝试把默认的OBJECT_DEPENDENT_WITH_ORTHOGRAPHIC_OVERLAY改为别的看看;setTexEnvMode设置的是RTT的纹理与子节点原始纹理的混合方式

该用户从未签到

 楼主| 发表于 2010-11-1 11:35:20 | 显示全部楼层
2# array

多谢回复! 看到您的回复之后我在思考这个问题,因此这个帖子回得晚了,请谅解。

OverlodeNode 也许不适合往地面大规模的贴纹理,但是我的目的仅仅是动态、交互地画一些随地形起伏的图形,这个目的已经在osgEarth1.4 上基本达到了。

  看了您的回复,关于子节点覆盖父节点状态的意见给我很大启发,在osgEarth2.0 中, 所有的地形是使用着色器渲染的,
  而 OverlodeNode内部则是使用渲染到纹理得到的贴图与底图(child)通过着色语言混合。

  我猜想OverlodeNode 不能在osgEarth2.0 使用的原因是两个同样属性(program)的stateset发生了覆盖的缘故。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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