Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Вниз

Жуткие тормоза при прорисовке объекта   Найти похожие ветки 

 
Lamer86   (2002-07-09 16:54) [0]

Народ, почему у меня жутко тормозит прога при прорисовке объектов. 2D игра на DelphiX. На карте находится только герой, background и здание. Если здания не видно, то всё нормально (на background"е только герой). Как только здание входит в поле зрение. То fps падает раза в четыре. Само здание 100x200 пикселей с Rotation.


 
Gandalf   (2002-07-09 16:57) [1]

>Как только здание входит в поле зрение. То fps падает раза в >четыре.
> Само здание 100x200 пикселей с Rotation.
DelphiX имеет проблеммы с Rotation, скорость может сильно упасть. Если будешь использовать альфаблендинг упадет еще сильнее.


 
Lamer86   (2002-07-09 19:19) [2]

А есть какой-нибудь выход? Или тогда вообще отказаться от создания игр?!?


 
NailMan   (2002-07-10 01:26) [3]

Пиши свою прогу на DirectX(DirectDraw) и проблем быть не должно.


 
Lamer86   (2002-07-10 10:03) [4]

Так ведь DelphiX - это и есть DirectX, только специально упрощённый.


 
Gandalf   (2002-07-10 11:31) [5]

Выход есть всегда. Попробуй PowerDraw (сайт DelphiGFX/Links/Turbo), в нем таких проблем нет.


 
NailMan   (2002-07-11 01:22) [6]

2 Lamer86 ©>
Так ведь DelphiX - это и есть DirectX, только специально упрощённый.
Потому и глючит.
Переходи на нормальный DirectX - и не юзай всяку пакость.


 
KroaT   (2002-07-11 02:35) [7]

Кстати, а где можно найти приличную статью об нормальном DirectX"е, ну т.е. типа обучалки?


 
NailMan   (2002-07-11 04:33) [8]

2 KroaT >
Точно адреса не помню(книжки той нет), но вроде она в е-виде всетаки была. Называется она "DirectX в проектах Delphi". Книжка впринципе только для ознакомления. У меня на CD все примеры от этой книжки валяются, но меньшая половина не очень работает.

НО нормальной доки(и главное полной русскоязычной)я еще пока не видел. Мож кто и написал таковую.

Попробуй на поисковиках полазить. И на забугорных(на англицком языке если понимать могёш) тоже.

Я DirectX пока по SDKшному хелпу изучаю.


 
a_n_t   (2002-07-11 11:33) [9]

Что вы так DelphiX обижаете. Он хороший :)

Насколько я знаю функции ХОРИ для DelphiX писал сам (такие как rotate, alpha), а DirectX тут ни причем (он конечно используется, но только для работы непосредственно с графикой).

Для наглядности функция Rotate при картинке 200x100 обрабатывает все 20000 точек и для каждой синус, косинус, +, -. Зациклите 20000 sin и cos и посмотрите результат.

А вот сам DirectDraw разве может повернуть картинку?
С поворотами должен справиться Direct3D с аппаратной поддержкой.

А вообще нужно использовать все в зависимости от стоящей задачи: что-нибудь простое DelphiX, а супер влезай в кишки DirectX.

А насчет поворотов домов надо искать обходные пути: сделать несколько вариантов картинки – дом под углом 10 град, 45 град и т.д. (и вообще нужно ли его поворачивать :)


 
NailMan   (2002-07-12 07:00) [10]

2 a_n_t >
А вот сам DirectDraw разве может повернуть картинку?
С поворотами должен справиться Direct3D с аппаратной поддержкой.

Я бы изначально использовал D3D, тоесть использовал бы его спрайты(ID3DXSprite) + аппаратные возможности геометрии и прочего(Blend и т.д.) и гемора с поворотами отпали бы сами собой.
А сам DirectDraw - скорее для видео годится(помоему для этого его и делали).

Кстате я тут надыбал типа плагин к винампу - SpaceRocks - старая игрушка Asteroids. Сама игра по сути 2D, но реализована как 3D - выглядит совсем как конфетка! Советую посмотреть(www.winamp.com).

Вот к такому и надо подходить - зачем делать 2Д игру на полуаппаратном DirectDraw когда можно сделать лучше на D3D!?


 
Lamer86   (2002-07-12 14:43) [11]

Прочитал я всё это и решил купить себе книгу DirectX for Delphi на русском (с диском). Конечно примеры смотрятся круто. Но там всё слишком мудрёно. Код абсолютно не понятен (и книжка не особо помогает). Решил остаться с DelphiX. Так что народ, посмотрите исходник программы и посоветуйте хоть что-нибудь. www.jumbot.nm.ru/www/homepage/untitled.rar


 
Arnold   (2002-09-28 19:30) [12]

Lamer86 лучше сначала купи се новое железо чтоб не тормозило,
а потом уже за книжки берись


 
Sapersky_   (2002-10-01 00:40) [13]

