查看: 1148|回复: 5

着色语言里attribute变量如何应用到应用程序里?

[复制链接]

该用户从未签到

发表于 2014-2-26 22:59:34 | 显示全部楼层 |阅读模式
着色语言里attribute变量如何应用到应用程序里?

该用户从未签到

发表于 2014-2-27 13:18:40 | 显示全部楼层
geom->setVertexAttribArray
program->addBindAttribLocation

该用户从未签到

发表于 2014-2-28 00:00:33 | 显示全部楼层
你积分挺高的么

该用户从未签到

 楼主| 发表于 2014-2-28 18:07:26 | 显示全部楼层
谢谢!能不能更详细一点?
具体情况是这样的:
代码是:
static const char* vertSource={
        "attribute vec2 pos ;\n"
        "void main()\n"
        "{\n"
        "vec2 pos = vec2(gl_Vertex.x,gl_Vertex.y);\n"
        "gl_Position = ftransform();\n"
        "}\n"
};

应用程序里是这样的:
        osg::ref<osg::Geometry > geometry = new osg::Geometry ;
        osg::ref<osg::Geode> geode = new osg::Geode ;
        osg::ref_ptr<osg::Shader> vertShader = new osg::Shader(osg::Shader::VERTEX,vertSource);
        osg::ref_ptr<osg:rogram> program = new osg::Program ;
        osg::StateSet = *(geode->getOrCreatSet()) ;
        program->addShader(vertShader) ;
        //geometry->setVertexAttribArray();        ??????????
        //program->addBindAttribLocation("pos",0);  ??????????
        ss.setAttributeAndModes(program) ;
}
想要在应用程序里使用着色语言里定义的pos,怎样使用呢?

该用户从未签到

 楼主| 发表于 2014-2-28 21:07:50 | 显示全部楼层
Baldwin 发表于 2014-2-28 00:00
你积分挺高的么

人家是管理员  积分肯定很高的!亲

该用户从未签到

发表于 2014-3-14 03:51:59 | 显示全部楼层
看一下API文档您就应该明白:
setVertexAttribArray需要一个index和对应的数组
而addBindAttribLocation是index和它在shader中的对应名称
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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