本质上,我希望默认情况下将 Surface Shapes 渲染在 Tactical Symbols 之上。这是在 Worldwind 示例中重新创建的问题
public class TestApp extends ApplicationTemplate {
public static class AppFrame extends ApplicationTemplate.AppFrame {
public AppFrame() {
// Symbol
RenderableLayer symbolLayer = new RenderableLayer();
TacticalSymbol symbol = new MilStd2525TacticalSymbol("suzp-----------", Position.fromDegrees(0.0, 0.0));
symbol.setAltitudeMode(WorldWind.CLAMP_TO_GROUND);
symbol.setShowLocation(false);
symbolLayer.addRenderable(symbol);
// Shape
RenderableLayer shapeLayer = new RenderableLayer();
SurfaceCircle circle = new SurfaceCircle(Position.fromDegrees(0.0, 0.0), 100e4);
shapeLayer.addRenderable(circle);
getWwd().getModel().getLayers().add(symbolLayer);
getWwd().getModel().getLayers().add(shapeLayer);
}
}
public static void main(String[] args) {
start("World Wind Testing", AppFrame.class);
}
}
无论我以哪种顺序添加图层,战术符号始终呈现在表面形状的顶部。我假设这是因为形状的呈现方式不同:
“图层按照它们在图层列表中定义的顺序显示。(但是,图层内的 3D 形状以从远到近的顺序显示”
我有一种预感,我可以通过扩展 Tactical Symbol 并实现OrderedRenderable接口并覆盖makeOrderedRenderable()方法来解决这个问题,但我不确定在不破坏其他层的情况下我应该进行哪些具体更改来实现所需的功能。