Pārlūkot izejas kodu

debugdraw: Flush lines when state changes.

Branimir Karadžić 9 gadi atpakaļ
vecāks
revīzija
2ec5c78088
1 mainītis faili ar 13 papildinājumiem un 4 dzēšanām
  1. 13 4
      examples/common/debugdraw/debugdraw.cpp

+ 13 - 4
examples/common/debugdraw/debugdraw.cpp

@@ -776,32 +776,41 @@ struct DebugDraw
 
 	void setState(bool _depthTest, bool _depthWrite, bool _clockwise)
 	{
+		flush();
+
 		const uint64_t depthTest = m_depthTestLess
 			? BGFX_STATE_DEPTH_TEST_LESS
 			: BGFX_STATE_DEPTH_TEST_GREATER
 			;
 
-		m_attrib[m_stack].m_state &= ~(0
+		uint64_t state = m_attrib[m_stack].m_state & ~(0
 			| BGFX_STATE_DEPTH_TEST_MASK
 			| BGFX_STATE_DEPTH_WRITE
 			| BGFX_STATE_CULL_CW
 			| BGFX_STATE_CULL_CCW
 			);
 
-		m_attrib[m_stack].m_state |= _depthTest
+		state |= _depthTest
 			? depthTest
 			: 0
 			;
 
-		m_attrib[m_stack].m_state |= _depthWrite
+		state |= _depthWrite
 			? BGFX_STATE_DEPTH_WRITE
 			: 0
 			;
 
-		m_attrib[m_stack].m_state |= _clockwise
+		state |= _clockwise
 			? BGFX_STATE_CULL_CW
 			: BGFX_STATE_CULL_CCW
 			;
+
+		if (m_attrib[m_stack].m_state != state)
+		{
+			flush();
+		}
+
+		m_attrib[m_stack].m_state = state;
 	}
 
 	void setColor(uint32_t _abgr)