97 int best_height, best_index;
104 best_height = INT_MAX;
106 best_width = INT_MAX;
107 for(uint16_t ii = 0, num = uint16_t(m_skyline.size()); ii < num; ++ii)
109 int32_t yy = fit(ii, _width, _height);
112 node = &m_skyline[ii];
113 if(((yy + _height) < best_height) || (((yy + _height) == best_height) && (node->width < best_width)))
115 best_height = uint16_t(yy) + _height;
117 best_width = node->width;
119 _outY = uint16_t(yy);
129 Node newNode(_outX, _outY + _height, _width);
130 m_skyline.insert(m_skyline.begin() + best_index, newNode);
132 for(uint16_t ii = uint16_t(best_index + 1), num = uint16_t(m_skyline.size()); ii < num; ++ii)
134 node = &m_skyline[ii];
135 prev = &m_skyline[ii - 1];
136 if(node->x < (prev->x + prev->width))
138 uint16_t shrink = uint16_t(prev->x + prev->width - node->x);
140 node->width -= shrink;
143 m_skyline.erase(m_skyline.begin() + ii);
159 m_usedSpace += _width * _height;
386 const bgfx::Memory* mem = bgfx::alloc(
size);
387 bx::memSet(mem->data, 0, mem->size);
390 const uint8_t* inLineBuffer = _bitmapBuffer;
391 uint8_t* outLineBuffer = m_textureBuffer + _region.
getFaceIndex() * (m_textureSize * m_textureSize * 4) +
392 (((_region.
y * m_textureSize) + _region.
x) * 4);
394 for(
int yy = 0; yy < _region.
height; ++yy)
396 bx::memCopy(outLineBuffer, inLineBuffer, _region.
width * 4);
397 inLineBuffer += _region.
width * 4;
398 outLineBuffer += m_textureSize * 4;
401 bx::memCopy(mem->data, _bitmapBuffer, mem->size);
406 const uint8_t* inLineBuffer = _bitmapBuffer;
407 uint8_t* outLineBuffer = (m_textureBuffer + _region.
getFaceIndex() * (m_textureSize * m_textureSize * 4) +
408 (((_region.
y * m_textureSize) + _region.
x) * 4));
410 for(
int yy = 0; yy < _region.
height; ++yy)
412 for(
int xx = 0; xx < _region.
width; ++xx)
414 outLineBuffer[(xx * 4) + layer] = inLineBuffer[xx];
417 bx::memCopy(mem->data + yy * _region.
width * 4, outLineBuffer, _region.
width * 4);
418 inLineBuffer += _region.
width;
419 outLineBuffer += m_textureSize * 4;
423 bgfx::updateTextureCube(m_textureHandle,
457 int16_t x0 = (int16_t)(((
float)_region.
x * m_texelSize) -
float(INT16_MAX));
458 int16_t y0 = (int16_t)(((
float)_region.
y * m_texelSize) -
float(INT16_MAX));
459 int16_t x1 = (int16_t)((((
float)_region.
x + _region.
width) * m_texelSize) -
float(INT16_MAX));
460 int16_t y1 = (int16_t)((((
float)_region.
y + _region.
height) * m_texelSize) -
float(INT16_MAX));
461 int16_t ww = (int16_t)((
float(INT16_MAX) / 4.0f) * (
float)_region.
getComponentIndex());
463 _vertexBuffer += _offset;
471 writeUV(_vertexBuffer, INT16_MAX, y0, x0, ww);
472 _vertexBuffer += _stride;
473 writeUV(_vertexBuffer, INT16_MAX, y1, x0, ww);
474 _vertexBuffer += _stride;
475 writeUV(_vertexBuffer, INT16_MAX, y1, x1, ww);
476 _vertexBuffer += _stride;
477 writeUV(_vertexBuffer, INT16_MAX, y0, x1, ww);
478 _vertexBuffer += _stride;
484 writeUV(_vertexBuffer, INT16_MIN, y0, x0, ww);
485 _vertexBuffer += _stride;
486 writeUV(_vertexBuffer, INT16_MIN, y1, x0, ww);
487 _vertexBuffer += _stride;
488 writeUV(_vertexBuffer, INT16_MIN, y1, x1, ww);
489 _vertexBuffer += _stride;
490 writeUV(_vertexBuffer, INT16_MIN, y0, x1, ww);
491 _vertexBuffer += _stride;
495 writeUV(_vertexBuffer, x0, INT16_MAX, y0, ww);
496 _vertexBuffer += _stride;
497 writeUV(_vertexBuffer, x0, INT16_MAX, y1, ww);
498 _vertexBuffer += _stride;
499 writeUV(_vertexBuffer, x1, INT16_MAX, y1, ww);
500 _vertexBuffer += _stride;
501 writeUV(_vertexBuffer, x1, INT16_MAX, y0, ww);
502 _vertexBuffer += _stride;
508 writeUV(_vertexBuffer, x0, INT16_MIN, y0, ww);
509 _vertexBuffer += _stride;
510 writeUV(_vertexBuffer, x0, INT16_MIN, y1, ww);
511 _vertexBuffer += _stride;
512 writeUV(_vertexBuffer, x1, INT16_MIN, y1, ww);
513 _vertexBuffer += _stride;
514 writeUV(_vertexBuffer, x1, INT16_MIN, y0, ww);
515 _vertexBuffer += _stride;
521 writeUV(_vertexBuffer, x0, y0, INT16_MAX, ww);
522 _vertexBuffer += _stride;
523 writeUV(_vertexBuffer, x0, y1, INT16_MAX, ww);
524 _vertexBuffer += _stride;
525 writeUV(_vertexBuffer, x1, y1, INT16_MAX, ww);
526 _vertexBuffer += _stride;
527 writeUV(_vertexBuffer, x1, y0, INT16_MAX, ww);
528 _vertexBuffer += _stride;
536 writeUV(_vertexBuffer, x0, y0, INT16_MIN, ww);
537 _vertexBuffer += _stride;
538 writeUV(_vertexBuffer, x0, y1, INT16_MIN, ww);
539 _vertexBuffer += _stride;
540 writeUV(_vertexBuffer, x1, y1, INT16_MIN, ww);
541 _vertexBuffer += _stride;
542 writeUV(_vertexBuffer, x1, y0, INT16_MIN, ww);
543 _vertexBuffer += _stride;