Showing the changes to interface/src/VoxelSystem.cpp (1 of 6 files). Show all
Unified · Split
| @@ -51,8 +51,12 @@ GLubyte identityIndices[] = { 0,2,1, 0,3,2, // Z- · 50 unmodified lines | ||
| 51 | 51 | 10,11,15, 10,15,14, // Y+ |
| 52 | 52 | 4,5,6, 4,6,7 }; // Z+ |
| 53 | 53 | |
| 54 | −VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) : | |
| 55 | − NodeData(NULL), _treeScale(treeScale), _maxVoxels(maxVoxels) { | |
| 54 | +VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) | |
| 55 | + : NodeData(NULL), | |
| 56 | + _treeScale(treeScale), | |
| 57 | + _maxVoxels(maxVoxels), | |
| 58 | + _initialized(false) { | |
| 59 | + | |
| 56 | 60 | _voxelsInReadArrays = _voxelsInWriteArrays = _voxelsUpdated = 0; |
| 57 | 61 | _writeRenderFullVBO = true; |
| 58 | 62 | _readRenderFullVBO = true; |
| @@ -115,22 +119,25 @@ void VoxelSystem::clearFreeBufferIndexes() { · 56 unmodified lines | ||
| 115 | 119 | } |
| 116 | 120 | |
| 117 | 121 | VoxelSystem::~VoxelSystem() { |
| 118 | − delete[] _readVerticesArray; | |
| 119 | − delete[] _writeVerticesArray; | |
| 120 | − delete[] _readColorsArray; | |
| 121 | − delete[] _writeColorsArray; | |
| 122 | − delete[] _writeVoxelDirtyArray; | |
| 123 | − delete[] _readVoxelDirtyArray; | |
| 122 | + if (_initialized) { | |
| 123 | + // Destroy glBuffers | |
| 124 | + glDeleteBuffers(1, &_vboVerticesID); | |
| 125 | + glDeleteBuffers(1, &_vboNormalsID); | |
| 126 | + glDeleteBuffers(1, &_vboColorsID); | |
| 127 | + glDeleteBuffers(1, &_vboIndicesID); | |
| 128 | + | |
| 129 | + delete[] _readVerticesArray; | |
| 130 | + delete[] _writeVerticesArray; | |
| 131 | + delete[] _readColorsArray; | |
| 132 | + delete[] _writeColorsArray; | |
| 133 | + delete[] _writeVoxelDirtyArray; | |
| 134 | + delete[] _readVoxelDirtyArray; | |
| 135 | + } | |
| 136 | + | |
| 124 | 137 | delete _tree; |
| 125 | 138 | pthread_mutex_destroy(&_bufferWriteLock); |
| 126 | 139 | pthread_mutex_destroy(&_treeLock); |
| 127 | 140 | |
| 128 | − // Destroy glBuffers | |
| 129 | − glDeleteBuffers(1, &_vboVerticesID); | |
| 130 | − glDeleteBuffers(1, &_vboNormalsID); | |
| 131 | − glDeleteBuffers(1, &_vboColorsID); | |
| 132 | − glDeleteBuffers(1, &_vboIndicesID); | |
| 133 | − | |
| 134 | 141 | VoxelNode::removeDeleteHook(this); |
| 135 | 142 | } |
| 136 | 143 | |
| @@ -639,6 +646,7 @@ void VoxelSystem::init() { · 502 unmodified lines | ||
| 639 | 646 | |
| 640 | 647 | _perlinModulateProgramInitialized = true; |
| 641 | 648 | } |
| 649 | + _initialized = true; | |
| 642 | 650 | } |
| 643 | 651 | |
| 644 | 652 | void VoxelSystem::updateFullVBOs() { |