Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];

Вниз

Текстуры с альфа-каналом   Найти похожие ветки 

 
Unknown user ©   (2009-07-23 17:40) [0]

Чувствую себя идиотом, так как не могу заставить OpenGL рисовать текстуры с альфа-каналом. Взял примеры (Ex87-89) к книге по OpenGL Краснова и там тоже почему-то не выводятся полупрозрачные текстуры. Текстуры выводятся нормально. Но нет полупрозрачности. В примерах Краснова полупрозрачными должен быть океаны на земном шарике.

Не могу понять, где туплю. Помогите разобраться. Вот ссылка на упомянутые примеры http://www.geosystema.net/samples/Chapter4.zip


 
boa_kaa ©   (2009-07-24 00:41) [1]

видяха какая?


 
KilkennyCat ©   (2009-07-24 01:08) [2]

и монитор. жк? мож, там полупрзрачность на грани невидимости жк-контрастности...


 
@!!ex ©   (2009-07-24 10:22) [3]

Блендинг включи.


 
@!!ex ©   (2009-07-24 10:24) [4]

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);


 
Unknown user ©   (2009-07-24 12:13) [5]

Блендинг включен, видяхи разные, пробовал на разных компах. Проблема была в ошибке в коде к книге Краснова. По редкому стечению обстоятельств эту же ошибку допустил я в своем коде:

было

glTexImage2D(GL_TEXTURE_2D, 0, 3, Width, Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, DataA)

надо

glTexImage2D(GL_TEXTURE_2D, 0, 4, Width, Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, DataA)

Теперь вопрос в другом. Как грамотно рисовать объекты с прозрачными текстурами в комбинации с остальными объектами сцены. Получается вот что http://www.geosystema.net/samples/Alpha.jpg. Через прозрачные части текстуры просвечивают только некоторые объекты, остальные прячутся.

Раньше с альфа-каналом дела не имел. Буду благодарен за полезные ссылки.


 
@!!ex ©   (2009-07-24 12:46) [6]

Not Found
The requested URL /samples/Alpha.jpg. was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


Вообще представляю о чем речь.
Решения два(лично я их оба использую):
Сортировка
1) По прозрачности: сначала рисуются не прозрачные объекты, потом прозрачные
2) По рассотянию от камеры: сортируютсья только прозрачные объекты. Чем дальше объект тем раньше он рисуется.


 
Unknown user ©   (2009-07-24 13:07) [7]

http://www.geosystema.net/samples/Alpha.jpg

точка в конце адреса лишняя

спасибо за советы. есть ли способ обойтись без сортировки?


 
@!!ex ©   (2009-07-24 13:22) [8]

> [7] Unknown user ©   (24.07.09 13:07)

Да. Это то что я имел ввиду.
Есть способ.
Alpha Test, Greater, 0. Правда будет артефакт на краю прозрачности из-за фильтрации.


 
@!!ex ©   (2009-07-24 13:22) [9]

Я лично долгое время обходился без сортировки, потому что казалось сложно реализуемым...
В итоге все равно пришлось ее делать. :)


 
Unknown user ©   (2009-07-24 13:29) [10]

еще вопрос насколько сильно glEnable(GL_BLEND) замедляет отрисовку? Можно ли включать блендинг даже когда в сцене нет прозрачных объектов?


 
@!!ex ©   (2009-07-24 13:33) [11]

> [10] Unknown user ©   (24.07.09 13:29)

Не актуальный вопрос. :)
На современном железе не замедляет ни на сколько...


 
Unknown user ©   (2009-07-26 13:11) [12]

С полупрозрачными объектами разобрался. Спасибо за помощь.

Есть вопрос общего плана. Стоит задача написать 3D движок для рендеринга моделей городов в реальном времени. Все как в Google Earth. Трехмерные здания с текстурами, текстурированная поверхность земли с рельефом местности. На входе KMZ файлы, содержащие 3D модели(загрузчик уже готов). KMZ файлы ссылаются на другие файлы следующего уровня детализации. Ссылка активируется при попадании камеры в заданный регион. Таким образом работает Google Earth, таким образом возможно отображение огромных массивов информации.

Собственно вопрос. Что лучше использовать готовый движок, например, GLScene, или писать все самому с нуля.

Требования. Эффективное отсечение невидимых граней (например, использование Octree дерева). Эффективный менеджмент памяти. Так как размеры сцены огромны (сотни тысяч объектов) необходимо выгружать не попадающие в камеру объекты из памяти при превышении заданного лимита использования памяти. Поддержка уровней детализации. Желательно рисовать модель рельефа с постепенной деградацией числа полигонов по мере удаления от позиции камеры. Тени не нужны. Анимация пока не нужна, но в будущем возможно понадобится. В общем главное требование быстродействие. Жду советов.


 
@!!ex ©   (2009-07-26 14:09) [13]

Лучше всего заказать это программистам. Мне, например. :)

Я объективно посоветовать не смогу, ибо очень плохо отношусь к любым движкам. Это субъективное мнение, поэтому на него опираться не стоит.


 
@!!ex ©   (2009-07-26 14:11) [14]

По поводу удаления из памяти:
ИМХО надо удалять объекты не по принципу перехаполнения памяти, а по принципу долгого не использования.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.004 c
2-1248354193
SV
2009-07-23 17:03
2009.09.27
Автообновление программы с сайта


15-1248515578
Palladin
2009-07-25 13:52
2009.09.27
Права группы на директорию, FreeBSD 7


2-1248408135
nomad000
2009-07-24 08:02
2009.09.27
выгрузить данные в xml


1-1216545032
jurez
2008-07-20 13:10
2009.09.27
работа в BASIC с объектом из DELPHI DLL


15-1248640205
Юрий
2009-07-27 00:30
2009.09.27
С днем рождения ! 27 июля 2009 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский