Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: GeForсe2....  (Прочитано 26136 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« : 30-06-2003 16:54 » 

Подскажите, если кто в курсе:

На эту карточку (GeForсe2) приходит изображение, как мне его поворачивать на 90, 180, 270, ... градусов. Т.е. какие функции юзать?
Надеюсь это можно сделать из приложения Отлично
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 30-06-2003 17:04 » 

DX должны быть, но прроще всего транспонировать матрицу изображения.
Записан

Да да нет нет все остальное от лукавого.
grozny
Гость
« Ответ #2 : 30-06-2003 20:12 » 

тыща и один способ. Смотря откуда идёт изображение. Из лесу, вестимо, а? Отлично

Я правильно понимаю, что это обычное GDI приложение в окошке? И ты хочешь повернуть клиентскую область окна? Тогда см. слова предыдущего оракула. Кстати, GetDC() = ДиректДро Lock() = большой тормоз, но вряд ли это тебе критично (раз это GDI, там по-любому эти локи случаются на каждом шагу).

В директИкс просто - сразу рендеришь повёрнутым, даж если у тебя только битмапы - натяни их текстурой на треугольнички в 3Д, потом матрицу параллельной проекции скомбинируй с нужным поворотом и всё. Альтернатива: локировать бэкбуфер и перелопачивать пикселя руками, но это сильно просаживает производительность - нынешние ускорители оптимизированы под прямой поток данных (ЦП->ГП), а не на обратный (ГП->ЦП)

В последних драйверах nView умеет вращать десктоп на 90-180-270 градусов. Так что мож проще крыжик в опциях дисплея поставить, а? Этому крыжику соответствует некое значение в реестре, ты его сможешь найти, я полагаю
Записан
grozny
Гость
« Ответ #3 : 30-06-2003 20:30 » 

PS. Если не нравится Директ - в ОпенЖЛ так  же, как и в Директе. Параллельную проекцию*матрицу вращения и пр.
Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #4 : 01-07-2003 07:47 » 

Уточню немного задачу:
На видео вход карточки подается сигнал (ну, скажем, с видеомагнитофона), кадры 640х480 (24 кадра/сек), и вот енто самое изображение мне и надо крутить в реальном времени Улыбаюсь
Под Win2000/XP.

Цитата: grozny
В последних драйверах nView умеет вращать десктоп на 90-180-270 градусов. Так что мож проще крыжик в опциях дисплея поставить, а? Этому крыжику соответствует некое значение в реестре, ты его сможешь найти, я полагаю


Дык надо чтобы юзер мог во время работы программы менять угол поворота картинки.
Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #5 : 01-07-2003 11:31 » 

До этого я никогда не имел дело не только с видео, но и с просто картинками. Поэтому слова типа "рендеришь", я пока плохо воспринемаю...

Повторю просьбу про ссылочки Ага
 
 И вообще, насколько "малыми" силами это можно сделать?
Записан
grozny
Гость
« Ответ #6 : 01-07-2003 23:14 » 

просьбы про ссылочку не увидел, погибла, видать, при переезде  :twisted:
Если крутить надо во время прогона программы, тогда тебе nView ничем не поможет.

Ты уже умеешь читать и декодировать сырой видеопоток? Или пока нет? Если умеешь, то куда? В системную память или в видео? И что тебе с повёрнутым потоком надо сделать? Тихо выкинуть? (само идеальное, скорость будет выше некуда Отлично )
Показать? Спасти на диск? При спасении на диск затык ессно переместится с видеоопераций на дисковую запись.

Если ещё нет, то стоит изучить DirectShow, это специальный кусок ДиректИкс для работы с видео. Довольно тяжёлое занятие, зато освоив эту беду сможешь с видео делать всё, что захочешь.

А если умеешь, то можно и врукопашную - тебе надо создать текстурную поверхность, лочить её на каждом кадре и заливать с одновременным поворотом (меняешь х с у - вот и поворот на 90, а если знаки менять - то и все остальные кратные углы получатся). 24 кадра 640х480 - на грани филлрэйта ГФ2 (если лочить), может и подтормаживать.


ССЫЛКИ:


самым интересным может быть вот это:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwmt/html/vmr_new.asp

ДиректШоу:
http://msdn.microsoft.com/library/en-us/dnwmt/html/cplusvbappdevs.asp

может быть небезынтересным:
http://www.microsoft.com/whdc/hwdev/tech/stream/DirectX_VA/default.mspx

работа с текстурами в Директ3Д:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndrive/html/directx08202002.asp

см. Loading from memory
Записан
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #7 : 02-07-2003 05:13 » 

Какие Direct3D? зачем ?
Ну DirectShow как API для захвата картинок с видевхода это еще понятно.
Но можно и Video for Windows испльзовать, если поддержка есть. Дальше все просто Картинка у тебя представляет двумерную матрицу, каждый элемент которой зависит от формата, но обычно RGB компоненты. Повороты это перестановка элементов из строк в столбцы

И сильно рекомендую почитать чего-нить про матричные операции.
Записан

Megabyte be with you!
grozny
Гость
« Ответ #8 : 02-07-2003 05:56 » 

Директ - затем, если вдруг захочется повернуть на произвольный угол или перемасштабировать. К тому ж в N+1 раз напоминаю: хочешь выжать макcимальную производительность - забудь про GDI. При использовании VfW тебе от GetDC (который есть Surface Lock() ) никуда не деться.

Матрица, ага. Только оч. большая и ни разу неквадратная в видео. Толку от воображения растрового изображения математической матрицей никакого нету - ты эти "матрицы" перемножать собрался? Складывать? Обращать? Приводить к верхнетреугольной форме? Искать собственные значения?

Как есть это двумерный массив пикселов, так и стоит о нём думать как о двумерном массиве, не умножая сущностей. Так случилось, что преобразования отражения и поворота на 90% можно представить выборкой пиксела с заменой +-х на +-у. На этом всё сродство с математическим объектом "матрица" кончается.
 
А DirectShow - прямой наследник VfW. Если чо.

Знать матричное исчисление не повредит, конешно...
Записан
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #9 : 02-07-2003 07:25 » 

1. На счет максимальной производительности, дело не GetDC и т.п.
25-30 кадров в секунду и с GDI получить можно. А вот к вращению GDI никакого отношения не имеет. И делать это можно довольно шустро, если все писать с использованием SIMD инструкций.
http://www.ddj.com/topics/graphics/  есть есколько статей по 2D графике и оптимизации программ под MMX.

2. А вот для вращения картинки на произвольный угол уже точно без матриц не обойтись. Да и в товое любимом D3D все транформации идут через матрицы.

P.S. про то, что картинка это обычный двумерный массив (как и матрица) писал еще и PSD, но человеку это было не совсем понятно, я попытался это еще сильнее упростить.
Записан

Megabyte be with you!
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #10 : 02-07-2003 07:56 » 

Цитата: grozny
Ты уже умеешь читать и декодировать сырой видеопоток? Или пока нет? Если умеешь, то куда? В системную память или в видео? И что тебе с повёрнутым потоком надо сделать? Тихо выкинуть? (само идеальное, скорость будет выше некуда Отлично )
Показать? Спасти на диск? При спасении на диск затык ессно переместится с видеоопераций на дисковую запись.


1. Нет,  читать и декодировать сырой видеопоток я еще не умею.
2. А  повернутый  поток мне надо показать и тихо забыть о нем.
3. Спасибо за ссылочки Отлично , пошел учить....
Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #11 : 02-07-2003 08:00 » 

Цитата: Lex
Какие Direct3D? зачем ?
Ну DirectShow как API для захвата картинок с видевхода это еще понятно.
Но можно и Video for Windows испльзовать, если поддержка есть. Дальше все просто Картинка у тебя представляет двумерную матрицу, каждый элемент которой зависит от формата, но обычно RGB компоненты. Повороты это перестановка элементов из строк в столбцы

И сильно рекомендую почитать чего-нить про матричные операции.

Ну, матричным операциям меня за шесть лет, слава Богу, научили Жжешь

А вот тут до меня дошди слухи о том, что можно для моей цели каким-то образом использовать саму видекарточку (GeForce3/GeForce4), т.е. какие-то функции постовляемые именно nVideo?
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 02-07-2003 08:05 » 

Тогда нужно смотреть спецификацию на чип и драйвер они должны быть (по идее ) у производителя.  Хотя не думаю что у них там чтото такое есть.  Не посредственно для видео.
Записан

Да да нет нет все остальное от лукавого.
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #13 : 02-07-2003 08:08 » 

это тебе на http://developer.nvidia.com (если я ничего не напутал)
Но там все в основном с 3D графикой. В принципе это можно сделать.
Обычно создают прямоугольник и на него натягивают текстуру. В качестве текстуры твое исходное видео. Прямоугольник можно вращать на произвольный угол. На сколько это быстрее будет не знаю.

Поворот картинки на угол кратный 90 довольно простая задача и мне кажеться что поцессор, особенно при использовании SIMD с этим лучше справиться.

Зато при использовании D3D есть возможность нахаляву, т.е. аппаратно реализовано, получить несколько эффектов типа полупрозрачной картинки.
Записан

Megabyte be with you!
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #14 : 02-07-2003 08:45 » 

Цитата: Lex

Поворот картинки на угол кратный 90 довольно простая задача и мне кажеться что поцессор, особенно при использовании SIMD с этим лучше справиться.


Вот именно это мне и нужно сделать :!:
А что такое SIMD? (звиняйте, если не внимательно читал)
Записан
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #15 : 02-07-2003 09:02 » 

SIMD это Simple Instruction Multiple Data.
Это общее название расширенных систем команд типа MMX, 3DNow!, SSE, SSE2 и т.п. Все эти команды характерны тем, что за одну команду могут обработать несколько данных, что очень удобно приобработке потоков. В твоем случае это будут в основном команды пересылки. сходи на Dr Dobb's в раздел графики. Ссылку я давал чуть выше. Там есть статьи как правильно использовать эти расширенные команды. Если что не понятно пиши редактору, можешь по русски, он поймет Улыбаюсь.
Записан

Megabyte be with you!
grozny
Гость
« Ответ #16 : 02-07-2003 20:45 » 

Цитата: PSD
Тогда нужно смотреть спецификацию на чип и драйвер они должны быть (по идее ) у производителя.  Хотя не думаю что у них там чтото такое есть.  Не посредственно для видео.

спецификации

модуль обработки видео называется VPP. В ГФ2МХ VPP дохлый, если что.

всё это железо прозрачно с точки зрения программиста и потому нет особой необходимости знать его устройство, только если свою платку хочешь сделать. Ну а это уже под NDA.

Да не только 3Д, с видеоделами - тоже туда не вредно зайти

Цитата
Обычно создают прямоугольник и на него натягивают текстуру. В качестве текстуры твое исходное видео. Прямоугольник можно вращать на произвольный угол.

Дык и я про то же.
Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #17 : 03-07-2003 07:51 » 

Кстати, я так понял, что ситуация с русскоязычной литературой по ДиректХ, подобна ситуации с литературой по ДДК?  Здесь была моя ладья...
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 03-07-2003 08:45 » 

У меня когдато была электроная книга по ДХ (помоему еще 5) но она какаято детская была. Могу поискать дома и выслать (или выложить).
Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #19 : 03-07-2003 09:03 » 

Выложить - выложить - если на русском - то вообще хорошо - адрес ftp знаете???
Записан

А птичку нашу прошу не обижать!!!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 03-07-2003 09:21 » 

Я мейл знаю, а ftp у меня катрирован. Увы
Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #21 : 03-07-2003 09:31 » 

Мммм.... плохо это все ftp кастрирован Жаль
Записан

А птичку нашу прошу не обижать!!!
grozny
Гость
« Ответ #22 : 03-07-2003 16:38 » 

туториал написать не берусь, но простенький пример со всем необходимым для жизни в ДиректХ мог бы выложить.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #23 : 03-07-2003 16:50 » 

Жду...
Записан

А птичку нашу прошу не обижать!!!
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #24 : 04-07-2003 05:01 » new

Пример со всем необходимым для жизни делается просто. Ставиться DXSDK? в котором есть app wizard для DX проектов, причем не только D3D? но еще и DirectAudio и DirectInput.  Ага
Записан

Megabyte be with you!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines