Sto provando a scrivere un modulo in python che disegnerà una serie numerica di dati a colori (rgb) sullo schermo. Al momento sto attualmente utilizzando una matrice colori dimensionale 3 simili:lettura dinamica del buffer pyopengl dall'array numpy
numpy.ones((10,10,3),dtype=np.float32,order='F') # (for 10x10 pure white tiles)
legandolo ad un buffer e utilizzando un glVertexAttribArray
per trasmettere i dati ad un array di piastrelle (sprites punto) (in questo caso un 10x10 array) e questo funziona bene per un'immagine statica.
Ma voglio essere in grado di modificare i dati nell'array e fare in modo che il buffer rifletta questo cambiamento senza doverlo ricostruire da zero.
Attualmente ho costruito il buffer con:
glBufferData(GL_ARRAY_BUFFER, buffer_data.nbytes, buffer_data, GL_DYNAMIC_DRAW)
dove buffer_data è la matrice NumPy. Cosa (se non altro) potrei passare invece (qualche puntatore in memoria, forse?)
Forse buffer_data.ctypes.data? Anch'io sono curioso; facci sapere se lo capisci. – Luke
Ho progredito un po ', provando ora a usare glMap/UnmapBuffer. Posso leggere con successo il contenuto del buffer in un array usando ctypes e numpy.frombuffer, ma anche con il flag GL_READ_WRITE in glMapBuffer non riesco a scrivere su questo array (non posso nemmeno impostare il flag scrivibile su True!). Quindi non sono sicuro di cosa stia succedendo ... (sto usando il codice di mappatura dal modulo vbo) – user1483596