JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=124373ed369c44d055412bd04bb11c87Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mit SetRenderTarget() Text auf Texture ausgeben

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 10.02.2009, 17:38    Titel: Mit SetRenderTarget() Text auf Texture ausgeben Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 10.02.2009, 18:59    Titel: Antworten mit Zitat

Wo gnau ist dein Problem? Funktionieren sollte es einwandfrei wenn es richtig implementiert ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 10.02.2009, 19:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 10.02.2009, 21:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 11.02.2009, 14:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum