Bonjour à vous tous :-).
Dans le but d'optimisé au maximum mon moteur, et après avoir fait diverses accélérations (Direct State Access, Buffer Storage etc), j'en viens maintenant au vertex binding.
Voilà, quand je lis les conseils de Valve pour le portage de Source, je lis "Il est nécessaire de relier le tampon avant son utilisation. Si cela vous déplaît, vous pouvez utiliser les Vertex Attribute Objects (VAO), mais cela est plus lent sur toutes les implémentations, donc Valve le déconseille. À la place, l'extension ARB_vertex_attrib_binding pourra vous aider et rend le code plus facile à lire.".
Donc voilà, je me renseigne etc, je lis un peu partout que les VAO sont déconseillé, mais je ne trouve pas grande chose sur les Vertex_Attrib_Binding. Donc je décide d'aller voir les spécifications, et là que vois-je?
"void VertexArrayBindVertexBufferEXT(uint vaobj, uint bindingindex, uint buffer, intptr offset,
sizei stride);"
J'en déduis qu'il faut utilisé les VAO?
Bref, je vais commencé à faire mes tests, et là je test, je fais un layout(binding = 0) in vec2 in_Vertex; Et là bim erreur "unknow layout specifer "binding = 0").
Donc je ne comprends pas du tout comment les utilisé...
En continuant ma lecture dans les spéc, je tombe surJ'en déduis que je dois laissé un layout(location = 0) in vec2 vertex; Et pour chaque location on le place sur un "binding point" ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // Set up formats and relative offsets within the interleaved data. VertexAttribFormat(0, 3, FLOAT, FALSE, 0); VertexAttribFormat(1, 3, FLOAT, FALSE, 12); VertexAttribFormat(2, 2, FLOAT, FALSE, 0); VertexAttribFormat(3, 2, FLOAT, FALSE, 8); // Set up attrib->binding mapping VertexAttribBinding(0, 0); VertexAttribBinding(1, 0); VertexAttribBinding(2, 1); VertexAttribBinding(3, 1); // Bind the vertex buffers to binding index 0 and 1. BindVertexBuffer(0, buffer0, 0, 24); BindVertexBuffer(1, buffer1, 0, 16);
Mais est ce que pour faire les choses bien on doit placer tout ça à l'intérieur d'un Vertex Array Object ou est ce vraiment déconseillé?
Merci pour votre réponse :-)
Partager