changed some rendering buffer code
This commit is contained in:
20
Renderer.cs
20
Renderer.cs
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user