Я занимаюсь работой с пикселями в OpenGL, и все шло хорошо, пока мне не пришлось загружать PNG. Я нашел вещь под названием «Дьявол» и последовал примеру, который я нашел. Он что-то показывает, но это всего лишь случайная радуга. Насколько я могу судить, я делаю это правильно; Я выводю данные в текстовый файл, чтобы проверить его. Я пробовал некоторые другие библиотеки, но их создание немного превосходит мои возможности. Вот мои настройки:DevIL PNG формат для отображения в OpenGL
((In global scope))
unsigned char pixels[160000*3];
ILubyte * bytes ;
((Main))
ilInit();
ilLoadImage("test.png") ;
size = ilGetInteger(IL_IMAGE_SIZE_OF_DATA) ;
bytes = ilGetData() ;
А вот мой рисунок дня:
//Color the screen all pretty
for(int i=0;i<160000*3;)
{
pixels[i] = a;
i++;
pixels[i] = b;
i++;
pixels[i] = c;
i++;
}
//Break the png
for(int i = 0 ; i < size;)
{
if(bytes[i+3] != 255)
{ i+=4;
continue; }
pixels[i] = bytes[i];
i++;
pixels[i] = bytes[i];
i++;
pixels[i] = bytes[i];
i++;
i++;
}
glDrawPixels(
400,
300,
GL_RGB,
GL_UNSIGNED_BYTE,
pixels
);
Я знаю, что выравнивание неправильно; Я исправлю это позже. Проблема в том, что цвета полностью не правильные
P.S. Я знаю, что вы должны использовать текстурированные квадраты
Спасибо, цвет правильный, но я не могу показаться, чтобы альфа отображалась правильно, хотя я убедился, что все было RGBA. Кроме того, есть ли способ конвертировать данные, чтобы я мог отображать его с помощью цикла for? – user2345349
Nevermind, получил его работу, просто упустил некоторые детали, спасибо :) – user2345349