DrawImage in der MaxGui sehr langsam?
Übersicht

DonutBetreff: DrawImage in der MaxGui sehr langsam? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe fest gestellt, dass die DrawImage Funktion in einem Canvas der MaxGui bei mehreren Bildern bei so langsam ist, dass mein Programm quasie unbrauchbar wird. Was mache ich da falsch? Hier mal ein Beispiel:
Code: [AUSKLAPPEN] Import MaxGUI.Drivers
SuperStrict Local testwindow:TGadget=CreateWindow("Testwindow", 200,200,600,600) Local Auswahlfeld:TGadget=CreatePanel(0,30,200,GadgetHeight(testwindow),testwindow,PANEL_BORDER) SetPanelColor Auswahlfeld, 255,101,140 SetGadgetLayout Auswahlfeld,EDGE_ALIGNED,EDGE_CENTERED,EDGE_ALIGNED,EDGE_RELATIVE; Global i:Int = 0 Global j:Int = 0 Global Canvas:TGadget[3,3] For j = 0 Until 2 For i = 0 Until 2 Canvas[ i , j ] = CreateCanvas(i*32,j*32,32,32,Auswahlfeld) SetGadgetLayout Canvas[ i , j ] ,EDGE_RELATIVE,EDGE_CENTERED,EDGE_RELATIVE,EDGE_CENTERED; SetPanelColor Canvas[i,j], 0,0,0 Next Next Local Auswahlfeld_Slider:TGadget=CreateSlider(192,0,20,GadgetHeight(Auswahlfeld)-4,Auswahlfeld) SetGadgetLayout Auswahlfeld_Slider,EDGE_RELATIVE,EDGE_CENTERED,EDGE_RELATIVE,EDGE_RELATIVE; Local Sprites:TImage = LoadAnimImage("RTP\ChipSet\Basis.png" , 16, 16, 0 , 420,0); Repeat WaitEvent() Select EventID() Case EVENT_GADGETPAINT For j = 0 Until 2 For i = 0 Until 2 SetGraphics CanvasGraphics (Canvas[ i , j ]) Cls DrawImage(Sprites,0,0,1) Flip Next Next End Select Forever |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da sind gleich zwei Fehler drin.
Zum einen solltest Du abfragen, welches Gadget wirklich gezeichnet werden muss. Und dann nur diese Canvas erneuern. BlitzMax: [AUSKLAPPEN]
und dann verwende auf jeden Fall BlitzMax: [AUSKLAPPEN] Flip 0 so wie du das machst wird z.b. folgendes passieren, wenn das gesamte Fenster mal durch eine anderes überdeckt war: 1. Alle 4 Canvas waren überdeckt 2. daher erhalten alle 4 nacheinander die Nachricht EVENT_GADGETPAINT 3. bei jeder dieser Nachrichten zeichnest du alle 4 Canvas. Also 16x 4. und du wartes 16x auf den VSync: 16 x 16msec= 256 msec *** EDIT *** ...und gleich nochwas: Warum und woher kommen denn überhaupt so viele EVENT_GADGETPAINT, dass davon gleich die Performance einbricht? Normalerweise sollte sowas nur alle Herrgottstage auftreten. |
||
Donut |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für deine Hilfe, performance einbrüche gibts jetzt natürlich nicht mehr.... ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group