Primitives (2D) auf eine Textur zeichnen
-
Hi,
hier mal exemplarisch:
D3DXCreateTexture(d3ddevice, Screenwidth, Screenheight, 0, D3DUSAGE_RENDERTARGET, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &FrontTex ); FrontTex->GetSurfaceLevel(0, &FrontSurf); d3ddevice->SetRenderTarget(FrontSurf, NULL);
Du erstellt ein leere Texture, holst die dir Surface 0 davon, und setzt es als Rendertarget des Device. Wenn du dann wieder Normal rendern willstm dann setzt du als Rendertarget wieder deb Backbuffer, den du am anfang einmal geholt hast und der auch eine Surface darstellt.
d3ddevice->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &BackBuffer);
d3ddevice->SetRenderTarget(BackBuffer, NULL);
-
Aber wenn ich die textur aöls render target erstelle, kann ich dann denn noch was damit anfangen? (ich meine blitten oder auf meshes legen)
-
Aber wenn ich die textur aöls render target erstelle, kann ich dann denn noch was damit anfangen? (ich meine blitten oder auf meshes legen)
Natürlich. es bleibt immer noch ne Textur. Die kannst du auch wie alle anderen normalen Texturen benutzen. Wär ja sonst sinnlos.
-
stimmt
gut, werde das mal probieren,
-
Muss man irgendwas beachten , wenn man einen Vertex/Pixelshader nimmt.
Ohne den Shader funktioniert es, ich kann auf meine Textur rendern.
Nur mit dem Shader geht es nicht.
-
BlackWolf schrieb:
Muss man irgendwas beachten , wenn man einen Vertex/Pixelshader nimmt.
Ohne den Shader funktioniert es, ich kann auf meine Textur rendern.
Nur mit dem Shader geht es nicht.poste doch mal deine pixel und vertexshader und vielleicht noch was du gegenüber der vertexshaderlosen variante geändert hast, dann können wir dir eher helfen.
zudem wäre es nützlich zu sehen wie du den vertexbuffer anlegst, wenn du ihn mit D3DFVF_XYZRHW erstellst erstellst, dann wird kein vertexshader benutzt soweit ich weiß, wenn du dahinter dann nen pixelshader hast, könnte es also nicht die erwarteten resultate geben.
rapso->greets();
-
Ich frag nochmal: Warum nicht einfach ohne Shader rendern?
Bye, TGGC (Reden wie die Großen)
-
Hier der Code:
********************************************** D3DXCreateTexture(lpD3DDevice, 256, 256, 0, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &textur); lpD3DDevice->BeginScene(); //tex_rendern lpD3DDevice->SetTexture(0, NULL); lpD3DDevice->SetRenderTarget( 0, rendersurface ); lpD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f, 0); tex_rendern(objekte); //back_rendern lpD3DDevice->SetRenderTarget( 0, lpDDSBack ); lpD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f, 0); back_rendern(objekte); ********************************** const char BaseVShader[] = "vs.1.1 \n"\ "dcl_position0 v0 \n"\ "dcl_normal0 v3 \n"\ "dcl_texcoord0 v6 \n"\ "m4x4 oPos, v0, c0 \n"\ "mov oD0, c5 \n"\ "dp3 oD1, v3, -c12 \n"\ "mov oT0, v6 \n"; const char BasePShader[] = "ps.1.1 \n"\ "tex t0 \n"\ "add r0, v0, v1 \n"\ "mul r0, r0, t0 \n";
//by rapso
Ich hoffe das langt, ist ein ganz einfacher Shader, aber zum Testen langt er.Ich kann mit dem Shader rendern, nur nicht in eine Textur.
Ohne Shader kann ich dafür in eine Textur rendern.Ich benutze .x-Files als Objekte.
-
Sch*** Cut&Paste, hab was vergessen.
lpD3DDevice->BeginScene(); //tex_rendern lpD3DDevice->SetTexture(0, NULL); textur->GetSurfaceLevel(0, &rendersurface); lpD3DDevice->SetRenderTarget( 0, rendersurface );
//by rapso
Der Rest ist wie oben.
-
welches format hat der vertexbuffer?
rapso->greets();