Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2010, 21:21   #101
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
Я рассчитывал на Pentium 4, а за Celeron'ы искренне надеялся, что они не умрут, приняв такую нагрузку на свои плечи, в принципе не ошибся сильно, что-то еще работает.
А ты всё ещё считаешь, что там что-то работает? По моей личной шкале (ни на что не претендую), но всё что выше 90% словом "работает" называться не может. Вобщем, как я и говорил где то на первой странице - приобщитесь к HDC забудете о тормозах - это заблуждение. Забудете о тормозах на мощных процессорах с быстрой памятью.

Цитата:
Метод, который ты высказал, я вот постом выше описал
Нет, ты не такой метод описал. У тебя по прежнему кадр формирует CPU. В моём методе CPU ничего не формирует, он только закидывает в видюху необходимые куски поверхностей (заметь, если анимация дерева состоит из 30 кадров, то для отображения текущего дерева все тридцать не нужны, а нужен только один). Задача CPU сводится к копированию поверхностей в видюху. А сам кадр целиком строит видеокарта из тех кусочков, которые ей накидал процессор. Задник да, можно хранить постоянно и перестраивать только когда карту нужно прокрутить.

Цитата:
...а в 2D это с легкостью реализуется, нужна только память.
Ню ню. То то мы уже за 100 постов перевалили

.pixel так это вроде для fullScreen, а уменя оконный режим.
Цитата:
FullScreen_RefreshRateInHz
The rate at which the display adapter refreshes the screen. The value depends on the mode in which the application is running:
For windowed mode, the refresh rate must be 0.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 02.11.2010, 22:01   #102
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

Ulex, но я же не про FullScreen_RefreshRateInHz пишу… пустая сцена у меня тоже упиралась в развертку пока я не поставил PresentationInterval в D3DPRESENT_INTERVAL_IMMEDIATE…

А что же касательно развертки (FullScreen_RefreshRateInHz) то – да, вполне возможно она игнорируется в оконном режиме.
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Старый 02.11.2010, 22:41   #103
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

А, всё, понял. Спасибо.
На девятом этот параметр даже называется по другому.
На восьмом в inc_ах он называется FullScreen_PresentationInterval.
Ну а я слово FullScreen увидел, а остального не увидел, пардон.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 03.11.2010, 00:55   #104
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Ulex
А ты всё ещё считаешь, что там что-то работает? По моей личной шкале (ни на что не претендую), но всё что выше 90% словом "работает" называться не может. Вобщем, как я и говорил где то на первой странице - приобщитесь к HDC забудете о тормозах - это заблуждение. Забудете о тормозах на мощных процессорах с быстрой памятью.
Вот только крайностей не нужно (с уважением), ...скулить в пору тому, у кого вообще машина с прошлого века, ...такие люди как правило уже не играют в игры (возраст не тот), ...это компы для работы, или на работе, ...а дома всегда стоит SSE DDRII или ноутбук, ...вот это уже решено окончательно и бесповоротно. Тему продолжаю только потому что хочу опуститься уровнем ниже и хоть что-то сделать для слабых компов, хоть и на эти 20% потенциальных пользователей можно уже было наплевать.
Работает? ...конечно работает, ...любая игра прошлого века с хорошей 2D графикой грузить систему на 100% , об этом уже говорил, однако кадры свои она выдает, ...у тебя в тесте вижу загрузку хоть и 90%, да пусть и 99%, но в мс от 31 до 41, и это с качеством которое предъявляется к современным компам и ноутбукам с SSE и быстрой памятью.
Еще раз уточню, выход есть, нужно либо предусмотреть 16-битный режим, либо перекидывать данные видеокарте, хотя бы подложку (задний фон). Можно и кидать по одному кадру для каждого объекта, но каково будет по скорости я не знаю, то ли кидать много кусков, то ли весь сборный кадр, ...нужно проверять, ...а для начала привести пример, я сам пока далек от корректного и оптимизированного вывода аппаратными средствами, ...короче, нужен пример (для оконного режима).
Для чего все это? ...не позволяет еще 3D получить такое качество. Я просто зафиксировал камеру и показываю те же 3D объекты но спрайтами. Качество ограничено только фантазией, а не мощностью компьютера. Лично мне надоело смотреть на угловатые телеса, веникоподобные "деревья", ...все должно быть практически как на фотографии, ...дело за малым, выполнить в 3D Max'е и подобрать правильные текстуры и материалы, выполнить анимацию.

