2015-12-10 84 views
1

我試圖建立一個關卡編輯器(或者一般的一些工具來創建材質資源),並且我已經有一個場景渲染到窗口了。C++/DirectX'關卡編輯器'

我的想法是讓每個排序即對於水平的主要窗口,對材料的窗口,模型/動漫等觀看一個窗口的編輯選項的不同窗口

我的問題是,我應該爲每個窗口創建一個新的swapChain/renderTargetView/depthBuffer/stencilView,以便我可以爲每個窗口渲染基本不同的場景? (我使用每個窗口的手柄來做這一切)

我目前正在嘗試這個,但它似乎很奇怪不得不切換渲染目標/視口/深度緩衝區,我不知道它是否是一個正確的方法。

回答

1

如果他們實際上是獨立的窗口,那麼他們每個人都需要一個交換鏈等,否則你不能渲染他們。

+0

噢好,如果它們不是獨立的窗口,我將不得不使用多個渲染目標作爲backbuffer的不同部分? 另外,在改變渲染目標和調用swapchain->每個幀的許多不同場景時,是否有任何沉重的性能成本?我問這個,因爲當我使用XNA時,我發現許多spritebatch的開始/結束調用確實會影響性能。 –

+0

@DomW不是多個窗口的專家,所以不能肯定地說。在XNA中,spritebatches的成本相當高,因爲它們切換紋理,協調緩衝區,告訴底層系統渲染等。我會*假設*多個交換鏈不會有這樣的問題,但唯一的方法是確保是測試。 –

+0

您可以使用多個交換鏈等,也可以使用視口細分單個交換鏈。多個交換鏈可能會讓你的代碼更簡單,所以更喜歡。至於性能,對於Windows來說,它不應該有任何區別。如果你有數千個窗口,每個窗口都有自己的交換鏈,那麼你可能會遇到問題,因爲這會是非常不正常的驅動程序使用。 – legalize