chunk meshes
This commit is contained in:
33
Renderer.cs
33
Renderer.cs
@@ -6,7 +6,7 @@ namespace Voxel
|
||||
{
|
||||
private static int _ssbo;
|
||||
private static int _vao;
|
||||
private static List<FaceData> _faces = new List<FaceData>();
|
||||
private static List<ChunkMesh> _chunkMeshes = new List<ChunkMesh>();
|
||||
private static Shader _shader;
|
||||
private static Texture _texture;
|
||||
private static bool _needsUpdate = false;
|
||||
@@ -35,31 +35,32 @@ 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);
|
||||
}
|
||||
//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);
|
||||
|
||||
GL.DrawArrays(PrimitiveType.Triangles, 0, _faces.Count * 6);
|
||||
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");
|
||||
}
|
||||
|
||||
public static void AddFaces(List<FaceData> faces)
|
||||
public static void AddChunkMesh(ChunkMesh chunkMesh)
|
||||
{
|
||||
_faces.AddRange(faces);
|
||||
_needsUpdate = true;
|
||||
}
|
||||
|
||||
public static void ClearFaces()
|
||||
{
|
||||
_faces.Clear();
|
||||
_chunkMeshes.Add(chunkMesh);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user