-
Доброе время суток. Недавно начал изучать OGL, делаю простенкую программку www.roganovg.narod.ru/stars.zip
По идее все "звезды" должны быть полупрозрачные точнее "пушистые" загружаю текстуры с учетом альфы, разрешаю бленд, но все равно некоторые "звезды" перекрывают друг друга. Что я делаю не так?
-
что-то типа этого
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
-
Дык так и стоит в моем исходнике
-
Сортировку по расстоянию сделай.
и учи матчасть(как работает Depth(Z) buffer)
-
Где б ее взять, матчасть!? Книгу Краснова читаю по 3-му разу ;) Очень много в гуглях но в основном на с++.
За совет про сортировку пасиб, попробую.
Кстати такая мысля зарождалась. )
-
ах да забыл.
если есть только звёзды - можно отключить Z buffer
-
Для звезд лучше подойдет суммирующее смешивание:
glBlendFunc(GL_ONE, GL_ONE);
К тому же, при суммирующем смешивании можно обойтись без сортировки.
-
Да даже если не только звкзды...
можно с выключенным тестом глубины рендерить звезды, а потому уже с тестом все остальное.
> [4] RGV © (10.10.09 05:23)
При чем тут С++? Я про логику работы GPU, а не про язык программирования.
-
-
-
> @!!ex © (10.10.09 14:25) [7]
ты писал
> @!!ex © (09.10.09 18:11) [3]
> Сортировку по расстоянию сделай.
> и учи матчасть(как работает Depth(Z) buffer)
я ответил
> Где б ее взять, матчасть!? Книгу Краснова читаю по 3-му
> разу ;) Очень много в гуглях но в основном на с++....
Вопрос? что такое матчасть? Я так понял это что то вроде ликбеза, вот я и сказал что очень много инфы по огл но в основном на си
-
Всем большое спасибо за советы
> main © (10.10.09 14:23) [6]
glBlendFunc(GL_ONE, GL_ONE); проблемы не решил, но зато приятный эффект наблюдается.
Видно без сортировки не решить проблему. Интересно, а какой лучше алгоритм сортировки придумать ? Чтобы менее "болезненно" для проца было
-
а так пробовал?
glDisable(GL_DEPTH_TEST);
-
Ну так и сделал + сортировка
-
а зачем сортировка то? :)
-
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
и
glDisable(GL_DEPTH_TEST);
всё должно работать
-
> Видно без сортировки не решить проблему. Интересно, а какой
> лучше алгоритм сортировки придумать ? Чтобы менее "болезненно"
> для проца было
Ты видимо ссылку из 9 поста не смотрел, а если смотрел, то видимо не понял. Если тебя устраивает смешивание суммирующее, то там как раз и написано как обойтись без сортировки.
-
> [9] main © (10.10.09 21:02)
> Я недавно тут в спор ввязался по поводу суммирующего смешивания:
Тебе тоже учить матчасть, если думаешь что тип смешивания может помочь при включенном тесте глубины и неверной сортировке.
> [10] RGV © (11.10.09 03:44)
Матчасть - это принципы работы алгоритмов.
OpenGL - это чисто API. API работает с видеокартой. Вот и разберись как работает видеокарта. Как работает тест глубины в данном случае.
-
> @!!ex © (12.10.09 10:20) [17]
Большой кайлём. А то я не пойму о чем речь то :))
з.ы. кайлём это у нас тут на севере коряки так спасибо говорят )
-
> Тебе тоже учить матчасть, если думаешь что тип смешивания
> может помочь при включенном тесте глубины и неверной сортировке.
>
Я думаю ты сам не понимаешь что говоришь, там же все разжевано, и все элементарно делается.
Какая еще "неверная сортировка", ты о чем? При суммирующем смешивании сортировка вообще не нужна. (именно при суммирующем, и только присуммирующем)
Делай по пунктам слово в слово как автор в той заметке написал, и все у тебя получится, и картинка будет правильной.
А если вдруг тебе еще и приспичило, и ты еще хочешь чтобы и в depth-буффере были все значения, то потом просто нарисуй все полупрозрачные звезды(для которых отключал запись в depth-буффер) без записи в color-буфер, но с записью в depth-буффер, и с включенным тестом глубины. ( !! и все это без сортировки !! )