本文整理汇总了C++中Box2i::empty方法的典型用法代码示例。如果您正苦于以下问题:C++ Box2i::empty方法的具体用法?C++ Box2i::empty怎么用?C++ Box2i::empty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Box2i
的用法示例。
在下文中一共展示了Box2i::empty方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: iterateTiles
void iterateTiles(std::array<QuadSetup, N> quads, Intersector intersector) const
{
Box2i bounds;
for (const auto &q : quads)
bounds.grow(q.bounds);
if (bounds.empty())
return;
uint32 minX = uint32(bounds.min().x()) & ~TileMask, maxX = bounds.max().x();
uint32 minY = uint32(bounds.min().y()) & ~TileMask, maxY = bounds.max().y();
for (auto &q : quads) {
q.start(minX + TileSize*0.5f, minY + TileSize*0.5f);
for (int k = 0; k < 3; ++k) {
q.stepX[k] *= float(TileSize);
q.stepY[k] *= float(TileSize);
}
}
for (uint32 y = minY; y < maxY; y += TileSize) {
for (auto &q : quads)
q.beginRow();
for (uint32 x = minX; x < maxX; x += TileSize) {
float wMin = -1.0f;
for (auto &q : quads)
wMin = max(wMin, q.reduce());
if (wMin >= 0.0f) {
uint32 xjMax = min(x + TileSize, _res.x());
uint32 yjMax = min(y + TileSize, _res.y());
for (uint32 yj = y; yj < yjMax; ++yj)
for (uint32 xj = x; xj < xjMax; ++xj)
intersector(xj, yj, xj + yj*_res.x());
}
for (auto &q : quads)
q.stepCol();
}
for (auto &q : quads)
q.endRow();
}
}