Question

Eh bien, je suis en train de créer quelque chose de terrain minecraft juste pour le plaisir de celui-ci. Le problème que j'ai est que si vous regardez sur un certain angle des visages qui sont en fait derrière les autres sont attirés devant eux, donc ne pas montrer les réelles qui sont là. Comme je minecraft le terrain dans des régions seperated, et lorsque le vertexbuffer est construit, sont seulement le visage « de l'extérieur ». Il est également pour une raison quelconque ne tire pas tout en haut, ni les blocs gauche. En plus de tous ces problèmes visages semblent-à-dire qui se chevauchent (seulement la moitié d'un visage peut être vu)

Voici à quoi il ressemble (note que je dessine que les faces supérieures parce que je dois fixer les autres vers le haut): http://s1100.photobucket.com/albums/g420/darestium/?action=view¤t=minecraftliketerrain.png

Je dessine également toutes les régions en une seule fois avec la méthode suivante (je suis en utilisant le fichier d'effet de reimer jusqu'à ce que je peux écrire mon propre:):

public void Draw(Player player, World world) 
    { 
        effect.CurrentTechnique = effect.Techniques["TexturedNoShading"]; 
        effect.Parameters["xWorld"].SetValue(Matrix.Identity); 
        effect.Parameters["xProjection"].SetValue(player.Camera.ProjectionMatrix); 
        effect.Parameters["xView"].SetValue(player.Camera.ViewMatrix); 
        effect.Parameters["xCamPos"].SetValue(player.Camera.Position); 
        effect.Parameters["xTexture"].SetValue(world.TextureAlias.SheetTexture); 
        effect.Parameters["xCamUp"].SetValue(player.Camera.UpDownRotation); 

        for (int x = 0; x < world.regions.GetLength(0); x++) 
        { 
            for (int y = 0; y < world.regions.GetLength(1); y++) 
            { 
                foreach (EffectPass pass in effect.CurrentTechnique.Passes) 
                { 
                    pass.Apply(); 


                    Region region = world.regions[x, y]; 

                    if (player.Camera.BoundingFrustum.Contains(region.BoundingBox) != ContainmentType.Disjoint) 
                    { 
                        device.SetVertexBuffer(region.SolidVertexBuffer); 
                        //device.Indices = region.SolidIndices; 
                        device.DrawPrimitives(PrimitiveType.TriangleList, 0, region.VertexCount); 
                        //device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, region.VertexCount, 0, region.SolidIndices.IndexCount / 3); 
                    } 
                } 
            } 
        } 
    } 

L'aide serait appréciée grâce:)

Était-ce utile?

La solution

On dirait que le Z-buffer est désactivé. Essayez de régler:

GraphicsDevice.DepthStencilState = DepthStencilState.Default;

Le problème avec elle ne dessine pas les top / blocs à gauche, que vous mentionnez, est probablement un problème à faire avec votre code de génération de vertex buffer (si oui, essayez poser une autre question précisément sur cette question).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top