J3DGraphics2D wo benutzen?

Status
Nicht offen für weitere Antworten.

Illuvatar

Top Contributor
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:
Code:
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
Code:
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

Top Contributor
:( Wie oft habe ich diese vier Buchstaben wohl schon benutzt: STFW??? :oops:

Wer die Lösung wissen will:
Code:
     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 :D :toll:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben