Entwickler-Ecke

Multimedia / Grafik - Feuereffekt blitten


DerKrasseHans - So 05.01.03 13:38
Titel: Feuereffekt blitten
Hallo,
ich habe einen in DOS unter C programmierten feuereffect in delphi code umgeschrieben, dabei umgeschrieben und mir dabei schön die erste unschönheit geleistet:
als buffer für das feuer benutzt der c-code einen char* (klar!) z.B. ptr und man kann dann einfach über *(ptr+offset) jedes byte in dem backbuffer erreichen, und verändern; da die netten herren&damen von borland, aber den mem-befehl gestrichen haben, sah ich keinen anderen ausweg als einen string als Buffer zu missbrauchen, weil man so einfach auf jedes einzelne element zugreifen kann (das brauch man für die feuer-berechnung).
einen string kann ich aber nicht blitten, also muss ich jeden einzelnen vorberechneten feuer-farbwert pixel für pixel auf die form kopieren, das dauert aber ewig und sieht s***** aus.
Ein weiteres Problem besteht darin, dass die alte DOS-Feuer-Routine im Modus $13, also unter 256 Farben läuft, meine form aber 16M Farben hat, also habe ich einen array[0..255] of TColor als quasi Feuer-Farbpalette genommen; was mich in meiner Möglichkeit das Feuer zu rendern wieder einschränkt, weil ich ja jeden Feuerwert in meinem string-Buffer in den dazugehörigen TColor-Wert konvertieren muss.
Gibt es nicht vielleicht irgendeinen Weg, mit DirectDraw z.B., einer Form nur 256 Farben zuzuweisen, eine Palette für sie anzulegen, und dann vielleicht einen ordentlichen feuer-buffer (nich diesen ewigen string) mit den Blit-Befehlen von Windows auf den Bildschirm zu bringen?

Für Hilfe wär ich sehr dankbar!


Tomac - So 05.01.03 14:18

Such mal in google nach nem "flame contest"
Das war ein Wettbewerb, bei dem derjenige, der die schönste Flamme in Delphi programmierte, gewonnen hat.


DerKrasseHans - Mo 06.01.03 00:33

man is doch immer wieder überrascht! ein guter suchbegriff kann auch ein problem lösen (hoffe ich zumindest ich hab mir die codes PascalFlames.zip noch nich angesehen, es is aber so viel das wird schon helfen!)

MILLE GRACIE, Tomac.