2009-12-21 72 views
1

我有一個Direct3D應用程序,它在固定的資源(例如800x600)上運行窗口或全屏。爲了支持寬屏幕模式,我渲染到800x600的後臺緩衝區,然後使用Blt將最後一幀繪製到通常較大(如1280x720)的前部緩衝區的一部分中,以便將800x600圖像拉伸到960x720以保持長寬比。DirectX中的彈出窗口導致鋸齒狀邊緣

能正常工作,除了在某些視頻卡/ OS /驅動器組合(的NVIDIA Quadro,DX11,視窗7),其中的blit似乎使用點採樣,產生鋸齒邊緣和大體不平滑的最終圖像來完成。

有什麼辦法可以避免這種情況?例如,強制Blt在放大時使用線性濾波器?

(注:我知道我可以使原來的800x600的資產960x720,而不是在最後的拉伸,而是有其他缺點,所以在最後的拉伸是首選的解決方案)

+0

我很想知道這些缺點是什麼,因爲我相信你會做得更好,而不是像上面那樣進行破解。至少你所有的3D渲染看起來都是正確的...... – Goz

回答

1

我不認爲有任何方法可以控制這一點。我讀了一些說,這種行爲改變了Windows7的一些司機,但我現在找不到參考。

您也許可以渲染到800x600的紋理,然後在實際屏幕尺寸下使用此紋理繪製全屏幕四邊形。那麼至少你可以控制過濾。

0

您是否考慮將場景渲染爲紋理,然後將該紋理渲染爲後緩衝區?這會給你帶來麻煩。

它適用於一些機器的原因是,這究竟是怎麼blit的驅動程序將

實施要得到最好的結果,但是,你真的是betetr關閉只是渲染到適當大小的後備緩衝。即如果你想1280x720 ...渲染到一個1280x720的後臺緩衝區,並有適當的視野和寬高比的修改。

+0

是的,我前幾天做了紋理渲染,效果很好。我渲染到一個800x600的目標,然後拉伸最後一個四邊形,直接渲染到最終大小的緩衝區有其他問題,正如我在我的原始帖子中所評論的。 – ggambett

相關問題