Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

1

07.06.2009, 21:39

Postprocessing

Ich versuche grade ein paar postprocessing-effekte einzubauen.
allerdings scheitet das bereits an den rendereinstellungen.

muss man den effekt

-nach EndScene und vor Present aufrufen
-nach dem Rendern und vor EndScene aufrufen
-sonstwo aufrufen

um den effekt aufzurufen, habe ich bereits folgenden code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
IDirect3DSurface9 *source, *target;

dev->GetRenderTarget(0, &source);
texture->GetSurfaceLevel(0, &target); // texture ist eine RENDERTARGET | DEFAULTPOOL textur


dev->StretchRect(source, 0, target, 0, D3DTEXF_NONE);

source->Release();
target->Release();

effect->SetTechnique("Bloom");
effect->SetFloat("width", static_cast<float>(width));
effect->SetFloat("height", static_cast<float>(height));
effect->SetTexture("tex1", texture);

UINT passes;
effect->Begin(&passes, 0);
effect->BeginPass(0);

dev->SetFVF(D3DFVF_XYZRHW | D3DFVF_TEX1);
dev->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, vertices, sizeof(vertex)); // vertices ist ein xyzrhw | tex1 fullscreenquad


effect->EndPass();
effect->End();


ergebniss: man sieht nichts. experimentell habe ich den effektcode
auskommentiert und nur die textur gerendert. keine änderung :(
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

2

07.06.2009, 22:49

Im Prinzip Szene auf Textur rendern (vor Clear, BeginScene), und diese Textur mit Postprocess rendern (zwischen Clear, BeginScene und EndScene, Present).

Licht ausschalten beim Rendern der Textur. ;)
Cullmode?
fka tm

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

3

07.06.2009, 23:19

cullmode ist schon ausgeschaltet. das mit dem licht muss ich mal versuchen,
danke für den tipp :)

kann man den nicht das fertige bild am ende per GetRenderTarget bekommen?
ich haben testweise mal das bild in einer datei gespeichert. das ist auch
richtig, allerdings nur im ersten frame, danach ist es schwarz
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

4

08.06.2009, 17:28

problem gelöst :) :)
ich hatte vergessen die textur für den ps wieder auszuschalten.
eigentlich sollte das kein problem sein, aber jetzt klappt es.

jetzt gibt es nurnoch zwei kleine probleme.

zum einen suche ich die genauen gauss-werte fürs blooming, und
zum anderen sind meine fps ziemlich gering.

die szene enthällt 600 würfel (ganz normale D3DXCreateBox),
jede mit einem eigenen material und ohne texturen. ganz normale
auflösung 1280 x 1024. ergebniss 18 fps. das ist doch viel zu wenig
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

08.06.2009, 19:17

Nö, dass kann schon sein dass das ziemlich ineffizient is...

Wirf mal nen Blick auf http://msdn.microsoft.com/en-us/library/bb173349.aspx

Werbeanzeige