IFloatArray是api中用于存储数组的一个接口。
IFloatArray如何构成?举个栗子就明白了。如图:
这个点的FloatArray构成就是x=FloatArray.get(1),y=FloatArray.get(2),y=FloatArray.get(3),
如果你想遍历所有的节点,就必须这样操作:
List<IPoint> pts = new List<IPoint>();
IFloatArray arrayVector = drawPrimitive.VertexArray;
for (int n = 0; n < arrayVector.Length;)
{
IPoint pt = ......;
pt.X = arrayVector.Get(n);
pt.Y = arrayVector.Get(n + 1);
pt.Z = arrayVector.Get(n + 2);
pts.Add(pt);
n = n + 3;
}
IFloatArray用作TexcoordArray存储时,2个数值来表达纹理坐标,如:
List<IPoint> texPts = new List<IPoint>();
IFloatArray arrayVector = drawPrimitive.TexcoordArray;
for (int n = 0; n < arrayVector.Length;)
{
IPoint pt = ......;
pt.X = arrayVector.Get(n);
pt.Y = arrayVector.Get(n + 1);
texPts.Add(pt);
n = n + 2;
}
注意:
图像上的位置长宽两个方向都是0到1的长度,比如对应图像最中间的位置,相应的纹理坐标就是0.5,0.5;
所谓贴图,就是将在模型的某个面上的节点,设置合适的纹理坐标。看上图就很清楚了,给模型上每个点设置合适的TexcoordArray(设置IDrawPrimitive.TexcoordArray)。
特别注意一下,这个TexcoordArray(2个数)顺序与VertexArray(3个数)顺序是一致的。