ВУЗ:
Составители:
Основы компьютерной графики для программистов 87
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
Глава 15. Наложение текстур в OpenGL
Текстура в OpenGL это рисунок или битовая карта (Bitmap), которая накладывается на
грани поверхностей трехмерных объектов. Текстуры создают иллюзию рельефа на
поверхности и придают объектам соответствующую раскраску. Например, если на
поверхность сферы наложить изображение карты мира, то получится модель земного
шара. Если же рисунок изменить на чередующиеся черные и зеленые полосы, то сфера
уже будет больше похожа на арбуз. Безусловно, текстуры играют важнейшую роль при
моделировании трехмерных объектов.
Размеры текстуры в OpenGL по ширине и высоте в пикселах должны быть степенью
двух. Это требование связано с применением оптимизированных алгоритмов рисования
текстур при разложении их в растр. Максимальный размер текстуры ограничен. В
каждой реализации OpenGL его
можно узнать вызовом функции
glGetIntegerv(GL_MAX_TEXTURE_SIZE,@GLMaxTex),
где переменная GLMaxTex типа GLInt после вызова будет содержать значение
максимального размера текстуры в пикселах. Разрешение и запрещение наложения
двумерных текстур достигается командами
glEnable и glDisable c параметром
GL_TEXTURE_2D.
Загрузка образа текстуры
Для загрузки битовой карты в качестве текущей текстуры используется функция
glTexImage2D. Эта функция загружает образ битовой карты в оперативную память с
помощью указателя. Прежде чем изучать параметры этой функции рассмотрим текст
пользовательской функции
LoadBmpTexture, написанной на Object Pascal, которая
загружает текстуру из файла на диске.
function LoadBmpTexture(xSize,ySize: GLInt;Name: string):
pointer;
type
TRGB = record
r,g,b: GLUByte;
end;
PBits = ^TBits;
TBits = Array [0..0] of GLUbyte;
var
i, j: Integer;
bitmap: TBitmap;
Size: GLInt;
Bits: PBits;
begin
bitmap := TBitmap.Create;
bitmap.LoadFromFile(Name); //
загружаем текстуру из файла
Size:= xSize*ySize*SizeOf(TRGB);
GetMem(Bits,Size);
// заполнение битового массива
For i:= 0 to xSize-1 do
Основы компьютерной графики для программистов 87 ____________________________________________________________________________________________________________________ Глава 15. Наложение текстур в OpenGL Текстура в OpenGL это рисунок или битовая карта (Bitmap), которая накладывается на грани поверхностей трехмерных объектов. Текстуры создают иллюзию рельефа на поверхности и придают объектам соответствующую раскраску. Например, если на поверхность сферы наложить изображение карты мира, то получится модель земного шара. Если же рисунок изменить на чередующиеся черные и зеленые полосы, то сфера уже будет больше похожа на арбуз. Безусловно, текстуры играют важнейшую роль при моделировании трехмерных объектов. Размеры текстуры в OpenGL по ширине и высоте в пикселах должны быть степенью двух. Это требование связано с применением оптимизированных алгоритмов рисования текстур при разложении их в растр. Максимальный размер текстуры ограничен. В каждой реализации OpenGL его можно узнать вызовом функции glGetIntegerv(GL_MAX_TEXTURE_SIZE,@GLMaxTex), где переменная GLMaxTex типа GLInt после вызова будет содержать значение максимального размера текстуры в пикселах. Разрешение и запрещение наложения двумерных текстур достигается командами glEnable и glDisable c параметром GL_TEXTURE_2D. Загрузка образа текстуры Для загрузки битовой карты в качестве текущей текстуры используется функция glTexImage2D. Эта функция загружает образ битовой карты в оперативную память с помощью указателя. Прежде чем изучать параметры этой функции рассмотрим текст пользовательской функции LoadBmpTexture, написанной на Object Pascal, которая загружает текстуру из файла на диске. function LoadBmpTexture(xSize,ySize: GLInt;Name: string): pointer; type TRGB = record r,g,b: GLUByte; end; PBits = ^TBits; TBits = Array [0..0] of GLUbyte; var i, j: Integer; bitmap: TBitmap; Size: GLInt; Bits: PBits; begin bitmap := TBitmap.Create; bitmap.LoadFromFile(Name); // загружаем текстуру из файла Size:= xSize*ySize*SizeOf(TRGB); GetMem(Bits,Size); // заполнение битового массива For i:= 0 to xSize-1 do http://www.ksu.ru/persons/9134.ru.html
Страницы
- « первая
- ‹ предыдущая
- …
- 85
- 86
- 87
- 88
- 89
- …
- следующая ›
- последняя »