Estoy tratando de escribir un módulo en python que dibuje una numpy matriz de datos de color (rgb) en la pantalla. En el momento actualmente estoy usando una matriz de color dimensional 3 como esto:pyopengl buffer dynamic read from numpy array
numpy.ones((10,10,3),dtype=np.float32,order='F') # (for 10x10 pure white tiles)
unión a un tampón y el uso de un glVertexAttribArray
para transmitir los datos a una serie de azulejos (sprites de puntos) (en este caso un 10x10 array) y esto funciona bien para una imagen estática.
Pero quiero poder cambiar los datos en la matriz y hacer que el búfer refleje este cambio sin tener que volver a generarlo desde cero.
Actualmente he construido con el buffer:
glBufferData(GL_ARRAY_BUFFER, buffer_data.nbytes, buffer_data, GL_DYNAMIC_DRAW)
donde buffer_data es la matriz numpy. ¿Qué (si hay algo) podría pasar en su lugar (algún puntero en la memoria, tal vez?)
Quizás buffer_data.ctypes.data? Tengo curiosidad también; Háganos saber si lo resuelve. – Luke
He progresado un poco, tratando de usar glMap/UnmapBuffer. Puedo leer con éxito los contenidos del búfer en una matriz usando ctypes y numpy.frombuffer, pero incluso con el indicador GL_READ_WRITE en glMapBuffer no puedo escribir en esta matriz (¡ni siquiera puedo configurar la marca de escritura en True!). Así que no estoy seguro de lo que está pasando allí ... (Estoy usando el código de mapeo del módulo vbo) – user1483596