Showing the changes to interface/src/VoxelSystem.cpp (1 of 1 file). Show all
Unified · Split
| @@ -107,7 +107,7 @@ void VoxelSystem::setupNewVoxelsForDrawing() { · 106 unmodified lines | ||
| 107 | 107 | |
| 108 | 108 | void VoxelSystem::copyWrittenDataToReadArrays() { |
| 109 | 109 | // lock on the buffer write lock so we can't modify the data when the GPU is reading it |
| 110 | − pthread_mutex_lock(&bufferWriteLock); | |
| 110 | + | |
| 111 | 111 | // store a pointer to the current end so it doesn't change during copy |
| 112 | 112 | GLfloat *endOfCurrentVerticesData = writeVerticesEndPointer; |
| 113 | 113 | // copy the vertices and colors |
| @@ -116,7 +116,6 @@ void VoxelSystem::copyWrittenDataToReadArrays() { · 2 unmodified lines | ||
| 116 | 116 | |
| 117 | 117 | // set the read vertices end pointer to the correct spot so the GPU knows how much to pull |
| 118 | 118 | readVerticesEndPointer = readVerticesArray + (endOfCurrentVerticesData - writeVerticesArray); |
| 119 | − pthread_mutex_unlock(&bufferWriteLock); | |
| 120 | 119 | } |
| 121 | 120 | |
| 122 | 121 | int VoxelSystem::treeToArrays(VoxelNode *currentNode, float nodePosition[3]) { |
| @@ -233,22 +232,16 @@ void VoxelSystem::render() { · 110 unmodified lines | ||
| 233 | 232 | |
| 234 | 233 | |
| 235 | 234 | if (readVerticesEndPointer != readVerticesArray) { |
| 236 | − // try to lock on the buffer write | |
| 237 | − // just avoid pulling new data if it is currently being written | |
| 238 | − if (pthread_mutex_trylock(&bufferWriteLock) == 0) { | |
| 239 | − | |
| 240 | − glBindBuffer(GL_ARRAY_BUFFER, vboVerticesID); | |
| 241 | − glBufferData(GL_ARRAY_BUFFER, VERTEX_POINTS_PER_VOXEL * sizeof(GLfloat) * MAX_VOXELS_PER_SYSTEM, NULL, GL_DYNAMIC_DRAW); | |
| 242 | − glBufferSubData(GL_ARRAY_BUFFER, 0, (readVerticesEndPointer - readVerticesArray) * sizeof(GLfloat), readVerticesArray); | |
| 243 | − | |
| 244 | − glBindBuffer(GL_ARRAY_BUFFER, vboColorsID); | |
| 245 | − glBufferData(GL_ARRAY_BUFFER, VERTEX_POINTS_PER_VOXEL * sizeof(GLubyte) * MAX_VOXELS_PER_SYSTEM, NULL, GL_DYNAMIC_DRAW); | |
| 246 | − glBufferSubData(GL_ARRAY_BUFFER, 0, (readVerticesEndPointer - readVerticesArray) * sizeof(GLubyte), readColorsArray); | |
| 247 | − | |
| 248 | − readVerticesEndPointer = readVerticesArray; | |
| 249 | − | |
| 250 | − pthread_mutex_unlock(&bufferWriteLock); | |
| 251 | − } | |
| 235 | + | |
| 236 | + glBindBuffer(GL_ARRAY_BUFFER, vboVerticesID); | |
| 237 | + glBufferData(GL_ARRAY_BUFFER, VERTEX_POINTS_PER_VOXEL * sizeof(GLfloat) * MAX_VOXELS_PER_SYSTEM, NULL, GL_DYNAMIC_DRAW); | |
| 238 | + glBufferSubData(GL_ARRAY_BUFFER, 0, (readVerticesEndPointer - readVerticesArray) * sizeof(GLfloat), readVerticesArray); | |
| 239 | + | |
| 240 | + glBindBuffer(GL_ARRAY_BUFFER, vboColorsID); | |
| 241 | + glBufferData(GL_ARRAY_BUFFER, VERTEX_POINTS_PER_VOXEL * sizeof(GLubyte) * MAX_VOXELS_PER_SYSTEM, NULL, GL_DYNAMIC_DRAW); | |
| 242 | + glBufferSubData(GL_ARRAY_BUFFER, 0, (readVerticesEndPointer - readVerticesArray) * sizeof(GLubyte), readColorsArray); | |
| 243 | + | |
| 244 | + readVerticesEndPointer = readVerticesArray; | |
| 252 | 245 | } |
| 253 | 246 | |
| 254 | 247 | // tell OpenGL where to find vertex and color information |