This commit is contained in:
maxwes08
2025-09-09 10:57:28 +02:00
parent 3678eaa5f8
commit b6655d71d9
6 changed files with 148 additions and 81 deletions

View File

@@ -9,7 +9,7 @@ namespace Voxel
private static List<ChunkMesh> _chunkMeshes = new List<ChunkMesh>();
private static Shader _shader;
private static Texture _texture;
private static bool _needsUpdate = false;
private static World _world;
static Renderer()
{
@@ -35,32 +35,31 @@ namespace Voxel
GL.BindVertexArray(_vao);
GL.BindBuffer(BufferTarget.ShaderStorageBuffer, _ssbo);
//if (_needsUpdate)
//{
// _needsUpdate = false;
// byte[] data = _faces.SelectMany(f => f.Pack()).ToArray();
// GL.BufferData(BufferTarget.ShaderStorageBuffer, data.Length, data, BufferUsageHint.StaticRead);
//}
_shader.Use();
_shader.SetMatrix4("view", Camera.view);
_shader.SetMatrix4("projection", Camera.projection);
for (int i = 0; i < _chunkMeshes.Count; i++)
{
ChunkMesh chunkMesh = _chunkMeshes[i];
_shader.SetInt("chunkX", chunkMesh.X);
_shader.SetInt("chunkY", chunkMesh.Y);
GL.BufferData(BufferTarget.ShaderStorageBuffer, chunkMesh.PackedData.Length, chunkMesh.PackedData, BufferUsageHint.StaticRead);
GL.DrawArrays(PrimitiveType.Triangles, 0, chunkMesh.Length * 6);
}
//Console.WriteLine("Rendered " + _faces.Count.ToString() + " faces");
RenderWorld();
}
public static void AddChunkMesh(ChunkMesh chunkMesh)
private static void RenderWorld()
{
_chunkMeshes.Add(chunkMesh);
if (_world == null) return;
foreach (Chunk chunk in _world.GetAllChunks())
{
ChunkMesh chunkMesh = chunk.GetChunkMesh();
byte[] data = chunkMesh.GetPackedData();
_shader.SetInt("chunkX", chunk.X);
_shader.SetInt("chunkY", chunk.Y);
GL.BufferData(BufferTarget.ShaderStorageBuffer, chunkMesh.Length * 8, data, BufferUsageHint.StaticRead);
GL.DrawArrays(PrimitiveType.Triangles, 0, chunkMesh.Length * 6);
}
}
public static void SetWorld(World world)
{
_world = world;
}
}
}