Ich bin etwas verwirrt darüber, wie man eine Textur an einen Slot in GLSL bindet. Hier sind meine Shader:
%Vor%Wenn ich meine Matrizen aufstelle, muss ich den uniformen Ort abfragen und dann die Werte an dieser Stelle manuell einstellen, etwa so:
%Vor%Soweit ich das beurteilen kann, brauche ich das nicht, um meinen Textur Sampler zu initialisieren. Zur Setup-Zeit muss ich Folgendes tun:
%Vor%Also, meine Fragen sind, warum muss ich nicht den gleichen Prozess für Texturen machen, die ich für Matrizen machen muss? Wie "weiß" die OpenGL-Laufzeit, dass die Textur, die ich gebunden habe, der von mir definierte Sampler sein soll? Wenn ich mehrere Texturen haben möchte, wie würde ich das machen?
OpenGL kennt den zu verwendenden Sampler nicht, Sie müssen ihn manuell mit glActiveTexture(GL_TEXTUREi)
binden (wobei i
von 0
bis GL_MAX_TEXTURES
). Ihr Code funktioniert, da der Standard-Sampler GL_TEXTURE0
ist. Offensichtlich hast du Glück und Shader-Linker setzt textureSampler
auf 0.
Außerdem gibt es eine neue Funktionalität in OpenGL API der Version 3 und höher - glGenSampler , glBindSampler . Damit können Sie eine texturunabhängige Sampler-Konfiguration verwenden! Sie können Ссылка für weitere Details lesen.
Und ich empfehle Ihnen, Beispiele von Ссылка
herunterzuladen