Эффективно копировать образ с хоста в объект буфера пикселей opengl
В настоящее время я перемещаю данные с хоста ЦП в память OpenGL и использую объект пиксельного буфера для этого. Я могу скопировать все изображение так:
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer);
GLubyte * data = (GLubyte *)glMapBuffer(GL_PIXEL_UNPACK_BUFFER,
GL_READ_WRITE);
// copying 4 channel 8 unsigned char data
memcpy(data, cpu_data, rows * cols * 4);
Это на самом деле довольно быстро. Однако теперь мне нужно скопировать прямоугольный образ данных. Итак, по сути, мне нужно будет сделать несколько memcpy для этого, что может привести к снижению производительности, так как мне придется копировать вещи построчно. Мне было интересно, есть ли какой-нибудь более быстрый способ выполнить эту операцию.