本文整理汇总了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;
}
}
}
示例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);
}
}
}
}