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
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Global: struct CustomVertex{ float x, y, z; float extrapos; float tu, tv; }; IDirect3DSurface9 *Surf; LPD3DXEFFECT peffect = NULL; IDirect3DTexture9 *RenderTarget; IDirect3DSurface9 *RenderTargetSurface; IDirect3DSurface9 *OldRenderTarget; |
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
Vor der Gameloop: lpD3DDevice->CreateTexture(FensterBreite, FensterHoehe, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &RenderTarget, NULL); lpD3DDevice->CreateRenderTarget(FensterBreite, FensterHoehe, D3DFMT_A8R8G8B8, D3DMULTISAMPLE_NONE, NULL, TRUE, &RenderTargetSurface, NULL); CustomVertex PostEffectQuad[6] = { { -1, 0, 0,1, 0,0}, { -1, (float)FensterHoehe, 0,1, 0,1}, {(float)FensterBreite, (float)FensterHoehe, 0,1, 1,1}, { -1, 0, 0,1, 0,0}, {(float)FensterBreite, 0, 0,1, 1,0}, {(float)FensterBreite, (float)FensterHoehe, 0,1, 1,1} }; for(int i=0; i<6; i++) PostEffectQuad[i].extrapos=0; D3DXCreateEffectFromFile(lpD3DDevice, L"data//postshader.fx", NULL, NULL, D3DXSHADER_USE_LEGACY_D3DX9_31_DLL, NULL, &peffect, NULL)); lpD3DDevice->SetRenderState(D3DRS_ZENABLE, FALSE); lpD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); lpD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); lpD3DDevice->SetRenderState(D3DRS_DITHERENABLE, FALSE); lpD3DDevice->SetFVF(D3DFVF_XYZRHW|D3DFVF_TEX1); |
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
In der Gameloop: if(enable_shader==1){ if (GameState != GS_PLAYING){ peffect->SetTechnique("ExtraBlurShader3"); }else{ peffect->SetTechnique(ak_level.shader);} lpD3DDevice->GetRenderTarget(0, &OldRenderTarget); lpD3DDevice->SetRenderTarget(0, RenderTargetSurface); lpD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, ClearColor, 1.0f, 0); lpD3DDevice->BeginScene(); //Hier wird das Spiel gezeichnet.... RenderTarget->GetSurfaceLevel(0, &RenderTargetSurface); lpD3DDevice->EndScene(); lpD3DDevice->SetRenderTarget(0, OldRenderTarget); lpD3DDevice->BeginScene(); //lpD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, 0, 1, 0); UINT passes=1; peffect->Begin(&passes,0); peffect->BeginPass(0); lpD3DDevice->SetTexture(0, RenderTarget); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 2, PostEffectQuad, sizeof(CustomVertex)); peffect->EndPass(); peffect->End(); lpD3DDevice->EndScene(); lpD3DDevice->Present(NULL, NULL, NULL, NULL); }else{ lpD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, ClearColor, 1.0f, 0); lpD3DDevice->BeginScene(); //Hier wird das Spiel gezeichnet.... lpD3DDevice->EndScene(); lpD3DDevice->Present(NULL, NULL, NULL, NULL); } |
Zitat von »"E122"«
Muss da jedesmal ein End-Scene bzw. Begin-Scene Paar hin, nachdem dass Render-Target gesetzt wird ?
Zitat von »"E122"«
Ich hab gemeint, ob das wirklich nötig ist deshalb dass ?
Zitat von »"E122"«
Echt, bei mir gings bisher ohne ??
Und wieder was dazugelernt
EDIT:
Ist denn auf dem Rendertarget vor dem Post-Processing korrekt gerender, oder auch schrwarz ?
nein ist sie nicht. als clearcolor verwende ich die ergebnisfarbe meines dynamischen hintergrungfarbensystems. daran habe ich gar nicht gedacht. anscheinend ist das rendertarget also schwarz !?Zitat von »"E122"«
Ist schwarz die Clear-Color ?
C-/C++-Quelltext |
|
1 |
lpD3DDevice->SetRenderTarget(0, RenderTargetSurface); |
Werbeanzeige