Seite 1 von 1
per drawingbuffer bild abfangen
Verfasst: 03.06.2008 22:58
von WhiteMaster
ok, hir ist meine Idee:
ich benutze halt gerne ogre 3D und hab erlich kein bock auf ander sprachen umzustigen, und trotzdem wolt ich shader und co nachmachen
( überwachungskammeras, schlechte reflektionen )
, und deswegen ein bild aus dem drawingbuffer/backbuffer catchen und dieses dann mit regulern pb befelen benutzen können.
Inetwa so:
Buffer herausfinden und dann von dort aus das Bild in denn Speicher lesen, auf textures malen und dann die welt nochmals rendnern ( um denn schwachsin wider mit der normalen Welt übermalen), natürlich die cams vorher richtig stellen...
Langes gelaber, kurtzer sinn: kan ich ein bild aus dem backbuffer catchen?
unter windows (per api?)

hat sich erledigt
Verfasst: 05.06.2008 12:26
von WhiteMaster
Hab ne (sau) blöde lösung gefunden:
per point abfrage, abspeichern und auf ein bild zeichnen.
Is lam, aber geht immer (zumindest bei mir).
Darfst halt nix übermalen.
Verfasst: 05.06.2008 14:28
von Rokur
Schau dir mal die Befehle GrabSprite() und DrawingBuffer() an.
Verfasst: 05.06.2008 14:47
von Kaeru Gaman
als problem hierbei sehe ich, dass afaik der befehl RenderWorld() ja alle cameras gleichzeitig zeichnet.
man kann ja bildbereiche verschiedenen Cams zuweisen, aber wohl nur gleichzeitig ausgeben.
aber anscheinend liege ich da ein bißchen falsch, wenn du
mit Point() auf ein Bildzugreifen kannst, was du nachher wieder übermalst...
schau dir mal UseBuffer() an, das kannst du benutzen um alle Ausgaben
auf ein Sprite umzuleiten, könnte auch mit RenderWorld() funktionieren.
wenn du bei ausgabe auf den bildschirm und cachen bleiben willst,
was vielleicht ein vorteil wäre wenn du 4 überwachungskameras auf einmal
renderst und die in 4 sprites packst, dann könnte GrabSprite() besser sein,
weil du dann nicht 4x den buffer wechseln und 4x rendern musst.
nix usebuffer()
Verfasst: 09.06.2008 08:47
von WhiteMaster
Auf die idee mit
useBuffer() ung
grabSprite() bin ich auch schon gekommen, aber
useBuffer() verändert nicht denn
rendnerWorld()-Ausgabakanal und
grabSprite() benutzt zum catchen den
frontBuffer. Ich dacht auch erst mal, das das ganze sooo einfach währe, is aber leider gar nicht. Meine einzige möglichkeit ist, denn
backBuffer abzumalen (auser jemand findet ne möglichkeit davon zu catchen). Ich sag ja persönlich:
Hab ne (sau) blöde lösung gefunden
Wenn jemand noch was besseres findet, z.B. per direkte plot-abfrage, bin ich supper dankbar!
was vielleicht ein vorteil wäre wenn du 4 überwachungskameras auf einmal
renderst und die in 4 sprites packst, dann könnte GrabSprite() besser sein,
weil du dann nicht 4x den buffer wechseln und 4x rendern musst.
Das ist dann kein problem mehr, ich rendnere die welt nur einmal und zeichne dann auf die Texture. So doof bin ich wirklich nicht!

Verfasst: 09.06.2008 11:30
von Kaeru Gaman
> useBuffer() verändert nicht denn rendnerWorld()-Ausgabakanal
das is ja mal ganz beschissen!
..OGRE ist wirklich schlecht implementiert zur zeit. nunja, für 4.30 soll das besser werden...
die neue OGRE hat sowieso mehr features, vielleicht kann man sich solche klimmzüge dann komplett sparen.
> grabSprite() benutzt zum catchen den frontBuffer.
echt jetzt? is ja auch beknackt.
hab ich nur ganz selten benutzt, dachte es arbeitet auch aufm backbuffer.