甚至可以在調整窗口大小的同時繼續渲染和更新,以使其不會延伸?XNA如何在調整大小時進行渲染和更新
回答
這是深入XNA的Game
類的行爲。
我正在處理這個確切的問題,但我還沒有一個好的解決方案。
編輯:我現在怎麼找到一個解決方案 - 但它不回答縮放的位 - 所以我已經發布它作爲question/answer pair over here。
您可以用反射潛入並斷開在您開始調整大小時暫停遊戲計時器的事件(並在停止時取消暫停)。我還沒有嘗試過這一點,如果不理解爲什麼它們首先存在,我有點不高興。我個人認爲讓我的遊戲訂閱調整大小的開始/結束事件,然後在合適的計時器上自動抽取Update
,直到XNA回來爲止。我不會擔心縮放比例顯示)。
解決此問題的一種方法是完全替換Game
類。 XNA WinForms Sample提供了一個合適的替換 - 雖然你必須實現你自己的繪製/更新循環和時間。我剛剛在一箇舊的關卡編輯器中測試過它,它的工作原理與您調整大小時一樣。
儘管當窗口變大時它確實放慢了一點,因爲它不斷地重新分配backbuffer使它更大。您可以替換該行爲以使其過度分配後臺緩衝區大小,因此不會經常重新分配。
解決根本問題是與Win32和一些細節在此thread on GameDev.net描述。但它並不真正提供令人滿意的解決方案。
注意到WinForms示例使用其OnPaint
方法(並通過不斷調用Invalidate
得到一個循環)可能會很有趣。而XNA的內置Game
類訂閱Application.Idle
。
僅僅因爲我是一個新的思考。我如何訪問this.host.suspend並繼續? – 2013-03-27 00:11:35
這應該讓你開始:var fieldInfo = type.GetField(「host」,BindingFlags.NonPublic | BindingFlags.Instance); object host = fieldInfo.GetValue(this);'。其中'type'是'this.GetType()'可能帶有幾個'.BaseType'結尾。在'host'上再次執行'Suspend'和'Resume' - 雖然我認爲你可能需要'GetProperty',而不是在這裏。 (恐怕我沒有確切的代碼,因爲我使用了ExposedObject的修改版本。) – 2013-03-27 01:22:18
我已經設法找到了足夠簡單的主機,但掛起和恢復讓我難倒了。我很積極,我嘗試了所有可能的組合來找到他們,但我想我錯過了一個。無論如何,如果可以讓我知道他們位於何處,它將不勝感激。 – 2013-04-07 06:38:08
- 1. 如何在調整大小時進行此更新?
- 2. 如何在Firefox和Edge中調整ThreeJS渲染器的大小
- 3. 當horizontalList調整大小時調整項目渲染器
- 4. pygame,如何在調整大小時更新窗口大小
- 5. 如何在瀏覽器調整大小時進行動態調整大小?
- 6. 如何在UITableViewCell已經被渲染後調整大小?
- 7. 在調整大小時iFrame邊框渲染錯誤
- 8. 調整大小的UILabel在UITableViewCell中沒有更新之前渲染
- 9. 重新渲染調整大小的backbone.js視圖?
- 10. 渲染管和調整大小,動態添加文本
- 11. Qt5和QML:小部件調整大小後如何更新QQuickPaintedItem?
- 12. XNA窗口調整大小調用LoadContent
- 13. Sprite圖片調整大小 - 在調整瀏覽器大小時進行響應
- 14. 如何在調整大小時調整畫布大小?
- 15. 如何在調整窗口大小時調整圖像大小?
- 16. 如何在調整列大小時調整dxDataGrid的大小
- 17. 如何在調整gnome-terminal大小時重新調整內容?
- 18. 如何設置TextBox在DataGridTemplateColumn大小更改時調整大小
- 19. 如何在調整大小時更新包裝內容div?
- 20. 當重新渲染時,React道具只在渲染時更新
- 21. 調整大小後不調用LibGDX渲染
- 22. Polyline只在調整窗口大小後才完成渲染
- 23. 在WM_SIZE之後調整渲染目標Direct2D的大小
- 24. 在調整大小後添加新行和更改列類
- 25. WP7 C#XNA調整大小精靈
- 26. 如何在VMR9無渲染模式下將視頻調整爲指定大小?
- 27. XNA渲染問題
- 28. XNA渲染到Texture2D
- 29. 如何擴展的Texture2D在XNA與窗口大小調整
- 30. IMDb如何進行圖像大小調整和裁剪?
我不認爲這是可能的,雖然他們可能是系統調用的一些技巧,並防止窗口暫停,但我必須說,繪圖(更新部分可能是好的),並在調整大小時更改視口大小可能如果在調整大小時最好不要繪製,那麼速度會變慢並且反應遲鈍。 – user1306322 2013-02-25 21:22:40
[此問題/答案對](http://gamedev.stackexchange.com/q/51376/288)可能會有幫助。它告訴你如何繼續渲染(儘管它不能修復拉伸)。 – 2013-03-20 03:08:30