Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java3d:如何在Java3d场景中编辑绘制的2d覆盖?_Java_Java 3d_Hud - Fatal编程技术网

Java3d:如何在Java3d场景中编辑绘制的2d覆盖?

Java3d:如何在Java3d场景中编辑绘制的2d覆盖?,java,java-3d,hud,Java,Java 3d,Hud,我用这个技巧回答了这个问题: 我的代码是这样的: ... GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas3D = new Canvas3D(config){ public void postRender() { this.getGraphics2D().setColor(Color.white

我用这个技巧回答了这个问题:

我的代码是这样的:

...
    GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
    Canvas3D canvas3D = new Canvas3D(config){
        public void postRender()
        {
            this.getGraphics2D().setColor(Color.white);
            this.getGraphics2D().drawString("Heads Up Display (HUD) Works!",100,100);
            this.getGraphics2D().flush(false);
        }

    };
...
Graphics2D G2D = this.getGraphics2D()
G2D.setColor(Color.white);
G2D.drawString("FPS: "+fps, 100, 100);
G2D.drawString("X: "+x_pos, 100, 80);
G2D.drawString("Y: "+y_pos, 100, 60);
G2D.drawString("Z: "+z_pos, 100, 40);
G2D.flush(false);
以后如何删除此二维HUD或编辑此二维HUD


谢谢,

如果渲染完全从头开始渲染每个帧,您可以使用postRender()方法在同一类中添加静态布尔值。然后在方法内部使用if语句检查布尔值是否为true,否则,如果通过将布尔值设置为false,则不要执行任何操作

ClassName.boolean_name=false;
HUD不应显示。至于更改它,这是可能的,并且实际上取决于您想要显示的信息类型。这是一个我在游戏中使用的例子,但它可以适合几个主题

如果我在游戏中工作,我想存储FPS、x、y和z位置,所以我要做的是在类中为我需要显示的每个属性创建一个变量,然后像这样:

...
    GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
    Canvas3D canvas3D = new Canvas3D(config){
        public void postRender()
        {
            this.getGraphics2D().setColor(Color.white);
            this.getGraphics2D().drawString("Heads Up Display (HUD) Works!",100,100);
            this.getGraphics2D().flush(false);
        }

    };
...
Graphics2D G2D = this.getGraphics2D()
G2D.setColor(Color.white);
G2D.drawString("FPS: "+fps, 100, 100);
G2D.drawString("X: "+x_pos, 100, 80);
G2D.drawString("Y: "+y_pos, 100, 60);
G2D.drawString("Z: "+z_pos, 100, 40);
G2D.flush(false);
另外,如果您注意到我将G2D设置为这个.getGraphics2D(),这样我就不需要每次使用Graphics2D对象时调用外部方法,每次调用getGraphics2D(),它都必须转到该类,调用该方法并返回值,而不是只获取一次,然后使用它,更快地键入,从长远来看,它可以创造更快的速度

在所有这些之后,我要做的是,我可以将每个变量设置为正确的值,它会显示,这是更新它的一种方式,您可以做类似的操作,为每行创建一个变量,然后执行:

line1="this is some text";
list2="this is some more text";
list3="etc...";

如果渲染完全从头开始渲染每个帧,则可以使用postRender()方法在同一类中添加静态布尔值。然后在方法内部使用if语句检查布尔值是否为true,否则,如果通过将布尔值设置为false,则不要执行任何操作

ClassName.boolean_name=false;
HUD不应显示。至于更改它,这是可能的,并且实际上取决于您想要显示的信息类型。这是一个我在游戏中使用的例子,但它可以适合几个主题

如果我在游戏中工作,我想存储FPS、x、y和z位置,所以我要做的是在类中为我需要显示的每个属性创建一个变量,然后像这样:

...
    GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
    Canvas3D canvas3D = new Canvas3D(config){
        public void postRender()
        {
            this.getGraphics2D().setColor(Color.white);
            this.getGraphics2D().drawString("Heads Up Display (HUD) Works!",100,100);
            this.getGraphics2D().flush(false);
        }

    };
...
Graphics2D G2D = this.getGraphics2D()
G2D.setColor(Color.white);
G2D.drawString("FPS: "+fps, 100, 100);
G2D.drawString("X: "+x_pos, 100, 80);
G2D.drawString("Y: "+y_pos, 100, 60);
G2D.drawString("Z: "+z_pos, 100, 40);
G2D.flush(false);
另外,如果您注意到我将G2D设置为这个.getGraphics2D(),这样我就不需要每次使用Graphics2D对象时调用外部方法,每次调用getGraphics2D(),它都必须转到该类,调用该方法并返回值,而不是只获取一次,然后使用它,更快地键入,从长远来看,它可以创造更快的速度

在所有这些之后,我要做的是,我可以将每个变量设置为正确的值,它会显示,这是更新它的一种方式,您可以做类似的操作,为每行创建一个变量,然后执行:

line1="this is some text";
list2="this is some more text";
list3="etc...";