我用 C# XNA 制作了一个类似于我的世界的引擎。它提供了高 fps 并加载了没有 fps 的块,但是当涉及到全局灯光和阴影时 - 我有问题。
基本上 - 在块的模型创建循环中
for (i = 0; i < 16; i++)
{
for(int j = 0; j < chunk_height; j++)
{
for(int k = 0; k < 16; k++)
{
// check if block (and 4 blocks around
// a current one (i, j, k), (i + 1, j, k),
// (i - 1, j, k), (i, j, k + 1), (i, j, k -1))
// are covered and put shadows to block face's vertex colors.
}
}
}
结果是老式的 minecraft 风格的阴影:
(在开启垂直同步的情况下,与之前的屏幕截图具有相同的良好性能,没有它的 fps 为 ~ 350)
但我正在尝试实现我的世界的阴影、生物群系颜色和光线平滑 ->
我正在使用三角形列表,因为它不可能使用三角形条来处理这些东西。但是在这种情况下,任何立方体面之间的顶点颜色都不平滑。
所以问题是平滑这些顶点。颜色 -s 看起来像我的世界。
我做了一个简单的算法,但它加载 cpu 太难了(vertices.Count ^ 2 - sized loop)
,所以当你环游世界并计算新加载的块的阴影时,pc 每次都会滞后 1-2 秒,而在 mc 中没有这样的减速。
(我需要平滑算法是实时和运行的,因为主要目标是超越我的世界的性能(在我的世界当前的最小/中等图形中,达到了结果(~ 300 fps 与 minecraft 的 70))
Chunk 的类(主要问题),Helper 类(杂项,在项目中使用),Block 类(Block-Type Base(用于创建和注册块类型),块的模型生成器):
PS对不起,如果我的英语不好,那不是我的主要语言。