1 Это стандартный аппаратно-независимый формат файлов изображений, предложенный фирмой Microsoft. Из Интернета можно получить множество файлов в формате BMP, а также готовых инструментов для преобразования других графических форматов в ВМР-файлы.

2 Более быстрый способ с использованием побитовых операторов С++выглядит так: с ((i&8)A(j&8))*255;.

8.5. Добавление текстуры к граням пикселом загружается величина (с, с, 0), где с принимает значения вперед и назад от 0 до 255 через каждые 8 пикселов. (Сходный «метод чередования» был использован в упражнении 2.3.1.) Здесь у шахматной доски имеется два цвета - черный и желтый, имеющие коды соответственно (0,0,0) и (255,255,0). Функция makeCheckerboard возвращает адрес первого пиксела пиксельной карты, который впоследствии передается в подпрограмму glTexImageO для создания текущей текстуры в OpenGL.

Когда пиксельная карта сформирована, необходимо связать ее с уникальным целочисленным «именем», чтобы однозначно ссылаться на него в OpenGL. В нашем примере шести структурам назначены следующие произвольные имена: 2001, 2002,..., 20061. Текстура создается посредством определенных вызовов OpenGL, которые мы инкапсулируем внутри следующего метода:

void RGBpixmap :: setTextureCGLuint textureName) {
glBindTexture(GL_TEXTURE_2D,textureName): glTexParameteri(GL_TEXTURE_2D. GL_TEXTUR E_MAG_FILTER.GL_NEAREST):
glTexParameteri(GL_TEXTURE_2D. GL_TEXTURE_MIN_FILTER.GL_NEAREST):
glTexImage2D(GL TEXTURE 20. 0. GL_RGB.nCols.nRows.O. GL_RGB.GL_UNSIGNED_BYTE. pixel):
}

Вызов подпрограммы glBindTextureO связывает заданное имя с формируемой текстурой. Если же такой вызов будет произведен позднее, то, как мы увидим, он сделает данную текстуру «активной».

Вызовы подпрограммы glTexParameteri О указывают, что пиксел должен быть закрашен тем тексе-лем, координаты которого ближе всего к центру данного пиксела, всякий раз, когда данную текстуру требуется увеличить или уменьшить в размерах. Эта подпрограмма работает быстро, однако может приводить к ступенчатости изображения (aliasing). Вопросы фильтрации изображений и их сглаживание будут рассмотрены позднее, в главе 10. Наконец, вызов подпрограммы glTexImage2D() связывает пиксельную карту с текущей текстурой. Этот вызов описывает текстуру как двумерную и состоящую из байтовых RGB-троек, задает ей ширину, высоту и адрес в памяти (pixel) первого байта битовой карты.


⇐ Предыдущая| |Следующая ⇒