[java] drawImage traag

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Voor een opdracht van school ben ik bezig met een 2d/3d engine, en alles gaat goed afgezien van het feit dat het nogal traag is. Uiteindelijk ben ik erachter gekomen dat de pageflip de oorzaak is. Het tekenen op image met alle transformaties die daarbij horen nemen nagenoeg geen tijd in beslag, maar als ik de pageflip erachter aan doe:


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class RefreshTimerTask extends TimerTask{
public void run(){
        JPanel contentPane = (JPanel)getContentPane();
        Graphics2D g = (Graphics2D)contentPane.getGraphics();
            
        //Clears the rectangle that was previously drawn.
        _bufferedImageGraphics.setColor(Color.white);
        _bufferedImageGraphics.clearRect(0, 0, area.width, area.height);
            
        DefaultStructureToImage<Point2d,Matrix_3_3> defStructToImg = new DefaultStructureToImage<Point2d,Matrix_3_3>();
        defStructToImg.transform(_auto.getStructure(),_bufferedImageGraphics,new NormalPointToScreen(), new Matrix_3_3());
            
        g.drawImage(_bufferedImage, 0, 0, new ImageObserverImpl()); //page flip
    }
}

Dan zit ik standaard op 100% cpu belasting. Ik weet dat java en graphics niet in 1 zin genoemt moeten worden, maar dat het zo traag is, vind ik zelf te veel van het goeie. Oja. Ik draai trouwens onder linux met jdk1.4, daar is het nog trager dan het onder windows al is. Ik heb verder al een tijdje op de Sun site zitten kijken, maar geen oplossing voor mijn probleem kunnen vinden. Dus wie o wie kan mij helpen.

[edit]
geen commentaar op de code, dit stuk is snel in elkaar gezet om te testen.

[ Voor 9% gewijzigd door Alarmnummer op 30-11-2002 18:07 ]


  • NDF82
  • Registratie: Januari 2002
  • Laatst online: 26-08 21:49

NDF82

Doomed Space Marine

als je full-screen mode gebruikt, gaat het wel snel.

Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Je maakt elke keer een nieuw Object aan: ImageObserverImpl kan het daar niet aan liggen?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
wasigh schreef op 01 december 2002 @ 00:01:
Je maakt elke keer een nieuw Object aan: ImageObserverImpl kan het daar niet aan liggen?
Nee, er worden zoveel objecten aangemaakt zonder dat de performance achteruit gaat, dat die extra ook niets zal uitmaken.
als je full-screen mode gebruikt, gaat het wel snel.
Ik zal het morgen eens proberen

Verwijderd

als je nog geen java2d en 3d gebruikt helpt het vaak om het totale applet/scherm wat kleiner te maken, zo kun je ongeveer 30fps halen bij een 300x300 scherm. Als je java3d gebruikt zou je inderdaad fullscreen kunnen proberen. Natuurlijk kan het ook liggen aan indien je java3d gebruikt welke versie van java3d je gebruikt, de directx of de opengl versie. De een werkt sneller/langzamer op verschillende videokaarten.