• !带有指针的类和struct赋值的本质


    //这个变量必须在while循环外面
    //原因是当将loadModels[modelNum].g_3DModel[0]赋值给新建类后
    //里面的数值拷贝过去了,而里头的指针只给了地址
    //所以如果这个调用了析构函数,即出了它的作用域,
    //指针的值也就销毁了

    参考

    g_3DModel的struct是

    struct t3DModel //模型信息结构体
    {
    int numOfObjects; // 模型中对象的数目
    int numOfMaterials; // 模型中材质的数目
    vector<tMatInfo> pMaterials; // 材质链表信息
    vector<t3DObject> pObject; // 模型中对象链表信息
    FBox3 boundBox; //模型的外包 2013.12.9
    };

    这里没有指针,但是里头的object有指针

    struct t3DObject //对象信息结构体
    {
    int numOfVerts; // 模型中顶点的数目
    int numOfFaces; // 模型中面的数目
    int numTexVertex; // 模型中纹理坐标的数目
    int materialID; // 纹理ID
    bool bHasTexture; // 是否具有纹理映射
    bool bVisible;//对象是否可见,默认是可见
    char strName[255]; // 对象的名称
    FPoint3 *pVerts; // 对象的顶点
    FPoint3 *pNormals; // 顶点的法向量
    FPoint2 *pTexVerts; // 纹理UV坐标
    tFace *pFaces; // 对象的面信息
    FPoint3 *pFaceNormals; // 面的法线
    }; ,

    所以如果在GPU里头要编程,带有指针的地方,需要逐个拷贝,而不是整体拷贝,因为用类来实现整体拷贝,指针的地方只拷贝了地址,这样在device无法access host的地址,造成读取失败

  • 相关阅读:
    用OSCache进行缓存对象
    oscache的使用
    WHM(Web Hosting Manager)/CPANEL 设置及linux 文件权限 经验
    辗转相除法求最大公约数和最小公倍数【gcd】
    u6填写入库单单据报错
    账表名称无法显示
    商贸通反利怎么计算
    UFO报表转换不成功!请检查文件版本或使用DOS文件转换工具
    备份计划不执行
    821升级U6报错
  • 原文地址:https://www.cnblogs.com/qingsunny/p/4334358.html
Copyright © 2020-2023  润新知