Правильный способ хранения возврата ilGetData () - байтовый массив без знака IL.
Например,
ILubyte * bytes = ilGetData();
Чтобы выполнить итерацию по нему в цикле for, который вы используете
for(int i = 0; i < size; i++)
{
// Print out each ILubyte one at time
printf("%d\n", bytes[ i ]);
}
Вероятно, вам нужен цикл for, который печатает или выполняет что-то еще со значениями RGB в данном пикселе для всех пикселей изображения.Как отметил Барт, приведенный ниже порядок относится к формату IL_RGBA или RGBA.Если вы используете IL_RGB, то 4 становится 3, а если вы используете IL_BGR или IL_BGRA, то значения красного и синего необходимо переключать, как ожидается.
ILuint width,height;
width = ilGetInteger(IL_IMAGE_WIDTH);
height = ilGetInteger(IL_IMAGE_HEIGHT);
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
printf( "%s\n", "Red Value for Pixel");
printf( "%d\n", bytes[(i*width + j)*4 + 0]);
printf( "%s\n", "Green Value for Pixel");
printf( "%d\n", bytes[(i*width + j)*4 + 1]);
printf( "%s\n", "Blue Value for Pixel");
printf( "%d\n", bytes[(i*width + j)*4 + 2]);
}
}