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
Zitat von »"E122"«
Bei D3DFVF_XYZRHW, darf doch die Positionsangabe nur 2Dimensional sein, oder ?
EDIT: Was sagt denn die Direct3DDebug - Ausgabe ?
Zitat
muss ich für 2d vielleicht einen zbuffer mit verwenden? ist meiner meinung nach aber nicht nötig.
Zitat von »"E122"«
EDIT II:
C-/C++-Quelltext
1 lpD3DDevice->SetRenderTarget(0, RenderTargetSurface);
probiers mal mit
RenderTarget->GetSurfaceLevel (..... ) statt RenderTargetSurface.
Zitat von »"E122"«
er halt mal, wenn du den Z und den Stencil buffer auch noch setzt.
EDIT: Müsste Render-Target-Surface nicht als ein Surface Level von RenderTarget sein, und kein Eigenständiges, dass mit CreateRenderTarget erzeugt wird ?
Welche DX-Version verwendest du eigentlich ? Ist lpD3D.... eigentlich die PDIRECT3DDEVICE9 oder eine Wrapper-Klasse, die du geschrieben hast ?
C-/C++-Quelltext |
|
1 |
PDIRECT3DTEXTURE9 RenderBackBufferTarget, RenderDephtStencilTarget; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
PDIRECT3DSURFACE9 RBBTS, RDSTS; RenderBackBufferTarget->GetSurfaceLevel (0, &RBBTS); RenderDephtStencilTarget->GetSurfaceLevel (0, &RDSTS); ddf->GetRenderTarget (0, &BackBuffer); ddf->GetDepthStencilSurface (&DephtStencilBuffer); ddf->SetRenderTarget (0, RBBTS); ddf->SetDepthStencilSurface (RDSTS); |
Zitat von »"E122"«
C-/C++-Quelltext
1 PDIRECT3DTEXTURE9 RenderBackBufferTarget, RenderDephtStencilTarget;
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 PDIRECT3DSURFACE9 RBBTS, RDSTS; RenderBackBufferTarget->GetSurfaceLevel (0, &RBBTS); RenderDephtStencilTarget->GetSurfaceLevel (0, &RDSTS); ddf->GetRenderTarget (0, &BackBuffer); ddf->GetDepthStencilSurface (&DephtStencilBuffer); ddf->SetRenderTarget (0, RBBTS); ddf->SetDepthStencilSurface (RDSTS);
so mach ichs bei mir immer, hat mich bisher noch nicht im stich gelassen
C-/C++-Quelltext |
|
1 2 3 |
// Multiple Render Targets
PDIRECT3DSURFACE9 BackBuffer, DephtStencilBuffer;
PDIRECT3DTEXTURE9 RenderBackBufferTarget, RenderDephtStencilTarget;
|
C-/C++-Quelltext |
|
1 2 3 4 5 |
// Die Render-Targets erzeugen tbDirect3D::Instance()->CreateTexture (Config.Direct3D.VideoMode.Width, Config.Direct3D.VideoMode.Height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &RenderBackBufferTarget, 0); tbDirect3D::Instance()->CreateTexture (Config.Direct3D.VideoMode.Width,Config.Direct3D.VideoMode.Height, 1, D3DUSAGE_DEPTHSTENCIL, D3DFMT_D16, D3DPOOL_DEFAULT, &RenderDephtStencilTarget, 0); |
C-/C++-Quelltext |
|
1 2 |
RenderBackBufferTarget->Release(); RenderDephtStencilTarget->Release (); |
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 |
// Textursurface (0) bekommen PDIRECT3DSURFACE9 RBBTS, RDSTS; RenderBackBufferTarget->GetSurfaceLevel (0, &RBBTS); RenderDephtStencilTarget->GetSurfaceLevel (0, &RDSTS); // Altes RenderTarget holden ddf->GetRenderTarget (0, &BackBuffer); ddf->GetDepthStencilSurface (&DephtStencilBuffer); // Render target setzen ddf->SetRenderTarget (0, RBBTS); ddf->SetDepthStencilSurface (RDSTS); // Clear - Blau (0, 0, 63) ddf->Clear (0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB (0, 0, 0), 1.0f, 1); // Begin Scene ddf->BeginScene (); // Effekt starten UINT np; Effect->Begin (&np, 0); // for each pass which is not the last of the technique for (int Pass = 0; Pass < np - 1; Pass++) { Effect->BeginPass (Pass); // Ganz normal rEndern // Effekt beenden Effect->EndPass (); } // Die Standard renderT setzen ddf->SetRenderTarget (0, BackBuffer); ddf->SetDepthStencilSurface (DephtStencilBuffer); // Die Textur im Effekt setzen Effect->SetTexture ("RenderTarget", RenderBackBufferTarget); // Begin Effect Pass Effect->BeginPass (1); // Clearen ddf->Clear (0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB (255,0,255), 1.0f, 0); ssimplevertex e[4]; //e[0].Position = tbVector3 (0.0f); //e[1].Position = tbVector3 (ddf.GetScreenSize().x, 0.0f, 0.0f); //e[2].Position = tbVector3 (0.0f, ddf.GetScreenSize().y, 0.0f); //e[3].Position = tbVector3 (-(ddf.GetScreenSize().x/2), -(ddf.GetScreenSize().y/2), 0.0f); e[0].Position = tbVector3 (-1.0f, 1.0f, 0.0f); e[1].Position = tbVector3 (1.0f, 1.0f, 0.0f); e[2].Position = tbVector3 (-1.0f, -1.0f, 0.0f); e[3].Position = tbVector3 (1.0f, -1.0f, 0.0f); e[0].Texture = tbVector2 (0.0f, 0.0f); e[1].Texture = tbVector2 (1.0f, 0.0f); e[2].Texture = tbVector2 (0.0f, 1.0f); e[3].Texture = tbVector2 (1.0f, 1.0f); // draw ddf.SetFVF (ssimplevertex::fvf); ddf->DrawPrimitiveUP (D3DPT_TRIANGLESTRIP, 2, &e, sizeof (ssimplevertex)); // End effect pass Effect->EndPass (); // End effect usage Effect->End (); // End Scene ddf->EndScene (); // Present ddf->Present (NULL, NULL, NULL, NULL); |
Werbeanzeige