diff --git a/Renderer.cs b/Renderer.cs index d40c9df..dd42e64 100644 --- a/Renderer.cs +++ b/Renderer.cs @@ -60,20 +60,24 @@ namespace Voxel { if (_world == null) return; - int offset = 0; + _chunkBufferSizes.Clear(); + int faceOffset = 0; foreach (Chunk chunk in _world.GetAllChunks()) { ChunkMesh chunkMesh = chunk.GetChunkMesh(); - if (chunkMesh.NeedsUpdate) // always true - { - byte[] data = chunkMesh.GetPackedData(); - GL.BufferSubData(BufferTarget.ShaderStorageBuffer, (IntPtr)offset * 8, chunkMesh.Size * 8, data); - } + _chunkBufferSizes[(chunk.X, chunk.Y)] = faceOffset; - _chunkBufferSizes[(chunk.X, chunk.Y)] = offset; - offset += chunkMesh.Size * 8; + byte[] data = chunkMesh.GetPackedData(); + + GL.BufferSubData(BufferTarget.ShaderStorageBuffer, + (IntPtr)(faceOffset * 8), // faceOffset * 8 = byte offset + chunkMesh.Size * 8, + data + ); + + faceOffset += chunkMesh.Size; } }