Бранимир Караџић 4 年之前
父节点
当前提交
c42a3a5d4d
共有 1 个文件被更改,包括 19 次插入17 次删除
  1. 19 17
      examples/common/imgui/imgui.cpp

+ 19 - 17
examples/common/imgui/imgui.cpp

@@ -87,8 +87,8 @@ struct OcornutImguiContext
 			bgfx::setViewRect(m_viewId, 0, 0, uint16_t(width), uint16_t(height) );
 		}
 
-		const ImVec2 clip_off = _drawData->DisplayPos;         // (0,0) unless using multi-viewports
-		const ImVec2 clip_scale = _drawData->FramebufferScale; // (1,1) unless using retina display which are often (2,2)
+		const ImVec2 clipPos   = _drawData->DisplayPos;       // (0,0) unless using multi-viewports
+		const ImVec2 clipScale = _drawData->FramebufferScale; // (1,1) unless using retina display which are often (2,2)
 
 		// Render command lists
 		for (int32_t ii = 0, num = _drawData->CmdListsCount; ii < num; ++ii)
@@ -154,22 +154,24 @@ struct OcornutImguiContext
 					}
 
 					// Project scissor/clipping rectangles into framebuffer space
-					ImVec4 clip_rect;
-					clip_rect.x = (cmd->ClipRect.x - clip_off.x) * clip_scale.x;
-					clip_rect.y = (cmd->ClipRect.y - clip_off.y) * clip_scale.y;
-					clip_rect.z = (cmd->ClipRect.z - clip_off.x) * clip_scale.x;
-					clip_rect.w = (cmd->ClipRect.w - clip_off.y) * clip_scale.y;
-
-					if (clip_rect.x < fb_width && clip_rect.y < fb_height && clip_rect.z >= 0.0f && clip_rect.w >= 0.0f)
+					ImVec4 clipRect;
+					clipRect.x = (cmd->ClipRect.x - clipPos.x) * clipScale.x;
+					clipRect.y = (cmd->ClipRect.y - clipPos.y) * clipScale.y;
+					clipRect.z = (cmd->ClipRect.z - clipPos.x) * clipScale.x;
+					clipRect.w = (cmd->ClipRect.w - clipPos.y) * clipScale.y;
+
+					if (clipRect.x <  fb_width
+					&&  clipRect.y <  fb_height
+					&&  clipRect.z >= 0.0f
+					&&  clipRect.w >= 0.0f)
 					{
-                        const uint16_t xx = uint16_t(bx::max(clip_rect.x, 0.0f) );
-                        const uint16_t yy = uint16_t(bx::max(clip_rect.y, 0.0f) );
-                        bgfx::setScissor(xx, yy
-                            , uint16_t(bx::min(clip_rect.z, 65535.0f)-xx)
-                            , uint16_t(bx::min(clip_rect.w, 65535.0f)-yy)
-                            );
-
-						//bgfx::setScissor((int)clip_rect.x, (int)clip_rect.y, (int)clip_rect.z, (int)clip_rect.w);
+						const uint16_t xx = uint16_t(bx::max(clipRect.x, 0.0f) );
+						const uint16_t yy = uint16_t(bx::max(clipRect.y, 0.0f) );
+						bgfx::setScissor(xx, yy
+								, uint16_t(bx::min(clipRect.z, 65535.0f)-xx)
+								, uint16_t(bx::min(clipRect.w, 65535.0f)-yy)
+								);
+
 						bgfx::setState(state);
 						bgfx::setTexture(0, s_tex, th);
 						bgfx::setVertexBuffer(0, &tvb, 0, numVertices);