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


C# IMesh.GetStreamReader方法代码示例

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


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

示例1: RenderMeshWireframe

		private void RenderMeshWireframe(IMesh mesh)
		{
			var vb = mesh as IVertexStreamSource;
			var vertices = new List<Vector3>(vb.Count);
			Vector3 pos;
			Vector3 buf;
			var position = mesh.GetStreamReader<Vector3>(Streams.Position,0);
			for (int i = 0; i < position.Count; ++i)
			{
				pos = position[i];
				this.graphicsContext.ModelToWorld(ref pos, out buf);
				vertices.Add(buf);
			}
			Color wireColor = Color.White;

			foreach (var submesh in mesh.Submeshes)
			{
				var vi = submesh as IVertexIndexSource;
				var enumerator = vi.GetIndexReader(Streams.Position,0).GetEnumerator();
				switch (vi.VertexSourceType)
				{
					case VertexSourceType.TriangleList:
						for (;;)
						{
							if (!enumerator.MoveNext())
							{
								break;
							}
							var a = enumerator.Current;
							if (!enumerator.MoveNext())
							{
								break;
							}
							var b = enumerator.Current;
							if (!enumerator.MoveNext())
							{
								break;
							}
							var c = enumerator.Current;
							this.graphicsContext.RenderDebugLine(vertices[a], vertices[b], wireColor);
							this.graphicsContext.RenderDebugLine(vertices[b], vertices[c], wireColor);
							this.graphicsContext.RenderDebugLine(vertices[c], vertices[a], wireColor);
						}

						break;
					case VertexSourceType.TriangleStrip:
						break;
					case VertexSourceType.QuadList:
						for (;;)
						{
							if (!enumerator.MoveNext())
							{
								break;
							}
							var a = enumerator.Current;
							if (!enumerator.MoveNext())
							{
								break;
							}
							var b = enumerator.Current;
							if (!enumerator.MoveNext())
							{
								break;
							}
							var c = enumerator.Current;
							if (!enumerator.MoveNext())
							{
								break;
							}
							var d = enumerator.Current;
							this.graphicsContext.RenderDebugLine(vertices[a], vertices[b], wireColor);
							this.graphicsContext.RenderDebugLine(vertices[b], vertices[c], wireColor);
							this.graphicsContext.RenderDebugLine(vertices[c], vertices[d], wireColor);
							this.graphicsContext.RenderDebugLine(vertices[d], vertices[a], wireColor);
						}
						break;
					case VertexSourceType.QuadStrip:
						break;
					case VertexSourceType.LineLine:
						break;
					case VertexSourceType.LineStrip:
						break;
					default:
						break;
				}
			}
		}
开发者ID:gleblebedev,项目名称:toe,代码行数:87,代码来源:Base3DEditor.cs

示例2: RenderMeshNormals

		private void RenderMeshNormals(IMesh mesh)
		{
			Color wireColor = Color.White;
			foreach (var submesh in mesh.Submeshes)
			{
				var pos = submesh.GetIndexReader(Streams.Position, 0);
				var normal = submesh.GetIndexReader(Streams.Normal, 0);
				var posStream = mesh.GetStreamReader<Vector3>(Streams.Position, 0);
				var normalStream = mesh.GetStreamReader<Vector3>(Streams.Normal, 0);
				if (posStream != null && normalStream != null && pos != null && normal != null)
				{
					for (int i = 0; i < pos.Count; i++)
					{
						this.graphicsContext.RenderDebugLine(posStream[pos[i]], posStream[pos[i]]+normalStream[normal[i]]*10, wireColor);
					}
				}
			}
		}
开发者ID:gleblebedev,项目名称:toe,代码行数:18,代码来源:Base3DEditor.cs


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