Bonjour,
Quand on effectue :
Peut-on libérer le pointeur pvu après l'appel ?Code:
1
2
3
4 bgfx::VertexBufferHandle vbh = bgfx::createVertexBuffer( bgfx::makeRef(pvu, posu * sizeof(float)), PosTVertex::ms_layout );
Version imprimable
Bonjour,
Quand on effectue :
Peut-on libérer le pointeur pvu après l'appel ?Code:
1
2
3
4 bgfx::VertexBufferHandle vbh = bgfx::createVertexBuffer( bgfx::makeRef(pvu, posu * sizeof(float)), PosTVertex::ms_layout );
Hello,
Alors, en gros, non, tu ne peux pas libérer pvu tout de suite après avoir appelé bgfx::createVertexBuffer avec bgfx::makeRef. Bgfx a besoin de ces données pendant au moins deux frames pour pouvoir les utiliser.
Si tu le libères trop tôt, ça risque de planter ou de bugger l'affichage.
Il faut attendre un peu ou utiliser une autre méthode si tu veux gérer la mémoire différemment.
https://github.com/bkaradzic/bgfx/issues/499
OK mais je le libére quand ????
Il y a 3 points d'interrogations en trop !
Attends au moins deux appels à bgfx::frame() avant de libérer la mémoire pointée par pvu. Après ça, normalement, c'est bon.
En théorie, oui, tu peux libérer le pointeur pvu dès que tu appelles bgfx::destroy(vbh).
Cependant, garde en tête la règle des deux frames après l'appel à bgfx::createVertexBuffer avant de modifier ou libérer la mémoire si tu ne détruis pas le VertexBufferHandle immédiatement.