Esempio n. 1
0
        public void RenderInstancedPrepare()
        {
            using (var t = new TimerScope(timers.MaterialSwitch))
            {
                if (Effective.Material != Requested.Material)
                {
                    Requested.Material.Use();
                    Effective.Material = Requested.Material;
                }
            }

            using (var t = new TimerScope(timers.ProgramSwitch))
            {
                if (Effective.Program != Requested.Program)
                {
                    Requested.Program.Use(0);
                    Effective.Program = Requested.Program;
                }
            }

            using (var t = new TimerScope(timers.AttributeSetup))
            {
                BindAttributesAndCheckForUpdates();
            }
        }
Esempio n. 2
0
        public void RenderCurrent(int instanceCount)
        {
            IBufferRange indexBufferRange = Effective.Mesh.IndexBufferRange(Effective.MeshMode);

            using (var t = new TimerScope(timers.DrawCalls))
            {
                GL.DrawElementsInstancedBaseVertex(
                    indexBufferRange.BeginMode,
                    (int)indexBufferRange.Count,
                    indexBufferRange.DrawElementsTypeGL,
                    (IntPtr)(indexBufferRange.OffsetBytes),
                    instanceCount,
                    Effective.Mesh.VertexBufferRange.BaseVertex
                    );
            }
        }
Esempio n. 3
0
        public void RenderCurrent()
        {
            using (var t = new TimerScope(timers.MaterialSwitch))
            {
                if (Effective.Material != Requested.Material)
                {
                    Requested.Material.Use();
                    Effective.Material = Requested.Material;
                }
            }

            using (var t = new TimerScope(timers.ProgramSwitch))
            {
                if (Effective.Program != Requested.Program)
                {
                    Requested.Program.Use(0);
                    Effective.Program = Requested.Program;
                }
            }

            using (var t = new TimerScope(timers.AttributeSetup))
            {
                BindAttributesAndCheckForUpdates();
            }

            IBufferRange indexBufferRange = Effective.Mesh.IndexBufferRange(Effective.MeshMode);

            using (var t = new TimerScope(timers.DrawCalls))
            {
                /*
                 * RL.DrawElementsBaseVertex(
                 *  indexBufferRange.BeginMode,
                 *  (int)indexBufferRange.Count,
                 *  indexBufferRange.DrawElementsType,
                 *  (IntPtr)(indexBufferRange.OffsetBytes),
                 *  Effective.Mesh.VertexBufferRange.BaseVertex
                 * );*/
                RL.DrawElements(
                    (Caustic.OpenRL.BeginMode)indexBufferRange.BeginMode,
                    (int)indexBufferRange.Count,
                    (Caustic.OpenRL.DrawElementsType)indexBufferRange.DrawElementsTypeGL,
                    (int)indexBufferRange.OffsetBytes
                    );
            }
        }
Esempio n. 4
0
        public void RenderCurrent(int instanceCount)
        {
            IBufferRange indexBufferRange = Effective.Mesh.IndexBufferRange(Effective.MeshMode);

            using (var t = new TimerScope(timers.DrawCalls))
            {
                /*GL.DrawElementsInstancedBaseVertex(
                 *  indexBufferRange.BeginMode,
                 *  (int)indexBufferRange.Count,
                 *  indexBufferRange.Buffer.DrawElementsType,
                 *  (IntPtr)(indexBufferRange.OffsetBytes),
                 *  instanceCount,
                 *  Effective.Mesh.VertexBufferRange.BaseVertex
                 * );*/
                RL.DrawElements(
                    (Caustic.OpenRL.BeginMode)indexBufferRange.BeginMode,
                    (int)indexBufferRange.Count,
                    (Caustic.OpenRL.DrawElementsType)indexBufferRange.DrawElementsTypeGL,
                    (int)indexBufferRange.OffsetBytes
                    );
            }
        }
Esempio n. 5
0
        public void RenderCurrentDebug()
        {
            using (var t = new TimerScope(timers.MaterialSwitch))
            {
                if (Effective.Material != Requested.Material)
                {
                    Requested.Material.UseDebug();
                    Effective.Material = Requested.Material;
                }
            }

/*
 *          using(var t = new TimerScope(timers.ProgramSwitch))
 *          {
 *              if(Effective.Program != Requested.Program)
 *              {
 *                  Requested.Program.Use();
 *                  Effective.Program = Requested.Program;
 *              }
 *          }
 *
 *          using(var t = new TimerScope(timers.AttributeSetup))
 *          {
 *              BindAttributesAndCheckForUpdates();
 *          }
 *
 *          BufferRange indexBufferRange = Effective.Mesh.IndexBufferRange(Effective.MeshMode);
 *
 *          using(var t = new TimerScope(timers.DrawCalls))
 *          {
 *              GL.DrawElementsBaseVertex(
 *                  indexBufferRange.BeginMode,
 *                  (int)indexBufferRange.Count,
 *                  indexBufferRange.Buffer.DrawElementsType,
 *                  (IntPtr)(indexBufferRange.OffsetBytes),
 *                  Effective.Mesh.VertexBufferRange.BaseVertex
 *              );
 *          }*/
        }