如何使用XNA将纹理应用于三角形?

时间:2013-10-25 02:30:42

标签: c# 3d xna xna-4.0

我正在使用XNA绘制3d基元。

我有一个TriangleStrip来描述一个立方体(我希望。我使用了this paper的图2中所示的三角剖分)。对于那些想要检查数学的人:

public readonly VertexPositionTexture[] Vertices =
{
    new VertexPositionTexture(new Vector3( 0, 0,0), new Vector2(1,1)),//A
    new VertexPositionTexture(new Vector3( 1, 0,0),new Vector2(0,1)),//B
    new VertexPositionTexture(new Vector3( 0, 1,0),new Vector2(1,0)),//C
    new VertexPositionTexture(new Vector3( 1, 1,0),new Vector2(0,0)),//D
    new VertexPositionTexture(new Vector3( 1, 1,1),new Vector2(0,0)),//E
    new VertexPositionTexture(new Vector3( 1, 0,0),new Vector2(1,1)),//B'
    new VertexPositionTexture(new Vector3( 1, 0,1),new Vector2(0,1)),//F
    new VertexPositionTexture(new Vector3( 0, 0,0),new Vector2(1,0)),//A'
    new VertexPositionTexture(new Vector3( 0, 0,1),new Vector2(1,1)),//H
    new VertexPositionTexture(new Vector3( 0, 1,0),new Vector2(1,0)),//C'
    new VertexPositionTexture(new Vector3( 0, 1,1),new Vector2(1,1)),//I
    new VertexPositionTexture(new Vector3( 1, 1,1),new Vector2(0,0)),//E'
    new VertexPositionTexture(new Vector3( 0, 0,1),new Vector2(0,1)),//H'
    new VertexPositionTexture(new Vector3( 1, 0,0),new Vector2(1,1))//F'
};

我的问题是,我不知道如何应用纹理。起初我试图在每张脸上涂抹不同的纹理,但事实证明这是难以捉摸的。我现在要做的是将一个纹理应用于整个立方体。

第一个问题:这是最好的方法吗?了解我正在尝试创建一个可重用的Cube类,我需要将纹理应用于每个面。如果在单个TriangleStrip中无法实现,那么我现在就可以停止了。

第二个问题:如何正确地将单个纹理应用于TriangleStrip?

第三个问题:如何为不同的面部分配/应用不同的纹理?

1 个答案:

答案 0 :(得分:0)

我现在无法查找,但您也必须加载内容 如果要绘制多边形,请使用BasicEffect。您应该只使用SpriteBatch进行精灵绘制(即:使用其Draw方法)。 考虑帮助自己使用谷歌...; D只是看看微软开发者网络......几乎所有关于语法功能的解释都是:http://msdn.microsoft.com/en-us

然而,通过Cinema4D或Blender绘制模型或网格会更容易......只需在其上加载纹理即可。无工作;更多的努力/更快和更准确的更改。

希望我帮助你足够好;)