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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2011, 11:09   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию Прозрачность TGA текстур в OpenGL.

Добрый день. Начну сразу со своей проблемы. Я хочу на OpenGL прозрачную, но не полностью, текстуру в формате TGA (с альфа-каналом). Изучая особенности загрузки таких файлов, сделал свою небольшую функцию. Включил ее в код и начал создавать элементарное графическое приложение в delphi с помощью библиотеки OpenGL. И вот настал момент компиляции. Я обрадовался. Да вот получилось совсем не то, что нужно. Все подозрения упали на мною созданную функцию для загрузки TGA изображений. Я где-то раздобыл тестовое приложение (прикрепил к сообщению), и там была найдена схожая с моей, опять же для загрузки текстур, функция. Пришлось подключать файл TGATexture.pas(Из стороннего приложения для загрузки изображений TGA. Этот .pas тоже прикреплен), чтобы использовать LoadTexture(Name:String; Tex:GLuint):boolean. После замены функции я получил такой же результат. Появилось мнение, что текстура выполнена не качественно (имеется в виду неправильный альфа-канал), но при замене текстуры в стороннем приложении, которое я прикрепил, она прекрасно отображалась. Итак, что мы имеем:
1. Качественную текстуру. (т.е. она правильно отображается в приложениях).
2.Модуль TGATexture.pas, который содержит функцию загрузки текстуры и используется в рабочем приложении.
3. Мое не очень хорошее и не рабочее приложение, в котором, кажется, и содержится ошибка.
Все что мне нужно это указание на ошибку. По возможности расскажите, как ее исправить.
С уважением Владислав.
Вложения
Тип файла: zip TransTGA.zip (102.8 Кб, 39 просмотров)
Тип файла: zip Нерабочее приложение.zip (221.3 Кб, 18 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 08.08.2011, 12:24   #2
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

Что ж я вам посоветую только одно. Прежде чем использовать чужие библиотеки внимательно изучите их. Непосредственно в вашем коде я нашёл несколько ошибок исправил и получил нужный результат. Пока что я вам не буду говорить что именно не правильно, попробуйте сами. Скажу одно - вы не ознакомились с функцией LoadTexture. Посмотрите внимательно что она делает и ответ придёт сам.
RomiKon вне форума Ответить с цитированием
Старый 09.08.2011, 11:03   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Честно скажу, что я так и не нашел ошибку. Может быть знаний маловато. Было у меня предположение об отсутствии вот таких строк:
Код:
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
и т.д.
Но к сожалению они мне никакой помощи не оказали. И плюс ко всему в функции CreateTexture того же файла эти строки есть. Возможно я неправильно написал параметры. В общем, жажду узнать свою ошибку. Мне очень интересно в чем же она заключается.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 09.08.2011 в 11:28.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 09.08.2011, 12:21   #4
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

Сейчас не дома поэтому на коде не покажу. В общем LoadTexture не только грузит инфо о изображении но ещё и сама создаёт текстуру. А вы зачем то потом ещё раз создаёте её и всё ваше изображение так и не попадает вам а в руки а начинает блуждать по видяхе. Короче вызываешь LoadTexture и всё ни каких GenTextures потом не надо выдумывать. Функция всё сделает за вас.
RomiKon вне форума Ответить с цитированием
Старый 09.08.2011, 13:57   #5
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Спасибо вам большое.

__ADD
Вот все равно я "накосячил". Текстура уже местами прозрачная, но теперь она как бы... Я не могу это объяснить. Прикреплю исходник.
Еще раз очень благодарю за помощь
__2ADD
Все проблему решил. Я неправильно накладывал текстуру glTexCoord2f;
Вложения
Тип файла: zip Исходник.zip (281.3 Кб, 68 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 09.08.2011 в 18:49.
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка множества текстур. OpenGL Asker13 Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 17.04.2011 13:10
OpenGL - наложение текстур. Nater Общие вопросы Delphi 0 21.02.2011 20:14
[OpenGL, Delphi] Добавление текстур на грани куба newStudent Помощь студентам 0 03.12.2010 00:50
наложение текстур в OpenGL FJFray Мультимедиа в Delphi 1 23.10.2010 12:40
Наложение нескольких текстур в OpenGL Krechet Мультимедиа в Delphi 4 06.05.2010 15:30