什麼是渲染目標?

渲染目標是用於渲染像素的顯存緩衝區。渲染目標的一個常見用途是離屏渲染。(你暫時看成與後臺緩存區類似的一塊顯存)

圖形管道有一個稱爲後臺緩衝區的默認渲染目標,它是包含要繪製的下一個幀的視頻內存的一部分。如果您的程序不創建渲染目標,並且渲染到屏幕,則默認情況下使用後臺緩衝區。(這就是不同之處)使用RenderTarget2D類創建額外的渲染目標。一種常見的情況是呈現一個或多個離屏渲染目標,並將它們組裝到後臺緩衝區中以產生最終幀。

RenderTarget2D類派生自Texture2D類,因爲渲染目標包含2D紋理。這是從以前版本的XNA Game Studio中改變而來的。要像繪製渲染目標一樣繪製紋理,請直接使用渲染目標對象。也就是說,將RenderTarget2D對象傳遞給採用Texture2D對象的任何方法。要將渲染目標數據讀回到CPU,請調用Texture2D.GetData方法。有關使用渲染目標的更多信息,請參閱創建渲染目標。
要使用渲染目標,請使用您喜歡的寬度,高度和其他選項創建RenderTarget2D對象。調用GraphicsDevice.SetRenderTarget使渲染目標成爲當前渲染目標。你所做的任何後續的Draw調用都將繪製到渲染目標中,而不是後臺緩衝區。完成渲染後,調用GraphicsDevice.SetRenderTarget並將其傳遞給null以將設備再次渲染到後臺緩衝區。
創建渲染目標時,還需要考慮其他因素以選擇寬度和高度。例如,您應該選擇後臺緩衝區的寬度和高度以匹配遊戲窗口的大小(儘管Windows Phone和Xbox360會根據用戶的屏幕縮放最終結果)。這可以防止在將後臺緩衝區複製到屏幕時進行任何調整。但是,屏幕外渲染目標不需要與後臺緩衝區具有相同的寬度和高度。最終的圖像可以在幾個小的渲染目標中渲染,然後在更大的渲染目標中重新組合。
渲染目標具有表面格式,該格式描述向每個像素分配了多少位,以及它們如何在紅色,綠色,藍色和阿爾法之間進行劃分。例如,SurfaceFormat.Bgr565每個像素分配16位;藍色和紅色5位,綠色6位。
渲染目標與深度模板緩衝區配合工作。在創建渲染目標時,depth-stencil緩衝區的深度格式被指定爲渲染目標構造函數的參數之一。無論何時您爲設備設置新的渲染目標,匹配深度緩衝區也會設置到設備。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章