获取对窗口后备缓冲区的直接写入访问权限,但仍允许对屏幕上的内容进行读取访问

时间:2009-07-29 19:20:34

标签: c++ winapi directx

我在想;是否可以通过windows api获取对图形卡主缓冲区的写访问权限,但是仍然允许读取应该的内容?澄清一下,这就是我想要的:

  1. 在窗口上创建directx设备 并隐藏它。使用模板缓冲区 将Alpha通道应用于像素 不是我的代码写的。
  2. 获取全部内容 当前显示适配器的缓冲区。 即有一个指向缓冲区的指针 当前的位深度和 分辨率,包含 当前屏幕没有无论我 画到屏幕上。我刚在想 而不是隐藏我的窗口, 只需使用LAYERED窗口即可 以某种方式获取我之前的缓冲区 窗口的像素对它进行了处理。
  3. 将步骤2中获取的缓冲区复制到新的内存位置
  4. 将我的directx设备的主缓冲区blit到步骤3中构建的缓冲区
  5. 将步骤4中的缓冲区blit到屏幕
  6. GOTO 2
  7. 因此,最终结果是将硬件加速3D直接绘制到窗口的桌面,同时仍然呈现其他应用程序。

2 个答案:

答案 0 :(得分:1)

有更好的方法可以创建没有边框的窗口。例如,您可以尝试使用dwStyleCreateWindow参数进行试验。看起来好像你传入了WS_OVERLAPPED | WS_POPUP,它会产生一个无边框窗口,这是你想要的。 (见this forum post)。

我还认为“无边框窗口”一词不正确,因为我很难在谷歌搜索包含这些词语的搜索结果。

答案 1 :(得分:-1)

你有没有理由不通常使用GDI和DirectX使用窗口模式?当您需要使用窗口渲染时,为什么还要使用全屏模式呢?