Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: OpenGL Наложение текстуры на прямоугольник  (Прочитано 14866 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
asker
Помогающий

ru
Offline Offline
Пол: Мужской

« : 08-12-2005 06:02 » new

Вопрос может быть не по теме Winapi...  Молчу
Использую VC++6, glut.

Задача такая: есть прямоугольник на него надо наложить текстуру (допустим: фон и на нем черным написана буква).
Проблема: Текстура накладывается как-то странно, т.е. не по моим координатам.

Код:
       glNewList(numCube, GL_COMPILE);
glEnable(GL_TEXTURE_2D); // Включение режима нанесения текстуры

// !!!РАБОТА С МАТЕРИАЛАМИ!!!Первый параметр-это сторона плоскости
// которая будет рисоватся с такими значениями для материала
// второй параметр-тип параметра.В нашем случае отражение
// третье-указатель на массив значений отражения
glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE, m_matDif);
// тоже самое,но здесь второй параметр-это излучение света
// третий-указатель на массив значений излучения света
glMaterialfv(GL_FRONT_AND_BACK,GL_EMISSION, m_matEmi);

glBindTexture(GL_TEXTURE_2D, m_pTextureIDs[0]);
glBegin(GL_QUADS); // передняя грань куба
glNormal3f(0,0,-1); // это нормаль(перпендикулярный к плоскости вектор) определенная
// нами. Она влияет на то как будет отражаться свет.
// Используется при подсчете освещенности плоскости четыре
// вершины
glTexCoord3f(0, 0, 0);
glVertex3f(0,0,0);
glTexCoord3f(1, 0, 0);
glVertex3f(1,0,0);
glTexCoord3f(1, 1, 0);
glVertex3f(1,1,0);
glTexCoord3f(0, 1, 0);
glVertex3f(0,1,0);
glEnd();
                glDisable(GL_TEXTURE_2D); // Выключаем режим наложения текстуры

glEndList(); // закрываем дисплейный лист

Кстати, еще вопрос про координаты, а как узнать скольким пикселям соответствует 1, т.е. я рисую прямоуг. высотой и шириной = 1, а что это значит?
Записан

С уважением, asker
asker
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 08-12-2005 13:03 » 

Эту проблему решил, надо вначале добавить 2 строчки:
                glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
      glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);


Теперь другая проблема:
У меня куб, на каждой гране своя тектура (должна быть).
Получается так:
делаешь текущей i-ую текстуру, рисушь грань.
В итоге получается, что он накладывает текстуры на переднюю и заднюю грань куба, а остальные грани становятся очень прозрачными.

Подскажите пожалуйста, кто-нибудь
Записан

С уважением, asker
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines