DirectX 有一个有趣的行为,它在 Windows 实现 (DirectX 11) 和 Linux 下的 Wine 实现之间有所不同。
为了确定它是 Wine 实现还是程序中的错误,我想知道这种行为的确切记录位置,因为除了“它适用于 Windows”之外,我找不到任何东西。
描述如下:当使用 DirectX 在窗口上绘图时,似乎该窗口的任何可见子窗口都没有被覆盖。例如,这里是 DirectX SDK 示例中的 MeshViewer:
http://imageshack.us/photo/my-images/264/unbenannt2nf3.jpg/
(主窗口的句柄作为hDeviceWindow
中的当前参数传递CreateDevice
。)工具栏和状态栏在 Windows 中是可见的,但在 Wine 下它们被 DirectX 表面遮挡:
我还在另一个使用工具栏的应用程序中观察到了这种行为,该工具栏创建了一个与窗口客户区大小相同的 DirectX 表面,并依靠 DirectX 来确定要绘制的区域。有趣的是,工具栏似乎没有在每一帧都绘制在 DirectX 表面上(我在工具栏的绘制处理程序中设置了一个断点),所以我的猜测是 DirectX 以某种方式计算出子窗口的位置并且没有首先在它们上面涂漆。
这是正确的,如果是,它在哪里记录?