Цитата:
Сообщение от Ulex
Нет, ты не такой метод описал. У тебя по прежнему кадр формирует CPU. В моём методе CPU ничего не формирует, он только закидывает в видюху необходимые куски поверхностей (заметь, если анимация дерева состоит из 30 кадров, то для отображения текущего дерева все тридцать не нужны, а нужен только один). Задача CPU сводится к копированию поверхностей в видюху. А сам кадр целиком строит видеокарта из тех кусочков, которые ей накидал процессор. Задник да, можно хранить постоянно и перестраивать только когда карту нужно прокрутить.
А, ну, я тебя сперва понял так "все спрайты должны быть в видеопамяти", это было выше, ...теперь "задача CPU сводится к копированию поверхностей в видюху", ...теперь понятно, тоже об этом думал, но посчитал, опять же по наставлениям, что тормозно перекидывать данные из ОЗУ в видеопамять 30 раз в секунду, для каждого объекта, ...хотя один хрен, что большой кусок по 8 байт за цикл, что мелкие куски, так же, ...или теряется скорость на сегментном обмене данными чем одной сборной текстурой?

Цитата:
Сообщение от Ulex
Цитата:
Сообщение от Beermonza
...а в 2D это с легкостью реализуется, нужна только память.
Ню ню. То то мы уже за 100 постов перевалили
Я про 3D дерево с 1,5 млн полигонов и его картинку в 2D, ...которое реально из двух видов реализовать с 30 fps? ...первое в реальном 3D покажет 2 fps, а если деревьев будет 3, то вывалится исключение, или комп перезапустится или умрет от перегрева видеокарта. Я пошел по второму пути, потому, что нужно именно такое качество объектов.

Заседание продолжается ...
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 03.11.2010 в 01:03.
Beermonza вне форума Ответить с цитированием
Старый 03.11.2010, 03:41   #105
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
Работает? ...конечно работает, ...любая игра прошлого века с хорошей 2D графикой грузить систему на 100% , об этом уже говорил, однако кадры свои она выдает, ...
Прям так и любая? К примеру Fallout2 (дата выхода 1998, в России 2006) - графика нормальная, или недостаточно красивая? Не грузит она систему на 100%. А если какая-то игра и грузит, то я уже говорил почему. Вовсе не потому, что компьютер не успевает, а просто программа написана именно так, чтобы забирать всё свободное процессорное время под себя. Но твой тест ведь не такой. Он ведь работает по таймеру. А значит для него загрузка в 100 процентов означает, что это граница производительности. Если загрузка 100 и интервал таймера не соответствует заданному, значит граница пройдена и игра тормозит.

Цитата:
у тебя в тесте вижу загрузку хоть и 90%, да пусть и 99%, но в мс от 31 до 41, и это с качеством которое предъявляется к современным компам и ноутбукам с SSE и быстрой памятью.
Beermonza, с качеством чего? Проц загружен на 100 при пустом BitBlt и обновлении подложки. Нет ничего (никакого качества), ничего ещё не нарисовано, а он уже в 100 и интервал уже тянет (31-41). И ты по прежнему считаешь, что это называется "работает"? И, кстати, 16-ти битные текстуры могут и не спасти, т.к. если смешивать на MMX, то для умножения всё равно придётся распаковывать цветовые компоненты в word. То же на то же скорее всего и выйдет.

