Exemplo n.º 1
0
        public static void Draw(Dictionary <VRageRender.MyRenderStats.ColumnEnum, List <MyStats> > m_stats, float scale, Color color)
        {
            foreach (var pair in m_stats)
            {
                try
                {
                    foreach (var s in pair.Value)
                    {
                        s.WriteTo(m_tmpDrawText);
                        m_tmpDrawText.AppendLine(); // Newline between each group
                    }

                    Vector2 pos = new Vector2(0, 0);

                    if (pair.Key == VRageRender.MyRenderStats.ColumnEnum.Right)
                    {
                        Vector2 size = MyRender11.GetDebugFont().MeasureString(m_tmpDrawText, scale);
                        if (m_rightColumnWidth < size.X)
                        {
                            m_rightColumnWidth      = size.X * m_rightGapSizeRatio; // Add some gap
                            m_rightColumnChangeTime = MyRender11.CurrentDrawTime;
                        }
                        else if (m_rightColumnWidth > size.X * m_rightGapSizeRatio && (MyRender11.CurrentDrawTime - m_rightColumnChangeTime).Seconds > 3)
                        {
                            m_rightColumnWidth      = size.X * m_rightGapSizeRatio;
                            m_rightColumnChangeTime = MyRender11.CurrentDrawTime;
                        }
                        pos = new Vector2(MyRender11.ViewportResolution.X - m_rightColumnWidth, 0);
                    }

                    /* Add info about render buffers */
                    m_tmpDrawText.Append("Hardware Buffers (count/bytes):\n");

                    MyBufferStats stats, total = new MyBufferStats();

                    MyHwBuffers.GetConstantBufferStats(out stats);
                    m_tmpDrawText.AppendFormat("   Constant: {0:N0}/{1:N0}\n", stats.TotalBuffers, stats.TotalBytes);
                    total.TotalBytes += stats.TotalBytes; total.TotalBuffers += stats.TotalBuffers;

                    MyHwBuffers.GetVertexBufferStats(out stats);
                    m_tmpDrawText.AppendFormat("   Vertex: {0:N0}/{1:N0}\n", stats.TotalBuffers, stats.TotalBytes);
                    total.TotalBytes += stats.TotalBytes; total.TotalBuffers += stats.TotalBuffers;

                    MyHwBuffers.GetIndexBufferStats(out stats);
                    m_tmpDrawText.AppendFormat("   Index: {0:N0}/{1:N0}\n", stats.TotalBuffers, stats.TotalBytes);
                    total.TotalBytes += stats.TotalBytes; total.TotalBuffers += stats.TotalBuffers;

                    MyHwBuffers.GetStructuredBufferStats(out stats);
                    m_tmpDrawText.AppendFormat("   Structured: {0:N0}/{1:N0}\n", stats.TotalBuffers, stats.TotalBytes);
                    total.TotalBytes += stats.TotalBytes; total.TotalBuffers += stats.TotalBuffers;

                    m_tmpDrawText.AppendFormat("   Total: {0:N0}/{1:N0}\n", total.TotalBuffers, total.TotalBytes);


                    m_tmpDrawText.Append("Textures:\n");
                    MyTextureUsageReport report = MyTextures.GetReport();

                    m_tmpDrawText.AppendFormat("   Total: {0}\n", report.TexturesTotal);
                    m_tmpDrawText.AppendFormat("   Loaded: {0}\n", report.TexturesLoaded);
                    m_tmpDrawText.AppendFormat("   Memory: {0:N0}\n", report.TotalTextureMemory);

                    MySpritesRenderer.DrawText(pos, m_tmpDrawText, color, scale);
                }
                finally
                {
                    m_tmpDrawText.Clear();
                }
            }
        }