![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как более корректно удалять поверхности и интерфес 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;
У меня никаких тормозов после этого не наблюдается.