P.S.
И не такая уж плохая машина этот Celeron. Два года назад сидел на нём и ничего, бывало и в игры играл. Да и по сих пор бы, наверное, сидел, если бы четвёрка по случаю по дешёвке не подвернулась. Сейчас родственникам отдал. Угадай, как они его используют? Игры, фильмы, музыка, интернет. Естественно, всё работает. Поэтому утверждение, что это компы для работы, слишком категоричное.

P.P.S
Чёт Tronix куда-то пропал. Обещал наоптимизировать тут и исчез.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 03.11.2010, 09:36   #106
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

Ulex, будет возможность запусти пожалуйста прикрепленный тест на DD7 и посмотри загрузку CPU на Целероне.

Суть теста: по таймеру в 30мс с Background поверхности которая находится в системной памяти (считай собранная подложка) – производится копирование(1й тест ммх и 2й bltfast) на BackBuffer т.е в видео память, затем BackBuffer рисуется на PrimarySurface (первичную) поверхность. Интересна нагрузка на Целероне даже без всяких расчетов и анимаций движений, а просто копирование большого участка изображения.
Вложения
Тип файла: rar sys - to- vid copy test .rar (830.7 Кб, 24 просмотров)
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Старый 03.11.2010, 16:12   #107
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Ulex Посмотреть сообщение
Прям так и любая? К примеру Fallout2 (дата выхода 1998, в России 2006) - графика нормальная, или недостаточно красивая? Не грузит она систему на 100%. А если какая-то игра и грузит, то я уже говорил почему. Вовсе не потому, что компьютер не успевает, а просто программа написана именно так, чтобы забирать всё свободное процессорное время под себя. Но твой тест ведь не такой. Он ведь работает по таймеру. А значит для него загрузка в 100 процентов означает, что это граница производительности. Если загрузка 100 и интервал таймера не соответствует заданному, значит граница пройдена и игра тормозит.
Ладно, ...раз тема подразумевает поиски решения скоростного вывода и снижения нагрузки, мы должны дискутировать, являться вроде "противников", обсуждать предметную область с противоположных сторон, что хорошо, что плохо. Это нормально. Считаю, нужно продолжать в таком же духе, поскольку мы общаемся с полным уважением друг к другу, об этом не забываем, ...ну, мало ли, может у кого-то появится чувство, что собеседники друг на друга "нападают", ...это не так, и таковым не будет.

Значится так, по Fallout 2. В ее графике я не обнаружил качества, ради которого стоило бы обращать на нее особое внимание. Почему? ...поставив 16-бит режим совершенно ничего не потеряется. Чем это грозит в моем случае? ...подложка, перекидываемая в кадр каждый такт уменьшается в размерах, с 2,7М до 1,8М, и у меня 1200х800 а не 800х600. Здесь все имеет значение, конкретные цифры, а не словесное описание "вот там все нормально".

Идем дальше. Видел я как выполнена анимация, в ней просто катастрофически не хватает альфа-канала, аппликация короче. Тоже самое в Diablo II, в моем случае мы бы наблюдали по MMX коду постоянный пропуск смешивания цветов, а это экономия времени и ресурсов. Да к тому же это все делала видеокарта, такое скудное содержание анимации может себе позволить храниться и в 8М памяти видеокарты, без оперативной подгрузки текстур каждого кадра, что собственно и было сделано.

Я не собираюсь закладывать те устаревшие условия к своему типу качества, буфера должны быть 1200х800х24бит, или в крайнем случае, придется спустить до 16 бит.

Остаюсь ли я сторонником только метода отрисовки в ОЗУ? ...нет. Пока я не увидел результат на Celerone, я оставался сторонником отрисовки в ОЗУ и выводом GDI, и отстаивал бы эту позицию, и был бы прав, поскольку SSE если есть, то проблем нету никаких. Теперь же нужно решать задачу иными методами, чтобы все же оставить право видеть у себя на мониторе такую игру без потери качества графики, анимации, и с приемлемым уровнем загрузки системы.


