查看: 2250|回复: 6

如何使用OSG调用下面GLSL

[复制链接]

该用户从未签到

发表于 2009-6-25 00:37:31 | 显示全部楼层 |阅读模式
下面有一GLSL例程使用OPNEGL,思路较好,但是套用OSG调用时总因gl_MultiTexCoord0.xy变量而无法实现其效果,不知何故。还望有人能及时解答一下。

使用OSG实现时使用小飞机代替茶壶,随便读一张纹理代替原纹理,不知如何解决 gl_MultiTexCoord0.xy问题。

例程:
GLSL Texture.rar (123.72 KB, 下载次数: 172)

该用户从未签到

发表于 2009-6-25 08:51:44 | 显示全部楼层
在gl_MultiTexCoord0.xy后面加一个分号……这个是最基本的GLSL语法问题,和osg没有什么关系

该用户从未签到

 楼主| 发表于 2009-6-25 22:33:31 | 显示全部楼层
那么小问题当然可以看出来了,我是说以OSG来贴一纹理,达不到使用OPENGL那样的效果,原因是gl_MultiTexCoord0.xy这个变量无法像在给的代码中那样起作用,版主可以试一下

该用户从未签到

发表于 2009-6-25 22:44:10 | 显示全部楼层
抱歉我暂时没有时间去做实验,如果您愿意提供osg的相关代码我倒是可以帮忙看一下。不过有一点毋庸置疑:osg决不会影响到GLSL的执行结果

该用户从未签到

 楼主| 发表于 2009-6-25 23:28:27 | 显示全部楼层
下面是我实现的,辛苦Array了。

OSG程序: Array.rar (4.73 KB, 下载次数: 191)

该用户从未签到

发表于 2009-6-25 23:49:31 | 显示全部楼层
一个重要的问题是:您用于做实验的模型有没有设置纹理坐标。如果模型没有设置纹理坐标的话,那么gl_MultiTexCoord0当然不会有内容。我看您的测试程序里用了glider.osg,要知道这个模型是没有设置纹理坐标的!(使用TexGen也不行,因为着色器接管并屏蔽了纹理自动生成)skydome.osg是为数不多的设置了纹理坐标的模型,用它来试验一下吧

该用户从未签到

 楼主| 发表于 2009-6-25 23:55:24 | 显示全部楼层
试了skydome,黑乎乎,不过解释的在理,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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