public void Render( GraphicsDevice gd, CommandList rc, SceneContext sc, RenderPasses pass, BoundingFrustum frustum, Vector3 viewPosition, RenderQueue <IRenderable> renderQueue, List <IRenderable> renderableList, Comparer <RenderItemIndex> comparer, bool threaded) { renderQueue.Clear(); renderableList.Clear(); CollectFreeObjects(pass, renderableList); renderQueue.AddRange(renderableList, viewPosition); if (comparer == null) { renderQueue.Sort(); } else { renderQueue.Sort(comparer); } foreach (var renderable in renderQueue) { renderable.Render(gd, rc, sc, pass); } }
public void Render( GraphicsDevice gd, CommandList rc, GraphicsSystem sc, RenderPasses pass, BoundingFrustum frustum, Vector3 viewPosition, RenderQueue renderQueue, List <ICullRenderable> ICullRenderableList, List <IRenderable> renderableList, Comparer <RenderItemIndex> comparer, bool threaded) { renderQueue.Clear(); ICullRenderableList.Clear(); CollectVisibleObjects(ref frustum, pass, ICullRenderableList); renderQueue.AddRange(ICullRenderableList, viewPosition); renderableList.Clear(); CollectFreeObjects(pass, renderableList); renderQueue.AddRange(renderableList, viewPosition); if (comparer == null) { renderQueue.Sort(); } else { renderQueue.Sort(comparer); } foreach (IRenderable renderable in renderQueue) { renderable.Render(gd, rc, sc, pass); } if (threaded) { lock (_allPerFrameRenderablesSet) { foreach (ICullRenderable thing in ICullRenderableList) { _allPerFrameRenderablesSet.Add(thing); } foreach (IRenderable thing in renderableList) { _allPerFrameRenderablesSet.Add(thing); } } } else { foreach (ICullRenderable thing in ICullRenderableList) { _allPerFrameRenderablesSet.Add(thing); } foreach (IRenderable thing in renderableList) { _allPerFrameRenderablesSet.Add(thing); } } }