Урок 6 - Накладення текстур
Текстура в OpenGL - це простий графічний файл, який відображається на полігоні.
У цьому уроці ми розглянемо 2 види текстур: прості і з альфа-каналом (прозорістю).
Текстуру ми будемо накладати на куб.
Його треба намалювати вручну, щоб не захаращувати код, створіть новий юніт і процедуру RenderBox: Цю процедуру ми будемо використовувати 2 рази.
Позиції для текстури задаються функцією glTexCoord2f (s, t. Single). Вона задає позицію X. Y координати на полігоні. Викликати її слід перед завданням позиції кожної точки полігону.
Для правильного відображення текстури, треба задати параметри відображення, за допомогою функції glTexParameter (тип текстури, тип фільтра, тип фільтрації) в FormCreate. Ну і увімкнути режим накладення текстури в FormCreate. Після ключового слова implementation необхідно записати процедуру самого накладення, тому що її немає в стандартній бібліотеці OpenGL.pas поставляється з Delphi 7. У OpenGL є спеціальний тип даних «Uint». Він зберігає індекс завантаженої текстури в пам'яті.
Тепер потрібно завантажити нашу текстуру при старті програми. Для цього створіть глобальну змінну Tex типу Uint і запишіть наступний код в FormCreate. Файли текстур вже готові і знаходиться в папці з ісходником.
Тут ми завантажуємо текстуру в пам'ять і присвоюємо індекс цієї текстури змінної Tex.
Намалюємо наш кубик:
І накладемо текстуру:
Викликавши один раз glBindTexture. текстура буде накладатися на всі полігони, намальовані після виклику. Для того, щоб текстура не накладаються можна заборонити режим накладення glDisable (GL_TEXTURE_2D). а потім дозволити або накласти нульову текстуру, тобто нічого glBindTexture (GL_TEXTURE_2D, 0).
Готово.
Перейдемо до текстури з прозорістю.
Для того, щоб текстура мала прозорі місця, Вам потрібно включити альфа-тест і задати його параметри в FormCreate. Завантажимо текстуру в створену змінну Glass в FormCreate. Тепер накладемо заздалегідь створену текстуру з альфа каналом:
Ну і нарешті, відобразимо два куба з різними текстурами.
У наступному уроці ми дізнаємося, як зробити туман (дим) в OpenGL.
Урок 5 - Матеріали і освітлення