Цитата:
Сообщение от Ulex
Beermonza, с качеством чего? Проц загружен на 100 при пустом BitBlt и обновлении подложки. Нет ничего (никакого качества), ничего ещё не нарисовано, а он уже в 100 и интервал уже тянет (31-41). И ты по прежнему считаешь, что это называется "работает"? И, кстати, 16-ти битные текстуры могут и не спасти, т.к. если смешивать на MMX, то для умножения всё равно придётся распаковывать цветовые компоненты в word. То же на то же скорее всего и выйдет.
Про подложку не забывай, про ее размер в байтах для 16-бит, а еще про область вывода 800х600, или даже 1024х768 для тогдашних игр, с коеми все время ты сравниваешь мой тест. Будет ли послабление если вместо 2,7М нужно перекидывать 1,8М данных? ...будет ли послабление, если вместо 1200х800 (в обрезанном виде 1150х736) выводить 800х600? ...а у кого-то я вижу до сих пор в проектах 640х480, ...может это традиция? ...или про 21 век ничего не известно
Вот это и называется качеством, в сравнении с тем, что было в 2D до селе, ...я понятно поясняю?

Цитата:
Сообщение от Ulex
P.S. И не такая уж плохая машина этот Celeron. Два года назад сидел на нём и ничего, бывало и в игры играл. Да и по сих пор бы, наверное, сидел, если бы четвёрка по случаю по дешёвке не подвернулась. Сейчас родственникам отдал. Угадай, как они его используют? Игры, фильмы, музыка, интернет. Естественно, всё работает. Поэтому утверждение, что это компы для работы, слишком категоричное.
Об чем речь, конечно не плохая, ...и мой Celeron 450 был отличной машиной для своих задач. Что это "всё работает" я не знаю, но точно уверен, он лучше моего, хотя у меня памяти было 2х256М ...тогдашние 3D игры (1998-2000) он тянул на минимуме настроек графики, а 2D грузили его под завязку, ...посему и менял блок питания 2 раза. По состоянию игростроения на сегодняшний день и твой и мой Celeron - факт! компы для работы (в институтах такие стоят), конечно можно использовать их для игры, но именно для игры в те игы того времени, на момент которого эти компы были актуальны, ...иначе, нужно настраивать конфиг видеокарты на минимум качества.

Цитата:
Сообщение от Ulex
P.P.S Чёт Tronix куда-то пропал. Обещал наоптимизировать тут и исчез.
Может времени нет, а может и забыл. Ну а мы с тобой вроде не тупые в ассемблере, ...вернее ты разбираешься в нем, а я около того.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 03.11.2010 в 16:28.
Beermonza вне форума Ответить с цитированием
Старый 04.11.2010, 18:30   #108
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от alexBlack
Разобьем TimerGameTimer на части и измерим время выполнения:

Физика ~37.000
Формирование заднего плана ~4.400.000
Вывод персов на подложку ~24.900.000 (при 1000 перс.)
Вывод кадра на экран (bitBlt) ~13.400.000

(Это в тактах процессора, но единицы измерения не важны). bitBlt выполняется в 3-4 раза медленнее обычного move (Формирование заднего плана). Что-же такого в bitBlt ? Т.к. посмотреть ее код не удастся (я пытался, это не просто) попробуем угадать. Наш задний план ZoneBitmap 24-битный, режим экрана (по крайней мере у меня) 32-битный. Значит в bitBlt для каждого пикселя добавляется еще один байт. Т.е. если сделать подложку 32-битной, то должно выполняться быстрее. Я попробовал заменить: TexBit := 4; Картинка, естественно стала неправильной, т.к. я больше ничего не менял, зато время выполнения bitBlt уменьшилось почти в три раза - то самое время обычного move всех байт. А меньше мы сделать не сможет даже будь у нас указатель на внутренний буфер.

