2010-06-03 24 views

Répondre

4

Vous devez le retourner, désolé. Les données sur le VBO peuvent se trouver loin de votre CPU et être lentes à y accéder, vous devez donc conserver localement toutes les données dont vous avez besoin.

+0

D'accord, merci. La raison pour laquelle c'est un problème est parce que j'utilise C++ et python avec ctypes. Ctypes n'aime pas les structures quand j'ai essayé ce que j'utiliserais pour retourner les deux choses nécessaires. Je pourrais utiliser des variables globales mais cela semble juste une solution ridicule, donc je vais essayer à nouveau les structures. Merci pour la réponse. –

+0

Pouvez-vous passer par référence, de Python à C? C'est une autre façon de "renvoyer" des données d'une fonction; ça pourrait aider. –

+0

Ctypes ne me dérange pas en utilisant des pointeurs, donc j'ai alloué de la mémoire pour un tableau et stocké les données dont j'avais besoin dans ce tableau. Les données sont toutes GLUint donc un tableau est parfait. J'ai utilisé l'opérateur new et delete pour le faire. Cela fonctionne presque complètement maintenant. Au moins, l'écran n'est pas vide. : D Oh chéri. J'ai une fuite de mémoire. Je suppose que ma fonction de suppression n'est pas appelée ... –

1

Peut-être que cela pourrait ne pas être utile pour votre application, vous pouvez utiliser glGetBufferParameteriv avec l'argument GL_BUFFER_SIZE: il renvoie le nombre d'octets de l'objet tampon. Il est difficile de dire que c'est la solution, puisque vous devez connaître le format interne de l'élément buffer (et en fait sa taille en octets), afin d'avoir le nombre d'éléments composant l'objet buffer. Bien sûr, la meilleure solution est de garder la plupart des informations dans une classe représentant l'objet tampon, mais comme je peux le comprendre d'après votre question, cela est difficile à implémenter.

+0

Merci pour votre réponse. ;) J'ai réussi à le faire fonctionner en stockant l'information moi-même. –