public void Render() { if (Disposed) { return; } if (_needUpdate) { lock (_updateLock) { _vertex?.DisposeAll(); _vertex = _chunkVertexArrayProvider.ToElementArray().GetHandle(); _chunkVertexArrayProvider = null; _needUpdate = false; } } lock (_renderLock) { if (_vertex == null || _shader == null) { return; } _textureDictionary.Bind(); _shader.Use(); _shader.Model = Matrix4.Identity; _shader.Projection = _projectionMatrix.GetMatrix(); _shader.View = _viewMatrix.GetMatrix(); _vertex.Bind(); _vertex.Render(); } }
public void Render() { _shader.Use(); while (_disposeObjects.TryDequeue(out var dObj)) { switch (dObj) { case TextHudObject texObj: texObj.EAH?.Dispose(); texObj.TVP = null; break; } } foreach (var hudObj in _hudObjects) { switch (hudObj) { case TextHudObject texObj: { if (texObj.VertexUpdated) { texObj.EAH?.DisposeAll(); texObj.EAH = texObj.TVP.ToElementArray().GetHandle(); texObj.TVP.Clear(); texObj.VertexUpdated = false; texObj.TextUpdated = false; } if (texObj.EAH == null) { continue; } _shader.Model = texObj.Model; _fontTexture.Bind(); texObj.EAH.Bind(); texObj.EAH.Render(); break; } default: throw new RenderException($"Unknown HudObject: {hudObj.GetType().FullName}"); } } }