2010-11-20 13 views
0

keine Sorge, ich möchte nicht fragen, wie man Texturen verwendet. :)OpenGL Textur, mag nicht mein BMP

Mein Problem ist: Ich benutze mehrere Texturen. Aber wenn ich den Dateinamen wie folgt geändert werden soll:

(LoadBMP("grass.bmp", textureImage[3])) // I can see the grass 

zu

(LoadBMP("parkett.bmp", textureImage[3])) // No texture, only white color 

Beide Bilder sind im selben Verzeichnis und es gibt keine Fehlermeldung.

Irgendwelche Ideen? Dank Sonja (OpenGL, Visual Studio C++ 2010)

+2

'LoadBMP' ist keine OpenGL-Funktion und Sie haben nicht annähernd genug Kontext bereitgestellt, um festzustellen, was tatsächlich vor sich geht. "Nur Weiß" ist der Standardwert, der zurückgegeben wird, wenn in OpenGL keine Textur festgelegt ist. Daher kann davon ausgegangen werden, dass das Laden fehlschlägt. Was die Details betrifft, müssen Sie sich LoadBMP ansehen - gehen Sie einfach mit einem Debugger durch und prüfen Sie, was passiert. –

Antwort

2

wahrscheinlich die meisten, verwenden Sie diese Texturen ein anderes Format (.bmp ist nicht nur ein einzelnes Format) und Ihre Funktion unterstützt nur eine.

Die einfachste und beste Lösung ist, eine gute Bibliothek zu verwenden, um Ihre Texturen zu laden, anstelle von einigen mystischen LoadBMP. Ich empfehle SOIL - Simple OpenGL Image Loader. Fügen Sie es einfach zu Ihrem Projekt hinzu und Sie können beliebige bmp, jpg oder png Texturen zu einer OpenGL Textur ID mit einem einzigen Funktionsaufruf laden.

+0

Hallo, danke für deine Antwort. Das Problem ist, es ist ein Projekt für die Universität und ich muss das LoadBMP meines Professors benutzen. Gibt es eine andere Möglichkeit? – Sonja

+0

@Sonja: Wie wäre es sicherzustellen, dass beide Bilder im "bmp" -Format sind? – jwueller

+0

Versuchen Sie: Öffnen Sie die fehlerhafte Bitmap mit GIMP, speichern Sie als 24-Bit-BMP in einem anderen Dateinamen, versuchen Sie es erneut mit der neuen Datei. Ich kann nicht genau sagen, was passiert, weil ich weder die Bitmaps noch den Inhalt von LoadBMP kenne. – Kos

0

Kann nur davon ausgehen, dass Ihre zweite BMP hat falsche interne Datenformat (nicht-BGR oder so ähnlich). Vereinbarte mit Kos - Sie sollten versuchen, einige Bibliotheken für diesen Zweck zu verwenden. Es gibt viele ‚em - SFML, SDL_image, DevIL ...

0

Sind die Abmessungen der nicht arbeitenden Textur Potenzen von 2 (d 1, 2, 4, 8, 16, 32, ...)? Wenn nicht, dann funktioniert das nicht. Entweder Waage oder Pad.