Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2018, 23:22   #1
SeemaN_tm
Пользователь
 
Регистрация: 03.02.2011
Сообщений: 16
По умолчанию Наложение отраженной текстуры.

Приветствую.
Интересует вопрос. Как отразить текстуру в частности относительно оси Y.

Если конкретнее, то:
Написал загрузчик нескольких форматов изображения (png, psd и ещё пару специфических). В этом загрузчике, сразу переворачивается относительно оси Y. Это из-за того, что ось Y в OpenGL "инвертирована".
Если:
1. Загруженное изображения преобразовать в текстуру.
2. Выполнить рендер этой текстуры через написанную функцию в буфер. (На Cos и Sin не обращайте внимание. Так нужно для вращения. К вопросу не относится никак.)
Цитата:
glBegin(GL_QUADS);
glTexCoord2d(0,1); glVertex2d(AnimatedObject.PosX,Anim atedObject.PosY);
glTexCoord2d(0,0); glVertex2d(AnimatedObject.PosX-Cos(AnimatedObject.Angle+r1)*RH,Ani matedObject.PosY-sin(AnimatedObject.Angle+r1)*RH);
glTexCoord2d(1,0); glVertex2d(AnimatedObject.PosX-Cos(AnimatedObject.Angle+r2)*WH,Ani matedObject.PosY-sin(AnimatedObject.Angle+r2)*WH);
glTexCoord2d(1,1); glVertex2d(AnimatedObject.PosX-Cos(AnimatedObject.Angle+r3)*RW,Ani matedObject.PosY-Sin(AnimatedObject.Angle+r3)*RW);
glEnd;
3. Произвести рендер буфера в другую текстуру.
Цитата:
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, crtX, crtY, crtWidth, crtHeight, 0);
4. Выполнить рендер в буфер полученную текстуру в пункте 3, через ту же функцию упомянутую в пункте 2.

То на экране появляется дубликат первой текстуры с полным соответствием. То-есть, Верхний-левый углы текстур соответствуют верхнему левому углу загружаемого изображения.
Но при наложении этой текстуры на сферу, она накладывается верх тормашками.

Если же, в загрузчике изображения, не делать переворот относительно оси Y
То выполнив пункты 1-4, мы получим, верхний-левый углы текстур соответствуют нижнему-левому углу загружаемого изображения.

Инверсия изображения по оси Y в загрузчике необходима.
Так как иначе, не получится выполнять рендер в буфер текстур загруженной из картинки и полученной методом рендерига в текстуру одним и тем же способом.
Но вот как мне перевернуть текстуру для наложения её на сферу, чтоб верх соответствовал верху картинки ?

Где то на глаза попадалось "изменение верктора текстурных координат" но непонятно как этим пользоваться и для чего это нужно.

Последний раз редактировалось SeemaN_tm; 02.12.2018 в 23:29.
SeemaN_tm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGl ошибка в наложение текстуры sidvishes Помощь студентам 1 20.05.2014 23:55
наложение текстуры на фон и рисунок Ольга12 Мультимедиа в Delphi 0 28.11.2012 09:49
наложение картинок wolf950 HTML и CSS 6 28.08.2011 15:08
Наложение графиков Misty Помощь студентам 2 19.03.2010 17:33
OpenGL некорректное наложение текстуры Selestis Мультимедиа в Delphi 1 03.02.2009 19:59