.
This commit is contained in:
@@ -17,6 +17,9 @@ public class MeshRenderer(Asset.Mesh.Mesh parMesh, int parInstanceCount, Program
|
||||
private readonly TextureUnitMap _textureUnitMap = new(16);
|
||||
private readonly int[] _textureUnitIndices = new int[16];
|
||||
|
||||
private int _frameHash;
|
||||
private int _previousHash;
|
||||
|
||||
public void Commit(Matrix4 parModelMatrix, Texture.Texture? parTexture = null)
|
||||
{
|
||||
if (_queuedInstanceCount >= _instanceCount)
|
||||
@@ -32,6 +35,9 @@ public class MeshRenderer(Asset.Mesh.Mesh parMesh, int parInstanceCount, Program
|
||||
|
||||
_instanceVertices[_queuedInstanceCount]._textureId = textureId;
|
||||
_instanceVertices[_queuedInstanceCount]._modelMatrix = parModelMatrix;
|
||||
|
||||
_frameHash = HashCode.Combine(_frameHash, _instanceVertices[_queuedInstanceCount]);
|
||||
|
||||
_queuedInstanceCount++;
|
||||
}
|
||||
|
||||
@@ -45,4 +51,17 @@ public class MeshRenderer(Asset.Mesh.Mesh parMesh, int parInstanceCount, Program
|
||||
|
||||
parProgram.SetUniform("uTexture", _textureUnitIndices);
|
||||
}
|
||||
|
||||
protected override bool DataChanged()
|
||||
{
|
||||
return _frameHash != _previousHash;
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
{
|
||||
base.Reset();
|
||||
_textureUnitMap.Reset();
|
||||
_previousHash = _frameHash;
|
||||
_frameHash = 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user