Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как более корректно удалять поверхности и интерфес DirectDraw [D5, Win95/98]


Pete ©   (2002-02-04 09:46:00) 

Вообщем, после закрытия, и освобождения поверхностей присваиванием им " nil", то в повторном запуске как-бы притормаживает игра. Или это какой-то глюк DX7/8.
Все поверхности содержат битмапы... HELP ME!!!


Pete   (2002-02-07 13:35:00) [1]

Ну да, счастливо...


Серый   (2002-02-07 13:32:00) [2]

А я и исходники найти не могу!
Одни exe"шники остались...
Если найду тогда кину...
А вообще e-mail мой известен(надеюсь на это) так что пиши(если что опять случится)Я не против получения новых знаний.Но только с интернетом у меня плохо так, что на форумах я редко бываю и почту нерегулярно забираю(стихотворение какое-то получилось :)...


Серый   (2002-02-07 13:21:00) [3]

Кину но не сегодня. У меня сейчас полная загрузка(готовлюсь к поступлению в ВУЗ).А игры очень даже простые Arkanoid c одним уровнем :) и недоделанные Танки на 2 игроков


Pete   (2002-02-07 13:01:00) [4]

Вернее прога не тормозит!!! :))))


Pete   (2002-02-07 12:46:00) [5]

Вообщем, комп не тормозит, это оказался глючный комп.
Так только nil"ом пользуюсь и все ОК.
Thank"s за советы. А что за игрушки???? я вот червя пишу.
так, между делом. может кинешь исходники каких-нибудь своих произведений.


Серый   (2002-02-07 11:32:00) [6]

Вот с этой ошибки и надо было начинать.
Опять же если заглянуть в книгу Краснова, то там написано,
что _Release может вызывать подобные ошибки, и опять же, как написано в книге его можно не использовать.
А вообше конечно в интернете есть и более подробные описания DirectX, хотя не все они правильные.
Но так как изначально вопрос стоял, что после завершения программы комп. тормозит, то получается, что я уже ни чем помочь не могу.А вообще на моем счету 2 игры(простеньких) и одна на стадии зарождения идеи(посложней).Единственное что могу посоветовать уменьшить количество поверхностей(если их много).
На этом у меня все...


Pete   (2002-02-07 10:27:00) [7]

Ошибка по адресу (0хFFFFFF - что-то подобное), и прога закрывается. только в памяти сидит и снять через ctrl-alt-del можно.

Пример: if Assigned(MainSurface) then
begin
hres:=MainSurface._Release;
.
{инициализация ошибки, только до сюда не доходит}
.
MainSurface:=nil;
end;


Вообщем, в первый раз такая проблема.


Серый   (2002-02-07 10:04:00) [8]

Насчет размера блока памяти незнаю :(
Может кто-нибудь еще подскажет.
Напиши что за ошибка у тебя возникает.


Pete   (2002-02-07 09:30:00) [9]

Как можно по указателю получить объем памяти занимаемый данной поверхностью???


Pete   (2002-02-07 08:28:00) [10]

Вообщем, хотел посмотреть код возвращаемый _Release.
Так он не чего не возврашает, а во время выполнения функции происходит какая-то ошибка, и прога сразу закрывается, не дойдя до нужного места. Мучится не стал, сделал просто NIL.
Если кто знает еще способы, подскажите.


Pete   (2002-02-06 11:16:00) [11]

ОК! Седня проверю все ошибки и возвращаемые значения.
И напишу что, да как.


Серый   (2002-02-06 10:31:00) [12]

Насчет счетчика я не согласен, насколько я знаю при создании поверхности счетчик увеличивается на единицу. А если он равен нулю значит и поверхностей никаких нет.
А вообще _Release может вызывать ошибку если поверхность потеряна.
Так что лучше проанализировать какую ошибку возврвщает _Release
Ну а на крайний случай значение счетчика можно увеличить используя AddRef.


Pete   (2002-02-05 14:59:00) [13]

Я не говорю, что это плохо...
Просто у меня так не получается корректно...

Функция _Release убивает объект, если счетчик _AddRef равен нулю.
у меня много массивов поверхностей, и т.д. иногда РЕЛИЗ выводит ошибку, и многие поверхности не освобождаются.
Вот в чем проблема...


Серый   (2002-02-05 11:45:00) [14]

А что плохого, что код из книги???
Мне кажется, что придумывать здесь какой-то необычный способ удаления поверхностей незачем.
А насчет книги все верно - код из книги Краснова "DirectX графика в проектах Delphi".
Как мне кажется очень хоршая книга.


Pete   (2002-02-05 08:17:00) [15]

Вроде " DirectX в проектах Delphi" Краснова.
Там описаны DD & D3D. Вполне книжка для начального уровня.
Но есть и сложные вещи. + CD с примерами и всеми юнитами...


Snowman   (2002-02-05 00:16:00) [16]

Господа. Рас уж тут зошол разговор о книге... Не подскажите ли какую нибудь книгу, а то статьи опираются на разные юниты дляиспользования DirectX, а некоторые и вовсе компоненты предлагают.


Pete   (2002-02-04 16:30:00) [17]

У меня при вызове _Release иногда бывает ошибка.
Можно как нибудь FreeMem или по другому?


Pete   (2002-02-04 15:27:00) [18]

Ты взял код из книги??????
Просто один в один...


Серый   (2002-02-04 14:15:00) [19]

Не знаю точно чем помочь, но я освобождаю поверхности вот так:
if Assigned(FDD) then begin
if Assigned(FDDSImage) then begin
FDDSImage._Release;
FDDSImage:=nil;
end;
У меня никаких тормозов после этого не наблюдается.


Наверх

Титульная страница Поиск, карта сайта Написать письмо