Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DirectX+Bitmap 
:(
    Опции темы
iu1005
Дата 21.11.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Необоходимо отображать с перспективой много картинок с альфа-каналом, но картинки необходимо обновлять в каждом кадре. А сама загрузка картинки, как текстуры DirectX занимает слишком много времени, код:

Код

bm.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);//25ms
ms.Seek(0, SeekOrigin.Begin);
tx = TextureLoader.FromStream(d3d, ms, (int)ms.Length, bm.Width, bm.Height, 1, Usage.Dynamic, Format.A8B8G8R8, Pool.Default, Filter.None, Filter.None, (int)0xff00000);//75ms, эту ф-цию пробовал со всеми возможными параметрами, но лучше не вышло



M
arilou
в след.раз воспользуйтесь функцией форматирования кода


выполняется 100 милисекунд и для 10 картинок 1fps - маловато. Выполнять в GDI+ все 3D-преобразования и отображение - быстрее, но тогда вся нагрузка идет на проц, который в принципе должен в это время выполнять другие операции.
Подскажите, как мне ускорить отрисовку задуманного? Может можно как-то отобразить картинку, без загрузки ее, как текстуру/поверхность? Приветствуются решения независимо от технологий - Direct3D/DirectDraw/OpenGL/GDI...(но лучше, конечно, в Direct3D smile) Картинку могу предоставить в любом виде - Bitmap, массив Format32bppArgb, HDC... в managed и unmanaged памяти, в любом формате...

Это сообщение отредактировал(а) arilou - 21.11.2007, 15:58
PM MAIL   Вверх
Mazzi
Дата 21.11.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 4
Всего: 21



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


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
iu1005
Дата 21.11.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Так я кажись немного не об этом...
Видеоролик тоже нужно чем-то формировать... в этом-то все и дело.
Вот, к примеру - куб гранями которого являются большие картинки больших разрешений, которые нужно обновлять из исходного Bitmap перед каждой отрисовкой. Куб должен быть 3D, то есть, должна быть видна перспектива. DirectX справляется - раз плюнуть, если текстуры (картинки загружены), а если их обновлять перед каждой отрисовкой, то именно сама загрузка картинок, как текстуры занимает для куба больше 0,5 секунды. Если такой куб рисовать возможностями GDI+, то конечно, никакой загрузки не будет, но тут мы на полную используем процессор, без аппаратной поддержки 3D, а это не годится... Вот загрузи любую игрушку с SoftwareRendering и увидишь, что означает отсутствие аппаратной поддержки  smile 
PM MAIL   Вверх
arilou
Дата 21.11.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Цитата(iu1005 @  21.11.2007,  15:39 Найти цитируемый пост)
Вот, к примеру - куб гранями которого являются большие картинки больших разрешений, которые нужно обновлять из исходного Bitmap перед каждой отрисовкой. 

какого разрешения картинки? 

попробуй использовать Texture2D.GetData/SetData (это в XNA). Они тоже медленные, но может быть все же выстрее, чем пересоздание текстур на лету. попробуй изменять не текстуру целиком, а только изменившуюся часть.

вообще, что именно выводится на текстуры?


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
iu1005
Дата 22.11.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Цитата
вообще, что именно выводится на текстуры?
Прошу прощения за задержку с ответом... И да - моя вина, нужно было начать с описания цели:
Цель - реализовать как можно больше функций Beryl (Video). Большая часть из возможного уже реализована, осталась в основном графика, с чем я никогда не работал. В основном - нужно отобржать графику всех окон в реалтайм. Получение графики окна - не проблема, а вот 2D/3D-преобразования и transparency...
В принципе, максимально, что удалось подобрать - Direct3D, подготовить заранее объекты текстур, в которых в Render() выполнять:
Код

Surface sf = PanelTexture.GetSurfaceLevel(0);
Graphics graphics = sf.GetGraphics();
И в graphics переносить графику окна. Но тут несколько проблем:
1. Размеры текстуры и получаемой графики не совпадают, хотя размер окна заранее известен. Что-то где-то я перемудрил, но не найду где...
2. Как отрисовать такую текстуру полупрозрачной? И еще - задать, что если я где-то не нарисовал ничего, то сделать это место текстуры полностью прозрачным (к примеру - круглое окно зарисует не все пиксели текстуры, а только круг посредине).

Если можно - киньте плиз ссылочкой, где выполняются подобные операции... а то как-то не с руки полностью обучаться Direct3D только для этой задачи...
Цитата

какого разрешения картинки?
Картинки разрешения окна, то есть до 1280*1024 (с моим моником)
Цитата

попробуй ... (это в XNA)
Не думаю, что стоит прибегать к ней. Программа пишется для обычных пользователей. DirectX есть у всех, а ХНА - нет...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.1367 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.