26 lines
795 B
C#
26 lines
795 B
C#
using Engine.Graphics.Shader;
|
|
using OpenTK.Graphics.OpenGL;
|
|
using OpenTK.Mathematics;
|
|
|
|
namespace Engine.Graphics.Render.Mesh;
|
|
|
|
public class MeshRenderer : InstancedRenderer<Asset.Mesh.Mesh.Vertex, MeshInstanceVertex>
|
|
{
|
|
public MeshRenderer(Renderer parRenderer, int parInstanceCount, Asset.Mesh.Mesh parMesh)
|
|
: base(parRenderer, PrimitiveType.Triangles, parInstanceCount, parMesh.Indices.ToArray(),
|
|
parMesh.Vertices.ToArray(),
|
|
ProgramLoader.LoadFromSource(ShaderResource.Mesh))
|
|
{
|
|
}
|
|
|
|
public void Commit(Matrix4 parModelMatrix)
|
|
{
|
|
if (_queuedInstanceCount >= _instanceCount)
|
|
{
|
|
throw new InvalidOperationException("Instance count exceeded");
|
|
}
|
|
|
|
_instanceVertices[_queuedInstanceCount]._modelMatrix = parModelMatrix;
|
|
_queuedInstanceCount++;
|
|
}
|
|
} |