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
150void VoxelSystem::setupNewVoxelsForDrawing() {150void VoxelSystem::setupNewVoxelsForDrawing() {
151 double start = usecTimestampNow();151 double start = usecTimestampNow();
152 if (_tree->isDirty()) {152 if (_tree->isDirty()) {
153 _callsToTreesToArrays++;
153 _voxelsUpdated = newTreeToArrays(_tree->rootNode);154 _voxelsUpdated = newTreeToArrays(_tree->rootNode);
154 _tree->clearDirtyBit(); // after we pull the trees into the array, we can consider the tree clean155 _tree->clearDirtyBit(); // after we pull the trees into the array, we can consider the tree clean
155 } else {156 } else {
@@ -163,14 +164,16 @@ void VoxelSystem::setupNewVoxelsForDrawing() { · 7 unmodified lines
163 if (_renderWarningsOn && elapsedmsec > 1) {164 if (_renderWarningsOn && elapsedmsec > 1) {
164 if (elapsedmsec > 1000) {165 if (elapsedmsec > 1000) {
165 double elapsedsec = (end - start)/1000000.0;166 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);
167 } else {168 } else {
168 printLog("WARNING! newTreeToArrays() took %lf milliseconds\n",elapsedmsec);169 printLog("WARNING! newTreeToArrays() took %lf milliseconds %ld voxels updated\n", elapsedmsec, _voxelsUpdated);
169 }170 }
170 }171 }
171 172
172 // copy the newly written data to the arrays designated for reading173 if (_voxelsDirty) {
173 copyWrittenDataToReadArrays();174 // copy the newly written data to the arrays designated for reading
175 copyWrittenDataToReadArrays();
176 }
174}177}
175 178
176void VoxelSystem::copyWrittenDataToReadArrays() {179void VoxelSystem::copyWrittenDataToReadArrays() {
@@ -189,9 +192,11 @@ void VoxelSystem::copyWrittenDataToReadArrays() { · 12 unmodified lines
189 if (_renderWarningsOn && elapsedmsec > 1) {192 if (_renderWarningsOn && elapsedmsec > 1) {
190 if (elapsedmsec > 1000) {193 if (elapsedmsec > 1000) {
191 double elapsedsec = (end - start)/1000000.0;194 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);
193 } else {197 } 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);
195 }200 }
196 }201 }
197}202}
@@ -266,6 +271,7 @@ VoxelSystem* VoxelSystem::clone() const { · 68 unmodified lines
266void VoxelSystem::init() {271void VoxelSystem::init() {
267 272
268 _renderWarningsOn = false;273 _renderWarningsOn = false;
274 _callsToTreesToArrays = 0;
269 275
270 // When we change voxels representations in the arrays, we'll update this276 // When we change voxels representations in the arrays, we'll update this
271 _voxelsDirty = false;277 _voxelsDirty = false;
@@ -373,13 +379,20 @@ void VoxelSystem::updateVBOs() { · 101 unmodified lines
373 double end = usecTimestampNow();379 double end = usecTimestampNow();
374 double elapsedmsec = (end - start)/1000.0;380 double elapsedmsec = (end - start)/1000.0;
375 if (_renderWarningsOn && elapsedmsec > 1) {381 if (_renderWarningsOn && elapsedmsec > 1) {
376 if (elapsedmsec > 1000) {382 if (elapsedmsec > 1) {
377 double elapsedsec = (end - start)/1000000.0;383 if (elapsedmsec > 1000) {
378 printLog("WARNING! updateVBOs() took %lf seconds\n",elapsedsec);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 }
379 } else {391 } else {
380 printLog("WARNING! updateVBOs() took %lf milliseconds\n",elapsedmsec);392 printLog("WARNING! updateVBOs() called after %d calls to newTreeToArrays()\n",_callsToTreesToArrays);
381 }393 }
382 }394 }
395 _callsToTreesToArrays = 0; // clear it
383}396}
384 397
385void VoxelSystem::render() {398void VoxelSystem::render() {