c++ - 如何修复抗锯齿系统的打印屏幕?
问题描述
打印屏幕功能:
HRESULT hr;
LPDIRECT3DSURFACE8 lpSurface;
D3DSURFACE_DESC stSurfaceDesc;
if (FAILED(hr = ms_lpd3dDevice->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &lpSurface)))
{
TraceError("Failed to get back buffer (0x%08x)", hr);
return false;
}
if (FAILED(hr = lpSurface->GetDesc(&stSurfaceDesc)))
{
TraceError("Failed to get surface desc (0x%08x)", hr);
SAFE_RELEASE(lpSurface);
return false;
}
UINT uWidth = stSurfaceDesc.Width;
UINT uHeight = stSurfaceDesc.Height;
switch( stSurfaceDesc.Format ) {
case D3DFMT_R8G8B8 :
case D3DFMT_A8R8G8B8 :
case D3DFMT_X8R8G8B8 :
case D3DFMT_R5G6B5 :
case D3DFMT_X1R5G5B5 :
case D3DFMT_A1R5G5B5 :
break;
case D3DFMT_A4R4G4B4 :
case D3DFMT_R3G3B2 :
case D3DFMT_A8R3G3B2 :
case D3DFMT_X4R4G4B4 :
case D3DFMT_A2B10G10R10 :
TraceError("Unsupported BackBuffer Format(%d). Please contact Administrator.", stSurfaceDesc.Format);
SAFE_RELEASE(lpSurface);
return false;
}
D3DLOCKED_RECT lockRect;
if (FAILED(hr = lpSurface->LockRect(&lockRect, NULL, D3DLOCK_NO_DIRTY_UPDATE | D3DLOCK_READONLY | D3DLOCK_NOSYSLOCK)))
{
TraceError("Failed to lock the surface (0x%08x)", hr);
SAFE_RELEASE(lpSurface);
return false;
}
错误:
if (FAILED(hr = lpSurface->LockRect(&lockRect, NULL, D3DLOCK_NO_DIRTY_UPDATE | D3DLOCK_READONLY | D3DLOCK_NOSYSLOCK)))
没有抗锯齿,打印屏幕可以完美运行。问题是什么 ?
解决方案
推荐阅读
- excel - 有没有更快的方法来执行这个循环 instr 函数?
- python - 为什么 Python 不从 Latin Extended-A 写入字符(写入文件时出现 UnicodeEncodeError)?
- javascript - 引导导航栏工具无法在小屏幕上工作
- python - 在 Python 中捕获的异常仍在冒泡
- python - 测试一个使用 sqlite 数据库的 Flask API
- c++ - Opengl 3d立方体不渲染
- anylogic - 减少代理的延迟
- node.js - 如何使用 vb.net 客户端连接到 node.js Websocket 服务器
- c - 在 C 中解密密码
- c# - 我不能在注册表中添加超过 10 个数字值 DWord