PDA

View Full Version : PBuffers


tivolo
29-05-2004, 15:03
hi,

schön langsam regt's mich auf...
wenn ich mit wglMakeCurrent(foo, bar) auf den context meines PBuffers switche, dazwischen nichts tue und anschließend wieder auf mein window switche, dann sehe ich gar nichts mehr.

er schmeisst bei keinem switch einen fehler, die Device- und Render-Context sind auch alle != NULL (er gibt keinen fehler) und die texturen, etc. werden mit wglShareLists() gemeinsam verwendet.


was mach ich falsch? irgendjemand schon erfahrungen mit pbuffers?

mfg,
tivolo

tivolo
29-05-2004, 16:13
1.) ok, problem gelöst. ich hab zwar keine ahnung warum, aber die Device- und RenderContexts, die nach Erstellen des Fensters in eine globale Variable gespeichert werden, unterscheiden sich nachher von wglGetCurrentDC() und wglGetCurrentContext().

2.) die performance beim umschalten von RenderTargets ist einfach nur mehr eine frechheit.
kleiner test:
ohne umschalten, szene einmal rendern -> 128 frames
mit umschalten, rendertarget binden, unbinden, zurückschalten -> 70 frames
---> WTF?!?

mfg,
tivolo

Chuck
30-05-2004, 03:09
ich spekulier mal wieder drauf los :)
sicher, dass pbuffer auf der gf4 nativ unterstützt wird? (unter umständen muss auf der karte der treiber ein paar sachen hin und her kopieren, falls der pbuffer als textur gebunden wird... bei mir machen die teile auf jeden fall zz keine probs...)

tivolo
30-05-2004, 14:21
sie werden zwar unterstützt, allerdings ist das ganze eher im nachhinein "hineingestopft" worden. angeblich ist der support für neuere karten ala geforce FX um einiges besser/schneller.

werds nächste woche auf dem CG-rechner ausprobieren - mal schauen.

mfg,
tivolo

cypher
03-06-2004, 00:49
die performance beim umschalten von RenderTargets ist einfach nur mehr eine frechheit.
kleiner test:
ohne umschalten, szene einmal rendern -> 128 frames
mit umschalten, rendertarget binden, unbinden, zurückschalten -> 70 frames
---> WTF?!?

mfg,
tivolo

das ist leider wirklich ein allgemeines problem, dass bisher unter openGL noch nicht zufriedenstellend gelöst ist - das umschalten des context braucht relativ viel zeit, und könnte in den meisten fällen vermieden werden.

Mit den Superbuffers, die jetzt hoffentlich irgendwann mal kommen, ist das dann endlich gelöst, aber bist dahin muss man die performanceeinbuße leider hinnehmen.

trotzdem sind 128 zu 70 frames zu viel für 2 context switches, da muss es noch irgendein anderes problem geben ...