Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Приветствую.
Интересует вопрос. Как отразить текстуру в частности относительно оси 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; 03.12.2018 в 00:29.
SeemaN_tm вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 18:33
OpenGL некорректное наложение текстуры Selestis Мультимедиа в Delphi 1 03.02.2009 20:59


04:42.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru