查看: 757|回复: 1

osg::TemplateIndexArray//请问参数8,4代表什么意思

[复制链接]

该用户从未签到

发表于 2014-4-11 14:31:23 | 显示全部楼层 |阅读模式
        //定义一个Vec4 的数组,用于保存颜色值。
        osg::Vec4Array* colors = new osg::Vec4Array;
        colors->push_back(osg::Vec4(0.0f, 0.0f, 0.0f, 1.0f)); //索引0 黑色
        colors->push_back(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f)); //索引1 蓝色
        colors->push_back(osg::Vec4(1.0f, 0.0f, 1.0f, 1.0f)); //索引2 红+蓝
        colors->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f)); //索引3 红色
        colors->push_back(osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f)); //索引4 绿色
        colors->push_back(osg::Vec4(0.0f, 1.0f, 1.0f, 1.0f)); //索引5 绿+蓝
        colors->push_back(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); //索引6 白色
        colors->push_back(osg::Vec4(1.0f, 1.0f, 0.0f, 1.0f)); //索引7 绿+红

        // 下一步要将顶点数组的元素与颜色数组的元素对应起来。我们将声明一个与顶点数组有相同个数
        // 元素的向量组。它将负责连接各个顶点与颜色。该向量组的索引对应顶点数组的元素,其取值对
        // 应颜色数组的索引。如果需要将顶点数组与法线数组或者纹理坐标数组一一对应,那么还需重复这一步骤。
        osg::TemplateIndexArray<unsigned int, osg::Array::UIntArrayType, 8, 4> *colorIndexArray;
        colorIndexArray = new osg::TemplateIndexArray<unsigned int, osg::Array::UIntArrayType, 8, 4>;
        colorIndexArray->push_back(0);
        colorIndexArray->push_back(3);
        colorIndexArray->push_back(7);
        colorIndexArray->push_back(4);
        colorIndexArray->push_back(1);
        colorIndexArray->push_back(2);
        colorIndexArray->push_back(6);
        colorIndexArray->push_back(5);

        // 下一步,我们将颜色数组以及刚才创建的颜色索引数组与几何体相关联,并设置绑定模式为“按顶点绑定”。
        quadGeometry->setColorArray(colors);
        quadGeometry->setColorIndices(colorIndexArray);
        quadGeometry->setColorBinding(osg::Geometry::BIND_PER_VERTEX);

该用户从未签到

发表于 2014-4-11 15:43:28 | 显示全部楼层
osg::TemplateIndexArray< T, ARRAYTYPE, DataSize, DataType >
8代表你在颜色数组中设置了8组颜色,4是类型,这里有一个枚举的定义:enum   Type {
  ArrayType = 0, ByteArrayType = 1, ShortArrayType = 2, IntArrayType = 3,
  UByteArrayType = 4, UShortArrayType = 5, UIntArrayType = 6, FloatArrayType = 7,
  DoubleArrayType = 8, Vec2bArrayType = 9, Vec3bArrayType = 10, Vec4bArrayType = 11,
  Vec2sArrayType = 12, Vec3sArrayType = 13, Vec4sArrayType = 14, Vec2iArrayType = 15,
  Vec3iArrayType = 16, Vec4iArrayType = 17, Vec2ubArrayType = 18, Vec3ubArrayType = 19,
  Vec4ubArrayType = 20, Vec2usArrayType = 21, Vec3usArrayType = 22, Vec4usArrayType = 23,
  Vec2uiArrayType = 24, Vec3uiArrayType = 25, Vec4uiArrayType = 26, Vec2ArrayType = 27,
  Vec3ArrayType = 28, Vec4ArrayType = 29, Vec2dArrayType = 30, Vec3dArrayType = 31,
  Vec4dArrayType = 32, MatrixArrayType = 33, MatrixdArrayType = 34
}

UByteArrayType = 4就是说你的类型是UByteArrayType 无符号字节型数组类型。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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