|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 10.02.2009, 17:38 Titel: Mit SetRenderTarget() Text auf Texture ausgeben |
|
|
Hi
versuche mithilfe von SetRenderTarget() einen Text nicht auf den BackBuffer sondern auf eine externe Texture zu rendern.
Hat das schonmal jmd von euch gemacht?
ansonsten hab ich hier auch meinen code:
CPP: | TEXTURE LightDepthColorTexture;
SURFACE LightDepthColorBuffer, LightZBuffer;
SURFACE StandardZBuffer;
D3DVIEWPORT9 LightViewport;
D3DVIEWPORT9 StandardViewport;
g_pd3dDevice->GetDepthStencilSurface(&StandardZBuffer);
g_pd3dDevice->GetViewport(&StandardViewport);
// Viewport-Eigenschaften festgelegen:
LightViewport.X = 0;
LightViewport.Y = 0;
LightViewport.Width = 512;
LightViewport.Height = 512;
LightViewport.MinZ = 0.0f;
LightViewport.MaxZ = 1.0f;
g_pd3dDevice->CreateTexture(512, 512,
1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &LightDepthColorTexture, NULL);
LightDepthColorTexture->GetSurfaceLevel(0, &LightDepthColorBuffer);
g_pd3dDevice->CreateDepthStencilSurface(512, 512,
D3DFMT_D16, D3DMULTISAMPLE_NONE, 0, TRUE, &LightZBuffer, NULL);
LPD3DXFONT CurFont;
::std::basic_string<wchar_t> Schriftart = L"Arial";
LOGFONT LogFont = {0};
if(!wcscpy(LogFont.lfFaceName,Schriftart.c_str()))
return FALSE;
LogFont.lfHeight = 16;
//MessageBox(NULL,L"",LogFont.lfFaceName,NULL);
if(FAILED(D3DXCreateFontIndirect(g_pd3dDevice,
&LogFont,
&CurFont)))return FALSE;
RECT r;
r.left = 0; r.top = 0;
r.bottom = 512; r.right = 512;
|
CPP: | LPDIRECT3DSURFACE9 savert;
// Surface holen
// aktuelles RenderTarget zwischenspeichern
g_pd3dDevice->GetRenderTarget(0, &savert);
g_pd3dDevice->SetViewport(&LightViewport);
g_pd3dDevice->SetDepthStencilSurface(LightZBuffer);
// Textursurface als RenderTarget setzen
g_pd3dDevice->SetRenderTarget(0, LightDepthColorBuffer);
CurFont->DrawTextW(L"Hello World",11,&r,NULL,0xFFFF0000);
// RenderTarget zuruecksetzen
g_pd3dDevice->SetViewport(&StandardViewport);
g_pd3dDevice->SetDepthStencilSurface(StandardZBuffer);
g_pd3dDevice->SetRenderTarget(0, savert);
|
Ich weiß ist kein schöner code geht mir hier aber nur darum, dass es in einer Testanwendung funktiert bevor ich dafür in einem größeren Projekt eine Klasse erstelle....
mfg f. hawk _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 10.02.2009, 18:59 Titel: |
|
|
Wo gnau ist dein Problem? Funktionieren sollte es einwandfrei wenn es richtig implementiert ist. |
|
Nach oben |
|
|
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 10.02.2009, 19:38 Titel: |
|
|
mmmhhhh..... okay
das Problem ist, dass nichts bzw nur ein paar Pixelfehler zu sehen sind, immer Rechtecke die zwischen schwarz noch Gelb und Lila etc. enthalten. Der Ort der dieser Rechtecke ist jedoch immer an einer anderen Stelle... _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 10.02.2009, 21:33 Titel: |
|
|
Hast du mal versucht dein nicht mit sinnvollen farb und Tiefebnwerten initialisierten Farb und Tiefenbuffer zu Clearen? klingt beinahe so als ob dies dein problem ist. Auch zu beachten ist hier dass du einen Farbbuffer mit Alphakanal erstellt hast, kA was grade deine Blendstates sind, D3DXFont oder wie auch immer dürfte selbst entsprechende Werte setzen und damit etwas rendern was du evtl nicht willst.
0xFFFF000 entspricht das 0xAARRGGBB? |
|
Nach oben |
|
|
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 11.02.2009, 14:55 Titel: |
|
|
mmmh ja....
problem gefunden wie du schon sagtest ich musste erst mit
CPP: | g_pd3dDevice->Clear(0,NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, 0xFF0000FF,1.0f,0);
|
die Textur leeren und dazu dann noch vor und nach dem Zeichnen
CPP: | g_pd3dDevice->BeginScene();
|
und
CPP: | g_pd3dDevice->EndScene();
|
angeben. _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|