相关疑难解决方法(0)

3D基元,XNA 4.0上的透明纹理问题

我需要画一大堆立方体,每一面都有(可能)独特的纹理.一些纹理也具有透明度的一部分.具有透明纹理的立方体后面的立方体应该透过透明纹理显示.但是,我绘制立方体的顺序似乎决定了透明度是否有效,这是我想要避免的.看这里:

cubeEffect.CurrentTechnique = cubeEffect.Techniques["Textured"];

Block[] cubes = new Block[4];
cubes[0] = new Block(BlockType.leaves, new Vector3(0, 0, 3));
cubes[1] = new Block(BlockType.dirt, new Vector3(0, 1, 3));
cubes[2] = new Block(BlockType.log, new Vector3(0, 0, 4));
cubes[3] = new Block(BlockType.gold, new Vector3(0, 1, 4));


foreach(Block b in cubes) {
    b.shape.RenderShape(GraphicsDevice, cubeEffect);
}
Run Code Online (Sandbox Code Playgroud)

这是Draw方法中的代码.它产生了这个结果: 第一张图片http://oi53.tinypic.com/av4tv7.jpg

如您所见,叶子立方体后面的纹理在另一侧是不可见的.当我在数组中反转索引3和0时,我得到这个: 正确的形象

很明显,绘图的顺序正在影响立方体.我怀疑它可能与混合模式有关,但我不知道从哪里开始.

c# xna textures

4
推荐指数
1
解决办法
6319
查看次数

标签 统计

c# ×1

textures ×1

xna ×1