Я пытаюсь написать модуль в python, который нарисовал бы массив массивных данных цвета (rgb) на экран. На данный момент я в настоящее время с использованием 3-мерного цветом массива как это:pyopengl buffer dynamic read from numpy array
numpy.ones((10,10,3),dtype=np.float32,order='F') # (for 10x10 pure white tiles)
связывание его в буфер и используя glVertexAttribArray
для передачи данных в массив плиток (точечные спрайтов) (в данном случае 10x10 массив), и это отлично работает для статического изображения.
Но я хочу иметь возможность изменять данные в массиве и иметь буфер, отражающий это изменение без необходимости его восстановления с нуля.
В настоящее время я построил буфер:
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, но даже с флагом GL_READ_WRITE в glMapBuffer я не могу писать в этот массив (не могу даже установить для записываемого флага значение True!). Так что не уверен, что там происходит ... (Я использую код отображения из модуля vbo) – user1483596