ich hab mal wieder ne Frage, diesmal zu Shadern. Ich bin gerade dabei Bump Mapping zu realisieren und bin jetzt an der Stelle, an der ich den tollen Tangent-Vektor übergeben sollte. Nun ist mir nicht ganz klar, wie ich den vertexspezifisch übergeben kann. Da müsste ich ja jedes Dreieck einzeln zeichnen und zwischendurch die Übergabe ändern, oder? Macht man das vllt mit einer Matrix oder einer Textur mit allen bereits berechneten Tangent-Vektoren oder wie stellt man das am besten an?
Wenn man mit dem Immediate Modus zeichnet (also das mit glBegin/End) dann muss man wirklich die Tangente bei jedem Vertex ändern (wenn die Tangente sich ändert), genauso als wenn man die Farbe bei jedem Vertex ändern will. Das geht mit "glVertexAttrib".
Bei einem VBO kann man, genauso wie alle anderen Angaben wie Position und Texturkoordinaten, die Tangenten natürlich genauso speichern, wäre ja sonst witzlos. Die Position der Daten gibt man dabei mit "glVertexAttribPointer" an. Dann muss man natürlich noch "glEnableVertexAttribArray" aufrufen damit OpenGl weiß das ein Attribut und welches übergeben wird. Als Paramter erwartet die Funktion einen Index, den man relativ frei wählen kann, sofern er vorher gebunden wurde. Dies wiederum geschieht mit "glBindAttribLocation". Die Parameter dazu sind auch relativ einfach, als erstes das Programmhandle, dann der Index, den du dir gewählt hast (bin mir nicht sicher, aber die 0 geht da vllt nicht) und zum Schluss der Name des Attributs im Shader.
Das wars glaube ich. Dann eben mit glDrawElements (oder glDrawArrays?) zeichnen.
Für einfache Arrays im Hauptspeicher geht das glaube ich genauso, weiß ich aber nicht genau, weil ich das noch nicht benutzt habe.
Leider bin ich gerade nicht an meinem PC sodass ich weder einen Beispiel-Code angeben kann, noch sicher sagen kann, dass das oben wirklich alles so stimmt. Musste es eben aus dem Kopf aufschreiben.
Edit: beim Immediate Modus muss man natürlich auf das Attribut binden wie im 2ten Abschnitt beschrieben.
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.