Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

D-eath

Treue Seele

  • »D-eath« ist der Autor dieses Themas

Beiträge: 102

Beruf: Freelance Software Engineer

  • Private Nachricht senden

1

29.01.2010, 16:49

Anbinden von devIL in OpenGL - ilLoadImage schlägt fehl

Hi,

ich versuche momentan, devIL in meinem OGL Projekt anzubinden. Version: 1.7.8

Dazu habe ich zum Texturenladen folgende Methode erstellt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void CTexture::LoadTexture(ILstring pvsFileName)
{
    ILuint lvoTexID;
    bool lvbSuccess = false;
    
    ilGenImages(1, &lvoTexID);
    ilBindImage(lvoTexID);
    lvbSuccess = ilLoadImage(pvsFileName);

    if (lvbSuccess)
    {
        ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
            
        mvoWidth = ilGetInteger(IL_IMAGE_WIDTH);
        mvoHeight = ilGetInteger(IL_IMAGE_HEIGHT);

        glGenTextures(1, &mvoTexture);
        glBindTexture(GL_TEXTURE_2D, mvoTexture);
        glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT), 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE, ilGetData());
        
        ilDeleteImages(1, &lvoTexID);
    }
}


Aufruf folgendermaßen:

C-/C++-Quelltext

1
lvoTexture->LoadTexture(L"joo.png");


Beim Starten der App wird folgendes ausgeführt:

C-/C++-Quelltext

1
2
3
4
        ilInit();
        ilutInit();
        // ilUT initialisieren

        ilutRenderer(ILUT_OPENGL);


Ich sehe, dass ilLoadImage() immer false zurückgibt, obwohl das Bild existiert. Was mache ich falsch?
Fehler lautet: "invalid extension - could not open file"

Kann es am wchar_t* liegen (typedef ILstring), wenn ja, wie lässt sich das umgehen?
Habe dazu mal std::wstring genommen - er bringt leider immer noch diese Fehlermeldung.

Grüße

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

2

29.01.2010, 17:28

Wo liegt denn die Datei? Schonmal einen absoluten Pfad versucht?

LG
Alyx

D-eath

Treue Seele

  • »D-eath« ist der Autor dieses Themas

Beiträge: 102

Beruf: Freelance Software Engineer

  • Private Nachricht senden

3

29.01.2010, 17:42

Hi,

sowohl als auch. Ich habs zuerst mit einem relativen Pfad versucht, dann mit einem absoluten.
Die Meldung, die kommt, lautet: "invalid extension - could not open file", was laut Doku drauf hinweisen lässt, dass die Dateieendung nicht unterstützt wird. Irgendwas kann dort aber nicht stimmen, denn bei einem JPG-und einem PNG-File kam das selbe Problem.

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

4

29.01.2010, 18:15

Ich habe devIL noch nicht verwendet, aber bei CxImage zum Beispiel muss man jedes Dateiformat einzeln aktivieren, um nicht übermäßig große Binaries zu erzeugen. Kann mir gut vorstellen, dass es dort auch so ist.

Werds mir aber gleich noch mal installieren.

LG
Alyx

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

5

29.01.2010, 18:23

Schau mal, ob eventuell in der config.h bei dir IL_NO_EXTLIBS oder IL_NO_PNG definiert ist.

D-eath

Treue Seele

  • »D-eath« ist der Autor dieses Themas

Beiträge: 102

Beruf: Freelance Software Engineer

  • Private Nachricht senden

6

29.01.2010, 20:45

Das war ein guter Tipp, danke. Aber ich habe an den config-Dateien nichts verändert, also sollte alles funktionieren.

Mit BMP geht es auch nicht. Konntest du ein Beispiel wie obiges bei dir kompilieren?

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

7

29.01.2010, 20:54

Ich hatte mir nur das SDK installiert und mal die Header angeschaut, ob es ähnlich wie bei CxImage läuft und gleich ruft der Fernsehabend mit der Frau :-).
Aber ich werd's mir morgen im Laufe des Tages mal in einer ruhigen Minuten anschauen. Debug es doch einfach mal durch, man hat ja den kompletten Source, dann solltest du ja auch sehen, wo und weshalb er dann zum Invalid-Extension springt. ;)

LG
Alyx

D-eath

Treue Seele

  • »D-eath« ist der Autor dieses Themas

Beiträge: 102

Beruf: Freelance Software Engineer

  • Private Nachricht senden

8

29.01.2010, 20:57

Oh, gönn dir ruhig deinen Abend. Ich habe den Fehler gefunden.
Meine DLLs haben anscheinend Multi-Byte als Kodierung benutzt und mein Projekt Unicode. So was doofes. Es geht jetzt. Vielen Dank für deine Hilfe!

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

9

29.01.2010, 21:02

Immer gern :-). Ok, dann wird er bei der Stringübergabe natürlich völlig durcheinander gekommen sein. :P

Schönen Abend noch,
Alyx

Werbeanzeige