Enqueue是什么意思?
加入队列。
反义词:dequeue。
代码示例:
// Enqueue the root tiles that are renderable and visible. for (i = 0, len = levelZeroTiles.length; i < len; ++i) { tile = levelZeroTiles[i]; primitive._tileReplacementQueue.markTileRendered(tile); if (tile.needsLoading) { queueTileLoad(primitive, tile); } if (tile.renderable && tileProvider.computeTileVisibility(tile, frameState, occluders) !== Visibility.NONE) { traversalQueue.enqueue(tile); } else { ++debug.tilesCulled; if (!tile.renderable) { ++debug.tilesWaitingForChildren; } } }
>>tilereplacementqueue和tileloadqueue和traversalQueue三个队列的区别:
好像还有一个tilestorender数组。
一共两个数组,两个队列。
在一开始beginFrame时,_tileLoadQueue置为空,_tileReplacementQueue标记为开始。
tilestoRender表示已经加载好的,可以进行渲染了。
traversalQueue用于遍历四叉树。一开始队列里只有两个根节点,在一次while循环里要依次把里面的切片dequeue()直到里面为空。每一次循环中,都会遍历它的children,将它在视野内的children加到队列里。如果children还有的不满足视差条件怎么办?继续遍历知道traversalQueue里的每一个切片都满足条件。
>>traversalQueue跟tilestoRender变量感觉是等价的。前者满足条件的都会加到tilestoRender里。只不过好像每一帧tilstoRender都会置空。但是traversalQueue不会。
那随着时间的增长,traversalQueue会不会爆炸呢?