2015-11-01 52 views
0

好吧,所以我的問題非常奇特。我正在將紋理映射到四邊形上。紋理包含使用自由類型生成的字體值。當我將它渲染到屏幕上時,它具有僞像。 「Hola,elienay,y Khaleexy」是渲染的四/紋理。將屏幕座標映射到紋理貼圖時產生的文物

enter image description here

然而,當我進入着色器調試模式,並期待在質地,看看它爲什麼有神器,我沒有得到文物。該四邊形完美呈現,後緩衝區具有正確的最終顏色,沒有1個單個僞影;見下文。 enter image description here

好吧,讓你們看看我在說什麼? Quad正在渲染並完美映射到紋理,但似乎問題在於應用程序將後臺緩衝區顯示在屏幕上時。任何想法,這可能是由什麼和如何解決它?

下面是幾個不同的隨機字符的屏幕截圖。僅在不以調試模式呈現場景時才顯示工件是如何呈現的。 Artifacts 1 No artifacts when rendering the same scene in debug mode

+1

如果我不得不猜測,我會說你已經創建了一個與窗口一樣大的交換鏈,而不是窗口的客戶端大小。我的意思是,窗口本身包含一個小的邊框和標題欄,不能渲染的區域,所以爲了適應客戶矩形,您的交換鏈將需要略微縮小。嘗試測量渲染目標的大小以及可以渲染的窗口區域,並查看它們是否完全匹配。 –

+0

亞當,這是它的猜測,但是這是我第一件事檢查。實際上,我正在使用AdjustWindowRectEx()來獲取合適的客戶區大小。再次,猜謎的地獄。 – Miguel

+0

好吧,亞當。你是對的。我檢查了這一點,它應該已經正常工作,但是,對於函數的底部,其他人繼續前進並編輯了函數調用,並且傳遞了錯誤的參數。發佈你的答案,我會接受它。 – Miguel

回答

1

按照第一評論,交換鏈需要在客戶端窗口矩形而不是整個窗口包括標題欄和邊框的尺寸來創建。當窗口被創建時,幾個像素過大的Windows將需要通過非常小的因子來重新調整交換鏈,這意味着您將失去1:1的像素精度。