Ik ben de laatste tijd wat bezig geweest met DirectDraw van de DX9 SDK (lang leve managed DX9
). Afgelope nacht ben ik tegen een probleem aangelopen met een Clipper van een Surface.
Ik probeer het volgende in een fullscreen DirectDraw applicatie:
Wat hier boven staat werkt, de te tekenen Surface wordt netjes afgekapt, maar als ik probeer wat hier onder staat gaat het mis:
In het laatste voorbeeld wordt SomeSurface weergegeven met een X en Y gelijk aan 0. Van af dat moment krijg ik een UnsupportedException van DirectDraw
(ook bij een X en Y kleiner dan 0). Ik wil gewoon een Surface af laten kappen buiten de aangegeven clip area, dit moet toch te doen zijn met een Clipper?
Ik probeer het volgende in een fullscreen DirectDraw applicatie:
Visual Basic .NET:
1
2
3
| BackBuffer.Clipper = new Clipper() BackBuffer.Clipper.ClipList = New Rectangle() {New Rectangle(10, 10, 100, 100)} BackBuffer.Draw(New Rectangle(1, 1, 32, 32), SomeSurface, DrawFlags.DoNotWait) |
Wat hier boven staat werkt, de te tekenen Surface wordt netjes afgekapt, maar als ik probeer wat hier onder staat gaat het mis:
Visual Basic .NET:
1
2
3
| BackBuffer.Clipper = new Clipper() BackBuffer.Clipper.ClipList = New Rectangle() {New Rectangle(10, 10, 100, 100)} BackBuffer.Draw(New Rectangle(0, 0, 32, 32), SomeSurface, DrawFlags.DoNotWait) |
In het laatste voorbeeld wordt SomeSurface weergegeven met een X en Y gelijk aan 0. Van af dat moment krijg ik een UnsupportedException van DirectDraw