![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#111 | |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]()
Так вы мне скажите, как вы альфу сделали на DDraw, или это секретом фирмы останется?
Ну да ладно. На самом деле у меня вопрос, а точнее несколько. С текстурированием разобрался, всё, работает везде. -Теперь другая проблема, неожиданная такая вполне. Не работает метод UpdateTexture. Странно так не работает, просто вешается. Создаю две текстуры вот так: Код:
Потом пытаюсь, собственно, закинуть кусок картинки из памяти в видюху вот так: Код:
-Я тут вот ещё чего подумал, если примитивы, на которые я текстуры натягиваю, заиндексировать, быстрее работать будет, или нет? Ну просто я отказался сейчас от Lock буфера вершин и считаю буфер вершин сразу в ОЗУ, а затем DrawPrimitiveUP. Это оказалось гораздо быстрее, чем для каждого объекта лочить и пересчитывать вершины. Но зато при рисовании пришлось отказаться от D3DPT_TRIANGLESTRIP в пользу D3DPT_TRIANGLELIST и теперь в буфере вершин избыточность в две точки на один квадратик. Поидее индексы должны уменьшить общий объём памяти. Наверное, должно быстрее с индексами стать. -И ещё одна неприятность. На нетбуке стандартное разрешение монитора 1024*600. И когда я запускаю свой тест, то колобки получаются сплющенные. Хотя на рабочем столе все иконки выглядят нормально. Я так полагаю, что надо что-то с RHW подшаманить, но чёт не соображу как. Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
|
![]() |
![]() |
![]() |
#112 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]() Цитата:
Задача сводится к созданию первичной поверхности (PrimarySurface) в видеопамяти (DDSCAPS_PRIMARYSURFACE or DDSCAPS_VIDEOMEMORY) и поскольку в оконном режиме флипировать и подключать один или несколько задников нельзя, создается так же невидимая поверхность задника (BackBuffer) в видеопамяти (DDSCAPS_OFFSCREENPLAIN or DDSCAPS_VIDEOMEMORY). Вот так будет выглядеть последовательность построения кадра: Код:
Далее я отказываюсь от хранения поверхностей для объектов в видеопамяти, а использую указатели на динамические массивы текстур и маски в ОЗУ. Получается, что я беру указатель на невидимый BackBuffer из видеопамяти и с помощью MMX заполняю данными из ОЗУ, смикшировав по цветовым компонентам и положив снова в видеопамять. Сказать сколько получил? ...80 fps и 26-34% CPU ![]() Работает обновление координат персонажей по стандартному таймеру SetTimer, а вот мультимедийный из MMSystem так и не заработал, выдает ошибку, как не старался и не разбирался с ним. От VCL отказался полностью, окно создается в процессе работы.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
![]() |
![]() |
![]() |
#113 | ||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]() Цитата:
Может всё-таки на DirectX перейти. Я сейчас застопорился на этом самом методе UpdateTexture. Чёт не работает и всё. С перекачкой больших текстур из ОЗУ в видеопамять конечно производительность должна упасть, но вот насколько сильно, очень хотелось бы увидеть и примерно оценить, стоит овчинка выделки, или нет. Пока у меня текстуры все MANAGED, поэтому пример непоказателен, но тем не менее, на моём компе он тянет 10 тысяч объектов с альфой размером 56*56 + подложка 1024*768 по таймеру 30 мс, загрузка CPU 6-9 процентов (ну ещё бы, карточка всё делает). При 100 объектах на интервале в 1 мс выдаёт fps=818. Пример может и не заработать, ибо писал его я, со всеми вытекающими ![]() Добавлено: Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru Последний раз редактировалось Ulex; 06.11.2010 в 01:55. |
||
![]() |
![]() |
![]() |
#114 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ulex, это же Vista у меня (с#чая), поисковик в проводнике не нашел библиотеки для мультимедиа, кернел нашел и все остальное находит, ...когда я взял библиотеку начал перебрасывать в каталог system32 мне так любезно намекнули, мол "файл winmm.dll уже существует, заменить?"
![]() ![]() ![]() Цитата:
Если выводить только на экран статичный буфер, то у меня показывает 475 fps. И вот еще одна загадка, если выполнять построение кадра и вывод на экран по таймеру, а не на всю возможность в обработчике событий, то резко подскакивает загрузка CPU, до 60%, ...хотя это вроде послабление, если нужно задействовать видеокарту только 30 раз в секунду. По поводу непонятных треугольников и заливки, ...у меня те же проблемы на ноутбуке. Играя как-то в Героев Магии и Меча 5, заметил, после очередного красивого колдовства остаются цилиндры, полигоны, текстуры, над и под персонажами, и держатся весь бой, хотя DirectX 10 (кажется) стоит. Дополнение: Проверил на ноуте Intel Core 2 Duo 1,8GHz (видеокарта Intel X3100 8M + 375М), еще раз, просто задний фон, картинка fps и вывод на экран, ...без объектов, ...показывает 209 fps и 6% CPU. Пошел за Pentium 4 3GHz (видеокарта ASUS GeForce 8600GT 256М), тот же тест показывает: 1041 fps и 5% CPU ![]() {уточнил, что за проц в системнике, почему так мало загрузки CPU, не может быть такого на P4, ...получил внятный ответ "с нового года тут стоит Core 2 Duo 2,99GHz с оперативкой DDRII, видеокарта та же", ...теперь у меня точно негде даже примерно тестить на предмет загрузки "устаревших" систем} ...немой вопрос: эт как же ж аппаратную альфу поиметь-то??? ...может и стоит обратить внимание на DirectX, но проблемы с объемом моих текстур все равно не отпадают, все равно нужно будет грузить каждый кадр из ОЗУ, ...но я точно знаю, что просто бросить по указателю текстуру быстрее, чем в видеопамяти ее обрабатывать процессором. Значит смотрим в сторону DirectX, если он на старичках выдаст результат удовлетворительный, то на современной машине подавно. Вот тут я раздваиваюсь, ...заниматься тем чем занимался, или переходить на DirectX ![]()
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 06.11.2010 в 17:10. |
|
![]() |
![]() |
![]() |
#115 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]()
Мне кажется DDraw себя исчерпал. Весь интерес состоял именно в оконном режиме и аппаратной альфе. А DDraw как выясняется альфу вообще не умеет, а оконный режим сделан ч.з. какое-то место.
Я за DirectX. Нам нужно именно аппаратно целиком формировать кадр на видюхе. Вместе со всеми смешиваниями и т.д. Было бы здорово, если можно было бы сразу лочить и копировать данные в текстуру в видеопамяти. Но как я понял это возможно только на текстурах MANAGED либо DINAMYC, а это на корню убьёт всю производительность. Копирование данных в текстуру SYSTEMMEMORY работает достаточно быстро. Ну я так понимаю, это просто кусок ОЗУ. Но установить такую текстуру для рендинга невозможно. Надо её скопировать в видеопамять. И тут как всегда, нежданчик. Я уже незнаю, чего надо этому UpdateTexture. Подскажите кто-нибудь. Чего я неправильно сделал? Beermonza, А что, мой пример не заработал. Если заработал, то как тебе альфа?
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
![]() |
![]() |
![]() |
#116 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]() Цитата:
![]()
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
![]() |
![]() |
![]() |
#117 | |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]()
Там альфа канал самодельный (руками сделан) и пожатый в GIF.
Просто у меня интерфейс IImgCtx благополучно погиб, поэтому загружать PNG не получается. D3DX не предлагать, ибо от SDK DirectX слегка подташнивает. Я твоих солдатиков в оригинале загрузить не могу. Может, кстати, кто подскажет программку какую. Как можно альфа канал вытащить из PNG и сохранить допустим в BMP в какой нибудь один из Color_ов (желательно в зелёный). Цитата:
![]() А если серьёзно, то, поидее, всё от наших прямых рук зависит.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru Последний раз редактировалось Ulex; 07.11.2010 в 03:03. |
|
![]() |
![]() |
![]() |
#118 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ulex, во вложении программка для сохранения альфа-канала из PNG в BMP любого формата. Очень ценная вещь при работе с рендером 3D Max'а. Я раньше такой пользовался, только у меня было еще и автоматическое склеивание в раскадровку вместе с маской (выше в постах есть пример дерева), это прожка - часть, только на выдергивание альфы.
Я вот точно гарантии дам на GDI, только использую проверку на MMX/SSE, и баста, у кого там что тормозит, по ходу пусть переключает режим на 16 бит если уж сильно тормозит, или останусь на DirectDraw, только для вывода и подложки. Direct3D даже не хочу осваивать для этого дела. Остается проверить OpenGL.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#119 | ||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]() Цитата:
Цитата:
Вобщем вывод у меня в твёрдом остатке такой: хотите производительности на компьютерах типа Celeron 3 - используйте DirectX, но только по полной аппаратной. Если лочить какие то поверхности и грузить их по таймеру, производительности тоже не получите, проц и шина всё сольют на перекачке этих текстур в видюху. А на компьютерах класса P4 (с памятью DDR, DDR2) и GDI неплохо проворачивается. И конечные тесты на Celerone: Код HTML:
Тест Beermonza Test 5 MMX -----------|---------|----------|-------|-----------------|------------------| кол-во перс| деревья | Подложка | BitBlt| загрузка CPU (%)| вых интервал (мс)| -----------|---------|----------|-------|-----------------|------------------| 10 | 0 | + | + | 99 | 31-41 | 10 | 1 | + | + | 99 | 31-41 | 10 | 2 | + | + | 99 | 41-51 | 10 | 3 | + | + | 99 | 51-61 | 20 | 0 | + | + | 99 | 31-41 | 20 | 1 | + | + | 99 | 31-41 | 20 | 2 | + | + | 99 | 41-51 | 20 | 3 | + | + | 99 | 51-61 | ------------------------------------------------------------------------------ Код HTML:
Тест .pixel (DDraw) -------------------------------------|-----------------| программа | загрузка CPU (%)| -------------------------------------|-----------------| test with mmx copy.exe | 98-99 | test with pagelock+bltfast (dma).exe | 82-85 | -------------------------------------|-----------------| Код HTML:
Тест Ulex (DirectX) -----------|----------|-------|--------------|-----------------|-----------------| кол-во перс| Подложка | fps | интервал (мс)| загрузка CPU (%)| UpdateTexture | -----------|----------|-------|--------------|-----------------|-----------------| 100 | + | 11-12 | 30 | 99 | + | 10 | + | 17 | 30 | 99 | + | 500 | + | 33 | 30 | 0-7 | - | 2000 | + | 33 | 30 | 37 | - | 3000 | + | 24 | 30 | 43-59 | - | 1 | + | 4-5 | 1 | 89-92 | + | 1 | + | 233 | 1 | 66-71 | - | -----------|----------|-------|--------------|-----------------|-----------------| P.S. И напоследок мои исходники. Мало ли, вдруг сгодятся кому зачем нибудь.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
||
![]() |
![]() |
![]() |
#120 | |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
![]() Цитата:
Спасибо, Ulex.
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
wi-fi и скорость | stenl1 | Компьютерное железо | 19 | 01.06.2010 17:48 |
Скорость рисования графиков | Master07 | Общие вопросы C/C++ | 3 | 16.07.2009 21:45 |
Скорость | bakanis | Работа с сетью в Delphi | 6 | 05.04.2009 12:39 |
Скорость скачивания | Терминатор | Свободное общение | 3 | 30.03.2009 19:03 |
Скорость проигрывания | Bigtyoma | Мультимедиа в Delphi | 0 | 30.09.2008 15:57 |