protected void draw(DrawContext dc) { try { // Draw the layers. if (dc.getLayers() != null) { foreach (Layer layer in dc.getLayers()) { try { if (layer != null) { dc.setCurrentLayer(layer); layer.render(dc); } } catch (Exception e) { String message = Logging.getMessage("SceneController.ExceptionWhileRenderingLayer", (layer != null ? layer.GetType().Name : Logging.getMessage("term.unknown"))); Logging.logger().log(Level.SEVERE, message, e); // Don't abort; continue on to the next layer. } } dc.setCurrentLayer(null); } // Draw the deferred/ordered surface renderables. this.drawOrderedSurfaceRenderables(dc); if (this.isDeferOrderedRendering()) { return; } if (this.screenCreditController != null) { this.screenCreditController.render(dc); } // Draw the deferred/ordered renderables. dc.setOrderedRenderingMode(true); // dc.applyGroupingFilters(); dc.applyClutterFilter(); while (dc.peekOrderedRenderables() != null) { try { dc.pollOrderedRenderables().render(dc); } catch (Exception e) { Logging.logger().log(Level.WARNING, Logging.getMessage("BasicSceneController.ExceptionDuringRendering"), e); } } dc.setOrderedRenderingMode(false); // Draw the diagnostic displays. if (dc.getSurfaceGeometry() != null && dc.getModel() != null && (dc.getModel().isShowWireframeExterior() || dc.getModel().isShowWireframeInterior() || dc.getModel().isShowTessellationBoundingVolumes())) { Model model = dc.getModel(); float[] previousColor = new float[4]; GL2 gl = dc.getGL().getGL2(); // GL initialization checks for GL2 compatibility. gl.glGetFloatv(GL2.GL_CURRENT_COLOR, previousColor, 0); foreach (SectorGeometry sg in dc.getSurfaceGeometry()) { if (model.isShowWireframeInterior() || model.isShowWireframeExterior()) { sg.renderWireframe(dc, model.isShowWireframeInterior(), model.isShowWireframeExterior()); } if (model.isShowTessellationBoundingVolumes()) { gl.glColor3d(1, 0, 0); sg.renderBoundingVolume(dc); } } gl.glColor4fv(previousColor, 0); } } catch (Throwable e) { Logging.logger().log(Level.SEVERE, Logging.getMessage("BasicSceneController.ExceptionDuringRendering"), e); } }