Registriert: Sa Apr 09, 2011 20:48 Beiträge: 43
Programmiersprache: Delphi
Ich hab mir ne Klasse geschrieben, die meine Texturen laden und freigeben soll. Wenn ich das jetzt mit dem glGenTextures richtig verstanden habe, dann wird hierbei ein Pointer auf die Textur über einen gluInt-Wert zurückgegeben, oder? Dieser Wert kann dann mit glBindTexture(GL_TEXTURE_2D, gluIntName) mit einem "Namen" versehen werden.
Was ist denn wenn ich jetzt ein Objekt mit einem Textbuffer gluIntName erstelle und davon jetzt mehrere Objekte. Ist in dem Moment der Name meiner Textur immer der gleiche "Name"? Oder zählt für OpenGL nur die tatsächliche Speicherstelle die hinter diesem Namen steht?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Nein, die Sache mit den "Namen" hast du falsch verstanden. Bei OpenGL versteht man unter einem "Namen" einfach nur eine ID, und keinen String oder ähnlich. Diese ID wird i.d.R. fortlaufend vergeben, sprich wenn du hintereinander zwei Texturen erstellst dann sind auch ihre IDs (aka Namen) fortlaufend, sprich n und n+1. IDs sind in OpenGL immer einzigartig, du wirst also nie zwei Texturen mit der gleichen ID erstellen können ohne dass du dann Zugriff auf die andere verlierst.
Immer wenn du glGenTextures aufrufst werden ein oder auch mehr Texturnamen erzeugt. "Namen" sind bei OpenGL einfach nur Integer, den diese lassen sich viel effizienter handhaben als Strings. Also gleiche Zahl heißt gleiche Textur. Der Aufruf von glBindTexture sorgt dafür das die entsprechende Textur aktiv ist. D.h. nachfolgende Befehle beziehen sich auf diese Textur.
Gilt übrigens auch für andere OpenGL-Objekte wie etwa VBOs, FBOs, Shader, etc.
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.