History

more optimizations on render pipeline

ZappoMan committed 13 years ago

Commit fcce4751 parent 5a14c713 files · +34 −13Browse files

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

Unified · Split

interface/src/VoxelSystem.cpp+23−10
@@ -150,6 +150,7 @@ int VoxelSystem::parseData(unsigned char* sourceBuffer, int numBytes) { · 149 unmodified lines
150150 void VoxelSystem::setupNewVoxelsForDrawing() {
151151 double start = usecTimestampNow();
152152 if (_tree->isDirty()) {
153+ _callsToTreesToArrays++;
153154 _voxelsUpdated = newTreeToArrays(_tree->rootNode);
154155 _tree->clearDirtyBit(); // after we pull the trees into the array, we can consider the tree clean
155156 } else {
@@ -163,14 +164,16 @@ void VoxelSystem::setupNewVoxelsForDrawing() { · 7 unmodified lines
163164 if (_renderWarningsOn && elapsedmsec > 1) {
164165 if (elapsedmsec > 1000) {
165166 double elapsedsec = (end - start)/1000000.0;
166− printLog("WARNING! newTreeToArrays() took %lf seconds\n",elapsedsec);
167+ printLog("WARNING! newTreeToArrays() took %lf seconds %ld voxels updated\n", elapsedsec, _voxelsUpdated);
167168 } else {
168− printLog("WARNING! newTreeToArrays() took %lf milliseconds\n",elapsedmsec);
169+ printLog("WARNING! newTreeToArrays() took %lf milliseconds %ld voxels updated\n", elapsedmsec, _voxelsUpdated);
169170 }
170171 }
171172
172− // copy the newly written data to the arrays designated for reading
173− copyWrittenDataToReadArrays();
173+ if (_voxelsDirty) {
174+ // copy the newly written data to the arrays designated for reading
175+ copyWrittenDataToReadArrays();
176+ }
174177 }
175178
176179 void VoxelSystem::copyWrittenDataToReadArrays() {
@@ -189,9 +192,11 @@ void VoxelSystem::copyWrittenDataToReadArrays() { · 12 unmodified lines
189192 if (_renderWarningsOn && elapsedmsec > 1) {
190193 if (elapsedmsec > 1000) {
191194 double elapsedsec = (end - start)/1000000.0;
192− printLog("WARNING! copyWrittenDataToReadArrays() took %lf seconds\n",elapsedsec);
195+ printLog("WARNING! copyWrittenDataToReadArrays() took %lf seconds for %ld voxels %ld updated\n",
196+ elapsedsec, _voxelsInArrays, _voxelsUpdated);
193197 } else {
194− printLog("WARNING! copyWrittenDataToReadArrays() took %lf milliseconds\n",elapsedmsec);
198+ printLog("WARNING! copyWrittenDataToReadArrays() took %lf milliseconds for %ld voxels %ld updated\n",
199+ elapsedmsec, _voxelsInArrays, _voxelsUpdated);
195200 }
196201 }
197202 }
@@ -266,6 +271,7 @@ VoxelSystem* VoxelSystem::clone() const { · 68 unmodified lines
266271 void VoxelSystem::init() {
267272
268273 _renderWarningsOn = false;
274+ _callsToTreesToArrays = 0;
269275
270276 // When we change voxels representations in the arrays, we'll update this
271277 _voxelsDirty = false;
@@ -373,13 +379,20 @@ void VoxelSystem::updateVBOs() { · 101 unmodified lines
373379 double end = usecTimestampNow();
374380 double elapsedmsec = (end - start)/1000.0;
375381 if (_renderWarningsOn && elapsedmsec > 1) {
376− if (elapsedmsec > 1000) {
377− double elapsedsec = (end - start)/1000000.0;
378− printLog("WARNING! updateVBOs() took %lf seconds\n",elapsedsec);
382+ if (elapsedmsec > 1) {
383+ if (elapsedmsec > 1000) {
384+ double elapsedsec = (end - start)/1000000.0;
385+ printLog("WARNING! updateVBOs() took %lf seconds after %d calls to newTreeToArrays()\n",
386+ elapsedsec, _callsToTreesToArrays);
387+ } else {
388+ printLog("WARNING! updateVBOs() took %lf milliseconds after %d calls to newTreeToArrays()\n",
389+ elapsedmsec, _callsToTreesToArrays);
390+ }
379391 } else {
380− printLog("WARNING! updateVBOs() took %lf milliseconds\n",elapsedmsec);
392+ printLog("WARNING! updateVBOs() called after %d calls to newTreeToArrays()\n",_callsToTreesToArrays);
381393 }
382394 }
395+ _callsToTreesToArrays = 0; // clear it
383396 }
384397
385398 void VoxelSystem::render() {