在什么情况下DirectX不会在其句柄传递给CreateDevice()的窗口的子窗口上绘制?

时间:2012-04-14 20:21:15

标签: directx overlay direct3d

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表面遮挡:

http://i.imgur.com/WP8rd.png

我还在另一个带有工具栏的应用程序中观察到了这种行为,该工具栏创建了一个与窗口客户区大小相同的DirectX表面,并依赖于DirectX来确定要绘制的区域。有趣的是,每个框架上的工具栏似乎在DirectX表面上绘制(我在工具栏的Paint处理程序中设置了一个断点),所以我的猜测是DirectX以某种方式计算出位置儿童窗户,并不首先在它们上面涂漆。

这是否正确?如果是,那么它在哪里记录?

0 个答案:

没有答案