コード例 #1
0
 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();
     }
 }
コード例 #2
0
ファイル: HudRenderer.cs プロジェクト: yts233/Minecraft
        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}");
                }
            }
        }