<如果窗口的视图区大小和SwapChain的大小不一,那么DirectX将通过Stretch Blit来自动处理图像的伸缩变化。尽管这可能并不令人期待,因为这在视图区变大的时候将导致图像的模糊。> 你说的这个问题 要怎么才能解决?
有位博友这样问过,因为最近少有上博客,于是没有回答及时,请见谅,我这里只能说说我们现在的解决办法。
当后台缓冲区的分辨率和视图区不统一的时候,会导致拉伸现象,使画面变得模糊。
首先说个题外话:
正因为变得模糊,因此有人故意将后台缓冲区做得比视区稍大一点,这样来抗锯齿,至于效果如何,没有真正见过,有兴趣的可以试试。
下面说说解决办法。
我们的解决办法也很简单,就分三步
1,窗口改变的时候,告诉设备窗口大小改变。
2,按改变后的窗口重建缓冲区。
3。强制设备丢失,并重新加载需要的资源。
由于在做这个之前,设备丢失已经做好了,于是就偷了个懒,窗口改变的时候就传入窗口大小,并reset
这样设备就强制处于丢失状态。
不知道有没有说清楚,反正主要的就是要重建缓冲区,并处理设备丢失问题。。。