Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.20;
Скачать: CL | DM;

Вниз

Как более корректно удалять поверхности и интерфес DirectDraw   Найти похожие ветки 

 
Pete ©   (2002-02-04 09:46) [0]

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


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

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


 
Pete ©   (2002-02-04 15:27) [2]

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


 
Pete ©   (2002-02-04 16:30) [3]

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


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

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


 
Pete ©   (2002-02-05 08:17) [5]

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


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

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


 
Pete ©   (2002-02-05 14:59) [7]

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

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


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

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


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

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


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

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


 
Pete ©   (2002-02-07 09:30) [11]

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


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

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


 
Pete ©   (2002-02-07 10:27) [13]

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

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


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


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

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


 
Pete ©   (2002-02-07 12:46) [15]

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


 
Pete ©   (2002-02-07 13:01) [16]

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


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

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


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

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


 
Pete ©   (2002-02-07 13:35) [19]

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



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

Текущий архив: 2002.06.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.009 c
3-64894
Cyrus
2002-05-29 10:03
2002.06.20
IBStoredProc+DBGrid


8-65178
Searg
2002-02-08 18:03
2002.06.20
Надо медленно проявить рисунок.


1-65164
Dr. Web
2002-06-07 15:47
2002.06.20
получить Иконки в MDIChild ах через Messages...


3-64907
Garry
2002-05-25 15:28
2002.06.20
Как узнать количество строк в наборе данных?


1-65077
ask
2002-06-10 13:54
2002.06.20
что за ерунда ?