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

Aktuelle Zeit: Di Mai 14, 2024 06:14

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Jan 28, 2004 14:02 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Eine Frage bezüglich der Übergabe von Vertexattributen in GLslang (die Antwort kann wahrscheinlich auch in der Dokumentation nachzulesen sein, da ich es zur Zeit aber ohnehin nicht nutzen kann, mag ich mir das Ganze jetzt nicht geben):

Wie wird eigentlich die Übergabe von Vertexattributen in glSlang realisiert, können zusätzlich zu den "normalen" Attributen (glNormal, glColor, ...) ebenfalls die allgemeinen Attribute von GL_ARB_vertex_program verwendet werden, sind also glVertexAttribxxx auch in glSlang integriert, oder sollte hier ein anderer Mechanismus verwendet werden (und wie funktioniert dann die Übergabe von allgemeinen Vertexattributen mit VertexArrays oder VBOs)?

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 28, 2004 14:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
In der Dokumentation steht das leider alles andere als konkret drin, aber es geht eigentlich recht logisch. Du musst in deinem Shader eine attribute-Variable angeben, in der dann deine Vertexattribute abgelegt werden, da es sowas wie gl_VertexAttribX im glSlang-Shader leider nicht gibt. Dann musst du OpenGL via glEnableVertexAttribArrayARB mitteilen, das an der Position dieser Variable (die du vorher mittels glGetAttribLocationARB ermittelt hast) ein Vertex-Array-Attribut "liegt", und dann kannste via glVertexAttribPointerARB dein Attributarray übergeben. Für ein VBO sieht das dann in etwa so aus :
Code:
  1. APos := glGetAttribLocationARB(Shader.ProgramObject, 'MeinParameterName');
  2. glEnableVertexAttribArrayARB(APos);
  3. glVertexAttribPointerARB(APos, 3, GL_FLOAT, False, 0, nil);

Im Shader steht dann sowas :
Code:
  1. attribute vec3 MeinParameterName


Wie das in glSlang geregelt wurde gefällt mir zwar nicht sonderlich, aber das ARB wird hoffentlich wissen was es da tut. Kleine Warnung : glVertexAttribPointerARB scheint auf ATI-Treibern nicht zu funktionieren und resultiert bei mir (bei Lars gings auch nicht) immer in ner Exception im OpenGL-Treiber. Ich muss Vertexattribute daher gezwungenermaßen mittels Texturkoordinaten übergeben.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 28, 2004 14:30 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
hmhm, danke, die folgenden Einsprungpunkte sind ja bereits in GL_ARB_vertex_program definiert:

Code:
  1.   glVertexAttribPointerARB: procedure(index: GLuint; size: GLint; atype: GLenum; normalized: GLboolean; stride: GLsizei; pointer: pointer); stdcall;
  2.   glEnableVertexAttribArrayARB: procedure(index: GLuint); stdcall;
  3.   glDisableVertexAttribArrayARB: procedure(index: GLuint); stdcall;


Bedeutet das, dass sie in GLslang nochmals auftreten - dann hätte man ja auch gleich die gesamten glVertexAttribxxx Einsprungpunkte übernehmen können, und sich so eventuell einiges erspart.
glVertexAttribPointerARB funktioniert übrigens auf der GFFX einwandfrei, verwirrend war (für mich) anfangs nur, dass die generischen Vertexattribute zumindest bei GL_ARB_vertex_program sich großteils mit den herkömmlichen Attributen überschneiden.

Na ja, ich schätze die GLslang Implementierung wird sich noch ziemlich ändern, bis sie in den Core übernommen wird (das ist ja auch der Sinn des ARB), und auch an der nächsten Version von GL_ARB_vertex_program und GL_ARB_fragment_program darf noch gefeilt werden.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


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 13 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.023s | 17 Queries | GZIP : On ]