PMG

Форумы по созданию игр
Текущее время: 17 апр 2024 00:41

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Компиляция класса
СообщениеДобавлено: 23 сен 2005 10:32 
Не в сети
Новичок

Зарегистрирован: 09 окт 2004 11:38
Сообщения: 6
Откуда: Krasnoyarsk
Всем привет.

У меня трабла с сабжем. Есть класс сцены, соотв в разделе приват - спрятанные от длинноруких юзеров объекты сцены, источники освещения итд, в паблике в основном методы для работы с этими переменными (там - добавить-удалить итп)

Все объекты, источники и прочая лежат как массивы указателей:

CArray<OBJ*> RenderObj, ...;

Где CArray<> - темплейтный класс - менеджер массива (тоже методы добавить, удалить, создать итд)

Теперь о проблеме:

Все у меня благополучно работало, пока в один прекрасный день я не внес изменения в класс. Кажется, добавил в приват пару UINT и убил 2-3 другие переменные.

После компиляции процедура Scene::CreateD3DDevice() радостно создает устройство Д3Д с нулевым указателем на него. Как ни странно, это не мешает отрисовке мэша, зато ГУИ и ландшафт пропадают с экрана. (вроде че-то такое там получилось). Дальше - веселее. При попытке обащения к 3-му CArray (в классе их всего 5 друг за другом) идет ошибка доступа (как обычно кога поинтер промазал мимо объекта). Меняю местами первый третий массивы - глючить начинает вообще второй =((( Объяснение вижу только одно - он как-то не так размещает мою сцену в памяти. Или значения членов класса записывает не туда, откуда потом читает. Пишу в VC.NET 2003, раньше такого не было. Помогите плиз кто может!

ЗЫЖ Могу дать исходники, если надо. Тоько текстурки свои подставляйте.

_________________
Ниэлло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 сен 2005 13:14 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 11 авг 2004 17:00
Сообщения: 283
Откуда: Москва
Никогда не следует считать, что если вы в коде объявили один за другим несколько объектов, то и в памяти они будут расположены один за другим.

Устройство D3D с указателем NULL - это явная ошибка (вот ее без исходников не найти). Но при возникновении такой ошибки программа должна ругаться и прекращать работу. Раз сетка рисуется, а все остальное нет, значит устройство все-таки создается и передается сетке (при ее загрузке), а остальные объекты получают вместо указателя NULL.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 сен 2005 16:32 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Скорее всего у тебя при инициализации происходит выход за память, т.е. указатель 3 и далее стираются. Надо просто на отладке найти то место где это происходит ...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2005 12:09 
Не в сети
Новичок

Зарегистрирован: 09 окт 2004 11:38
Сообщения: 6
Откуда: Krasnoyarsk
Усе всем сеньк. Проблема решилась сносом папки Дебаг и полной перекомпиляцией =) Похоже, мой VC решил что изменения слишком незначительны? чтобы утруждаться перекомпиляцией =))

_________________
Ниэлло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2005 14:49 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 11 авг 2004 17:00
Сообщения: 283
Откуда: Москва
А это у вас использование прекомпилированных заголовков неправильно настроено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 окт 2005 11:29 
Не в сети
Новичок

Зарегистрирован: 09 окт 2004 11:38
Сообщения: 6
Откуда: Krasnoyarsk
А как правильно-то? Что сделать надо?

(кстати забыл спросить где ту книжку достать по анимации чтобы в электронном и желательно на русском?)

_________________
Ниэлло.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB