C# 如何在XNA中隐藏立方体模型的某些面,以便体素引擎对其进行优化?

C# 如何在XNA中隐藏立方体模型的某些面,以便体素引擎对其进行优化?,c#,xna,rendering,voxel,C#,Xna,Rendering,Voxel,你好,我正在尝试制作一个类似于Minecraft的地形引擎 我能够加载一个块。它非常滞后,当一次加载多个块时,它将变得不可编程 这是我的渲染代码: public static void renderNormalBlock(GraphicsDevice g, Chunk chunk,Texture2D texture, int x, int y, int z) { float tileSize = 0.5F; Vector3 blockPosition =

你好,我正在尝试制作一个类似于Minecraft的地形引擎

我能够加载一个块。它非常滞后,当一次加载多个块时,它将变得不可编程

这是我的渲染代码:

public static void renderNormalBlock(GraphicsDevice g, Chunk chunk,Texture2D texture, int x, int y, int z)
    {
        float tileSize = 0.5F;
        Vector3 blockPosition = new Vector3(x / tileSize, y / tileSize, z / tileSize);
        Model blockModel = Main.defaultBlockModel;
        ModelMesh mesh = blockModel.Meshes[0];
        g.SamplerStates[0] = SamplerState.PointWrap;
        BasicEffect effect = (BasicEffect)mesh.Effects[0];
        effect.TextureEnabled = true;
        effect.Texture = texture;
        effect.View = Main.camera;
        effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), g.DisplayMode.AspectRatio, 1, 128);
        effect.World = Matrix.CreateWorld(blockPosition, Vector3.Forward, Vector3.Up);
        mesh.Draw();
    }
正如你所看到的,我没有使用for each或for循环,因为它只是一个立方体;这不是必需的

我做了一些研究,我发现最好的答案是我需要隐藏立方体中不可见的面。假设有两个立方体相邻,我不想渲染中间的面

这就是我被卡住的地方,大多数人使用的是用XNA绘制的立方体,而我使用的是模型

我是XNA的新手,我不太懂手工绘制立方体所涉及的数学,因为我目前在九年级,所以我使用了一个模型


那么,我该如何只渲染可见的面呢?

在学习基础知识之前,请先开始开发游戏。这样你不会走得太远。首先拿起一本关于XNA开发的书,仔细阅读。这是一个基本主题,将在这里介绍。此外,访问techCraft并下载所有代码附带的实现。你将从中学到很多东西。

在学习基础知识之前,先开始开发游戏。这样你不会走得太远。首先拿起一本关于XNA开发的书,仔细阅读。这是一个基本主题,将在这里介绍。此外,访问techCraft并下载所有代码附带的实现。仅此一点,您就可以学到很多。

如何使用?:您正确地认为您使用模型网格正在阻碍您。类似Minecraft的引擎不使用单个块的模型,而是从顶点构造块。XNA有一些预定义的顶点结构供您与GraphicsDevice.DrawIndexedPrimitives结合使用。那是你应该开始的地方。不要担心数学或年龄,你肯定能弄明白。使用范围?:你认为使用模型网格会阻碍你是正确的。类似Minecraft的引擎不使用单个块的模型,而是从顶点构造块。XNA有一些预定义的顶点结构供您与GraphicsDevice.DrawIndexedPrimitives结合使用。那是你应该开始的地方。不要担心你的数学或年龄,你一定能弄明白。