Skip to content

Commit 4622274

Browse files
authored
fix: 修复单色光标渲染错误 (Blinue#1275)
1 parent b8c0801 commit 4622274

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

‎src/Magpie.Core/CursorDrawer.cpp‎

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -260,24 +260,24 @@ void CursorDrawer::Draw(ID3D11Texture2D* backBuffer, POINT drawOffset) noexcept
260260
_tempCursorTextureSize = cursorSize;
261261
}
262262

263-
D3D11_BOX srcBox{
264-
UINT(std::max(cursorRect.left, viewportRect.left) + drawOffset.x),
265-
UINT(std::max(cursorRect.top, viewportRect.top) + drawOffset.y),
266-
0,
267-
UINT(std::min(cursorRect.right, viewportRect.right) + drawOffset.x),
268-
UINT(std::min(cursorRect.bottom, viewportRect.bottom) + drawOffset.y),
269-
1
270-
};
271-
d3dDC->CopySubresourceRegion(
272-
_tempCursorTexture.get(),
273-
0,
274-
UINT(std::max(0l, viewportRect.left - cursorRect.left)) ,
275-
UINT(std::max(0l, viewportRect.top - cursorRect.left)),
276-
0,
277-
backBuffer,
278-
0,
279-
&srcBox
280-
);
263+
{
264+
D3D11_BOX srcBox{
265+
UINT(std::max(cursorRect.left, viewportRect.left) + drawOffset.x),
266+
UINT(std::max(cursorRect.top, viewportRect.top) + drawOffset.y),
267+
0,
268+
UINT(std::min(cursorRect.right, viewportRect.right) + drawOffset.x),
269+
UINT(std::min(cursorRect.bottom, viewportRect.bottom) + drawOffset.y),
270+
1
271+
};
272+
UINT destLeft = UINT(std::max(0l, viewportRect.left - cursorRect.left));
273+
UINT destTop = UINT(std::max(0l, viewportRect.top - cursorRect.top));
274+
275+
assert(destLeft + srcBox.right - srcBox.left <= cursorSize.cx);
276+
assert(destTop + srcBox.bottom - srcBox.top <= cursorSize.cy);
277+
278+
d3dDC->CopySubresourceRegion(_tempCursorTexture.get(),
279+
0, destLeft, destTop, 0, backBuffer, 0, &srcBox);
280+
}
281281

282282
if (cursorInfo->type == _CursorType::MaskedColor) {
283283
if (!_maskedCursorPS) {

0 commit comments

Comments
 (0)