Преглед на файлове

with issue with uv packing of face

Jeremie Roy преди 12 години
родител
ревизия
d7a53cd25f
променени са 1 файла, в които са добавени 8 реда и са изтрити 4 реда
  1. 8 4
      examples/common/cube_atlas.cpp

+ 8 - 4
examples/common/cube_atlas.cpp

@@ -375,6 +375,10 @@ uint16_t Atlas::addRegion(uint16_t _width, uint16_t _height, const uint8_t* _bit
 		//create new layers
 		for (int ii = 0; ii < _type; ++ii)
 		{
+			m_layers[idx + ii].faceRegion.m_x = 0;
+			m_layers[idx + ii].faceRegion.m_y = 0;
+			m_layers[idx + ii].faceRegion.m_width = m_textureSize;
+			m_layers[idx + ii].faceRegion.m_height = m_textureSize;
 			m_layers[idx + ii].faceRegion.setMask(_type, m_usedFaces, ii);
 		}
 
@@ -468,10 +472,10 @@ void Atlas::packUV(const AtlasRegion& _region, uint8_t* _vertexBuffer, uint32_t
 	static const int16_t minVal = -32768;
 	static const int16_t maxVal = 32767;
 
-	int16_t x0 = (int16_t)(_region.m_x * texMult) - 32768;
-	int16_t y0 = (int16_t)(_region.m_y * texMult) - 32768;
-	int16_t x1 = (int16_t)( (_region.m_x + _region.m_width) * texMult) - 32768;
-	int16_t y1 = (int16_t)( (_region.m_y + _region.m_height) * texMult) - 32768;
+	int16_t x0 = (int16_t)(_region.m_x * texMult) - 32767;
+	int16_t y0 = (int16_t)(_region.m_y * texMult) - 32767;
+	int16_t x1 = (int16_t)( (_region.m_x + _region.m_width) * texMult) - 32767;
+	int16_t y1 = (int16_t)( (_region.m_y + _region.m_height) * texMult) - 32767;
 	int16_t w = (int16_t) ( (32767.0f / 4.0f) * _region.getComponentIndex() );
 
 	_vertexBuffer += _offset;