Binden eines OpenGL-Textur-Samplers

8

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?

    
genpfault 23.10.2012, 13:49
quelle

1 Antwort

10

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     
glcoder 23.10.2012, 14:10
quelle

Tags und Links