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(); } }
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 ); } }
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 ); } }
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 ); } }
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 * ); * }*/ }