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

Вниз

Как более корректно удалять поверхности и интерфес 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 вся ветка

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

Наверх





Память: 0.48 MB
Время: 0.005 c
1-65055
Chakchir
2002-06-10 10:14
2002.06.20
Как определить объем оперативки и сколько из нее свободно


1-65127
Dr. Web
2002-06-07 10:59
2002.06.20
Как сделать Scrolled toolbar?


1-65074
garry
2002-06-10 14:08
2002.06.20
Как в строку добавить символ абзаца?


1-65076
[BAD]Angel
2002-06-09 14:46
2002.06.20
Хай мастера! У меня вопрос по сортировке!


3-64947
Creater
2002-05-27 17:32
2002.06.20
Работа с IBX





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский