有人可能会解释以下代码的作用:
int imagesInTexture = 11;
if (floorPlan[x, z] == 0)
{
verticesList.Add(new VertexPositionNormalTexture(new Vector3(x, 0, -z), new Vector3(0, 1, 0), new Vector2(0, 1)));
verticesList.Add(new VertexPositionNormalTexture(new Vector3(x, 0, -z - 1), new Vector3(0, 1, 0), new Vector2(0, 0)));
verticesList.Add(new VertexPositionNormalTexture(new Vector3(x + 1, 0, -z), new Vector3(0, 1, 0), new Vector2(1.0f / imagesInTexture, 1)));
verticesList.Add(new VertexPositionNormalTexture(new Vector3(x, 0, -z - 1), new Vector3(0, 1, 0), new Vector2(0, 0)));
verticesList.Add(new VertexPositionNormalTexture(new Vector3(x + 1, 0, -z-1), new Vector3(0, 1, 0), new Vector2(1.0f / imagesInTexture, 0)));
verticesList.Add(new VertexPositionNormalTexture(new Vector3(x + 1, 0, -z), new Vector3(0, 1, 0), new Vector2(1.0f / imagesInTexture, 1)));
}
以下是本教程: http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2/Loading_the_floorplan.php
如果您想查看我在此处上传的教程附带的纹理贴图,则无法清楚地解释它的作用: Texture Map from Tutorial
感谢。
答案 0 :(得分:0)
代码创建要绘制的图块。每个图块由两个三角形组成。三角形定义为三个连续顶点。然后将这些三角形提交到顶点缓冲区中的图形卡。
VertexPositionNormalTexture
是所使用的Effect
所期望的顶点数据的类型,它包含:
(x, 0, -z)
,其中x
和z
是拼贴的坐标。(0, 1, 0)
,即直接向上。所有顶点都具有相同的法向量,因为表面是平的。(0, 1)
;第二个,左下角;第三个是屋顶部分的右上角。数据的类型取决于效果:有些可能使用顶点颜色,更多纹理具有独立坐标,材质属性如反射率等。但是,这在设计着色器和动态生成几何时很重要(例如在此教程)。如果您将Model
类与内置Effect
一起使用,则框架将处理所有内容。
如果您以前没有使用3D图形,我建议玩弄代码:注释掉三个一组以查看三角形,然后使用位置和纹理坐标。在一张纸上绘制顶点也可能有助于理解代码。