судя по тому как он себя повел, при просьбе показать свой код, он либо полный неадекват либо код у него убогий. Если код хороший то ИМХО им похвалиться можно, показав его другим
Да — там вы просто говорите ЧТО вы будете хранить в буфере. А где будет находиться буффер и КАК — вообще это дело драйвера.
Вот именно, что в некоторых случаях лучше самому управлять ресурсами, если знаешь что делать.
DX предоставляет унифицированный интерфейс высокоуровневых абстракций над реальными объектами и методы работы с ними.
Ну не настолько уж прямо высокоуровневых. Просто функции по отрисовке и прочему сгруппированы по интерфейсам и вместо glBegin ты вызываешь device->beginScene. или вместо биндинга текстур ты используешь класс IDirect3DTexture9.
Насчет видео — PBO, то есть прямой стриминг в видеопамять.
Ок, возможно я не до конца использовал возможности OGL, но по сути PBO это тот же Offscreen Plain Surface с D3DPOOL_DEFAUL + StretchRect для копирования в текстуру через GPU
я вспомнил кстати проблемы, с которыми я столкнулся при реализации двух слоев: там проблема со шрифтом. Когда я отрисовывал текст через ID3DXFont на альфа текстуру a8r8g8b8, то на граничных пикселях текста альфа значения имели некоторое промежуточное значение между 0 и 255, а потом при отрисовке с включенным блендингом к этим пограничным пикселям повторно применялось смешивание — в результате текст выглядел убого а регулировать параметры смешивания при отрисовке id3dxfont::drawtext не представляется возможным
Да, ты прав. Блендить надо постоянно — при анимации контролов или при смене видео кадра.
изначально была идея сделать два слоя — один под видео, другой под элементы. И смешивать. Меня смутила мысль, что будет высокий pixel cost для полноэкранного режима. Каюсь, что не хватило времени на полноценное тестирование какой метод будет лучше, но думаю в будущем я займусь этим — впринципе сама отрисовка работает, и переделать придется не очень много.
сильнее low-level чем directX? я конечно могу ошибаться но как раз таки directx более низкоуровневый, и поэтому для начинающих рекомендуют использовать OGL(в нем таких заморочек как местоположение ресурса в памяти, потеря ресурсов). А насчет скорости, мы просто написали тестовый пример с HDTV потоком, и визуально приложение работало медленнее чем на DirectX, хотя там было только отображение видео потока без наложения контролов. Шейдеры в отрисовке не использовал, хотя в будущем возможно их задействую
да изначально так и планировалось, но оценив скорость работы OGL под windows мы решили все-таки заюзать DirectX. Изначально плеер был предназначен под Windows. А насчет кроссплатформенности — вполне себе реализуемо.
мой коллега по работе уже начал делать что-то подобное… разрабатывает систему GUI с возможность рендера на Qt, DirectX и прочим. Данные о контролах выносятся в скриптовый файл(синтаксис наподобие JSON + его собственные навороты). Уже создали репозиторий на google code. Может объединимся?
на нашем сервере хранится плейлист, который загружается, парсится и сохраняется в локальную БД — SQLite и из него все черпается. Также и с программой передач
Сперва тестировали с помощью обычных модульных тестов. Теперь необходимо протестировать, как приложение будет работать на разных системах с различной конфигурацией. Тестированием занимается группа людей(у которых есть доступ к multicast видео-потоку)
приложение работает только для абонентов «СС» и пока что находится на стадии тестирования. Как только оно пройдет тестирование, я могу дать ссылку, но видео показываться все равно не будет, если ты не абонент компании…
на самом деле можно было обойтись и без eventFilter, через перегрузку closeEvent у виджета к примеру. Но только я не понимаю чем перегрузка QApplication лучше, все равно ведь придется перегружать event()? Ну а про оверхед ничего не могу сказать, по идее просто перед передачей событий в дерево объектов вызывается eventFilter для моего qapplication, а в коде eventFilter всего одна проверка.
Почти то же самое, или я ошибаюсь?
Вот именно, что в некоторых случаях лучше самому управлять ресурсами, если знаешь что делать.
Ну не настолько уж прямо высокоуровневых. Просто функции по отрисовке и прочему сгруппированы по интерфейсам и вместо glBegin ты вызываешь device->beginScene. или вместо биндинга текстур ты используешь класс IDirect3DTexture9.
Ок, возможно я не до конца использовал возможности OGL, но по сути PBO это тот же Offscreen Plain Surface с D3DPOOL_DEFAUL + StretchRect для копирования в текстуру через GPU
изначально была идея сделать два слоя — один под видео, другой под элементы. И смешивать. Меня смутила мысль, что будет высокий pixel cost для полноэкранного режима. Каюсь, что не хватило времени на полноценное тестирование какой метод будет лучше, но думаю в будущем я займусь этим — впринципе сама отрисовка работает, и переделать придется не очень много.