Сообщения на форуме пользователя Andrey (227 стр.)
Тема диплома: Программное обеспечение для создания компьютерных игр | 28 фев. 2005 | 13:54 | #18 |
---|
>суть не в том как обозвать название темы - мне мой руководитель сказал что такое название лучше и я ему верю. наши >преподы далеки от этой темы очень сильно и если я начну качать права насчет названия могут вообще сказать делай БД и >не выпендриваяся. суть не в названии а в оформлении. кто нить что нить подобное оформлял или нет, меня интерисуют >тонкости чего и как писать в пояснительной записке
Охренеть у меня такая - же ситуация!!! преподы далеки от 3D графики.А делай БД это точно...на большее ума увы...
ООП. Как избежать приведения предка к классу-потомку?? | 28 фев. 2005 | 9:52 | #25 |
---|
А почему бы не добавить к каждому классу метод что-то типа того:
class CCar : public CMovingObject { .... public: //типы объектов enum {car = 1}; ... //тип объекта virtual const int returnTypeClass() const { return car; } }; class CMan : public CMovingObject { .... public: //типы объектов enum {man = 1}; ... //тип объекта virtual const int returnTypeClass() const { return man; };
Правка опечатка car/man
а потом через switch/case смотреть тип объекта? может будет быстрей через
dynamic_cast
Правка: 28 фев. 2005 9:53
STL, проблема с map: Утечка памяти | 25 фев. 2005 | 14:58 | #24 |
---|
Где ее скачать бесплатно можно? много занимает?
STL, проблема с map: Утечка памяти | 25 фев. 2005 | 9:00 | #19 |
---|
dub
для удобстава я завел
метод:
//Добавление объекта void AddObject(const string& name, DisplayedObject* object) { array.insert(pair<string, DisplayedObject*> (name, object)); }
Спасибо за программу поищу... :)
Vladimir Stroyev
petrovv
_KAIN_
Disabled
IROV..
A_K
dub
Спасибо всем большое!!!! Вчера вечером посидел сделала тестолвую программу, ошибку нашел
короче дело в том что указатель на объект класса Effect
инициализируется вот так:
class Particles {//класс частиц public: Vector4D color;//Цвет частиц Vector3D Position;//Позиция частиц Vector3D velocity;//Скорость частиц Particles(){}; Particles(const Particles& particle) { color = particle.color; Position = particle.Position; velocity = particle.velocity; }; ~Particles(){}; }; //Инициализация int i; FlagDraw = false; Particles particle; for (i = 0; i < MaxParticles; i++ ) { particle.color.x = 0.02f * (rand() % 10); particle.color.y = 0.04f * (rand() % 20); particle.color.z = 0.03f * (rand() % 30); particle.color.w = 1.0f; particle.Position.x = -100.0f + rand() % 200; particle.Position.y = -10.0f + rand() % 20; particle.Position.z = -100.0f + rand() % 200; particles.push_back(particle); }
иными словами также работает если этот укзатель не записывать в контейнер т.е. без этой строчки:
//Добавление объектов в контейнер array.insert(pair<string, DisplayedObject*> ("effect", effect));
STL, проблема с map: Утечка памяти | 24 фев. 2005 | 18:17 | #9 |
---|
>Если система ведет себя по разному в Release и в DEBUG то надо искать
ошибку в коде.
>Прверь инициализацию переменных.
хорошо я проверю еще внимательнее
но в чем же дело если при компиляции на Visual C++ 6.0 все работает а на Visual C++ .Net нет?
_KAIN_
petrovv
Спасибо что откликнулись.
STL, проблема с map: Утечка памяти | 24 фев. 2005 | 17:49 | #7 |
---|
>Это не показатель утечки памяти. А DEBUG варианте при запуске не из среды
>и последующим просмотре в диспечере задач такой картины не наблюдается?
Да такой картины не наблюдается
_KAIN_
petrovv
А что можете сказать по поводу того что это работает в Visual C++ 6.0 ?
или есои заменить map на vector?
STL, проблема с map: Утечка памяти | 24 фев. 2005 | 17:20 | #4 |
---|
запускаю движок.А он как обычно долго игнициализируется я запускаю диспетчер задач и вижу что память жутко увеличивается... Это сразу бросилось в глаза , а движок не начинает рендерить сцену как обычно.Вот и все.
STL, проблема с map: Утечка памяти | 24 фев. 2005 | 16:33 | #2 |
---|
>Проблема то элементарная, а убирать за тобой кто будет? Что то типа этого в конце программы:
>map<string, DisplayedObject*>::iterator it = array.begin(), end = array.end();
>for(; it != end; ++it)
> delete it->second;
Это естественно я делаю
//Удаление всех элементов while (!array.empty()) //Указатель на первый элемент it = array.begin(); //получение указктеля object = (*it).second; //Удаление из памяти if (object) delete object; object = NULL; //Удаление из контейнера array.erase(it); }
Что еще можешь подсказать?
>А вообще - довольно опасная конструкция. Рекомендую изучить понятие - умный указатель. И писать что то типа:
>map<string, ref_ptr<DisplayedObject> > array;
Про Smart Ptr я слышал многое имею представление, но пока не использую.
почему-же работает мереджер ресурсов? или vector ?
STL, проблема с map: Утечка памяти | 24 фев. 2005 | 15:48 | #0 |
---|
Программирую в среде Visual C++ .Net 2001
для рендера использую контейнер в виде map:
//Контейнер объектов map<string, DisplayedObject*> array; [/code ] где DisplayedObject - абстрактный базовый класс отображаемого [code = cpp] class DisplayedObject { //Абстрактный класс отображаемого объекта public: //Отображение объекта virtual void Draw(Camera& camera) = 0; DisplayedObject(){} virtual ~DisplayedObject() {}; };
создаю и добавляю объекты вот таким способом:
DisplayedObject* landScape = new LandScape; DisplayedObject *sky = new Sky; human = new Human(Vector3D(0,0,-5)); DisplayedObject *light = new Light; DisplayedObject *effect = new Effect ; static_cast<Effect*> (effect) -> SetParticles(1500); static_cast<Effect*> (effect) -> SetFlagDrawParticles(true); //Добавление объектов в контейнер array.insert(pair<string, DisplayedObject*> ("effect", effect)); array.insert(pair<string, DisplayedObject*> ("light", light)); array.insert(pair<string, DisplayedObject*> ("sky", sky)); array.insert(pair<string, DisplayedObject*> ("human", human)); array.insert(pair<string, DisplayedObject*> ("landScape", landScape));
где LandScape, Sky, Light, Effect, Human это классы унаследованные от DisplayedObject
Проблема в том что при запуске из среды в Release или Debug режиме все работает нормально,
но при запуске не из среды возникает утечка памяти, при условии если проект скомпилирован в
Release режиме.С запуском не из среды при компиляции в Debug режиме проблем нет.
Для выявления подозрительного места на предмет утечки памяти, я вставлял MessageBox'ы,
при этом выяснилось, что утечка памяти начинается сразу после строки с выводом сообщения :
MessageBox(NULL, "Добавление объектов в контейнер", "Info", MB_OK); //Добавление объектов в контейнер array.insert(pair<string, DisplayedObject*> ("effect", effect)); //...
//... //Контейнер созданных ресурсов map<string, Resource*> ListResource; //... //Создание ресурса для файлов TGA Resource *tga = new TgaResource; //Заносим в список ресурсов ListResource.insert(pair<string, Resource*> ("TGA", tga)); //....
Еще отмечу что нет проблем с компиляцией в Release режиме в среде Visual C++ 6.0 и последующим запуском.
Кто нибудь встречался с такой подобной проблемой?
Прошу помощи в ее решении данной проблемой.Заранее всем спасибо.
С уважением Андрей Геец.
Что вы на это скажите(статья про язык С++) | 22 фев. 2005 | 18:03 | #139 |
---|
Спасибо за мнение я от тебя его очень ждал!!!
steps
Здравствуйте не ожидал вас тут увидеть спасибо за вашу книгу "Графика трехмерной компьютерной игры на основе OpenGL"
Почитав вашу статью я многое понял, буду пытаться программировать на этом замечательном языке поосторожней.
Буду тестировать свои разработки чтобы на предмет падения через 2 недели :)
Проверка столкновений | 22 фев. 2005 | 16:05 | #6 |
---|
Просто круто нет слов!!!!....
DirectInput - в Debug всё ок. в Release мыша не работает | 22 фев. 2005 | 13:54 | #2 |
---|
Ты отлаживать пробовал?
в каком месте что происходит посмотри
if( FAILED( hr = g_pMouse->SetDataFormat( &c_dfDIMouse2) ) ) return hr;
Проблемы с отрисовкой узлов Octree-дерева | 16 фев. 2005 | 15:32 | #9 |
---|
Больше никто не может мне помочь?
У меня опять просьба - протестируйте :) | 16 фев. 2005 | 15:29 | #12 |
---|
Celeron 2400
Geforce 5200
256 RAM
20-30 fps тормозов нет
Библиотека OpenIL. (Комментарии к статье) | 16 фев. 2005 | 12:39 | #49 |
---|
ага спасибо учтем...:)