【问题标题】:Java 3D: Where can I insert a "post rendering" FX?Java 3D:我可以在哪里插入“渲染后”FX?
【发布时间】:2025-12-25 00:30:11
【问题描述】:

我扩展了一个Canvas3D,然后我重写了方法“postSwap()”,但是我的奇偶线效果闪烁很多,插入这个过程还有什么好处?

public void postSwap() {
    Graphics2D g2 = (Graphics2D)this.getGraphics();
    Map map = new HashMap();
    map.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
    g2.addRenderingHints(map);
    g2.setColor(WipideaApplet.BCK2);
    int h = this.getHeight(), w = this.getWidth();
    for (int i=0;i<h;i++) {
        if (i%2==0)
            g2.drawLine(0, i, w, i);
    }
}

【问题讨论】:

    标签: 3d effects watermark java-3d


    【解决方案1】:

    我自己找到了一个很好的解决方案,我在这里发布来分享它,如果你有另一个,请发布它:-)

    @Override
    public void postRender() {
        super.postRender();
        getGraphics2D().setColor(WipideaApplet.BCK2);
        int h = this.getHeight(), w = this.getWidth();
        for (int i=0;i<h;i++) {
                if (i%2==0) {
                    getGraphics2D().drawLine(0, i, w, i);
                }
        }
        getGraphics2D().flush(true);
    }
    

    实际上 getGraphics2D().flush(true); 是最重要的,因为避免任何闪烁,至少在我的 centrino duo 上:-)

    【讨论】: