J'utilise une DLL tierce pour charger des données d'image brutes, et je veux utiliser ces données brutes comme texture dans OpenGL. Cependant, la fonction c renvoie un void *, et j'ai besoin de le convertir pour qu'il fonctionne comme le paramètre "pixels" de glTexImage2D. En ce moment, mon code ressemble à quelque chose ceci:Utilisation de ctypes.c_void_p comme entrée de glTexImage2D?
data = c_void_p(vdll.vlImageGetData())
glTexImage2D(GL_TEXTURE_2D, 1, GL_RGB8, 1024, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, data)
Cependant, je reçois un TypeError se plaindre que les données "ne peut pas être converti en pointeur. Est-ce que quelqu'un sait comment faire fonctionner cela?
Édition: Conçu. En fait ce que je fais est la suivante:
data = create_string_buffer(BUFFER_SIZE)
data = dll.vlImageGetData()
glTexImage2D(GL_TEXTURE_2D, 1, GL_RGB8, 1024, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, data)
Cela ne fonctionne pas car pyopenGL s'attend à ce que le paramètre pixels soit une chaîne brute. Je ne peux pas utiliser c_char_p car cela attend une chaîne terminée par un caractère nul. J'ai besoin d'un moyen de convertir ce pointeur vide en une chaîne python brute. – aeflash
Avez-vous déjà vu http://osdir.com/ml/python.ctypes/2004-12/msg00002.html? Si oui et que cela n'a pas aidé, vous devriez fournir un petit script autonome que nous pouvons exécuter localement. –