Autor Beitrag
thebe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: Di 27.04.04 08:28 
Moin

Ich bin im Moment an nem Programm bei, was Bezier Kurven zeichnet und hab mich dabei an Zeichen-Technik von Delphi Gamer
( www.savagesoftware.c...leid=13&page=1#1 ) gehalten. Klappt auch alles wunderbar, ist recht schnell, nur das Problem ist, das ich bei jedem Frame den Hintergrund schwarz ausfüllen muss. Dieses Ausfüllen kostet mich bei 1280*1024er Auflösung ca. 35 Frames pro Sekunde. Und zwar füll ich den Hintergrund des Buffer Bitmaps mit [delphi]BMP.Canvas.FillRect(BGRect)[delphi]

Als nächstes hab ich versucht das Bitmap per Scanline mit schwarz zu füllen,
ausblenden Quelltext
1:
2:
3:
OffScreenP := OffScreen.Scanline[VideoModeY-1];
for i := 0 to (VideoModeX*VideoModeY)-1 do
         OffScreenP^[i] := $0;

das resultierte aber in genau dem gleichen Müll wie mit FillRect. Danach hab ichs denn versucht, indem ich nen zweites BMP habe das die ganze Zeit schwarz ist und was ich einfach nur noch mit BitBlt bei jedem Zeichenzyklus rüberkopiere. Das funkt auch nicht, da hab ich sogar noch Frame Einbußen bei.

Also ich hab nen Brett vorm Kopf und weiß nicht weiter. Hat irgendjemand noch ne Idee wie man das machen könnte ?

dann nächste Frage:

Kann man Windows nicht begreiflich machen das nen entsprechendes Fenster nocht nicht zum Bildschirm geschickt werden soll zwecks nachzeichnen, sprich man erst das Fenster zu ende zeichnen und es dann zum Bildschirm schickt, damit man z.b. nicht mit nem Buffer Bitmap arbeiten muss ? Das rüberkopieren des Buffer Bitmaps per BitBlt kostet mich immer 40 FPS bei meiner Auflösung und das muss ja nicht wirklich sein, da wirds doch garantiert noch schnellere Verfahren geben oder ?

Vielen Dank schon mal im Vorraus für die Hilfe.

- Thebe
Gandalfus
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 129



BeitragVerfasst: Di 27.04.04 12:22 
schon canvas.rectangle versucht?

Achja du wirst dich wohl damit abfinden müssen, dass GDI sehr langsam ist.

_________________
Wennn man feststellt, dass es drei Moeglichkeiten gibt, die einen Vorgang schiefgehen lassen koennen und man diese ausschaltet, entstehen automatisch drei neue Moeglichkeiten.
thebe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: Di 27.04.04 13:31 
gibts denn Alternativen zur GDI die nicht unbedingt DirectDraw / OpenGL heißen ?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 27.04.04 13:56 
Wenn du Hardwarebeschleunigung willst, wird dir wohl nichts anderes als OpenGL oder DirectX (nimm OpenGL :P ) übrig bleiben.
iGoA
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 103

Alle Win´s
D5 Prof
BeitragVerfasst: Di 27.04.04 14:06 
GDIPlus is cool. Zugriff auf die GDI-Funktionen von Win2000 und XP, die schneller sind, weil sie hardwareunterstützt sind. Ist megaleicht zu lernen.

_________________
"Diner for One" objektorientiert:
"The same method as last year, Ms. Sophie?" (was für´n Schwachsinn)
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: Di 27.04.04 14:09 
alternativ: wenn du blos die Kurve zeichnest kannst du ja auch die alte Kurve Schwarz übermalen und dann die neue malen, das dürfte mit einfachen Mitteln erheblich schneller sein

_________________
"Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
thebe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: Di 27.04.04 14:26 
GDI+ war nen guter Tipp, vielen Dank dafür. Das guck ich mir mal an.
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 27.04.04 14:34 
GDI+ funzt aber nicht mit Windows 95 und für alles andere (außer 2k und XP) brauchst du ein Update.
iGoA
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 103

Alle Win´s
D5 Prof
BeitragVerfasst: Di 27.04.04 15:47 
Ich glaube, man braucht nur die entsprechende DLL "mitliefern". Dann sollte es auch unter Win95+98 gehen.

_________________
"Diner for One" objektorientiert:
"The same method as last year, Ms. Sophie?" (was für´n Schwachsinn)