Russian style multimedia group

Накладення Текстур в OpenGL: Введення.

Перша річ, яка повинна мати місце в процесі завантаження текстури - виклик glBindTexture. glBinndTexture повідомляє OpenGL "id" текстури з якою ми будемо працювати. "Id" текстури це всеголішь номер який ви будете використовувати для того, щоб отримати доступ до ваших тексурам. Ось приклад виклику.

Цей виклик створить текстуру пов'язану з ID 13 активної текстури. Інші виклики пов'язані з OpenGL текстуруванням працюватимуть саме з цієї текстурою. Важливо щоб ви запам'ятали цей номер, так як він знову знадобиться пізніше для фактичного застосування текстури до геометрії.

Виклик glPixelStorei повідомляє OpenGL як вирівняні дані, які будуть завантажуватися. Виклик glPixelStorei показаний нижче.

Цей виклик повідомляє OpenGL про те, що піксельні дані, які будуть оброблятися, вирівняні в байтовому порядку, це означає що дані мають по однобу байту на кожен компонент, один для червоного, один для зеленого і один для синього. Дотримуйтеся перегляду, описана вище якщо ви не маєте якийсь екзотичний вид даних, у чому я сильно сумніваюся. Вирівнювання даних ймовірно зміниться в міру вашого просування в OpenGL текстуруванні.

glTexParameteri встановлює різні параметри для поточної OpenGL текстури. Параметри і їх ефекти на текстуру - окрема тема. Якщо Ви хотіли б розглянути, що робить кожен запит будь ласка дивіться на посилання, наведені в кінці цього документа. Кожна з цих ліній важлива, так що переконаєтеся в наявності кожної у вашій програмі.

Чому я пропустив їх опис, якщо вони є важливими? Властивості, які Ви можете змінюватися цими запитами, важливі для того, хто більш просунутий. Для тих, хто тільки вчиться, вони повинні сприйматися як належне. Як тільки Ви повністю зрозумієте того, як працює накладення текстур в OpenGL, Ви повинні розглянути ці властивості.

glTexEnvf встановлює змінні навколишнього середовища для поточної текстури. Що це робить - повідомляє OpenGL, як текстура буде діяти, коли вона буде рендерится в сцену. Нижче - типовий запит, який я використовую в моїх програмах.

Що він робить - він встановлює активну текстуру в GL_MODULATE. Ознака GL_MODULATE дозволяє застосовувати ефекти типу освітлення і забарвлення до вашої текстурі. Якщо Ви не хочете щоб освітлення і фарбування застосовувалося до вашої текстурі, і Ви хотіли б показати текстуру незмінною, коли застосовується забарвлення, замініть GL_MODULATE на GL_DECAL.


Це все люди! Після того, як Ви зробили все вище описане, текстура буде завантажена і готова застосовуватися до вашої геометрії. Наступна секція обговорить застосування текстури до геометрії. Якщо це не здається ясним Вам, дивіться на секцію посилань в кінці цього документа для прикладу накладення текстури.

Добре тепер, коли Ви маєте вашу текстуру завантаженість, Ви хочете робити щось з нею, поки ж вона тільки марно стирчить в пам'яті. Процес для застосування текстури до геометрії дуже залежить від того з якими даними Ви маєте справу і як Ви хотіли б використовувати їх. Через це факту в цій секції я приведу Вам деякі вказівки для накладення текстур, дам приклад того як текстурувати квадрат і поясню текстурну систему координат.

  1. Переконайтеся, що текстурирование включено. Це робиться за допомогою виклику glEnable (GL_TEXTURE_2D).
  2. Переконайтеся, що Ви призначили текстуру перш, ніж Ви зробите будь-який вид glBegin / glEnd. Не можна призначати текстуру всередині begin / end частини.
  3. Переконайтеся, що Ви визначаєте координату текстури перед кожним Вертекс, який становить поверхню. Якщо Ви маєте 3 вершини, зразок для структури, яка завдає на карту трикутник був би подібно до цього: TexCoord; VertexCoord; TexCoord; VertexCoord; TexCoord; VertexCoord;
  4. Переконайтеся, що Ви зберігаєте ваш id текстури в змінних, це робить речі більш легкими.
  5. Використовуйте glGenTextures. Легкий спосіб отримати вільний id текстури.