我想在Python中編寫一個模塊,它將繪製一個顏色數據(rgb)的numpy數組來屏幕。目前我目前使用的是3維顏色陣列是這樣的:從numpy數組動態讀取pyopengl緩衝區
numpy.ones((10,10,3),dtype=np.float32,order='F') # (for 10x10 pure white tiles)
綁定到緩衝器並使用glVertexAttribArray
到數據廣播到瓦片(點精靈)的陣列(在此情況下一個10×10數組),這對靜態圖像工作正常。
但我希望能夠更改數組中的數據並使緩衝區反映此更改,而無需從頭重新構建它。
目前我已經建立了緩衝區:
glBufferData(GL_ARRAY_BUFFER, buffer_data.nbytes, buffer_data, GL_DYNAMIC_DRAW)
其中buffer_data是numpy的陣列。我可以通過什麼(如果有的話)(可能是一些指向內存的指針?)
也許buffer_data.ctypes.data?我也很好奇;讓我們知道你是否知道它。 – Luke
我已經進展了一下,現在嘗試使用glMap/UnmapBuffer。我可以成功使用ctypes和numpy.frombuffer將緩衝區內容讀入數組,但即使使用glMapBuffer中的GL_READ_WRITE標誌,我也無法寫入此數組(甚至無法將可寫入標誌設置爲True!)。所以不知道那裏發生了什麼... (我使用vbo模塊的映射代碼) – user1483596