Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« : 30-06-2003 16:54 » |
|
Подскажите, если кто в курсе: На эту карточку (GeForсe2) приходит изображение, как мне его поворачивать на 90, 180, 270, ... градусов. Т.е. какие функции юзать? Надеюсь это можно сделать из приложения
|
|
|
Записан
|
|
|
|
PSD
Главный специалист
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. Если не нравится Директ - в ОпенЖЛ так же, как и в Директе. Параллельную проекцию*матрицу вращения и пр.
|
|
|
Записан
|
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #4 : 01-07-2003 07:47 » |
|
Уточню немного задачу: На видео вход карточки подается сигнал (ну, скажем, с видеомагнитофона), кадры 640х480 (24 кадра/сек), и вот енто самое изображение мне и надо крутить в реальном времени Под Win2000/XP. В последних драйверах nView умеет вращать десктоп на 90-180-270 градусов. Так что мож проще крыжик в опциях дисплея поставить, а? Этому крыжику соответствует некое значение в реестре, ты его сможешь найти, я полагаю Дык надо чтобы юзер мог во время работы программы менять угол поворота картинки.
|
|
|
Записан
|
|
|
|
Артем
Опытный
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
|
|
« Ответ #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
|
|
« Ответ #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!
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #10 : 02-07-2003 07:56 » |
|
Ты уже умеешь читать и декодировать сырой видеопоток? Или пока нет? Если умеешь, то куда? В системную память или в видео? И что тебе с повёрнутым потоком надо сделать? Тихо выкинуть? (само идеальное, скорость будет выше некуда ) Показать? Спасти на диск? При спасении на диск затык ессно переместится с видеоопераций на дисковую запись. 1. Нет, читать и декодировать сырой видеопоток я еще не умею. 2. А повернутый поток мне надо показать и тихо забыть о нем. 3. Спасибо за ссылочки , пошел учить....
|
|
|
Записан
|
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #11 : 02-07-2003 08:00 » |
|
Какие Direct3D? зачем ? Ну DirectShow как API для захвата картинок с видевхода это еще понятно. Но можно и Video for Windows испльзовать, если поддержка есть. Дальше все просто Картинка у тебя представляет двумерную матрицу, каждый элемент которой зависит от формата, но обычно RGB компоненты. Повороты это перестановка элементов из строк в столбцы
И сильно рекомендую почитать чего-нить про матричные операции. Ну, матричным операциям меня за шесть лет, слава Богу, научили А вот тут до меня дошди слухи о том, что можно для моей цели каким-то образом использовать саму видекарточку (GeForce3/GeForce4), т.е. какие-то функции постовляемые именно nVideo?
|
|
|
Записан
|
|
|
|
PSD
Главный специалист
Offline
Пол:
|
|
« Ответ #12 : 02-07-2003 08:05 » |
|
Тогда нужно смотреть спецификацию на чип и драйвер они должны быть (по идее ) у производителя. Хотя не думаю что у них там чтото такое есть. Не посредственно для видео.
|
|
|
Записан
|
Да да нет нет все остальное от лукавого.
|
|
|
Lex
|
|
« Ответ #13 : 02-07-2003 08:08 » |
|
это тебе на http://developer.nvidia.com (если я ничего не напутал) Но там все в основном с 3D графикой. В принципе это можно сделать. Обычно создают прямоугольник и на него натягивают текстуру. В качестве текстуры твое исходное видео. Прямоугольник можно вращать на произвольный угол. На сколько это быстрее будет не знаю. Поворот картинки на угол кратный 90 довольно простая задача и мне кажеться что поцессор, особенно при использовании SIMD с этим лучше справиться. Зато при использовании D3D есть возможность нахаляву, т.е. аппаратно реализовано, получить несколько эффектов типа полупрозрачной картинки.
|
|
|
Записан
|
Megabyte be with you!
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #14 : 02-07-2003 08:45 » |
|
Поворот картинки на угол кратный 90 довольно простая задача и мне кажеться что поцессор, особенно при использовании SIMD с этим лучше справиться.
Вот именно это мне и нужно сделать :!: А что такое SIMD? (звиняйте, если не внимательно читал)
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #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 » |
|
Тогда нужно смотреть спецификацию на чип и драйвер они должны быть (по идее ) у производителя. Хотя не думаю что у них там чтото такое есть. Не посредственно для видео. спецификации модуль обработки видео называется VPP. В ГФ2МХ VPP дохлый, если что. всё это железо прозрачно с точки зрения программиста и потому нет особой необходимости знать его устройство, только если свою платку хочешь сделать. Ну а это уже под NDA. Да не только 3Д, с видеоделами - тоже туда не вредно зайти Обычно создают прямоугольник и на него натягивают текстуру. В качестве текстуры твое исходное видео. Прямоугольник можно вращать на произвольный угол. Дык и я про то же.
|
|
|
Записан
|
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #17 : 03-07-2003 07:51 » |
|
Кстати, я так понял, что ситуация с русскоязычной литературой по ДиректХ, подобна ситуации с литературой по ДДК?
|
|
|
Записан
|
|
|
|
PSD
Главный специалист
Offline
Пол:
|
|
« Ответ #18 : 03-07-2003 08:45 » |
|
У меня когдато была электроная книга по ДХ (помоему еще 5) но она какаято детская была. Могу поискать дома и выслать (или выложить).
|
|
|
Записан
|
Да да нет нет все остальное от лукавого.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #19 : 03-07-2003 09:03 » |
|
Выложить - выложить - если на русском - то вообще хорошо - адрес ftp знаете???
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
PSD
Главный специалист
Offline
Пол:
|
|
« Ответ #20 : 03-07-2003 09:21 » |
|
Я мейл знаю, а ftp у меня катрирован. Увы
|
|
|
Записан
|
Да да нет нет все остальное от лукавого.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #21 : 03-07-2003 09:31 » |
|
Мммм.... плохо это все ftp кастрирован
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
grozny
Гость
|
|
« Ответ #22 : 03-07-2003 16:38 » |
|
туториал написать не берусь, но простенький пример со всем необходимым для жизни в ДиректХ мог бы выложить.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #23 : 03-07-2003 16:50 » |
|
Жду...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Lex
|
|
« Ответ #24 : 04-07-2003 05:01 » |
|
Пример со всем необходимым для жизни делается просто. Ставиться DXSDK? в котором есть app wizard для DX проектов, причем не только D3D? но еще и DirectAudio и DirectInput.
|
|
|
Записан
|
Megabyte be with you!
|
|
|
|