Как вывести картинку средствами opengl в linux

Рейтинг: 1Ответов: 1Опубликовано: 10.06.2011

Есть файл картинки например в *.bmp. Как показать ее на форме(создана с помошью glut). Не могу разобраться самостоятельно. Покажите пример кода или дайте сылку простых исходников где это используется. Желательно конечно чтобы можно было как можно больше форматов картинок загружать. Обязательно надо чтобы работало под linux.

Ответы

▲ 2Принят

Можно загрузить файл обычным образом, а затем отобразить вызовом функции glDrawPixels.

glDrawPixels(width, height, GL_RGB, GL_FLOAT, pixels);

Дополнено.

Если нужно читать bmp, то это просто: fopen/fread/fclose и т.п. При этом выделение массива пикселей происходит согласно формату файла. Чтение произвольной графики стандартными средствами не осуществить, нужно подключать внешнюю библиотеку. Можно взять FreeImage, ImageMagic, DevIL, CImg Library, Boost GIL или еще что-нибудь.

Например, на FreeImage загрузка битмапа выглядит так:

FIBITMAP *bitmap = FreeImage_Load(FIF_BMP, “picture.bmp”, BMP_DEFAULT);

if (bitmap) {    
    // Загружено
    // Отображаем в OpenGL 
    FreeImage_Unload(bitmap);
}

По стилистике кода DevIL достаточно хорошо подходит к OpenGL. А после того, как получен массив пискелей, он уже отображается с помощью приведенной выше функции glDrawPixels.