2010-11-27 3 views
5

Ich habe auf diesem, einschließlich Nehe und hier für Lösungen gelesen, aber ich kann nicht eine spezifische Antwort finden.Textur Mapping C++ OpenGL

Ich versuche ein Foto zu laden, genannt stars.jpg. Ich möchte diesen meinen Hintergrund der Szene machen, indem es die Abbildung uv Koordinaten, tun es durch

glBegin(GL_QUADS); 
glTexCoord2f(0,0); 
glVertex2f(0,0); 

aber ich bin gerade sehr verwirrt darüber, wie die tatsächlichen Texturen zu laden, werden automatisch alle Anrufe für

glActiveTexture(); 
glEnable(GL_TEXTURE_2d); 
glBindTexture(GL_TEXTURE); 

Alles, was sie tun, ist verwirrend, was bedeuten all diese Dinge, und in welcher Reihenfolge soll ich diese einfügen, um die stars.jpg zu meinem Hintergrund zu machen?

+0

vielleicht sollten Sie einen Blick auf http://nehe.gamedev.net werfen, um einige Grundlagen über OpenGL zu bekommen, es klingt, dass Sie ein bisschen verloren sind. –

Antwort

3

Hier ist eine Schritt für Schritt Anleitung zum Laden von Texturen
http://www.nullterminator.net/gltexture.html

Es ist wichtig, sich daran zu erinnern, dass OpenGL eine Zustandsmaschine ist, so muss man es sagen, „ich über Texturen sprechen werde jetzt“ das ist, wo die glActiveTexture(); kommt in.

Denken Sie auch daran, dass Sie pixelweise die Farben von Ihrem .jpg (komprimiert) zu Ihrem Textur-Array laden müssen, so dass Sie entweder eine Bibliothek finden müssen, die Ihnen geben wird Bitmap-Werte Ihrer .jpg-Datei oder Sie müssen sie in eine .ppm oder eine .bmp vorkonvertieren, was das Einlesen der Werte erleichtert.

+0

"Sie müssen es sagen" Ich werde jetzt über Texturen sprechen "das ist, wo die glActiveTexture(); kommt" - unwahr. Dieser Aufruf benötigt einen Parameter (eine Konstante von 'GL_TEXTURE0' nach' GL_TEXTURE', wobei 'n' die ID der letzten Textureinheit ist) und gibt an, dass die gegebene Textureinheit die" aktive "ist (betroffen von den weiteren Aufrufen). Um ein einfaches Texturobjekt zu haben, benötigen Sie nur eine Textureinheit (die Standardeinstellung), sodass Sie sie nicht aufrufen müssen. – Kos

+0

ah, es war schon eine Weile, danke für die Korrektur! – TJB

+0

Nun, die Website, die Sie gaben funktioniert (es hilft mir, es zu verstehen), ich kann nicht die Textur tatsächlich als Hintergrund anzeigen ... – Jim

4

Ihr Nummer-Eins-Werkzeug zum Laden von Texturen in OpenGL ist die Simple OpenGL Image Loader (SOIL)-Bibliothek. Sie müssen nur den Dateinamen und einige Flags übergeben und Sie erhalten Ihre Textur ID.

Außerdem lernen Sie jetzt sehr alt und veraltete Version von OpenGL - Sie möchten vielleicht ein Google für neuere Tutorials haben oder die specs durchsuchen, wann immer Sie sich bereit fühlen.

+0

Das Betriebssystem, über das ich schreibe, ist sehr veraltet und wird nicht aktualisiert. – Jim

+0

Die GPU und die Treiber sind wichtig, nicht das zugrunde liegende Betriebssystem. Aber die Bemerkung über SOIL gilt auch für alte GL-Versionen. – Kos