Народный учебник по OpenGL


Урок 20. Маскирование - часть 9


 

    if (masking)              // Вкл. маскировка?

    {

 

Если masking ИСТИНА, то мы выводим нашу маску 1 на экран (маска для сцены 1). Заметьте, что текстура прокручивается справа налево (roll добавляется к горизонтальной координате текстуры). Мы хотим, чтобы эта текстура заполнила весь экран, именно поэтому мы и не перемещаемся глубже в экран.

 

      glBindTexture(GL_TEXTURE_2D, texture[1]); // Выбор первой маски текстуры

      glBegin(GL_QUADS);  // Начало рисования текстурного четырехугольника

        glTexCoord2f(roll+0.0f, 0.0f); glVertex3f(-1.1f, -1.1f,  0.0f);  // Низ Лево

        glTexCoord2f(roll+4.0f, 0.0f); glVertex3f( 1.1f, -1.1f,  0.0f);  // Низ Право

        glTexCoord2f(roll+4.0f, 4.0f); glVertex3f( 1.1f,  1.1f,  0.0f);  // Верх Право

        glTexCoord2f(roll+0.0f, 4.0f); glVertex3f(-1.1f,  1.1f,  0.0f);  // Верх Лево

      glEnd();            // Конец рисования четырехугольника

    }

 

Снова мы разрешаем смешивание и выбираем нашу текстуру для сцены 1. Мы накладываем эту текстуру поверх маски. Заметьте, что мы прокручиваем эту текстуру таким же образом, иначе маска и завершающие изображение не совместились.

 

    glBlendFunc(GL_ONE, GL_ONE); // Копирование цветного изображения 1 на экран

    glBindTexture(GL_TEXTURE_2D, texture[2]); // Выбор первого изображения текстуры

    glBegin(GL_QUADS);    // Начало рисования текстурного четырехугольника

      glTexCoord2f(roll+0.0f, 0.0f); glVertex3f(-1.1f, -1.1f,  0.0f);  // Низ Лево

      glTexCoord2f(roll+4.0f, 0.0f); glVertex3f( 1.1f, -1.1f,  0.0f);  // Низ Право

      glTexCoord2f(roll+4.0f, 4.0f); glVertex3f( 1.1f,  1.1f,  0.0f);  // Верх Право

      glTexCoord2f(roll+0.0f, 4.0f); glVertex3f(-1.1f,  1.1f,  0.0f);  // Верх Лево

    glEnd();              // Конец рисования четырехугольника

  }

 

Затем мы разрешаем тест глубины, и отключаем смешивание. Это предотвращает странные вещи, происходящие от случая к случаю в остальной части нашей программы. :)




- Начало -  - Назад -  - Вперед -