ПрограммированиеПодсказкиГрафика

Использование библиотеки DevIL в Delphi

Автор:

Использование библиотеки DevIL (OpenIL) (для загрузки изображений из графических файлов) в Delphi просто и удобно.

Для начала советую скачать саму библиотеку с официального сайта http://openil.sourceforge.net/. А затем написать простенький модуль для работы с этой библиотекой:

unit DevIL;

interface

uses
  Windows,
  OpenGL2;

const
  OPENILDLL = 'DevIL.DLL';

  procedure ilInit; stdcall; external OPENILDLL;
  procedure LoadTexture(FileName: string; var Texture: TGLuint);

implementation

type
  TILenum = LongWord;
  TILboolean = Byte;
  TILint = Integer;
  PILubyte = ^Byte;

const
  IL_IMAGE_WIDTH = $0DE4;
  IL_IMAGE_HEIGHT = $0DE5;
  IL_IMAGE_BYTES_PER_PIXEL = $0DE8;
  IL_IMAGE_FORMAT = $0DEA;

function ilLoadImage(FileName: PChar): TILboolean; stdcall; external OPENILDLL;
function ilGetData: PILubyte; stdcall; external OPENILDLL;
function ilGetInteger(Mode: TILenum): TILint; stdcall; external OPENILDLL;

procedure LoadTexture(FileName: string; var Texture: TGLuint);
begin
  ilLoadImage(PChar(FileName));

  glGenTextures(1, @Texture);
  glBindTexture(GL_TEXTURE_2D, Texture);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  gluBuild2DMipmaps(GL_TEXTURE_2D, ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL),
                    ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT),
                    ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE, ilGetData);
end;

end.

Если вы хотите в полной мере пользоваться этой библиотекой, то советую скачать заголовочный файл в интернете (я думаю его легко можно будет найти). Единственное, чего в том файле может не хватать, так это процедуры LoadTexture, которую вы сможете добавить туда сами (способом Copy-Paste). Главное не забывайте при загрузке приложения производить инициализацию библиотеки (процедура ilInit).

Читайте статью: Библиотека OpenIL

#Delphi, #DevIL, #OpenIL, #изображения

15 октября 2009

Комментарии [4]