update
This commit is contained in:
39
Renderer.cs
39
Renderer.cs
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user