我今天早上在一个小小的网络项目上工作(你可以找到它here):用巴比伦JS构建一个小体素引擎(像Minecraft这样的纹理)。
我创造了一个小世界(大小50 * 50),没有其他区域(只是第一层走路)。
我用Java做了一个类似的项目,我该如何优化我的项目?因为它的滞后。
使用Java,我必须:
- 禁用多维数据集内部面的显示(我知道" backFaceCulling = true;"但它只适用于每个面都没有一个图像的块,但是一个图像适用于所有面)。
- 当一个块紧挨着它时,禁用面部显示
- 使用VBO
- 制作一个大物体草(由我所有的草块组成,而不是制作多个草立方体)。
你知道我怎么能做到这4分? (以及优化的方式)?
PS:我的所有代码源都在this主,你不想在这里写它吗?
好吧,为了制作一个立方体,我已经进入我的img / block /文件夹plg文件或其他文件夹。全部由id(0,1,2 ......)命名如果我是一个文件夹,它包含6个jpg文件(一个块的每个面)。所以这是执行此操作的代码:
function readAllCube(scene, tab, nb){
for(var cpt=0; cpt<=nb; cpt++){
tab.push(new BABYLON.StandardMaterial("cube"+cpt, scene));
tab[cpt].backFaceCulling = true;
switch(cpt){
case 2:
tab[cpt].reflectionTexture = new BABYLON.CubeTexture("img/block/"+cpt+"/"+cpt, scene);
tab[cpt].reflectionTexture.coordinatesMode = BABYLON.Texture.SKYBOX_MODE;
break;
default:
tab[cpt].diffuseTexture = new BABYLON.Texture("img/block/"+cpt+".png", scene);
break;
}
}
}
所以我会有一个纹理标签。但是当我的纹理是由多个图像组成的时候,我不知道如何绘制它(内部面部)。
我还没有找到如何从我的所有立方体中制作自定义网格物体。我认为渲染1个自定义网格比625块更快吗?
如果我这样做,也许我认为我能够删除被下一个其他块隐藏的面孔。