JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Surface in eine Textur umwandeln
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
telebeppo
Mini JLI'ler



Anmeldedatum: 17.11.2008
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 18.01.2011, 08:27    Titel: Antworten mit Zitat

Ich habe es mal ausprobiert, aber es konnte meine Projektdateien nicht in ein VS 2010 C++ Express kompatibles Format umwandeln. (Ich habe mich allerdings nicht besonders lange mit VS 2010 C++ Express befaßt.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
telebeppo
Mini JLI'ler



Anmeldedatum: 17.11.2008
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 22.03.2012, 19:25    Titel: Antworten mit Zitat

Zitat:
Kann ich irgendwie die Surfaces direkt verwenden, um drei davon übereinander zu blenden?


Diese Frage hatte ich vor geraumer Zeit aufgeworfen. Inzwischen bin ich zu der Überzeugung gekommen, daß ich einen speziellen Shader benötige. Kennt sich vielleicht jemand von euch mit Shadern aus und wäre bereit mir bei der Lösung einer bestimmten Aufgabe zu helfen? Oder kann mir vielleicht jemand ein gutes Tutorial empfehlen, welches mich kurzfristig in die Lage versetzt, das zu verwirklichen was ich vor habe? Ich möchte nicht wegen ein paar Zeilen Code ganze Bücher lesen müssen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.03.2012, 20:54    Titel: Antworten mit Zitat

Hm, ich würde einfach anfangen, mich mit Shader zu beschäftigen, allgemeine Tutorials lesen und so. Das zusammenblenden von 3 Texturen ist ansich relativ einfach, aber leider bestehen Shader nicht nur aus Shadercode, sondern die Verwaltung im Programm kann auch kniffelig werden. Die richtigen Daten im richtigen Format zu setzten, beispielsweise.
Da kann man schwer eine fertige Lösung geben, weil es vom Rest des Programms abhängt. Aber wirklich schwer sind Shader nicht, wenn man ein paar Grundlagen verstanden hat, kommt man da recht schnell rein.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
telebeppo
Mini JLI'ler



Anmeldedatum: 17.11.2008
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 27.04.2012, 11:49    Titel: Antworten mit Zitat

Ich hatte bisher eine Textur mit Namen >Zieltextur< in meinem Programm als Rendertarget benutzt. Nun wollte ich noch zwei weitere Rendertargets anlegen:

CPP:
   Grafikkarte->CreateTexture(
      BSchirmbreite,
      BSchirmhoehe,
      1,
      D3DUSAGE_RENDERTARGET,
      D3DFMT_X8R8G8B8,
      D3DPOOL_DEFAULT,
      &ZielTextur,
      0);
   ZielTextur->GetSurfaceLevel(0, &Vordergrund);

      Grafikkarte->CreateTexture(
      BSchirmbreite,
      BSchirmhoehe,
      1,
      D3DUSAGE_RENDERTARGET,
      D3DFMT_X8R8G8B8,
      D3DPOOL_DEFAULT,
      &Apparat_1,
      0);
   Apparat_1->GetSurfaceLevel(0, &Flaeche_Eins);

      Grafikkarte->CreateTexture(
      BSchirmbreite,
      BSchirmhoehe,
      1,
      D3DUSAGE_RENDERTARGET,
      D3DFMT_X8R8G8B8,
      D3DPOOL_DEFAULT,
      &Apparat_2,
      0);
   Apparat_2->GetSurfaceLevel(0, &Flaeche_Zwei);


Aber seitdem ich diese beiden neuen Rendertargets (Apparat_1 und Apparat_2) angelegt habe, stürzt der Compiler (VisualStudio 10) beim kompilieren des Programms ab.

Ich habe versucht etwas über die Verwendung mehrerer Rendertargets unter C++ und DirectX9 im Internet zu finden, bin aber nicht fündig geworden.

www.youtube.com/watch?v=6WbyMMUmTIc
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
telebeppo
Mini JLI'ler



Anmeldedatum: 17.11.2008
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 03.05.2012, 18:18    Titel: Antworten mit Zitat

Schließlich habe ich doch noch den Fehler gefunden: Eine der von mir verwendeten Surfaces wurde noch in einer älteren Funktion verwendet. Obwohl diese Funktion im Programm gar nicht aufgerufen wird, hat das zum Absturz des Compilers geführt.

Nun habe ich endlich die Aufgabe gelöst, die ich mir vor so langer Zeit gestellt hatte! Die Lösung besteht darin mit GetSurfaceLevel eine Verknüpfung der Textur mit einer zugrunde gelegten Surface herzustellen. Wie ich gelesen habe, liegt jeder Textur eine Surface zugrunde.

Hier nun der Programmtext, damit jeder die Lösung nachvollziehen kann:

CPP:
//Initialisierung
IDirect3DSurface9 *Vordergrund;
IDirect3DTexture9 *ZielTextur = NULL;

//Deklaration
   Grafikkarte->CreateOffscreenPlainSurface(
      BSchirmbreite,
      BSchirmhoehe,
      D3DFMT_X8R8G8B8,
      D3DPOOL_DEFAULT,
      &Vordergrund,
      0);

   Grafikkarte->CreateTexture(
      BSchirmbreite,
      BSchirmhoehe,
      1,
      D3DUSAGE_RENDERTARGET,
      D3DFMT_X8R8G8B8,
      D3DPOOL_DEFAULT,
      &ZielTextur,
      0);
//Direkt folgend die Verknüpfung der Textur mit der Surface >Vordergrund<
   ZielTextur->GetSurfaceLevel(0, &Vordergrund);

//Im Programmablauf kann man dann einfach die Textur verwenden,
//die dann den grafischen Inhalt der Surface enthält.

//Im folgenden Beispiel habe ich etwas auf die Surface gezeichnet
//und danach den Inhalt in Form einer Textur einem Shader zur
//Weiterverarbeitung zugeführt.

   Grafikkarte->SetRenderTarget(0,Vordergrund);
   ZeichnePhysikalisch();

   Grafikkarte->SetTexture(0, ZielTextur);
   Grafikkarte->SetTexture(1, Apparat_2);
   Grafikkarte->SetTexture(2, Apparat_3);
   Grafikkarte->SetPixelShader(pixelShaderZwei);

Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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