Jonas Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 (endret) Heisann Programmerer litt nå og kom over et merkelig problem. Som dere ser på skjermbildene så klarer jeg å tegne med gjennomsiktige farger i menyen, men ikke i selve spillet. Det ENESTE som er forskjellig er init-kodene til DirectX7. Menyen har sin, spillet har sin. Her er menyen sin init-kode: Set dx = New DirectX7 Set dx_draw = dx.DirectDrawCreate("") dx_draw.SetCooperativeLevel frmMenu.hwnd, DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE Or DDSCL_ALLOWREBOOT dx_draw.SetDisplayMode 640, 480, 32, 0, DDSDM_DEFAULT 'Init backbuffer 'Fungerer ikke som backbuffer, men som et "offscreen"-buffer ddsdBackBuffer.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT ddsdBackBuffer.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN ddsdBackBuffer.lWidth = 320 ddsdBackBuffer.lHeight = 240 Set BackBuffer = dx_draw.CreateSurface(ddsdBackBuffer) 'Init musikk-greiene Set loader = dx.DirectMusicLoaderCreate() Set perf = dx.DirectMusicPerformanceCreate() Call perf.Init(Nothing, 0) perf.SetPort -1, 80 Call perf.SetMasterAutoDownload(True) Set seg = loader.LoadSegment(FixPath(App.Path) & "Data\Peace3.mid") seg.SetStandardMidiFile Set segstate = perf.PlaySegment(seg, 0, 0) Her er selve spillet sin init-kode: Set dx = New DirectX7 Set dx_draw = dx.DirectDrawCreate("") Call dx_draw.SetCooperativeLevel(frmRender.hwnd, DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE Or DDSCL_ALLOWREBOOT) Call dx_draw.SetDisplayMode(320, 240, 16, 0, DDSDM_DEFAULT) 'Create the primary complex surface with one backbuffer ddsdPrimary.lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT ddsdPrimary.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX ddsdPrimary.lBackBufferCount = 1 Set Primary = dx_draw.CreateSurface(ddsdPrimary) 'Get the backbuffer from the primary surface Dim caps As DDSCAPS2 caps.lCaps = DDSCAPS_BACKBUFFER Set BackBuffer = Primary.GetAttachedSurface(caps) 'Init musikk-greiene Set loader = dx.DirectMusicLoaderCreate() Set perf = dx.DirectMusicPerformanceCreate() Call perf.Init(Nothing, 0) perf.SetPort -1, 80 Call perf.SetMasterAutoDownload(True) Som dere ser på bildene så skal menneskene tegnes med gjennomsiktighet. (Ikke bry dere om det blå treet) Hvert eneste menneske har en egen surface som jeg setter ColorKey på. (Samme måte i spill og meny) Problemet er vel at i menyen fungerer "Backbuffer" som en vanlig offscreen-tavle, mens i spillet fungerer "Backbuffer" som et ordentlig backbuffer som flippes med Primary-tavla. Noen som ser feilen og kansje en mulig løsning? Takker for all hjelp! Jonas Edit: Skrik ut hvis dere trenger å se hele prosjektet! Endret 10. mai 2005 av Jonas Lenke til kommentar
aadnk Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 Kan du forsøke å benytte samme hoved- og buffertavle i visningen av både spillmenyen og selve spillet? Da burde ikke slike differanser forekomme. Lenke til kommentar
Jonas Skrevet 10. mai 2005 Forfatter Del Skrevet 10. mai 2005 Problemet er nå løst. Tingen var at jeg brukte 16-bit farger i selve spillet. Da ble alt litt feil.. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå