Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Проективное текстурирование




Для повышения реалистичности изображений в компьютерной графике применяется текстурирование. Текстура - это одномерное или двумерное изображение поверхности. В библиотеке OpenGL имеется ряд функций для работы с текстурами. Поддержку текстурирования включают командой glEnable(GL_TEXTURE_2D). Так как библиотека рассчитана на работу под различными операционными системами, то она имеет собственный формат хранения изображений. Каждая точка храниться как 24 битное число. При этом первый байт - это красная составляющая, второй – зеленая составляющая, третий - синяя составляющая цвета. Текстуры могут иметь размер только кратный степени 2.

Библиотека OpenGL поддерживает пирамидальную фильтрацию. В этом случае требуется задать несколько текстур для каждого уровня или параметры масштабирования текстур для автоматического расчета уровней. Текстура привязывается к вершине путем задания перед вершиной координат текстуры. Также библиотека OpenGL поддерживает и простой вывод массива пикселов на экран.

Для преобразования изображения в системе Windows в формат, совместимый с библиотекой OpenGL, требуется выполнить следующие действия:

1. Загрузить изображение LoadImage

2. Подготовить структуру BITMAPINFO. Очистить ее нулем. В поле bmiHeader.biSize занести размер поля bmiHeader.

3. Получить параметры загруженного изображение (GetDIBits при задании количества линий 0).

4. Заполнить структуру BITMAPINFO:

bmiHeader.biPlanes=1; // 1 цветовая плоскость;

bmiHeader.biBitCount=24; // количество бит на цветов;

biTexture.bmiHeader.biCompression=BI_RGB; // без компрессии;

biTexture.bmiHeader.biHeight=dwHeight; // установим требуемую высоту;

bmiHeader.biWidth=dwWidth; // установим требуемую ширину;

выделить память под данные. Размер выделяемой памяти можно вычислить как ширина*высоту* количество_байт_на_цвет.

5. Получить данные изображения в требуемом формате (GetDIBits с передачей структуры BITMAPINFO)

6. Для каждого пиксела в полученных данных требуется поменять местами красную и синюю составляющую.

 

Для вывода массива пикселов на экран требуется выполнить следующую последовательность действий:

1. Установить координаты для вывода изображения (glRasterPos3f).

2. Установить параметры масштабирования (glPixelZoom).

3. Отобразить массив пикселов glDrawPixels.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных