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 52und 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 nichtnormal 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 hastilutGLLoadImage((wchar_t*)"filename.bmp");funktioniert es ...
okay in der Zwischenzeit hab ich mir selber einen Loader getippt
nun mit dem ILUT das gleiche Problemmö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 //_UNICODEDeshalb, slecht:
ILstring filename = (wchar_t*)"mypath.png";gut:
ILstring filename = (ILstring)"mypath.png";