Devil Ilut Unicode ? Problem



  • Hallo,

    hab ein C++ Opengl Projekt basierend auf Windows Forms
    habe DevIL und ilut eingebunden
    klappt auch alles nur bleibt das Objekt, auf welches ich die Textur legen möchte weis.

    texture = ilutGLLoadImage("filename.bmp");
    

    so meldet er mir einen Unicode Fehler

    Fehler	1	error C2664: 'ilutGLLoadImage': Konvertierung des Parameters 1 von 'const char [13]' in 'wchar_t *' nicht möglich
    	c:\dokumente und einstellungen\matze\eigene dateien\tools\projekt lego\project\c++ v1.2\opengl_on_a_windows_form\Trackball.h	52
    

    und so

    texture = ilutGLLoadImage(TEXT("filename.bmp"));
    

    compiliert er zwar un das Programm läuft
    aber er läd die Textur nicht
    weil es die Datei garnicht gibt
    wenn ich sie hinzufüge geht es auch nicht

    normal müsste doch ein Ausnahmefehler kommen?

    ist das ein Unicode Problem?

    wisst ihr noch andere bessere Loader?

    Gruß Matthias



  • Ich hatte auch Unicodeprobleme in DevIL, deswegen bin ich auf FreeImage umgestiegen.



  • Das Problem kenne ich, ist wohl auch ein bekannter Bug. Die Funktion erwartet einen wchar_t*, die Dateinamen müssen trotzdem char* sein...

    texture = ilutGLLoadImage((wchar_t*)"filename.bmp");
    

    sollte funktionieren...

    Grüße

    Martin



  • ich hatte das Problem auch mal.
    Ich habe es gelöst, indem ich in die Eigenschaften von meinem Projekt gegangen bin und dann unter Allgemein bei Zeichensatz "Multi-Byte-Zeichensatz verwenden" eingestellt habe.
    Musst du mal ausprobieren vll hilft es. Bei mir funktioniert es immer.
    Das liegt meine ich an der neuen Version von 2005 das er immer mit Unicode startet.



  • heftig...

    wenn ich es ganz normal caste
    so wie du oben beschrieben hast

    ilutGLLoadImage((wchar_t*)"filename.bmp");
    

    funktioniert es ...
    okay in der Zwischenzeit hab ich mir selber einen Loader getippt
    nun mit dem ILUT das gleiche Problem

    möchte eine Textur auf eine Kugel tun ( einen Trackball)
    sobald ich ihn rotiere
    spiegelt sich die Textur und die Kugel läuft in die andere Richtung
    das hab ich shcon mal gehabt
    was kann ich da tun?
    Es sieht so aus als ob er die hinteren verdeckten Linien der Kugel nach vorne rendert ??

    Gruß Matthias



  • hab ich nun auch hinbekommen 😉



  • Am erstens: Mein Deutch ist nicht so gut.

    In il.h:

    #ifdef _UNICODE
    	#ifndef _WIN32_WCE
    		#include <wchar.h>
    	#endif
    	//if we use a define instead of a typedef,
    	//const ILstring works as intended
    	#define ILstring wchar_t*
    #else
    	//if we use a define instead of a typedef,
    	//const ILstring works as intended
    	#define ILstring char*
    #endif //_UNICODE
    

    Deshalb, slecht:

    ILstring filename = (wchar_t*)"mypath.png";
    

    gut:

    ILstring filename = (ILstring)"mypath.png";
    

Anmelden zum Antworten