Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OpenGL

Как вывести на экран картинку в формате .BMP ?

В OpenGL нет поддержки графических файлов. Впрочем, для x86-платформ Microsoft распространяет статическую библиотеку GLAUX.LIB - с помощью нее можно загружать в память файлы .DIB и .BMP (в формате RGB 8-8-8). Вывести загруженную картинку на экран можно, как минимум, двумя способами:

Первый - функция glDrawPixels, которая рисует картинку, начиная с текущей растровой позиции (glRasterPos...). Недостаток - каждый вывод картинки вызывает ее передачу по системной шине в видеокарту. Затем, могут быть проблемы с отсечением вышедшей за пределы экрана части.

Второй - загрузка изображения в текстурную память с помощью glTexImage2D, а затем вывод четырехугольника (GL_QUADS) с этой картинкой в качестве текстуры. Достоинство - более быстрая работа при наличии на карте большого объема памяти (от 8 Мб). Недостаток - излишняя сложность метода, и ненужные геометрические преобразования, которые вынуждено выполнять устройство.

Кроме того, при втором способе размеры текстуры по горизонтали и вертикали должны быть степени числа 2. Можно, конечно, округлить размер картинки вверх до следующих степеней 2, а изображение копировать в текстурную память как часть текстуры, с помощью функции glTexSubImage2D (эта функция допускает любые размеры, в том числе и не ^2). Но это приведет к неоправданному расходованию памяти. Например, если картинка имеет размер 640x480, 24 бита/цвет, то потребуется текстура 1024x512; при этом ~40 % выделенной текстурной памяти не будет использоваться (640*480*3 / 1024*512*3 = 0.58)

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог