Я использовал WINAPI CreateDIBSection()
для рисования пиксель за пикселем, а затем перешел к DC. Мне любопытно. Что происходит с базовыми структурами данных CreateDIBSection? Структура BITMAINFO хранит ширину и высоту экрана/клиента. Затем VOID **ppvBits обрабатывает 24-битные цвета. Так можно ли все это рассматривать как трехмерный массив? Подобно этому
число пикселей[высота][ширина][цвет]?
Причина, по которой я спрашиваю, заключается в том, что эта функция CreateDIBSection()
работает очень-очень быстро, но если я создам аналогичный массив (900*1800*(246*256*256)) он будет очень-очень медленным.
Как Microsoft удается использовать этот метод так быстро и эффективно? Я пробовал все. Int*** указатели на указатель на указатель, int*** malloc
, пробовал NEW
и т. д., все они очень медленные на больших массивах. Мне просто любопытно, как я могу построить трехмерный массив, который также работает. Есть предположения?
Мне нужен массив около 20000x1800x100000. CreateDIBSection()
сохраняет это быстро и без проблем. Но как насчет стандартного динамического массива C/C++?
Мне нужно сохранить то, что находится в CreateDIBSection()
и BITMAPINFO
во втором массиве.
CreateDIBSection
илиmalloc
. - person Jonathan Potter   schedule 08.07.2015