Для сравнения попытался сделать на поверхностях DirectDraw. После получения указателя вызываю move во внеутренний буфер DD и затем Blt на первичную поверхность (все без корректировки кадра, просто чтобы оценить скорость, поэтому вместо картинки серый фон). И опять получаю то-же время в районе 3-5 млн.

Разговоры про DirectDraw были, а кто-нибудь пробовал сформировать нормальный кадр и оценить время ?
Я сейчас построил вывод с помощью видеокарты (DirectDraw) в форму. На буфере 1024х768 показывает 89-100 fps по SetTimer'у, загрузка CPU 28%, ...думаю как ввести ограничение кадров, ...ну, а копирование текстур и смешивание идет как описывал Ulex, в поверхность в видеопамяти кидаю MMX'ом данные из ОЗУ.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 04.11.2010 в 18:33.
Beermonza вне форума Ответить с цитированием
Старый 04.11.2010, 19:41   #109
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Beermonza, колись, как ты аппаратную альфу на DirectDraw сделал?
Вообще меня этот DX уже раздражать начинает. Чего ему надо постоянно. На четвёрке работает, на ноуте - ахтунг. GeForce 6600 съела текстуры, некратные степени 2 и радостная такая. Ноут, естественно, обиделся на меня за такое безобразие. Вообще у меня ноут не хочет треугольнички текстурировать. Точнее он их текстурирует, но неправильно. Такое впечатление, что тектурных координат не видит. Всю плоскость полигона заливает цветом первой точки текстуры и всё. Кто-нить знает чего про это.

Определил вот такой формат вершин:
Код:
TCUSTOMVERTEX	struct
	X	dd ?
	Y	dd ?
	Z	dd ?
	RHW	dd ?
	Color	dd ?
	U	dd ?
	V	dd ?
TCUSTOMVERTEX	ends
Заполнил, соответственно буфер из четырёх точек (два связанных треугольника). Установил U V координаты. На четвёрке нормально рисуется текстурированная поверхность, на ноуте нет. Я в

.pixel, я тесты погоняю, но попозже. Пока из своего теста хотя бы 400-500 fps при 100+ объектах на четвёртом пне не выжму, на Celerone его смотреть бесполезно. Ну а когда выжму, тогда и потестю всё за раз.

Добавлено:
.pixel, а зачем в тесте BMP файл, он рисоваться должен? А то у меня на четвёрке просто чёрный маленький экран. Похоже не работает как надо?
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru

Последний раз редактировалось Ulex; 04.11.2010 в 20:06.
Ulex вне форума Ответить с цитированием
Старый 04.11.2010, 22:00   #110
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

Ulex
Цитата:
я тесты погоняю, но попозже...
Разумеется, когда время позволит)


Ulex
Цитата:
а зачем в тесте BMP файл...
Да, этот рисунок (кадр из теста Beermonz’ы) и копируется… просто он в оригинальном размере… что-то около ~1150*730+ поэтому что бы тест заработал корректно, текущее разрешение экрана должно быть не меньшим)


Ulex
Цитата:
Определил вот такой формат вершин:...
Порядок в структуре вроде правильный.
А как насчет флагов структуры, как ты их задаеш?)

Цитата:
Заполнил, соответственно буфер из четырёх точек...
Что-то вроде этого?

Beermonza
Цитата:
Я сейчас построил вывод с помощью видеокарты (DirectDraw) в форму...
А ты с данным материалом ознакомлялся уже ?
Legal Information DirectX 7.0 Programmer's Reference :: DirectDraw:: DirectDraw Essentials:: Advanced DirectDraw Topics :: Taking Advantage of DMA Support. (directx.chm из SDK DX7)

Я вот понять не могу там все сводится к проверке dwSVBCaps на флаг DDCAPS_CANBLTSYSMEM… а потом блокировать поверхность IDirectDrawSurface7::PageLock и блиттить ф-ми dd bltfast / blt ? И все DMA заработало)?
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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