changed some rendering buffer code

This commit is contained in:
max
2025-12-15 00:18:16 +01:00
parent 35ecc36bdb
commit 0641d22c9b

View File

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