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: APos := glGetAttribLocationARB(Shader.ProgramObject, 'MeinParameterName'); glEnableVertexAttribArrayARB(APos); glVertexAttribPointerARB(APos, 3, GL_FLOAT, False, 0, nil);
Im Shader steht dann sowas :
Code: 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.
|