Bitmap aus Speicher in DirectDraw Surface laden
-
ok lPitch zeigt die Bytes pro Zeile an.
wenn ich doch nun ein paar Pixel auf Weiss setzen will, ginge das doch so:
DDSURFACEDESC2 data; lpddsBack->Lock(0, &data, DDLOCK_WAIT, 0); //Null = Alles Locken BYTE * z = (BYTE*) data.lpSurface; for(int i = 0; i < 100; i++) { *z = 255; z ++; } lpddsBack->Unlock(0);doch dabei stürtzt mein Programm ab, was ist daran Falsch?
[Edit]
Er kann den Backbuffer nicht SPerren? aber warum?
-
Weil "Der BackBuffer is ja ne ganz normale Surface"...

Bye, TGGC (Ein Jahr Helden)
-
also andere Surfaces kann ich so auch nicht Locken.
Ich hab das nochmal mit dem hier getestet:
//Surface "LPDIRECTDRAWSURFACE7 test" wurde global erstellt memset(&ddsd, 0, sizeof(DDSURFACEDESC2)); ddsd.dwSize = sizeof(DDSURFACEDESC2); ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH ; ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN |DDSCAPS_SYSTEMMEMORY; ddsd.ddsCaps.dwCaps2 = 0; ddsd.dwHeight = 200; ddsd.dwWidth = 200; lpDirectDraw->CreateSurface( & ddsd, & test,0); DDSURFACEDESC2 data; RECT r; SetRect(&r, 0, 0, 200, 200); if( test->Lock(&r, &data, DDLOCK_WAIT, 0) == DD_OK) { BYTE * z = (BYTE*) data.lpSurface; for(int i = 0; i < 100; i++) { *z = 100; z ++; } test->Unlock(&r); }das muss an etwas anderem liegen, jemand eine Ahnung an was?
-
TGGC warum sagst nicht einfach die Antwort?

-
Wenn du mir 100€ und deinen Code schickst, dann könnte ich es dir debuggen.
Bye, TGGC (Wähle deine Helden)
-
Wenn du mir 100€ und deinen Code schickst, dann könnte ich es dir debuggen.
Bye, TGGC (Wähle deine Helden)Ich möchte dies nur festhalten, bevor TGGC es editiert.

-
Ich gehöre nicht zu den Leuten, die nachträglich etwas rauseditieren.
Bye, TGGC (Wähle deine Helden)
-
TGGC schrieb:
Weil "Der BackBuffer is ja ne ganz normale Surface"...

Besser ne späte Einsicht als garkeine.

-
TGGC, ich poste Threads in dieses Forum, weil ich ein Problem habe und mir erhoffe von euere Erfahrung profitieren zu können.
Ich bin dir und auch jeden anderem sehr dankbar der sich die Mühe macht, über mein Problem nachzudenken.
Doch um eines möchte bitten, wenn du etwas mitzuteilen hast, dann mach es doch bitte nicht in einer herablassenden Art, sondern in einer vernüpftigen Weise, mit der jener Hilfsbedürftige etwas anfangen kann. Denn solltest du irgtentwann einmal ein Problem haben, so möchtest du bestimmt auch nicht solche Antworten hören.
Solltest du demnächst nichts vernüpftigen zu sagen haben, so sage bitte gar nichts, denn niemand zwingt dich zu einer Antwort.
Damit du mich nicht Falsch verstehst, ich bin dir und jedem anderen sehr dankbar, über die Hilfestellung die mir gegenüber geleistet wird.Gruß Jan
-
Das hat man davon, wenn man sich hearblässt und Hilfe anbietet.
Bye, TGGC (Wähle deine Helden)
-
Back buffer surfaces, which may be accessed using the
IDirect3DDevice9::GetBackBuffer and IDirect3DSwapChain9::GetBackBuffer
methods, may be locked only if the swap chain was created with the Flags
member of the D3DPRESENT_PARAMETERS structure set to include
D3DPRESENTFLAG_LOCKABLE_BACKBUFFER.Hehe

-
Das hat man davon, wenn man sich hearblässt und Hilfe anbietet.

-
Erhard Henkes schrieb:
Das hat man davon, wenn man sich hearblässt und Hilfe anbietet.

Sehe ich auch so.
Wer es als Herablassung empfindet, anderen zu helfen, ist in diesem Forum falsch.
Und nicht nur hier.Komische Einstellung.

-
SeppSchrot schrieb:
Wer es als Herablassung empfindet, anderen zu helfen, ist in diesem Forum falsch.
Also Chill0r, geh hier weg. Du bist falsch. Es ist nämlich garnicht herablassend, wenn ich dir helfen will!
Bye, TGGC (Wähle deine Helden)
-
Schon arm, dass du mehr Meta-Diskussionen auslöst als Fragen konkret beantwortest.
-
Naja ich finds witzig wie er immer wieder zwischen verschiedenen Meinungen rumspringt aber ich muss zugeben dass ich TGGC langsam sehr wohl recht geben muss dass ein Forum oder eine Person nicht dazu da sein sollte so Fragen zu beantworten die jeder eigentlich selbst durch probieren oder durch Lesen eines Buches selbst beantworten könnte nur der einfachheitshalber immer Hilfe anderer verlangt dabei nicht mal Gewissensbissse zu haben scheint dass der andere vielleicht auch was besseres zu tun haben könnte als seine kleinen Sprachprobleme in C++ zu lösen schließlich ist das ja eigentlich Diebstahl von Zeit... Also ich empfinde das jetzt langsam schon als wirkliche Frechheit ich meine ich will ja nicht eingebildet klingen dass ich so gut oder so bin aber anscheinend kommen die Leute auch echt immer gut durchs leben die immer Scheiße sei es die Lehrer oder Schüler fragen. In nem Forum ists zwar noch nicht so schlimm da man ja nicht in seiner Arbeit gestört wird aber eben wenn man jede 10 minuten geskypt wird find ich das ne Verarschung... Vorallem diese Leute kopieren dann vor nem Test zb alles von Leuten zusammen gehen zu den Vorjahressemestrigen kommen mit nem 1er oder so durch da sie ja eh schon die fragen kennen und keinen juckts nein.. dass man TGGC wegen seiner aroganten Art ignoriert mag vielleicht nachvollziehbar sein aber gegen das für das er steht kann man nichts sagen!!
-
So, und jetzt wieder ausatmen.

Nur als Anmerkung: ich springe nicht zwischen verschiedenen Meinungen, sondern vertrete diese.
Bye, TGGC (Wähle deine Helden)
-
Kennt nun jemand so eine Funktion , mit der ich bilder direkt von Speicher in ein Surface laden kann
SetRect(&temprect,x,y,x+width,y+height); ddrval=lpimg2->BltFast(x2, y2,lpimg1,&temprect,NULL); }Mit BltFast kannst du den Inhalt einer Surface in eine andere füllen. Doch erst musst du eine "leere" Surface erstellen in der du die Informationen speichern kannst.
-
Das Bitmap ist im Speicher?
=> Schreibe es in eine temporäre Datei, lade sie und lösche sie anschließend wieder.
Aus einer Datei laden kannst Du ja scheinbar.
-
..