我正在向我的 2D 图形引擎添加 Direct Draw 渲染选项。
在非全屏应用程序上设置 Direct Draw Clipper 时,如果 Window 的客户区左上角位置不在屏幕的 0,0 上,则剪裁器会使用偏移量剪辑客户区。
这是我的剪辑器设置代码:
LPDIRECTDRAWCLIPPER directDrawClipper = nullptr;
if (!FAILED(mDirectDraw->CreateClipper(0, &directDrawClipper, NULL))) {
if (!FAILED(directDrawClipper->SetHWnd(0, App->getWindow()->getHandle()))) {
if (!FAILED(mDirectDrawFrontBuffer->SetClipper(directDrawClipper))) {
if (!FAILED(mDirectDrawBackBuffer->SetClipper(directDrawClipper))) {
return true; //all good
} else {
throw Error::Exception(L"DirectDraw arka görüntü bellek tamponu kesicisi kurulamadı",
L"Renderer Kurulum Hatası");
}
} else {
throw Error::Exception(L"DirectDraw ana görüntü bellek tamponu kesicisi kurulamadı",
L"Renderer Kurulum Hatası");
}
} else {
throw Error::Exception(L"DirectDraw kesicisi pencereye kurulamadı",
L"Renderer Kurulum Hatası");
}
} else {
throw Error::Exception(L"DirectDraw kesicisi kurulamadı",
L"Renderer Kurulum Hatası");
}
这是屏幕截图:
白色区域的大小是客户区到屏幕左上角的距离。
在设置剪辑器并将其移回原始位置之前将窗口移动到屏幕的左上角并没有帮助。
提前致谢。