also ich möchte möglichst einfach 2d grafiken hardwarebeschleunigt darstellen... da bin ich nun beim guten alten directdraw gelandet und hab mich mit diesem tut hier befasst
www.alistairkeys.co.uk/ddraw1.shtml
leider gehts da aber nur um den fullscreen mode, ich wills aber im fenster, soweit bin ich nun schon
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| uses DirectDraw; var DD7: IDirectDraw7; Primary: IDirectDrawSurface7;
DirectDrawCreateEx(nil, DD7, IID_IDirectDraw7, nil); DD7.SetCooperativeLevel(0, DDSCL_NORMAL);
var SurfaceDesc: TDDSurfaceDesc2; begin FillChar(SurfaceDesc, SizeOf(SurfaceDesc), 0); SurfaceDesc.dwSize:=SizeOf(SurfaceDesc);
SurfaceDesc.dwFlags:=DDSD_CAPS; SurfaceDesc.ddsCaps.dwCaps:=DDSCAPS_PRIMARYSURFACE or DDSCAPS_VIDEOMEMORY; DD7.CreateSurface(SurfaceDesc, Primary, nil);
DD7.CreateClipper(0, Clipper, nil); Clipper.SetHWnd(0, Handle); Primary.SetClipper(Clipper);
FillRect(Primary, Nil, Farbe); |
nun möchte ich aber eine zweite surface (später auch weitere) als buffer, darauf zeichne ich, und wenn ich fertig bin blitte ich das aufs primary. klingt einfach, is im tut auch für fullscreen sehr gut beschrieben, aber eben für windowed krieg ichs nich hin, hab schon alle möglichen abwandlungen von der homepage da ausprobiert, aber geh halt einfach nicht...
also zwei möglichkeiten,
1: jemand sagt mir wie ich das hinbekomme
2: jemand kennt eine andere möglichkeit....
zu 2. will ich aber sagen, schaut euch meinen code hier und das tut an!, tut lesen und verstehen in 20 minuten, die wesentlichen codezeilen kann ich an meinen fingern abzählen UND ich brauche keine komponenten (sehr wichtig)
das ganze is nur spielerei und ich will mich dafür nich tagelang mit irgendwelchen directx tutorials quälen müssen oder zig units/unzählige codezeilen haben, also wär mir 1. lieber
