OpenGL в Delphi

       

Пример на использование команды glBitmap




В этом примере для наглядности растр выводится желтым.

Замечание
Обратите внимание, что вызов команды glRasterPos не только задает позицию вывода растра, но и позволяет использовать цвет для его окрашивания. Без вызова этой команды текущий цвет на выводимый растр не распространяется, он будет выводиться белым.

Следующий пример, проект из подкаталога Ех1б, позволяет понять, каким образом выводятся символы, подготовленные командой wgiUseFontBitmaps. Массив rasters представляет собой битовый образ 95 символов, коды которых располагаются в таблице с 32 по 127 позицию. В примере вручную сделано то, что получается при вызове команды wglUseFontBitmaps. В начале работы приложения вызывается процедура, подготавливающая дисплейные списки, по одному списку для каждого символа:

procedure makeRasterFont;
var
i : GLuint;
begin
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
fontOffset := glGenLists (128); // стартовое смещение имен списков
For i := 32 to 127 do begin
glNewList(i + fontOffset, GL_COMPILE); // список очередного символа
glBitmap(8, 13, 0.0, 2.0, 10.0, 0.0, @rasters [i-32]);
glEndlast;
end;
end;

Каждый список состоит из одного действия, вывода растра, соответствующего очередному символу. Процедура вывода знакома по примеру с объемными символами:

procedure printString(s : String);
begin
glPushAttrib (GL_LIST_BIT);// запомнили стартовое смещение имен списков
glListBase(fontOffset);
glCallLists(Length(s), GL_UNSIGNED_BYTE, PChar(s));
glPopAttrib;
end;

Проект из подкаталога Ex 17 содержит пример вывода монохромного растра, считанного из bmp-файла, с использованием команды glBitmap (Рисунок 6.8).



Содержание раздела