【问题标题】:Is it possible to view the back buffer while it is being drawn?是否可以在绘制时查看后台缓冲区?
【发布时间】:2012-01-05 12:29:51
【问题描述】:

使用断点,我试图弄清楚一个使用 DirectX 缓冲区的复杂应用程序的工作原理。
我看到Blt 命令绘制到后台缓冲区/表面的许多地方,我需要知道它在代码中的那个点究竟在绘制什么。

不幸的是,我只能在绘制整个帧并且翻转缓冲区时才能看到绘制的内容。

有没有办法在绘制时查看后台缓冲区/表面?在它被翻转之前?

【问题讨论】:

    标签: visual-c++ directx direct3d


    【解决方案1】:

    您可以使用 PIX for Windows 来调试 GPU 中的渲染问题或性能瓶颈。 PIX 是一个分析器,可以为您提供有关渲染时每一步发生的情况的非常详细的信息。

    因此,您可以在每次 Direct3D 调用时查看后台缓冲区中呈现的内容。您还可以在最终图像中选择一个给定像素,并查看该像素的历史记录(例如应用到它的着色器)。

    这里有几个教程:

    http://blogs.msdn.com/b/manders/archive/2006/12/15/a-painless-introduction-to-pix-for-windows.aspx

    http://www.garagegames.com/community/blogs/view/14251

    http://www.youtube.com/watch?v=-3PISvNTeB0&feature=player_embedded

    【讨论】:

    • 尝试使用 PIX,但它等待我的应用程序退出,然后才显示分析信息(也找不到后缓冲信息)。在我的应用程序运行时不能查看后台缓冲区吗? (无法通过 youtube 视频,因为 youtube 在此服务器上被阻止)
    • 嘿导航。 PIX 确实会在执行时测量您的应用程序,并在最后向您显示配置信息。它无法实时向您显示正在发生的事情的信息,因为它信息太多。不过,您可以选择使用 F12 仅捕获几帧。
    • 顺便说一下(和在 Direc3D 中)每个绘制调用(例如 SetRenderState、SetVertexShader 等)默认情况下都发生在 BackBuffer 中。只有当您看到 IDirect3DDevice9::Present 函数调用时,它才会显示在主框架中。因此,PIX 向您展示了后台缓冲区中发生的情况。
    • 谢谢,但我真正想看到的是在后台缓冲区上执行的绘图以及何时发生。所以似乎没有工具可以帮助解决这个问题。
    猜你喜欢
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多