JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mit DX Bildresourcen in eine Surface laden?

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2004, 12:25    Titel: Mit DX Bildresourcen in eine Surface laden? Antworten mit Zitat

Ich hab eine kleine DX Anwendung geschrieben die nur zwei Bilder benötigt. Ich hatte jetzt die Idee diese zwei Bilder einfach als Resourcen in die Exe mitreinzukopieren und von daaus zu laden, klappt aber leider nicht! Sad

Code:
LPDIRECT3DSURFACE9 CDirect3D::CreateSurfaceFromResource(LPCTSTR Resourcename,D3DCOLOR ColorKey,D3DXIMAGE_INFO* Info)
{
   // Surface anlegen
   LPDIRECT3DSURFACE9  Surface;

   // Beschreibung des Image Files
   D3DXIMAGE_INFO ImageFileInfo;

   // Informationen über die geladene Grafik holen
    D3DXGetImageInfoFromResource(0,Resourcename,&ImageFileInfo);
   
    // Offscreen-Surface anlegen
    m_lpD3DDevice->CreateOffscreenPlainSurface(
                                        ImageFileInfo.Width,   // Breite der Oberfläche
                                        ImageFileInfo.Height,  // Höhe   der Oberfläche
                                        D3DFMT_A8R8G8B8,   // Format
                                        D3DPOOL_DEFAULT,   // Pool
                                        &Surface,      // Zeiger auf die Oberfläche
                                        0);                // Handle muss 0 sein

    D3DXLoadSurfaceFromResource(Surface,      // Oberfläche in die die Grafik geladen werden soll
                            NULL,             // Palette
                            NULL,             // Zielrechteck
                            0,                  // Handle zu dem Module indem das Image gespeichert ist, 0 = gleicher Prozess
                            Resourcename,        // Resourcename der Grafik
                            NULL,             // Quellrechteck
                            D3DX_FILTER_NONE, // Filter   
                            ColorKey,                // Colorkey
                            Info);
   return Surface;
}



Code:
HRESULT WINAPI D3DXLoadSurfaceFromResource(     
    LPDIRECT3DSURFACE9 pDestSurface,
    const PALETTEENTRY *pDestPalette,
    const RECT *pDestRect,
    HMODULE hSrcModule,
    LPCTSTR pSrcResource,
    const RECT *pSrcRect,
    DWORD Filter,
    D3DCOLOR ColorKey,
    D3DXIMAGE_INFO *pSrcInfo
);


Ich habe einfach die Funktionen
D3DXGetImageInfoFromFile, D3DXLoadSurfaceFromFile durch D3DXGetImageInfoFromResource, D3DXLoadSurfaceFromResource ersetzt vor dem Filename/Sourcename eine 0 für den HMODULE Handle eingefügt, 0 dass das Module mit dem gleichen Prozess wie das Programm verknüpft ist, da die Resource doch in der Exe ist?

Was mache ich falsch? Das Bild wird bei mir nicht geblittet....ich hab das gute alte DX9 SDK (von der CD)Razz

GetImageInfo gibt immer die Werte 0 und 1634300481 zurück. Er erkennt also die Resource nicht...Man muss doch einfach nur importieren und dann bei Typ BITMAP auswählen?
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 17.08.2004, 12:38    Titel: Antworten mit Zitat

Muss man es nicht als ganz normale Datei importieren, sonst wären ja alle Grafiken unkomprimiert.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2004, 12:44    Titel: Antworten mit Zitat

Ich kann es nur als:
Accelerator
Bitmap
Cursor
Dialog
HTML
Icon
Menu
String Table
Toolbar
Version

oder eigenes Format importieren...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 17.08.2004, 12:57    Titel: Antworten mit Zitat

Haste die Ressource korrekt kompiliert ? Wenn ja haste mal versucht die Datei als BITMAp zu speichern ? Wenns absolut nicht geht dann lese die ressource aus und speichere Sie als temporäre datei, zur Namensvergabe dieser datei gibts ja auch einige Funktionen. Und dann die datei ganz normal einlesen. Warum das Temp Dir nicht nutzen gibts ja nicht umsonst Rolling Eyes
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 17.08.2004, 12:58    Titel: Antworten mit Zitat

Dann versuch es dochmal als custom.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2004, 13:46    Titel: Antworten mit Zitat

Oder wie importiert ihr Ressourcen?

Ich habe VC++ 6 und mache das so:
Einfügen-->Resource
Importieren, Bitmapdatei auswählen

Jetzt habe ich bei Ressourcen diese Anzeige:

Skript Ressourcen
-Bitmap
IDB_BITMAP1
+Icon

Kann ich der Funktion dann nicht IDB_BITMAP1 übergeben? Anscheinend ja nicht.... Crying or Very sad
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 17.08.2004, 14:15    Titel: Antworten mit Zitat

Warum willst du das überhaupt machen ? Willste ne Demo oder nen IOntro,.. basteln ? Dann würde ichs ja noch verstehen aber wenns nen prog sein soll das schon etwas grösser ist würde ich ne Verzeichnisstruktur aufbauen und evtl. komprimieren (zLib). So ist das Patchen auch viel einfacher und die patchdatei somit kleiner.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2004, 14:22    Titel: Antworten mit Zitat

Ich hab eine Exe und zwei Bilddateien und das Projekt ist schon zu 99% fertig. Jetzt wollte ich alles in eine Datei quetschen. Da hab ich gedacht, dass ich die Bilddateien in die Exe einfüge...
_________________
The source of all power is in its destiny...
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
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