• !带有指针的类和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的地址,造成读取失败

  • 相关阅读:
    优化MySchool数据库(存储过程)
    优化MySchool数据库(事务、视图、索引)
    优化MySchool数据库(四)
    优化MySchool数据库(三)
    SQLAchemy
    python操作mysql
    python队列
    零碎知识
    super深究
    Python操作RabbitMQ
  • 原文地址:https://www.cnblogs.com/qingsunny/p/4334358.html
Copyright © 2020-2023  润新知