OpenGL: Почему 1 текстура в памяти может столько МБ занимать?
У меня есть текстура размером 2048х1152 пикселей RGB, если по расчетам, то память, которую она должна занимать - это 2048 * 1152 * 3 = 7 МБ, а на самом деле в диспетчере задач память из 21 500 КБ (до загрузки текстуры) увеличивается аж на 46 500 КБ (после загрузки), явно не на 7 МБ увеличение происходит... Странно... PACK_ALIGNMENT и UNPACK_ALIGNMENT установлены в 1, то есть текстуры в памяти утрамбовано хранятся, не понятно, кто с подобным сталкивался? Может какие идеи есть, почему так?
К слову, аудио загружается нормально, к примеру, если OGG после распаковки загрузить в память и проиграть, то память увеличится ровно на размер "распакованного" звука.
Если использовать сжатие (быстрое, например), то размер занимаемой памяти из 21 500 КБ увеличивается только на 24 500 КБ, то есть на 3 МБ, что в принципе логично
Есть у меня предположение почему, скорее всего расчёт используется для видеопамяти, а не для оперативной, т. е. в памяти видеокарты.
Теперь по поводу твоих расчётов, значит 2048 пикселей по ширине * 1152 пикселей по высоте = 2 359 296 чего? совершенно не бит, байт, килобайт или мегабайт, а пикселей. Если их поделить на миллион получаться мегапиксели от камеры, я всегда так делаю. Сколько бит на пикселей ты не знаешь (хотя предположил что 3).
Почему 2048 * 1152 * 3 почему на 3?. RGB это 32-х битное цветовое пространство, 32 бит на пиксель один то есть. Говорят в них 24 бита на цвет (цветовая палитра) и 8 на прозрачность. Но для памяти это 32, поэтому надо умножать на 32 бита, а не на 3, как я понял красный зелёный синий.
Итак 2048 пикселей * 1152 пикселей * 32 бита на пиксель = 75 497 472 бит (заняли пиксели, а пикселей тут 2 359 296 просто их умножили на 32). Теперь переводим к мегабайты:
75 497 472 бит / 8 раз = 9 437 184 байт.
9 437 184 байт / 1024 раз = 9 216 килобайт.
9 216 килобайт / 1024 = 9 мегабайт.
Итого 9 мегабайт и это странно, и это только для формата bmp если записывать его нажёсткий диск примерно так и будет, а вот в другие форматы будет другой размер. Но надо глядеть в видеопамять может оно там и смотреть не преобразовывается ли (увеличивается/сжимается) оно.
Извини что ничем не помог.