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


C++ Model3D::GetUVCoordinateList方法代码示例

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


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

示例1: DrawSolidTexturedNormalMapped

// Draws the given model with texturing, shading and a normal map.
void Rasterizer::DrawSolidTexturedNormalMapped(Model3D& model, std::vector<DirectionalLight*> directionalLights, std::vector<AmbientLight*> ambientLights, std::vector<PointLight*> pointLights)
{
	std::vector<Polygon3D> _polygonList = model.GetPolygonList();
	std::vector<Vertex> _vertexList = model.GetTransformedVertexList();
	std::vector<UVCoordinate> _uvCoordList = model.GetUVCoordinateList();

	for (unsigned int i = 0; i < _polygonList.size(); i++)
	{
		Polygon3D poly = _polygonList[i];
		if (poly.GetBackfacing() == true)
			continue;

		Vertex v1 = _vertexList[poly.GetVertexIndex(0)];
		Vertex v2 = _vertexList[poly.GetVertexIndex(1)];
		Vertex v3 = _vertexList[poly.GetVertexIndex(2)];

		// Set the uv coordinates of each vertex temporarily to the coordinates in the 
		// uv coordinate list.
		v1.SetUVCoordinate(_uvCoordList[poly.GetUVIndex(0)]);
		v2.SetUVCoordinate(_uvCoordList[poly.GetUVIndex(1)]);
		v3.SetUVCoordinate(_uvCoordList[poly.GetUVIndex(2)]);

		// Fill the polygon using the models texture.
		if (model.GetNormalMapOn() == true)
			FillPolygonTexturedNormalMapped(v1, v2, v3, v1.GetColor(), model, directionalLights, ambientLights, pointLights);
		else
			FillPolygonTextured(v1, v2, v3, v1.GetColor(), model);
	}
}
开发者ID:HampsterEater,项目名称:DirectXFramework,代码行数:30,代码来源:Rasterizer.cpp

示例2: sizeof


//.........这里部分代码省略.........
			delete(pTexture);
			delete(pPalette);
		}
		else
		{
			model.SetTexture(pTexture, pPalette, header.skinWidth);
		}
	}

	// Attempt to load normal map texture
	if ( normalMapTextureFilename != 0 )
	{
		BYTE* pTexture = new BYTE[header.skinWidth * header.skinHeight];
		Gdiplus::Color* pPalette = new Gdiplus::Color[256];
		
		bool valid = LoadPCX(normalMapTextureFilename, pTexture, pPalette, &header);
		if (!valid)
		{
			delete(pTexture);
			delete(pPalette);
		}
		else
		{
			model.SetNormalMapTexture(pTexture, pPalette, header.skinWidth);
		}
	}

	// Polygon array initialization
	for ( int i = 0; i < header.numTriangles; ++i )
	{
		// TODO - Put your own code here to create a new Polygon and store it in your list
		//
		// The following are the expressions you need to access each of the indexes into the list of vertices:
		//
		// Index 0:  triangles[i].vertexIndex[0]
		// Index 1:  triangles[i].vertexIndex[1]
		// Index 2:  triangles[i].vertexIndex[2]

		Polygon3D newPoly = Polygon3D(triangles[i].vertexIndex[0],
									  triangles[i].vertexIndex[1],
									  triangles[i].vertexIndex[2]);
		newPoly.SetUVIndex(0, triangles[i].uvIndex[0]);
		newPoly.SetUVIndex(1, triangles[i].uvIndex[1]);
		newPoly.SetUVIndex(2, triangles[i].uvIndex[2]);

		model.GetPolygonList().push_back(newPoly);
	}

	// Vertex array initialization
	for( int i = 0; i < header.numVertices; ++i )
	{
		// TODO - Put your own code here to create a new Vertex and store it in your list
		//
		// The following are the expressions you need to access each of the co-ordinates.
		// 
		// X co-ordinate:   frame->verts[i].v[0] * frame->scale[0]) + frame->translate[0]
		// Y co-ordinate:   frame->verts[i].v[2] * frame->scale[2]) + frame->translate[2]
		// Z co-ordinate:   frame->verts[i].v[1] * frame->scale[1]) + frame->translate[1]
		//
		// NOTE: We have to swap Y and Z over because Z is up in MD2 and we have Y as up-axis
		
		float x = (frame->verts[i].v[0] * frame->scale[0]) + frame->translate[0];
		float y = (frame->verts[i].v[2] * frame->scale[2]) + frame->translate[2];
		float z = (frame->verts[i].v[1] * frame->scale[1]) + frame->translate[1];

		Vertex vert = Vertex(x, y, z, 1.0f, Gdiplus::Color::Black, Vector3D(0,0,0), 0);
		model.GetVertexList().push_back(vert);
	}

	// Load UV coordinates
	if (bHasTexture)
	{
		for (int i = 0; i < header.numTexCoords; i++)
		{
			short u = texCoords[i].texCoord[0];			
			short v = texCoords[i].texCoord[1];

			UVCoordinate uvCoord;
			uvCoord.U = u;
			uvCoord.V = v;
			model.GetUVCoordinateList().push_back(uvCoord);
		}
	}

	// Rebuild model lists.
	model.RebuildTransformedVerticesList();

	// Free dynamically allocated memory
	delete [] triangles; // NOTE: this is 'array' delete. Must be sure to use this
	triangles = 0;

	delete [] frameBuffer;
	frameBuffer = 0;
	frame = 0;

	delete [] texCoords;
	texCoords = 0;

	return true;
}
开发者ID:HampsterEater,项目名称:DirectXFramework,代码行数:101,代码来源:MD2Loader.cpp


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