# J3DGraphics2D wo benutzen?



## Illuvatar (12. Mai 2004)

Schon wieder ein Java3D-Problem.

Ich bekomme ja von einem Canvas3D über die Methode getGraphics2D ein Objekt des Typs J3DGraphics2D, das ja ein eingeschränktes Graphics2D-Objekt ist.
Aber: Wo muss ich dieses benutzen? (Ich habe es schon in der paint-Methode und in einem Behavior probiert, der nach 0 elapsedFrames aufwacht (= WakeupOnElapsedFrames (0)).) :bahnhof:

Edit: z.B. so:

```
public void paint (Graphics x)
  {
    super.paint (x);
    Graphics gr = c3d.getGraphics2D();
    gr.setColor (Color.WHITE);
    gr.drawString ("Leben: " + lives, 20, getSize().height - 50);
    gr.drawString ("Waffe: Armor", 20, getSize().height - 25);
  }
```

Edit2: Ich hab jetzt noch ein 
	
	
	
	





```
gr.flush (false);
```
 ans Ende der Methode gesetzt, wirkt aber auch nicht.


			
				API hat gesagt.:
			
		

> In mixed-mode rendering, all Java 2D requests must be done from one of the Canvas3D callback methods; in pure-immediate mode, the Java 3D renderer must be stopped for the Canvas3D being rendered into.


Was heißt das?


----------



## Illuvatar (14. Mai 2004)

Wie oft habe ich diese vier Buchstaben wohl schon benutzt: *STFW*???  

Wer die Lösung wissen will:

```
c3d = new Canvas3D (SimpleUniverse.getPreferredConfiguration()){
        public void postRender()  //bei preRender wird die 2D- von der 3D-Grafik verdeckt.
        {
          super.postRender();
          J3DGraphics2D g = getGraphics2D();
          g.setColor (Color.WHITE);
          g.setFont (new Font ("Serif", Font.BOLD, 15));
          g.drawString ("Leben: " + lives, 20, getSize().height - 35);
          g.drawString ("Waffe: Armor", Content.this.getSize().width / 2 + 20, getSize().height - 35);
          g.flush (true);
        }
      };
```

Na ja, hauptsache, ich habs geschafft   :toll:


----------

