Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Tegne på DX-Surfaces, problemer!


Anbefalte innlegg

Heisann

 

Edit: LØST. Se mitt andre innlegg.

 

Saken er som følger: Jeg loader bilder fra PropertyBag. Det funker veldig bra, og jeg kan tegne den med denne koden:

TransparentBlt frmRender.hdc, POINTAPI.x, POINTAPI.y, _
                      Cursor.Width, Cursor.Height, _
                      Cursor.CursorHdc, 0, 0, Cursor.Width, Cursor.Height, vbCyan

Tingen er jo at jeg vil bruke DirectX til dette. Derfor bruker jeg GetDC og tegner på en surface:

    Cursor.ddsdSurface.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT
   Cursor.ddsdSurface.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
   Cursor.ddsdSurface.lWidth = Cursor.Width
   Cursor.ddsdSurface.lHeight = Cursor.Height
   Set Cursor.Surface = dx_draw.CreateSurface(Cursor.ddsdSurface)
   TransparentBlt Cursor.Surface.GetDC, 0, 0, Cursor.Width, Cursor.Height, Cursor.CursorHdc, 0, 0, Cursor.Width, Cursor.Height, vbCyan

Når jeg da prøver å tegne på backsurfacen med denne koden, kommer det ingen ting opp:

BackBuffer.Blt DestRect2, Cursor.Surface, DestRect, DDBLT_KEYSRC

Noen som klarer å se hvor det skjærer seg og hvordan jeg retter det?

 

Takker for hjelp! :)

 

Jonas

 

Edit: Hvis jeg prøver å TransparentBlt'e rett på BackBuffer.GetDC, så får jeg ikke flippet bufferet. Mulig det har noe med saken? Må noe "klargjøres" får jeg kan tegne på surfacen, akkurat som med .Cls?

Endret av Jonas
Lenke til kommentar
Videoannonse
Annonse

Problemet ligger i at GetDC()-funksjonen låser tavlen slik at den verken kan leses fra eller skrives til. Det du således må gjøre, er å låse den opp igjen med ReleaseDC():

 

tempDC = Cursor.Surface.GetDC
TransparentBlt tempDC, 0, 0, Cursor.Width, Cursor.Height, Cursor.CursorHdc, 0, 0, Cursor.Width, Cursor.Height, vbCyan
Cursor.Surface.ReleaseDC tempDC

Lenke til kommentar

Takk aadnk!

 

Nå har jeg enda et problem. (Som vanlig :p )

 

Edit: LØST.

 

Jeg tegner masse forskjellige surfaces på en Backbuffer-surface. Problemet kommer når surfacens-posisjon gjør at bare halve skal tegnes. F eks når man drar musa helt nede på skjermen.

 

Når noe skal tegnes litt utenfor, tegnes det ikke i det hele tatt!

 

Det er jo gigantkrise. Hvordan løser jeg det?

Endret av Jonas
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...