2 NailMan>
IMHO, для реализации аппаратного ускорения через Direct3D в 2D-программе лучше подходит DX7. Он лучше совмещается с 2D-графикой; у него есть вполне приличная софтверная эмуляция, да и свою писать проще (2D-программа НЕ ДОЛЖНА требовать наличия 3D-ускорителя!); наконец, он проще, чем DX8.
А что касается ID3DXSprite - это штука не совсем оптимальная и не очень удобная. Рисуется по 1 спрайту за раз, при этом невозможно задать конкретный blending mode (у меня не получалось, во всяком случае), разные цвета для вершин спрайта и другие тонкости.
DirectDraw делали для того, чтобы обеспечить аппаратное ускорение хотя бы блиттинга на ПРАКТИЧЕСКИ ВСЕХ конфигурациях (трудно найти видеокарту, не поддерживающую hardware blit). Так что он-то как раз не полуаппаратный.


 
3d[Power]   (2002-10-02 10:57) [14]

2 Lamer86, однозначно свой движок на D3D.


 
novarm44   (2002-10-17 06:25) [15]

Я тут тоже недавно эту книгу (DirectX Графика в проектах Delphi) прикупил!
Играми не занимаюсь, но возникла необходимость создать предпросмотр поверхности в 3D.
Поверхность представляет собой матрицу 300x300 (если 100x100, то все нормально). Для отображения понадобилось чуть менее 180000 треугольников.
Все вроде компилится, работает, но отображается только четвертая часть матрицы, остальное недорисовывается. Увеличил размер буфера в три раза и при прорисовке примитивов указал их число в три раза больше. Получилось - под XP работает (около 3 кадров в секунду на Athlon 1000 с GeForce2), а под 98 - опять недорисовывает 2/3, правда скорость нормальная.

Может ему 64Mb видеопамяти мало или я чего-то недопонимаю (все-таки только сегодня книгу первый раз открыл). Или лучше OpenGL использовать.

Help, please.


 
Sapersky_   (2002-10-17 23:48) [16]

Если не ошибаюсь, макс. размер буфера в D3D8 - 65536 (точно не помню, но ВРОДЕ БЫ в D3D8.1 можно больше).
По поводу твоего случая - возможно, поддержка >65536 есть в драйверах XP (хотя как это - представить трудно), но для того, чтобы работало везде, нужно всё-таки делать несколько буферов.
И 3 FPS - это мало. У меня на GF2MX400 поверхность 65219 (или около того) - 109 FPS (без текстурирования, 1 источник света).
Рекомендую использовать индексированные примитивы. Краснов о них скромно умолчал, а ведь на практике они используются гораздо чаще остальных.
Суть в следующем: в VertexBuffer вершины идут в произвольном порядке, а в IndexBuffer идёт последовательность их номеров в VB. То есть геометрия задаётся в VB, а порядок её рендеринга в IB. Рисуется это дело DrawIndexedPrimitive... всё ясно? :) В общем, если есть SDK - читай там, если нет... хм... ну у меня есть пример, но он очень мутный и запутанный (там ещё динамическое изменение детализации).


 
Venom-FreeFrag   (2002-12-22 15:56) [17]

2Lamer86
Не используй DXEngine, он больше чем 40-50FPS не выдает(так у меня на GeForce2MX),пиши свой движок.


 
Mihey   (2002-12-22 23:33) [18]

Ну блин. С DelphiX ещё учиться пользоваться надо. Там есть такая штука, что если SystemMemory поставить в True, то скорость увеличивается.


 
pasha676   (2002-12-23 13:05) [19]

Интересно, а почему у меня повороты картинок идут нормально? Причем пробывал не на 1-2-ух, а примерно на 5-6-ти компах?


 
Sapersky_   (2002-12-23 17:31) [20]

2Mihey:
Если делается попиксельная прорисовка через Lock (полупрозрачность, поворот изображения), то системная память действительно быстрее, не только в DelphiX, но и вообще в DirectDraw. Но если поверхность копируется аппаратно через Blt/BltFast (вывод с цветовым ключом, просто копирование), видеопамять быстрее. См. статью

http://www.delphikingdom.com/helloworld/directx4.htm

и мои комментарии к ней.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.008 c
14-13406
L
2003-05-16 22:58
2003.06.05
Штрих код и как с ним работать


14-13446
Style
2003-05-07 23:29
2003.06.05
Delphi Challenge: Judge Client - програмулька для судейства.


1-13286
XobBIT
2003-05-21 16:52
2003.06.05
вопрос про работу с разными Interface ами


14-13457
Дремучий
2003-05-19 19:15
2003.06.05
Вставка картинок в T(rx)RichEdit


1-13130
demonyator
2003-05-25 01:52
2003.06.05
Длина строки символов в пикселях...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский