Ошибка времени выполнения при удалении меня sh буферов объектов в контейнере Octree - PullRequest
0 голосов
/ 14 июля 2020

У меня есть me sh class Chunk, который я создаю для каждого листового узла в октодереве. На данный момент я создаю std::vector<Chunk*> и создаю чанки на основе положений конечных узлов. Однако, когда я пытаюсь реализовать член Chunk* data в классе Octree, вставка данных и их выгрузка (что в конечном итоге должно быть выполнено) вызывает ошибку sh.

#ifndef Octree_H
#define Octree_H

#include <cstddef>
#include <unordered_set>
#include <glm.hpp>
#include "Chunk.hpp"

namespace Camera {

    class Octree {

        // Physical position/size. This implicitly defines the bounding 
        // box of this node
        glm::ivec3 _origin;         // The physical center of this node
        glm::vec3 _halfDimension;  // Half the width/height/depth of this node
        // The tree has up to eight _children and can additionally store
        // a point, though in many applications only, the leaves will store _data.
        Octree *_children[8]; // Pointers to child octants

        public:
        Chunk* data;
        static std::unordered_set<Octree*> leafNodes;

        Octree(const glm::ivec3& _origin, const glm::vec3& _halfDimension);
        Octree(const Octree& copy);
        ~Octree();

        double getDistanceToNode(const glm::vec3& p);
        glm::ivec3 getOrigin() const;
        int getHalfSize() const;
        int getOctantContainingPoint(const glm::vec3& point) const;
        bool isLeafNode() const;
        void insert(const glm::vec3& camPos);

    };

}
#endif

Это как данные загружаются в октодерево каждый кадр в моей функции рендеринга диспетчера фрагментов. *

Все работало нормально, пока я не поменял контейнер для данных. Если бы мне пришлось угадывать, я бы сказал, что это связано с копированием указателей, которое вызывает проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...