如何在XNA中隐藏立方体模型的某些面,以便体素引擎对其进行优化
本文关键字:引擎 优化 XNA 隐藏 立方 体模型 立方体 | 更新日期: 2023-09-27 18:21:55
你好,我正在尝试制作一个类似于《我的世界》的地形引擎。
我能够装载一大块。它非常滞后,当一次加载多个区块时,它将变得无法播放。
这是我的渲染代码:
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开发的书,仔细阅读。这是一个将在那里涵盖的基本主题。此外,请访问techCrafthttp://techcraft.codeplex.com/并下载所有代码附带的实现。你会从中学到很多东西。