Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Mai 15, 2024 14:59

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Tangent-Vektor übergeben, nur wie?
BeitragVerfasst: Di Jan 06, 2009 02:14 
Offline
DGL Member

Registriert: Fr Dez 26, 2008 20:06
Beiträge: 5
Morgen,

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?

Im voraus besten Dank für eure Hilfe

Gruß
Goldroger


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 06, 2009 03:01 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 06, 2009 03:09 
Offline
DGL Member

Registriert: Fr Dez 26, 2008 20:06
Beiträge: 5
Wunderbar, das hilft mir wirklich sehr, zumal ich auch VBOs benutze. Ich probiere es später mal. Also nochmal: Vielen Dank.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.021s | 17 Queries | GZIP : On ]