标签:
 //这个变量必须在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的地址,造成读取失败
!带有指针的类和struct赋值的本质 - host to device
标签:
原文地址:http://www.cnblogs.com/qingsunny/p/4334358.html