В дальнейшем, если не оговаривается иное, рассматривая операции с буферами, будем считать, что речь идет о буферах цвета, чаще всего - буфере кадра, хотя аналогичные операции можно применять и в отношении других буферов. Обращаю ваше внимание на то, что конкретная версия системы, установленная на вашем компьютере, может содержать только часть из перечисленных выше буферов, причем разрядность (глубина) буферов также меняется от версии к версии.
OpenGL работает с позицией растра (raster position), не принимая во внимание информацию о размещении геометрических объектов на экране. Параметр позиция растра является одним из компонентов текущего состояния графической системы. Можно считать, что для графической системы позиция растра определяется положением курсора в координатах видового окна, начиная с которой размещается специфицированный в очередных операциях растровый примитив (массив пикселей). Позиция растра устанавливается в OpenGL с помощью одного из вариантов функции glRasterPos*( ). Например, в качестве аргументов вызова этой функции можно использовать набор координат (х, у. z) в формате с плавающей точкой, причем в отношении точки, заданной этим набором, все текущие преобразования вида и проецирования выполняются прежде, чем она будет подвергнута растровому преобразованию:
glRasterPos3f(х, у, z);
9.6. Операции с пикселями в OpenGL
Эта позиция, как и все вершины, сохраняется в формате четырехмерного вектора однородных координат. Но после определения положения точки в координатах видового окна запись кодов засветки пикселей или иной двоичной информации, начиная с этой позиции, требует задания аргументов в единицах растра, т.е. в формате целых чисел. Считается, что центры пикселей размещаются на середине интервала между соседними целыми числами.
9.6.2. Использование растровых образов символов шрифта В этом разделе будет продемонстрирована технология работы с позицией растра на примере операций с текстовыми шрифтами. В главе 3 уже шла речь о том, что вывод на экран текста, представленного растровым шрифтом, осуществляется значительно быстрее, чем текста, представленного штриховым шрифтом. Определенный шрифт специфицирует набор символов единого начертания, или стиля, например Times, Courier, Computer Modern. Как правило, каждый шрифт включает несколько наборов символов разных размеров, например размером 10 пунктов или 24 пункта3, и разных начертаний - курсив, полужирный, с подчеркиванием. Единица измерения высоты шрифта- пункт- соответствует 1/72 дюйма. Но, когда мы будем говорить о растровом шрифте, речь будет идти только об одном наборе символов единого размера и начертания. Так, шрифт размером 8x13, который поддерживается библиотекой GLUT, обозначается системной константой GLUT BITMAP_8_BY_13, а пропорциональный шрифт4 высотой 10 пунктов- константой GLUT_BIТМАР_ТIMES_R0MAN_10. Как правило, шрифт включает 128 или 256 символов. Каждый символ растрового шрифта задается определенным растровым трафаретом (рис. 9.23), представленным в виде двоичного кода. Учтите, что при таком представлении растрового шрифта его размер на экране зависит от разрешения конкретной системы отображения, что принципиально отличает растровые шрифты от штриховых.