History

allow the bad triangles to render

Stephen Birarda committed 13 years ago

Commit b5d1ae11 parent e5a31bc1 file · +11 −18Browse files

Showing the changes to interface/src/VoxelSystem.cpp (1 of 1 file). Show all

Unified · Split

interface/src/VoxelSystem.cpp+11−18
@@ -107,7 +107,7 @@ void VoxelSystem::setupNewVoxelsForDrawing() { · 106 unmodified lines
107107
108108 void VoxelSystem::copyWrittenDataToReadArrays() {
109109 // 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+
111111 // store a pointer to the current end so it doesn't change during copy
112112 GLfloat *endOfCurrentVerticesData = writeVerticesEndPointer;
113113 // copy the vertices and colors
@@ -116,7 +116,6 @@ void VoxelSystem::copyWrittenDataToReadArrays() { · 2 unmodified lines
116116
117117 // set the read vertices end pointer to the correct spot so the GPU knows how much to pull
118118 readVerticesEndPointer = readVerticesArray + (endOfCurrentVerticesData - writeVerticesArray);
119− pthread_mutex_unlock(&bufferWriteLock);
120119 }
121120
122121 int VoxelSystem::treeToArrays(VoxelNode *currentNode, float nodePosition[3]) {
@@ -233,22 +232,16 @@ void VoxelSystem::render() { · 110 unmodified lines
233232
234233
235234 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;
252245 }
253246
254247 // tell OpenGL where to find vertex and color information