Комп’ютерна графіка та стандарт OpenGL
Перевірку видимості можна виконати за допомогою функцій буфера глибини OpenGL, описаних у розділі 9.14. Під час обробки кожної видимої непрозорої поверхні записуються кольори поверхні та глибина поверхні. Однак при обробці видимої прозорої поверхні потрібно записати тільки її кольори, оскільки поверхня не затінює фонові поверхні. Отже, при обробці кожної прозорої поверхні буферу глибини за допомогою функції glDepthMask надається статус “тільки читання”.
Якщо обробляти об'єкти в порядку зменшення глибини, режим запису буфера глибини вимикається, а потім знову вмикається при обробці кожної прозорої поверхні. В якості альтернативи можна розділити об'єкти на два класи, як у прикладі наступного коду.
/* Обробити всі непрозорі поверхні. */ glEnable (GL_BLEND); glDepthMask (GL_FALSE);
glBlendFunc (GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
/* Обробити усі прозорі поверхні. */ glDepthMask (GL_TRUE); glDisable (GL_BLEND); glutSwapBuffers ( ); Якщо прозорі об'єкти не обробляються в строгому порядку від фону до переднього плану, підхід розфарбовує поверхні не завжди точно. Втім, для простих сцен він є простим та ефективним методом генерації приблизних уявлень прозорих ефектів.
ФУНКЦІЇ ВІЗУАЛІЗАЦІЇ ПОВЕРХНІ OpenGL
Поверхні можна відобразити за допомогою процедур OpenGL, використовуючи візуалізацію поверхонь постійної інтенсивності або візуалізацію Гуро. OpenGL не має процедур для застосування візуалізації поверхонь по Фонгу, побудови ходу променів або методів дифузного відображення. Метод візуалізації вибирається за допомогою функції
glShadeModel (surfRenderingMethod); Візуалізація поверхонь постійної інтенсивностівибирається шляхом надання символьного значення GL_FLAT параметру surfRenderingMethod. Для затінення методом Гуро (за замовчуванням) використовується символьна константа GL_SMOOTH.
Коли функція glShadeModel застосовується до мозаїчної криволінійної поверхні, такої як сфера апроксимована багатокутною сіткою, процедури візуалізації OpenGL використовують для розрахунку кольору багатокутника вектори нормалі до поверхні у вершинах багатокутника. Декартові компоненти вектора нормалі до поверхні OpenGL задаються командою
glNormal3* (Nx, Ny, Nz); У цій функції використовуються суфікси-коди b (byte), s (short), i (integer), f (float) та d (double). Крім того, якщо масиві задаються векторні компоненти, додається код-суфікс v. Значення типу byte, short та integer перетворюються на формат з плаваючою комою (float) з діапазону від -1,0 до 1,0. Функція glNormal визначає компоненти вектора нормалі до поверхні як значення параметра стану, які застосовуються до всіх наступних команд glVertex, а за замовчуванням вектор нормалі йде в позитивному напрямку осі г: (0.0, 0.0, 1.0).
При плоскій візуалізації поверхонь для кожного багатокутника потрібний лише один вектор нормалі до поверхні. Таким чином, нормаль до всіх багатокутників можна, наприклад, поставити так.
Програмування з використанням OpenGL
Організація робочого простору – проблема, актуальна для будь-якого офісу чи контори.
Якщо якихось десять років тому подивитися улюблений фільм можна було лише по телевізору або в кінотеатрі, то сьогодні індустрія дозвілля розвинена значно більше і вже немає необхідності стежити за програмою телепередач, достатньо мати інтернет
Хто такі бізнесмени, і де їх знайти
Поради про те, як боротися звірусами