-2

多くのブロックをレンダリングするゲームを作成しています。fps が大幅に低下し、すべてが遅れます。多くのオブジェクトが一度にレンダリングされるため、遅延が発生する理由はわかっていますが、錐台カリングまたは任意のタイプのカリング クラスを作成してゲームに実装する方法がわかりません。

注: VBO を使用しています。

私はネット上で見つけることができません。助けてください。

これが私のコードの一部です:

//Render Game this were I render my game 
public void Render_GAME() {
    Update();
    if (isGameRunning == true) {
       Update();
       world.render();
       p1.Update();
       }
 }

フラット クラス: ブロックをレンダリングする場所

package game.terrain.biomes;

import core.camera.*;
import core.graphics.*;
import core.math.*;
import game.blocks.*;
import game.Player;

public class Flat{

//Global Variables:
private int width;
private int height;
private int depth;

private SpaceStone[][][] blocks;

public Flat(int width, int height, int depth)
{
    this.width = width;
    this.height = height;
    this.depth = depth;

    blocks = new SpaceStone[width][height][depth];

    createBlocks();
}

//Create Blocks
private void createBlocks()
{
    SpaceStone.createBlock();

    for(int x = 0; x < width; x += 5)
    {
        for(int y = 0; y < height; y += 5)
        {
            for(int z = 0; z < depth; z += 5)
            {
                blocks[x][y][z] = new SpaceStone(new Vector3f(x, y, z), new Vector3f(0, 0, 0), new Vector3f(2.5f, 2.5f, 5f));
            }
        }
    }
}

//Render Blocks
private void renderBlocks()
{   
    Shader.BLOCK.Enable();
    SpaceStone.blocktex.bindTexture();
    SpaceStone.block.Bind();

    Shader.BLOCK.setUniform1i("tex", 1);

    Matrix4f viewMatrix = Player.getViewMatrix(Player.getCamera()); 
    Shader.BLOCK.setUniformMat4f("pr_matrix", Player.getPerspective());

    for(int i = 0; i < width; i += 5)
    {
        for(int j = 0; j < height; j += 5)
        {
            for(int k = 0; k < depth; k += 5)
            {
                Matrix4f transform = new Transformation().getTransform(blocks[i][j][k], viewMatrix);
                Shader.BLOCK.setUniformMat4f("vw_matrix", transform);
                SpaceStone.block.Draw();
            }
        }
    }

    Shader.BLOCK.Disable();
    SpaceStone.blocktex.unbindTexture();
    SpaceStone.block.Unbind();
}

//Render Flat Biome
public void renderFlatBiome()
{
    //Render Blocks
    renderBlocks();
}
}

クラスやプロジェクト全体などの詳細情報が必要な場合は、コメントして私に通知してください。

4

1 に答える 1