Blitting-Funktion
-
Ich möchte meine eigene Blitting-Funktion schreiben, da mir die von DirectDraw zu langsam ist (bei jedem Aufruf verriegeln und entriegeln der Surface).
Ich probier das jetzt schon seit 'ner Woche und komme einfach nicht weiter.Was ich eigentlich brauch ist das Wissen, wie ich mir die Farbwerte eines Pixels (16 bpp) an einer beliebigen Position in der Surface holen kann.
Bitte helft mir!
-
BackBuffer locken -> Pixel auslesen -> unlocken
M.T.
-
Und wie lese ich den Pixel aus?
-
Ich würd die empfehlen erst mal richtig C++ zu lernen, bevor du dich mit DD beschäftigst ...
Aber egal ... Der Pointer, den du von Lock bekommst, zeigt auf die Bilddaten im Ram -> du kannst darauf wie in einem Array darauf zugreifen: Pixel = ((DWORD bzw. WORD* wegen 16 bzw. 32bit*)Locked)[y * breite + x];
M.T.
-
Ich kann seht wohl C++
-
> Ich möchte meine eigene Blitting-Funktion schreiben
ich bin mir zwar nicht sicher, aber ich glaube das ist die einzige Möglichkeit wie man mit DD blitten kann
willst du dir ein ganz eigene Blitting Fkt schreiben ohne DirectDraw?
-
-
Vertexwahn schrieb:
ich bin mir zwar nicht sicher, aber ich glaube das ist die einzige Möglichkeit wie man mit DD blitten kann
Es gibt zwar nicht nur eine Möglichkeit in DD zu blitten, aber BltFast ist jedenfalls die schnellste.
-
Wenn du deine eigene Blitting-Funktion schreibst, ist sie unter Garantie langsamer. Warum? Weil die Typen von M$ sich da garantiert noch ein bisschen besser auskennen wie du.
Außerdem blittest du per Software und bei der DDraw-Funktion macht das die Grafikkarte. -.-Leute, erfindet nicht immer wieder das Rad neu, baut lieber ein Auto.