osg中shader 顶点属性为数组时,程序中传递值

osg中对于顶点着色器中顶点属性为数组时,例如如下情况:

shader中:

uniform mat4 mvp[4];

uniform = new osg::Uniform(osg::Uniform::FLOAT_MAT4, "mvp", 4);

uniform ->setelement(0,mt0);

uniform ->setelement(1,mt1);

uniform ->setelement(2,mt2);

uniform ->setelement(3,mt3);,其中mtx为osg中的matrix类型,

对于顶点着色器中的结构体数组:例如如下:

struct Light {
    vec3 Position;
    vec3 Color;
};

uniform Light lights[4];

可以向下面这样进行值的传递

for (int i = 0; i < 4; ++i)
    {
        osg::Uniform* lightPosUnifom = new osg::Uniform(osg::Uniform::FLOAT_VEC3, "lights[" + std::to_string(i) + "].Position");
        osg::Uniform* lighColortUnifom = new osg::Uniform(osg::Uniform::FLOAT_VEC3, "lights[" + std::to_string(i) + "].Color");
      /****/
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值