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 | 10,11,15, 10,15,14, // Y+ | 51 | 10,11,15, 10,15,14, // Y+ |
| 52 | 4,5,6, 4,6,7 }; // Z+ | 52 | 4,5,6, 4,6,7 }; // Z+ |
| 53 | 53 | ||
| 54 | VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) : | 54 | VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) |
| 55 | NodeData(NULL), _treeScale(treeScale), _maxVoxels(maxVoxels) { | 55 | : NodeData(NULL), |
| 56 | _treeScale(treeScale), | ||
| 57 | _maxVoxels(maxVoxels), | ||
| 58 | _initialized(false) { | ||
| 59 | |||
| 56 | _voxelsInReadArrays = _voxelsInWriteArrays = _voxelsUpdated = 0; | 60 | _voxelsInReadArrays = _voxelsInWriteArrays = _voxelsUpdated = 0; |
| 57 | _writeRenderFullVBO = true; | 61 | _writeRenderFullVBO = true; |
| 58 | _readRenderFullVBO = true; | 62 | _readRenderFullVBO = true; |
| @@ -115,22 +119,25 @@ void VoxelSystem::clearFreeBufferIndexes() { · 56 unmodified lines | |||
| 115 | } | 119 | } |
| 116 | 120 | ||
| 117 | VoxelSystem::~VoxelSystem() { | 121 | VoxelSystem::~VoxelSystem() { |
| 118 | delete[] _readVerticesArray; | 122 | if (_initialized) { |
| 119 | delete[] _writeVerticesArray; | 123 | // Destroy glBuffers |
| 120 | delete[] _readColorsArray; | 124 | glDeleteBuffers(1, &_vboVerticesID); |
| 121 | delete[] _writeColorsArray; | 125 | glDeleteBuffers(1, &_vboNormalsID); |
| 122 | delete[] _writeVoxelDirtyArray; | 126 | glDeleteBuffers(1, &_vboColorsID); |
| 123 | delete[] _readVoxelDirtyArray; | 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 | delete _tree; | 137 | delete _tree; |
| 125 | pthread_mutex_destroy(&_bufferWriteLock); | 138 | pthread_mutex_destroy(&_bufferWriteLock); |
| 126 | pthread_mutex_destroy(&_treeLock); | 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 | VoxelNode::removeDeleteHook(this); | 141 | VoxelNode::removeDeleteHook(this); |
| 135 | } | 142 | } |
| 136 | 143 | ||
| @@ -639,6 +646,7 @@ void VoxelSystem::init() { · 502 unmodified lines | |||
| 639 | 646 | ||
| 640 | _perlinModulateProgramInitialized = true; | 647 | _perlinModulateProgramInitialized = true; |
| 641 | } | 648 | } |
| 649 | _initialized = true; | ||
| 642 | } | 650 | } |
| 643 | 651 | ||
| 644 | void VoxelSystem::updateFullVBOs() { | 652 | void VoxelSystem::updateFullVBOs() { |