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



             

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


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

        glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.1f,  1.1f,  0.0f);  // верх Лево

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

    }

Теперь, когда мы вывели нашу маску на экран, пришло время снова изменить режим смешивания. На сей раз, мы собираемся, указать OpenGL, что надо копировать на экран любую часть нашей цветной текстуры, которая НЕ черная. Поскольку завершающая текстура - точная копия маски, но с цветом, выводятся на экран только те части нашей текстуры, которые попадают сверху черной части маски. Поскольку маска черная, ничто с экрана не будет просвечивать через нашу текстуру. И с нами остается сплошная текстура, плавающая сверху по экрану.

Заметьте, что мы выбираем второе изображение после выбора завершающего режима смешивания. При этом выбирается наше цветное изображение (изображение, на котором основана вторая маска). Также заметьте, что мы выводим это изображения с правого верхнего угла маски. Те же самые текстурные координаты, те же самые вершины.

Если мы не выведем маску, наше изображение будет скопировано на экран, но оно смешает с тем, что было на экране.

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

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

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

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

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

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

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

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

  }

Если scene была ЛОЖЬ, мы выведем первую сцену (моя любимая).

  else                  // Иначе

  {

 

Вначале мы проверяем, включена ли маскировка, точно так же как в коде выше.




Содержание  Назад  Вперед