JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Surfaces währen der Laufzeit laden
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
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 08.07.2008, 18:56    Titel: Antworten mit Zitat

Eine Methode ist es, sich alle jemals geladenen Bilder zu merken, dann kann man mehrfache Zeiger auf die Bilder benutzen.
Man muss natürlich ein wenig aufpassen, wenn sich diese Bilder ändern, ändern sie sich überall, wo sie benutzt werden. Dann muss man sie evtl. doch mehrmals im Speicher haben.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
newby
JLI'ler



Anmeldedatum: 17.08.2007
Beiträge: 106

Medaillen: Keine

BeitragVerfasst am: 09.07.2008, 21:21    Titel: Antworten mit Zitat

wäre es eine lösung, das bild einmal auf ein surface zu kopieren und dann per stretchrect mehrmals auf ein anderes? dann würde ich für jedes bild ein surface erstellen, und diese dann auf ein großes kopieren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
newby
JLI'ler



Anmeldedatum: 17.08.2007
Beiträge: 106

Medaillen: Keine

BeitragVerfasst am: 10.07.2008, 09:36    Titel: Antworten mit Zitat

aus irgendeinem grund erstellt er mir kein surface:

CPP:
bool DXGCreateTextureLevel(char* name, int width, int height)
{

    if(Surfaces[name] == NULL) //std::map<char*, IDirect3DSurface9*> Surfaces;
    {

        lpD3DDevice->CreateOffscreenPlainSurface(
                                                    width, // = 544
                                                    height, // = 375
                                                    D3DFMT_A8R8G8B8,
                                                    D3DPOOL_MANAGED,
                                                    &Surfaces[name],
                                                    NULL);
    }

    if(Surfaces[name] == NULL) DXGShutdown(); // verursacht laufzeitfehler, bedeutet surface existiert nicht!

    return true;

}


warum erstellt er das surface nicht? hat das vielleicht was damit zutun, das ich im fenstermodus bin?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
newby
JLI'ler



Anmeldedatum: 17.08.2007
Beiträge: 106

Medaillen: Keine

BeitragVerfasst am: 10.07.2008, 13:29    Titel: Antworten mit Zitat

ok, der fehler hat sich erledigt, ich muss 0 als letzten parameter angeben, nicht NULL. Das sind Fehler die mich aufregen!

jetzt hab ich ein neues problem, ich will das surface anzeigen, seh aber nichts:

CPP:
bool DXGShowLevel(char* name) //Funktion wird zwischen StartSzene() und EndSzene() aufgerufen
{
    if(Surfaces[name] != NULL) //if-Zweig wird ausgeführt
    {


        D3DSURFACE_DESC Info;
        Surfaces[name]->GetDesc(&Info);
        RECT SourceRect = {0, 0, Info.Width, Info.Height};

        lpD3DDevice->ColorFill(Surfaces[name], NULL, D3DCOLOR_XRGB(255, 255, 255));

        lpD3DDevice->StretchRect(   Surfaces[name],
                                    NULL,
                                    lpBackBuffer,
                                    NULL,
                                    D3DTEXF_NONE);
    }

    return true;

}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 10.07.2008, 14:03    Titel: Antworten mit Zitat

Na ja, du definierst dir zwar ein SourceRect, übergibst es aber der Funktion dann nicht..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
newby
JLI'ler



Anmeldedatum: 17.08.2007
Beiträge: 106

Medaillen: Keine

BeitragVerfasst am: 10.07.2008, 14:20    Titel: Antworten mit Zitat

stimmt, aber NULL sollte eigentlich das komplette surface kopieren.
ich habs auch schon mit source rect ausprobiert, ändert nichts.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 10.07.2008, 14:42    Titel: Antworten mit Zitat

Prüfe die Rückgabewerte der DX Methoden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
newby
JLI'ler



Anmeldedatum: 17.08.2007
Beiträge: 106

Medaillen: Keine

BeitragVerfasst am: 10.07.2008, 16:41    Titel: Antworten mit Zitat

funktioniert auf einmal, ich weiß nicht warum Confused

neue frage, ist es irgendwie möglich surfaces transparent zu machen?
der alphachannel im bild selber scheint nicht zu funktionieren und der colorkey scheint irgendwie nicht zu funktionieren. Ich will die farbe D3DCOLOR_XRGB(254, 254, 254) durchsichtig haben. was muss ich als colorkey angeben?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 11.07.2008, 12:24    Titel: Antworten mit Zitat

Mit dem Makro D3DCOLOR_ARGB kannst du zusätzlich den Alphakanal angeben. Das Surface muss dann auch in diesem Farbmodus erstellt worden sein.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
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 -> 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