当前位置: 首页>>代码示例>>C++>>正文


C++ poly::NrFaces方法代码示例

本文整理汇总了C++中poly::NrFaces方法的典型用法代码示例。如果您正苦于以下问题:C++ poly::NrFaces方法的具体用法?C++ poly::NrFaces怎么用?C++ poly::NrFaces使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在poly的用法示例。


在下文中一共展示了poly::NrFaces方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: sizeof

void								MeshData::GenerateNormals(
	const bool&							InvertNormals)
{
	//	Sources
	const AttribData<vec3> & Vertices	= m_VertexArray;
	const AttribData<poly> & Faces		= m_Polygons;

	vec3* pNormals = new vec3[Vertices.Size()];
	memset(pNormals, 0, Vertices.Size() * sizeof(vec3));

	//	Go through the polylists
	const uint NrPolyLists = Faces.Size();
	for(uint p=0; p<NrPolyLists; p++) {

		const poly Polylist = Faces.GetElem(p);
		const uint NrFaces = Polylist.NrFaces();
		for(uint f=0; f<NrFaces; f++)
		{
			//	Get vertices
			const uint i1 = Polylist.GetFaces().GetElem(f).v1;
			const uint i2 = Polylist.GetFaces().GetElem(f).v2;
			const uint i3 = Polylist.GetFaces().GetElem(f).v3;

			const vec3 v1 = Vertices.GetElem(i1);
			const vec3 v2 = Vertices.GetElem(i2);
			const vec3 v3 = Vertices.GetElem(i3);

			//	Get edges
			const vec3 edge1 = v2-v1; const vec3 edge2 = v3-v1;

			//	Set Crossproduct
			vec3 facenormal;
			if(InvertNormals) {
				facenormal=normalize(glm::cross(edge1, edge2));
				facenormal = facenormal * -1.0f;
			} else
				facenormal=normalize(glm::cross(edge1, edge2));

			//	Add vertexnormals
			pNormals[i1]+=facenormal;
			pNormals[i2]+=facenormal;
			pNormals[i3]+=facenormal;
		}
	}

	//	Normalize
	vec3* pN = pNormals;
	for(uint n=0; n<Vertices.Size(); n++, pN++)
		*pN = normalize(*pN);

	MeshData::SetNormalArray().Load(pNormals, Vertices.Size());

	delete [] pNormals;
}
开发者ID:TimelessVisions,项目名称:GLEngine,代码行数:54,代码来源:GLData.cpp


注:本文中的poly::NrFaces方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。